diff options
Diffstat (limited to 'SWIG/Source/Modules1.1/python.cxx')
-rw-r--r-- | SWIG/Source/Modules1.1/python.cxx | 45 |
1 files changed, 12 insertions, 33 deletions
diff --git a/SWIG/Source/Modules1.1/python.cxx b/SWIG/Source/Modules1.1/python.cxx index 140668e93..23a8e8562 100644 --- a/SWIG/Source/Modules1.1/python.cxx +++ b/SWIG/Source/Modules1.1/python.cxx @@ -13,6 +13,7 @@ static char cvsroot[] = "$Header$"; #include "mod11.h" #include "python.h" +#include "swigconfig.h" static String *const_code = 0; static String *shadow_methods = 0; @@ -26,7 +27,6 @@ static int use_kw = 0; static int noopt = 1; static FILE *f_shadow; static Hash *hash; -static Hash *symbols; static String *classes; static String *func; static String *vars; @@ -37,6 +37,7 @@ static char *class_name; static char *usage = (char *)"\ Python Options (available with -python)\n\ + -ldflags - Print runtime libraries to link with\n\ -globals name - Set name used to access C global variable ('cvar' by default).\n\ -module name - Set module name\n\ -interface name - Set the lib name\n\ @@ -108,6 +109,9 @@ PYTHON::parse_args(int argc, char *argv[]) { Swig_mark_arg(i); } else if (strcmp(argv[i],"-help") == 0) { fputs(usage,stderr); + } else if (strcmp (argv[i], "-ldflags") == 0) { + printf("%s\n", SWIG_PYTHON_RUNTIME); + SWIG_exit (EXIT_SUCCESS); } } } @@ -123,7 +127,6 @@ void PYTHON::parse() { hash = NewHash(); - symbols = NewHash(); const_code = NewString(""); shadow_methods = NewString(""); classes = NewString(""); @@ -1227,20 +1230,15 @@ void PYTHON::cpp_member_func(char *name, char *iname, SwigType *t, ParmList *l) { char *realname; int oldshadow; - char cname[1024]; /* Create the default member function */ oldshadow = shadow; /* Disable shadowing when wrapping member functions */ if (shadow) shadow = shadow | PYSHADOW_MEMBER; this->Language::cpp_member_func(name,iname,t,l); shadow = oldshadow; - if (shadow) { - realname = iname ? iname : name; - /* Check to see if we've already seen this */ - sprintf(cname,"python:%s::%s",class_name,realname); - if (Getattr(symbols,cname)) return; - Setattr(symbols,cname,cname); + if (shadow && !is_multiple_definition()) { + realname = iname ? iname : name; if (strcmp(realname,"__repr__") == 0) have_repr = 1; @@ -1287,20 +1285,14 @@ void PYTHON::cpp_constructor(char *name, char *iname, ParmList *l) { char *realname; int oldshadow = shadow; - char cname[1024]; if (shadow) shadow = shadow | PYSHADOW_MEMBER; this->Language::cpp_constructor(name,iname,l); shadow = oldshadow; - if (shadow) { + if (shadow && !is_multiple_definition()) { realname = iname ? iname : class_name; - /* Check to see if we've already seen this */ - sprintf(cname,":python:constructor:%s::%s",class_name,realname); - if (Getattr(symbols,cname)) return; - Setattr(symbols,cname,cname); - if (!have_constructor) { if (use_kw) Printv(construct, tab4, "def __init__(self,*args,**kwargs):\n", 0); @@ -1345,13 +1337,13 @@ PYTHON::cpp_destructor(char *name, char *newname) { if (shadow) shadow = shadow | PYSHADOW_MEMBER; this->Language::cpp_destructor(name,newname); shadow = oldshadow; - if (shadow) { + if (shadow && !is_multiple_definition()) { if (newname) realname = newname; else realname = class_renamed ? class_name : name; Printv(pyclass, tab4, "def __del__(self,", module, "=", module, "):\n", 0); emitAddPragmas(pyclass,(char*)"__del__",(char*)tab8); - Printv(pyclass, tab8, "if self.thisown == 1 :\n", + Printv(pyclass, tab8, "if getattr(self,'thisown',0):\n", tab8, tab4, module, ".", Swig_name_destroy(realname), "(self)\n", 0); have_destructor = 1; @@ -1478,23 +1470,16 @@ PYTHON::cpp_variable(char *name, char *iname, SwigType *t) { char *realname; int inhash = 0; int oldshadow = shadow; - char cname[512]; if (shadow) shadow = shadow | PYSHADOW_MEMBER; this->Language::cpp_variable(name,iname,t); shadow = oldshadow; - if (shadow) { + if (shadow && !is_multiple_definition()) { have_getattr = 1; have_setattr = 1; realname = iname ? iname : name; - /* Check to see if we've already seen this */ - sprintf(cname,"python:%s::%s:",class_name,realname); - if (Getattr(symbols,cname)) return; - - Setattr(symbols,cname,cname); - /* Figure out if we've seen this datatype before */ if (is_shadow(t)) inhash = 1; @@ -1518,19 +1503,13 @@ void PYTHON::cpp_declare_const(char *name, char *iname, SwigType *type, char *value) { char *realname; int oldshadow = shadow; - char cname[512]; if (shadow) shadow = shadow | PYSHADOW_MEMBER; this->Language::cpp_declare_const(name,iname,type,value); shadow = oldshadow; - if (shadow) { + if (shadow && !is_multiple_definition()) { realname = iname ? iname : name; - - /* Check to see if we've already seen this */ - sprintf(cname,"python:%s::%s", class_name, realname); - if (Getattr(symbols,cname)) return; - Setattr(symbols,cname,cname); Printv(cinit, tab4, realname, " = ", module, ".", Swig_name_member(class_name,realname), "\n", 0); } } |