From: <ma...@go...> - 2007-03-08 01:58:09
|
> Dear all, > > I'm new to swig so please be kind to me ;) > > I've been trying to "swig" some C++ library for Lua. The libraries > have many > interfaces like the following. > > namespace AAA > { > class ... > > } > > I've been wondering if it is possible to "simulate" these namespaces > by > separating all this interfaces to following "separated" > Swig-Lua-Modules: > - AAA > - AAA.B > - AAA.C > - AAA.D > > > Any help is appreciated. > > > Best regards, > S. Effendi > Hello There, I am afraid that the Swig-Lua doesn't support this kind of feature. It currently just 'ignores' namespaces completely. For example: namespace AAA{ class A{}; namespace BBB{ class B{}; } } Are treated as class A and class B (ie without the namespace). The internal swig wrappers use the namespaces correctly. But they don't add the namespaces to the lua side. You could get around this by wrappering each of the namespaces as different modules, and then pulling all together in one lua file. eg. ==== %module AAA; namespace AAA{ class A{}; } === %module AAA_B namespace AAA{ namespace BBB{ class B{}; } } === -- main lua script require "AAA" require "AAA_B" AAA.B=AAA_B -- renaming of the script === That should work. (You will need a recent copy of SWIG, as the ability to add new entities to a module table was only added recently) But this looks rather tedious I confess. Do any of the other language binding have a better method to handle this? Regards, Mark |
From: William S F. <ws...@fu...> - 2007-03-08 21:22:32
|
mark gossage wrote: > The internal swig wrappers use the namespaces correctly. But they don't add the namespaces to the lua side. > > Do any of the other language binding have a better method to handle this? No. Manual intervention is required and each language has its own way of dealing with this and it is all a bit labour intensive. Modularising your code using separate invocations of swig for wrapping different namespaces is a common approach if having lua namespaces is important for you. William |
From: fu k. <fu...@ho...> - 2007-03-08 22:31:06
|
>=== >-- main lua script >require "AAA" >require "AAA_B" >AAA.B=AAA_B -- renaming of the script >=== > >That should work. (You will need a recent copy of SWIG, as the ability to >add new entities to a module table was only added recently) Thank you Mark, I'll give this a try. > >But this looks rather tedious I confess. Yup... but better than "no go"! ;) best regards, S. Effendi _________________________________________________________________ Your Space. Your Friends. Your Stories. Share your world with Windows Live Spaces. http://spaces.live.com/?mkt=en-ca |