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

Re: namespace alias in C++ to C#

by wsfulton :: Rate this Message:

Reply to Author | View in Thread

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@...
>> 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@...
https://lists.sourceforge.net/lists/listinfo/swig-user

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