« Return to Thread: namespace alias in C++ to C#

Re: namespace alias in C++ to C#

by lacktrum :: Rate this Message:

Reply to Author | View in Thread


wsfulton wrote:
lacktrum wrote:
>
> tlackey wrote:
>> I am new to using swig and I am having a problem accessing a class in an
>> aliased namespace correctly.
>>
>> the header file:
>>
>> namespace bar=foo;
>>
>> namespace foo {
>>    class Handle
>>      public:
>>       ....
>>    };
>> }
>>
>> swig file:
>>
>>
>> class Handle
>>     public:
>>       ....
>> };
>>
>> When the swig wrapper is created  the code is like:
>>
>> bar::Handle;
>>
>> and it creates a generic swig pointer for it:
>> SWIGTYPE_p_bar_Handle
>>
>> It also creates the C# proxy class for the generic pointer
>> SWIGTYPE_p_bar_Handle.cs and the Handle.cs class.
>>
>> How do I get the generic swig pointer and the Handle to be the same?
>>
>> Thanks,
>>
>> Truman Lackey
>>
>>
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> Swig-user mailing list
>> Swig-user@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/swig-user
>>
>>
>
> To answer my own question I placed the following in my .i file:
>
> namespace foo {
>    class Handle
>      public:
>       ....
>    };
> }
>
> class Handle
>     public:
>       ....
> };
>
> This handles both namespaced references to Handle and non namespace
> references.
> Is there possible a more elegant way to resolve this?  
>
> As it is right now I have a lot of class code replication in my SWIG file.
>
Did you see my reply? If you give SWIG the correct C++ code it should do
the right thing. You can do this by replicating the classes *exactly* in
your interface file or more simply use %include of the original headers.

William

------------------------------------------------------------------------------
_______________________________________________
Swig-user mailing list
Swig-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/swig-user
Thanks for the input.  But I still have a problem with the aliased namespace.  I can get it halfway working.  Meaning I can either get bar::Handle to work or foo::Handle but not both.

The way the code works is that i have a namespace of say foo that is wrapped by other code that aliases foo to bar.  When I look at the c++ code created by swig for these header files I have foo::Handle and bar::Handle in the wrapper code.  I have tried various means to get them to be the same types including using %include on the header files.  When I use a typedef it seems to ignore it. Do you have any other ideas on how I can get this working?

Thanks,

Truman

 « Return to Thread: namespace alias in C++ to C#