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