SWIG questions


(Christian Szegedy) #1

What is the status of the C++ namespace support for the the
Ruby engine of SWIG?

More specifically: is it possible to tell SWIG to wrap all
classes in a header file, even if it contains namespaces?

I was surprised to notice that SWIG generates
singleton setter and getter methods for a namespace.
Is there a reason for that?

Thanks in advance, Christian


(Lyle Johnson) #2

What is the status of the C++ namespace support for the the
Ruby engine of SWIG?

More specifically: is it possible to tell SWIG to wrap all
classes in a header file, even if it contains namespaces?

Yes, this is the default behavior for SWIG 1.3.12. This section from the
SWIG documentation:

 http://www.swig.org/Doc1.3/SWIGPlus.html#n24

describes how SWIG’s namespace support works. As noted, the default
behavior is also to “flatten” namespaces in the target language.

I was surprised to notice that SWIG generates
singleton setter and getter methods for a namespace.
Is there a reason for that?

I don’t know what you’re talking about here. Could you be more specific?


(Christian Szegedy) #3

I was surprised to notice that SWIG generates
singleton setter and getter methods for a namespace.
Is there a reason for that?

I don’t know what you’re talking about here. Could you be more specific?

I changed the example provided with SWIG in Examples/class, so that the
class is enclosed in a namespace ABC.

I left the exmample.i file unchanged.

SWIG generated the wrapper code in the attached file.
(I deleted everything up to the init function.)

I used SWIG-1.3.12.

Best regards, Christian

wrap.cpp (446 Bytes)


(Lyle Johnson) #4

I don’t know what you’re talking about here. Could you be more specific?

I changed the example provided with SWIG in Examples/class, so that the
class is enclosed in a namespace ABC.

I left the exmample.i file unchanged.

SWIG generated the wrapper code in the attached file.
(I deleted everything up to the init function.)

I used SWIG-1.3.12.

Sorry, but I just downloaded the SWIG 1.3.12 sources, built and
installed it, and I can’t reproduce this at all. Can you verify that
you’re indeed running SWIG 1.3.12 by typing:

 swig -version

at the command line? If that checks out (“SWIG Version 1.3.12…”) then
please send me your modified “example.h” file from the
Examples/ruby/class directory. To enclose all of that stuff in an "ABC"
namespace you would have added two lines: at the top,

 namespace ABC {

and at the bottom,

 }

Thanks,

Lyle