summaryrefslogtreecommitdiff
path: root/SWIG/Source/Modules1.1/python.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'SWIG/Source/Modules1.1/python.cxx')
-rw-r--r--SWIG/Source/Modules1.1/python.cxx45
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);
}
}