From b59e4a85a40dd23fc33ee8f41dc9464682dec678 Mon Sep 17 00:00:00 2001 From: John Lenz Date: Sun, 12 Dec 2004 08:11:02 +0000 Subject: [PATCH] - static class member functions now get exported with -proxy. - member variables of other classes now works properly in goops. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6862 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Source/Modules/chicken.cxx | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/SWIG/Source/Modules/chicken.cxx b/SWIG/Source/Modules/chicken.cxx index 416a24d2a..1c27daf6e 100644 --- a/SWIG/Source/Modules/chicken.cxx +++ b/SWIG/Source/Modules/chicken.cxx @@ -80,7 +80,8 @@ public: virtual int membervariableHandler(Node *n); virtual int constructorHandler(Node *n); virtual int validIdentifier(String *s); - virtual int staticmembervariableHandler(Node *n); + virtual int staticmembervariableHandler(Node *n); + virtual int staticmemberfunctionHandler(Node *n); protected: void addMethod(String *scheme_name, String *function); @@ -1042,12 +1043,28 @@ CHICKEN::memberfunctionHandler(Node *n) return SWIG_OK; } +int +CHICKEN::staticmemberfunctionHandler(Node *n) +{ + String *iname = Getattr(n, "sym:name"); + String *proc = NewString(iname); + Replaceall(proc, "_", "-"); + + memberfunction_name = chickenNameMapping(proc, short_class_name); + Language::staticmemberfunctionHandler(n); + Delete(memberfunction_name); + memberfunction_name = NULL; + Delete(proc); + + return SWIG_OK; +} + int CHICKEN::membervariableHandler(Node *n) { String *iname = Getattr(n,"sym:name"); String *pb = SwigType_typedef_resolve_all(SwigType_base(Getattr(n, "type"))); - + Language::membervariableHandler(n); String *proc = NewString(iname); @@ -1063,7 +1080,7 @@ CHICKEN::membervariableHandler(Node *n) if (!Getattr(n,"feature:immutable")) { if (closclassname) { - Printv(closcode, " ':swig-set (lambda (x y) (", chickenPrimitiveName(setfunc), " x (slot-ref y 'swig-this))\n", NIL); + Printv(closcode, " ':swig-set (lambda (x y) (", chickenPrimitiveName(setfunc), " x (slot-ref y 'swig-this))))\n", NIL); } else { Printv(closcode, " ':swig-set ", chickenPrimitiveName(setfunc), ")\n", NIL); }