Dear gurus, I got it, thank you very much ! Regards, Activecat
On Mon, Mar 3, 2014 at 9:11 PM, Martin Braun <martin.br...@ettus.com> wrote: > On 03/03/2014 12:37 PM, Marcus Müller wrote: > > Hi Activecat, > > > > as Miklos wrote: Let your Constructor throw an exception. > > For a little detail on that, refer to > > http://www.parashift.com/c++-faq-lite/ctors-can-throw.html . > > You can surround your block construction with a try{}catch-clause, and > > handle your error, so your application may deal with that gracefully > > (instead of just dying). > > Also, grep for throw in the impl files for an example, we do that a lot > in GNU Radio. > > M > > > Another common method of dealing with stuff like this is, if you > > really have complex constructor arguments and might need to check if > > they make sense in multiple places > > - let your class have a static method validate_arguments(...) that > > returns true or false, > > - let your c'tor call that and throw an exception when it's false, and > > - use that unbound method (that is calling > > activecats_class::validate_arguments() rather than calling > > instance_of_that_class.validate_arguments()) from wherever you want to > > calculate arguments. > > > > Greetings, > > Marcus > > > > On 03.03.2014 12:02, Miklos Maroti wrote: > >> Dear Activecat, > > > >> Throw an exception. It will kill the application. > > > >> Miklos > > > >> On Mon, Mar 3, 2014 at 11:57 AM, Activecat <active...@gmail.com> > >> wrote: > >>> Dear Marcus, > >>> > >>> Says, the constructor performed some basic checking on the > >>> constructor arguments, then had found some fatal error (says, > >>> division by zero) and decided to ban the flowgraph from being > >>> executed. > >>> > >>> A workaround is to get the constructor to set a class variable to > >>> false, says, d_valid = false; > >>> > >>> then in the work() it will check this d_valid as follows: > >>> > >>> int work() { if ( ! d_valid ) return -1 ......... ......... > >>> (other stuff as usual) } > >>> > >>> > >>> But isn't there a better way to do this ..? (to ban the flowgraph > >>> from being executed within the constructor) > >>> > >>> Please advise, thanks. > >>> > >>> Regards, Activecat > >>> > >>> > >>> > >>> On Mon, Mar 3, 2014 at 5:25 PM, Marcus Müller > >>> <mar...@hostalia.de> wrote: > >>>> > >> Activecat, > > > >> the constructor of a block must have been called before the block > >> has been connect()ed; so there's no way a flowgraph is already > >> running when your block's constructor is called. > > > >> Greetings, Marcus > > > >> On 03.03.2014 06:53, Activecat wrote: > >>>>>> Dear Sir, Thank you very much. > >>>>>> > >>>>>> What if, we want to stop the flow graph in the constructor > >>>>>> of a block? > >>>>>> > >>>>>> In work() we can just return -1. But in constructor, what > >>>>>> value should be returned, also -1 ? > >>>>>> > >>>>>> Regards, Activecat > >>>>>> > >>>>>> > >>>>>> On Sun, Feb 2, 2014 at 9:05 PM, Martin Braun > >>>>>> <martin.br...@ettus.com> wrote: > >>>>>> > >>>>>>> On 01.02.2014 13:51, Activecat wrote: > >>>>>>> > >>>>>>>> But the function stop() fails to work. The flow graph > >>>>>>>> continue executing infinitely... > >>>>>>>> > >>>>>>>> Question: How to stop the flow graph when > >>>>>>>> this->d_complete == true ? > >>>>>>>> > >>>>>>> > >>>>>>> Return -1 (or WORK_DONE) in your work() function. > >>>>>>> > >>>>>>> MB > >>>>>>> > >>>>>>> > >>>>>>> _______________________________________________ > >>>>>>> Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org > >>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > >>>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> _______________________________________________ > >>>>>> Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org > >>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > >>>>>> > >>>> > >>>> _______________________________________________ > >>>> Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org > >>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > >>> > >>> > >>> > >>> _______________________________________________ Discuss-gnuradio > >>> mailing list Discuss-gnuradio@gnu.org > >>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > >>> > > > > _______________________________________________ > > Discuss-gnuradio mailing list > > Discuss-gnuradio@gnu.org > > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > > > > > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio