On 11/6/07, Darwin Slattery <[EMAIL PROTECTED]> wrote:
>
> Hello,
>
> I have been having some difficulty with accessing enumerations inside C++ 
> namespaces. I have attached a simple test program which binds C++ code 
> consisting of one namespace 'nsa', one class 'Person', and three enumerations 
> 'Country', 'Job', and 'Title', each at different scopes. The class and global 
> enumberation are both accessible as per the documentation but the other two 
> enumerations are not (see wxluanstest_prog.lua).

There is currently no ability to use namespaces in the bindings and
the enums can only go one level deep (MyClassName::MyEnumName).

How would you envision it to work? If a %namespace tag was added to
the binding generator I suppose that it should generate a table within
the main table (the one the bindings are put into) for the next set of
items and allow this for any depth level.

This would be very awkward to try to put into the current
implementation since instead of a flat list of classes with pointers
to their member functions, we'd have to add another struct to hold the
namespace name and then pointers to the classes, enums, etc in that
namespace, and another level of the namespace struct, then the
classes, a tree. But, thats not nearly as bad as what would have to
happen to genwxbind.lua...

However, I think there's an equally good and surely more simple
solution. The only drawback is that you have to have an individual set
of bindings for each namespace.

You set the namespace in Lua and also in C++ like this in the "rules" file.

hook_lua_namespace = "wxluanstest.nsa"
hook_cpp_binding_post_includes = "namespace nsa"
hook_cpp_binding_header_includes = "namespace nsa" -- or here

Then the binding generator function wxLuaBinding::RegisterBinding
would simply use the existing or create new "." separated tables. The
code to do it would actually go at the top of
wxLuaBinding::RegisterFunctions.

Is there anything about this second way that wouldn't work? I think
just setting the namespace in C++ should be enough to set the
namespace level to anything for the C++ code to work or am I missing
something.

I do accept that if classes with the same name exist both in and out
of a namespace that the binding generator code needs to call (I don't
think it would unless your C++ headers had inline functions with them
in it, but you could just prefix :: to get back to the root) there may
be a problem. I think I would go out on a limb and say that that'd be
a pretty sketchy design and wxLua can't cater to everything.

Regards,
    John

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
wxlua-users mailing list
wxlua-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wxlua-users

Reply via email to