summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrant K. Kyser <brantkyser@gmail.com>2013-01-05 05:25:33 -0600
committerBrant K. Kyser <brantkyser@gmail.com>2013-01-05 05:25:33 -0600
commitc62cd63f713aeeda9dd938a3dc1311f8d2f14e06 (patch)
tree179f6ba4615da724b6ac30c1298851803d139eac
parentb005c68009b51f521f2d469eb557164cb657bc8f (diff)
downloadswig-c62cd63f713aeeda9dd938a3dc1311f8d2f14e06.tar.gz
Patch for SourceForge Bug #1299 broke D and C#. Update C# module to reflect these changes.
-rw-r--r--Source/Modules/csharp.cxx45
1 files changed, 15 insertions, 30 deletions
diff --git a/Source/Modules/csharp.cxx b/Source/Modules/csharp.cxx
index c54475029..d78253f1a 100644
--- a/Source/Modules/csharp.cxx
+++ b/Source/Modules/csharp.cxx
@@ -198,24 +198,6 @@ public:
return proxyname;
}
- /* -----------------------------------------------------------------------------
- * directorClassName()
- * ----------------------------------------------------------------------------- */
-
- String *directorClassName(Node *n) {
- String *dirclassname;
- const char *attrib = "director:classname";
-
- if (!(dirclassname = Getattr(n, attrib))) {
- String *classname = Getattr(n, "sym:name");
-
- dirclassname = NewStringf("SwigDirector_%s", classname);
- Setattr(n, attrib, dirclassname);
- }
-
- return dirclassname;
- }
-
/* ------------------------------------------------------------
* main()
* ------------------------------------------------------------ */
@@ -3407,6 +3389,7 @@ public:
String *sym_name = Getattr(n, "sym:name");
String *qualified_classname = Copy(sym_name);
String *nspace = getNSpace();
+ String *dirClassName = directorClassName(n);
if (nspace)
Insert(qualified_classname, 0, NewStringf("%s.", nspace));
@@ -3418,7 +3401,7 @@ public:
Printf(code_wrap->def, "SWIGEXPORT void SWIGSTDCALL %s(void *objarg", wname);
Printf(code_wrap->code, " %s *obj = (%s *)objarg;\n", norm_name, norm_name);
- Printf(code_wrap->code, " SwigDirector_%s *director = dynamic_cast<SwigDirector_%s *>(obj);\n", sym_name, sym_name);
+ Printf(code_wrap->code, " %s *director = dynamic_cast<%s *>(obj);\n", dirClassName, dirClassName);
// TODO: if statement not needed?? - Java too
Printf(code_wrap->code, " if (director) {\n");
Printf(code_wrap->code, " director->swig_connect_director(");
@@ -3430,7 +3413,7 @@ public:
Printf(code_wrap->def, ", ");
if (i != first_class_dmethod)
Printf(code_wrap->code, ", ");
- Printf(code_wrap->def, "SwigDirector_%s::SWIG_Callback%s_t callback%s", sym_name, methid, methid);
+ Printf(code_wrap->def, "%s::SWIG_Callback%s_t callback%s", dirClassName, methid, methid);
Printf(code_wrap->code, "callback%s", methid);
Printf(imclass_class_code, ", %s.SwigDelegate%s_%s delegate%s", qualified_classname, sym_name, methid, methid);
}
@@ -3447,6 +3430,7 @@ public:
Delete(wname);
Delete(swig_director_connect);
Delete(qualified_classname);
+ Delete(dirClassName);
}
/* ---------------------------------------------------------------
@@ -3962,15 +3946,15 @@ public:
* ------------------------------------------------------------ */
int classDirectorDefaultConstructor(Node *n) {
- String *classname = Swig_class_name(n);
+ String *classname = directorClassName(n);
String *classtype = SwigType_namestr(Getattr(n, "name"));
Wrapper *w = NewWrapper();
- Printf(w->def, "SwigDirector_%s::SwigDirector_%s() : %s {", classname, classname, Getattr(n, "director:ctor"));
+ Printf(w->def, "%s::%s() : %s {", classname, classname, Getattr(n, "director:ctor"));
Printf(w->code, "}\n");
Wrapper_print(w, f_directors);
- Printf(f_directors_h, " SwigDirector_%s();\n", classname);
+ Printf(f_directors_h, " %s();\n", classname);
DelWrapper(w);
Delete(classtype);
Delete(classname);
@@ -4014,15 +3998,15 @@ public:
int classDirectorDestructor(Node *n) {
Node *current_class = getCurrentClass();
- String *classname = Swig_class_name(current_class);
+ String *classname = directorClassName(current_class);
Wrapper *w = NewWrapper();
if (Getattr(n, "throw")) {
- Printf(f_directors_h, " virtual ~SwigDirector_%s() throw ();\n", classname);
- Printf(w->def, "SwigDirector_%s::~SwigDirector_%s() throw () {\n", classname, classname);
+ Printf(f_directors_h, " virtual ~%s() throw ();\n", classname);
+ Printf(w->def, "%s::~%s() throw () {\n", classname, classname);
} else {
- Printf(f_directors_h, " virtual ~SwigDirector_%s();\n", classname);
- Printf(w->def, "SwigDirector_%s::~SwigDirector_%s() {\n", classname, classname);
+ Printf(f_directors_h, " virtual ~%s();\n", classname);
+ Printf(w->def, "%s::~%s() {\n", classname, classname);
}
Printv(w->code, "}\n", NIL);
@@ -4120,8 +4104,7 @@ public:
String *base = Getattr(n, "classtype");
String *class_ctor = NewString("Swig::Director()");
- String *classname = Swig_class_name(n);
- String *directorname = NewStringf("SwigDirector_%s", classname);
+ String *directorname = directorClassName(n);
String *declaration = Swig_class_declaration(n, directorname);
Printf(declaration, " : public %s, public Swig::Director", base);
@@ -4129,6 +4112,8 @@ public:
// Stash stuff for later.
Setattr(n, "director:decl", declaration);
Setattr(n, "director:ctor", class_ctor);
+
+ Delete(directorname);
}
}; /* class CSHARP */