From: William S F. <ws...@fu...> - 2009-04-23 23:30:11
|
Anton Lauridsen wrote: > Hi > > Looking at the releasenotes, Swig.swg and some of the test cases, I > dicovered the very interesting feature of specifying match criteria and > automatic case conversion rules on %rename. > > I have gotten a lot of things to work but have run into a couple of > things I cannot figure out. > > %rename("%(camelcase)s", %$isenumitem) ""; > > The first issue was that my enums were all completely capitalized, e.g. > UPPERCASE, and the way the casing algorithm works, "camelcase" is really > a "No Op", in this scenario, however using: > > %rename("%(camelcase)s", sourcefmt="%(undercase)s", %$isenumitem) ""; > > solved that issue just fine. > > Given the definition below, I have two issues remaining: > > namespace ns > { > class test > { > enum myenum > { > UPPERCASE, LOWERCASE, CAPITALS=UPPERCASE > }; > }; > } > > Issue #1: > I'm trying to match a specific class in a specific namespace, I have > tried %rename("%(camelcase)s", sourcefmt="%(undercase)s", %$isenumitem, > %$classname="ns::test") ""; but that seems not to fit the bill quite > right, %$classname="test" doesn't work either. > > What is the correct syntax? > > Issue #2, the generated code will look like this: > public enum Myenum > { > Uppercase, > Lowercase, > Capitals = UPPERCASE > } > > Which will generate a compile time error, since UPPERCASE is undefined, > how do I resolve this issue? > > Besides the above minor issues, which I hope somebody can give me some > hints about how to resolve, I am greatly impressed by the strength of > this feature, good show :-) > Anton, I'm afraid the original developer of this is no longer around and if there is no other response, the best thing would be to check the behaviour in the source as I don't think these special %rename features are widely understood or used. For issue 2 you can workaround the casing problem by using either %csconst(0) or %csconstvalue with %csconst(1) (for c#). William |