[C++-sig] Pybindgen/pygccxml integration
Gustavo Carneiro
gjcarneiro at gmail.com
Thu Aug 20 13:01:28 CEST 2009
I added your problem as unit test to pybindgen, but it just works as
expected:
http://bazaar.launchpad.net/~gjc/pybindgen/trunk/revision/681
2009/8/19 Ben Fitzpatrick <bfitzpatrick at vtiinstruments.com>
> Hi everyone,
>
>
>
> The messages below are from quite a bit ago. I didn’t respond then because
> the unit tests weren’t passing for me, and I wanted to try and make them
> pass…. But then I got pulled off on another project. I’ve recently had some
> time to work on this again, and I got all the tests involving annotations to
> work (there’s still a couple tests that don’t pass, involving
> get_simple_map, but they don’t look super-vital).
>
>
>
> I finally got my pure virtual class wrapped and compiled, and it is
> instantiatable and seems to work, but one of my functions is missing. Here’s
> the code:
>
>
>
> class pure_virtual_class
>
> {
>
> public:
>
> // -#- @foobaz(transfer_ownership=true, direction=out) -#-
>
> virtual int get_value(int* foobaz) = 0;
>
> virtual int set_value(int foobaz);
>
>
>
> // -#- @return(caller_owns_return=true) -#-
>
> static pure_virtual_class* Create();
>
> virtual ~pure_virtual_class() {};
>
> }
>
>
>
> class non_virtual_class : public pure_virtual_class
>
> {
>
> public:
>
> non_virtual_class();
>
> ~non_virtual_class();
>
> // -#- @foobaz(transfer_ownership=true, direction=out) -#-
>
> int get_value(int* foobaz);
>
> int set_value(int foobaz);
>
>
>
> private:
>
> int internal_state;
>
> int utility_function(int foobaz);
>
> }
>
>
>
> And the Create method does this:
>
> pure_virtual_class* pure_virtual_class::Create()
>
> {
>
> return static_cast<pure_virtual_class*>(new non_virtual_class());
>
> }
>
>
>
> So, I got rid of all the gccxml warnings on the code (except for the one
> indicating that the class pure_virtual_class was pure virtual…), and it
> compiles just fine, and the Create function even works… but the get_value
> function doesn’t appear when I dir the class. Set_value appears and seems to
> work, so why not get? Any ideas?
>
>
>
> I’m on a clean Debian Etch install (virtual machine), using GCC 4.3.2,
> Python 2.5.2, gccxml 0.9.
>
>
>
> Thanks,
>
> Ben Fitzpatrick
>
>
>
>
>
>
>
> *From:* cplusplus-sig-bounces+bfitzpatrick=vtiinstruments.com at python.org[mailto:
> cplusplus-sig-bounces+bfitzpatrick <cplusplus-sig-bounces%2Bbfitzpatrick>=
> vtiinstruments.com at python.org] *On Behalf Of *Gustavo Carneiro
> *Sent:* Tuesday, June 23, 2009 6:52 PM
> *To:* Development of Python/C++ integration
> *Subject:* Re: [C++-sig] Pybindgen/pygccxml integration
>
>
>
>
>
> 2009/6/23 Ben Fitzpatrick <bfitzpatrick at vtiinstruments.com>
>
> Gustavo Carneiro wrote:
>
>
>
> 2009/6/23 Ben Fitzpatrick <bfitzpatrick at vtiinstruments.com <mailto:
> bfitzpatrick at 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?
>
>
> That's odd, there wasn't a blank line in my original email. There certainly
> isn't one in the file.
> I do not get an unused annotation warning, or anything to suggest it
> noticed my annotation in the slightest. I am using Python2.4 on Debian Etch,
> with Pygccxml 0.9.5. The Python's a bit old, but everything else has been
> compiled or installed manually.
>
>
> Well, with Python 2.5 it prints TypeConfigurationError('some message'),
> which is rather more helpful. You are not seeing the full error message,
> just the (vague) exception type.
>
> And did you run the unit tests (./waf check) ? If the unit tests pass,
> annotations supposedly are working...
>
>
>
>
>
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig at 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 at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cplusplus-sig/attachments/20090820/648cf91e/attachment.htm>
More information about the Cplusplus-sig
mailing list