2009/6/23 Ben Fitzpatrick <bfitzpatr...@vtiinstruments.com> > Thanks for the suggestions! > > I tried the first one, just as a test. I'd like to do the second > programatically if I can, but I just wanted to make sure annotations were > going to fix this. It still seems to be giving me the same error: > (...)/pure_virtual.h:5: WrapperWarning: Parameter 'int * value' error (used > in int pure_virtual_class::get_value(int * value) [member function]): > <pybindgen.typehandlers.base.TypeConfigurationError instance at 0xb780326c> > virtual int get_value(int* value) = 0; > > Here is what I changed my code to: > > // -#- @value(transfer_ownership=true) -#- > virtual int get_value(int* value)=0; >
Apart from the blank line, seems OK. Do you get a "unused annotation" warning? > > This appears to be similar to the declaration you pointed me to in foo.h: > // -#- @zbr(transfer_ownership=true) -#- > void store_zbr (Zbr *zbr); > > Also tried renaming it to 'foobaz' in case 'value' was a keyword. Is there > something I'm missing? > > Thanks, > Ben Fitzpatrick > > > Gustavo Carneiro wrote: > >> >> >> 2009/6/23 Ben Fitzpatrick <bfitzpatr...@vtiinstruments.com <mailto: >> bfitzpatr...@vtiinstruments.com>> >> >> >> Hi everyone, >> >> I'm just starting to check out pybindgen after the messages I've >> seen floating around on this mailing list, and I have a question >> about the pygccxml integration. I've made a pure-virtual class >> with a pointer return type, like so: >> >> class pure_virtual_class >> { >> virtual int get_value(int* value)=0; >> virtual int put_value(int value)=0; >> >> static pure_virtual_class* Create(); >> }; >> >> Normally I'd call add_function('get_value', retval(int), >> [param('int *', 'value', transfer_ownership=True)]) (I think) >> But since I'm scanning the headers with gccxml, I'm not sure how >> to tell it to transfer the ownership. >> Right now it's giving me a TypeConfigurationError during 'parse', >> which appears to be because it doesn't know how to deal with the >> ownership. >> >> I looked in the documentation and couldn't find anything >> referencing this, and none of the examples use gccxml. >> >> Any ideas? >> >> >> Yes, there are two possible (alternative) ways to deal with this: >> >> 1. Add inline annotations as C++ comments in the header file to be >> scanned; >> 2. Add scanning hooks to inject annotations via a function callback; >> >> For inline annotations, see tests/foo.h, look for the comment lines >> containing -#-. I must warn you, though, that annotations are kind of a >> "brittle" system. The annotations are searched upwards starting in the line >> immediately before the line that gccxml reports as the line the declaration >> is defined. The problem here is that gccxml reports the line of a >> declaration sometimes in weird and unexpected places. >> >> The other way is more complicated in terms of code, but doable with some >> pacience. You can see an example in ns-3 [1], in the pre_scan_hook >> function. >> >> >> [1] >> http://code.nsnam.org/ns-3-dev/file/96811f76c3e2/bindings/python/ns3modulescan.py >> >> I hope this helps. >> >> -- >> Gustavo J. A. M. Carneiro >> INESC Porto, Telecommunications and Multimedia Unit >> "The universe is always one step beyond logic." -- Frank Herbert >> > > _______________________________________________ > Cplusplus-sig mailing list > Cplusplus-sig@python.org > http://mail.python.org/mailman/listinfo/cplusplus-sig > -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig