Java output formatting change and tweak to protected/private destructors

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4902 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2003-06-12 19:46:27 +00:00
commit c8d1feb8a0
2 changed files with 36 additions and 37 deletions

View file

@ -453,8 +453,8 @@ class CSHARP : public Language {
Putc(toupper((int) *Char(variable_name)), getter_setter_name); Putc(toupper((int) *Char(variable_name)), getter_setter_name);
Printf(getter_setter_name, "%s", Char(variable_name)+1); Printf(getter_setter_name, "%s", Char(variable_name)+1);
Setattr(n,"csharp:proxyfuncname", getter_setter_name); Setattr(n,"proxyfuncname", getter_setter_name);
Setattr(n,"csharp:imfuncname", symname); Setattr(n,"imfuncname", symname);
proxyClassFunctionHandler(n); proxyClassFunctionHandler(n);
Delete(getter_setter_name); Delete(getter_setter_name);
@ -1161,8 +1161,8 @@ class CSHARP : public Language {
if (proxy_flag) { if (proxy_flag) {
String *overloaded_name = getOverloadedName(n); String *overloaded_name = getOverloadedName(n);
String *intermediary_function_name = Swig_name_member(proxy_class_name, overloaded_name); String *intermediary_function_name = Swig_name_member(proxy_class_name, overloaded_name);
Setattr(n,"csharp:proxyfuncname", Getattr(n, "sym:name")); Setattr(n,"proxyfuncname", Getattr(n, "sym:name"));
Setattr(n,"csharp:imfuncname", intermediary_function_name); Setattr(n,"imfuncname", intermediary_function_name);
proxyClassFunctionHandler(n); proxyClassFunctionHandler(n);
Delete(overloaded_name); Delete(overloaded_name);
} }
@ -1181,8 +1181,8 @@ class CSHARP : public Language {
if (proxy_flag) { if (proxy_flag) {
String *overloaded_name = getOverloadedName(n); String *overloaded_name = getOverloadedName(n);
String *intermediary_function_name = Swig_name_member(proxy_class_name, overloaded_name); String *intermediary_function_name = Swig_name_member(proxy_class_name, overloaded_name);
Setattr(n,"csharp:proxyfuncname", Getattr(n,"sym:name")); Setattr(n,"proxyfuncname", Getattr(n,"sym:name"));
Setattr(n,"csharp:imfuncname", intermediary_function_name); Setattr(n,"imfuncname", intermediary_function_name);
proxyClassFunctionHandler(n); proxyClassFunctionHandler(n);
Delete(overloaded_name); Delete(overloaded_name);
} }
@ -1198,16 +1198,16 @@ class CSHARP : public Language {
* Function called for creating a C# wrapper function around a c++ function in the * Function called for creating a C# wrapper function around a c++ function in the
* proxy class. Used for both static and non-static C++ class functions. * proxy class. Used for both static and non-static C++ class functions.
* C++ class static functions map to C# static functions. * C++ class static functions map to C# static functions.
* Two extra attributes in the Node must be available. These are "csharp:proxyfuncname" - * Two extra attributes in the Node must be available. These are "proxyfuncname" -
* the name of the C# class proxy function, which in turn will call "csharp:imfuncname" - * the name of the C# class proxy function, which in turn will call "imfuncname" -
* the intermediary (PInvoke) function name in the intermediary class. * the intermediary (PInvoke) function name in the intermediary class.
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
void proxyClassFunctionHandler(Node *n) { void proxyClassFunctionHandler(Node *n) {
SwigType *t = Getattr(n,"type"); SwigType *t = Getattr(n,"type");
ParmList *l = Getattr(n,"parms"); ParmList *l = Getattr(n,"parms");
String *intermediary_function_name = Getattr(n,"csharp:imfuncname"); String *intermediary_function_name = Getattr(n,"imfuncname");
String *proxy_function_name = Getattr(n,"csharp:proxyfuncname"); String *proxy_function_name = Getattr(n,"proxyfuncname");
String *tm; String *tm;
Parm *p; Parm *p;
int i; int i;

View file

@ -283,7 +283,7 @@ class JAVA : public Language {
Delete(wrapper_name); Delete(wrapper_name);
Printf(f_wrappers,"#ifdef __cplusplus\n"); Printf(f_wrappers,"\n#ifdef __cplusplus\n");
Printf(f_wrappers,"extern \"C\" {\n"); Printf(f_wrappers,"extern \"C\" {\n");
Printf(f_wrappers,"#endif\n\n"); Printf(f_wrappers,"#endif\n\n");
@ -523,8 +523,8 @@ class JAVA : public Language {
Putc(toupper((int) *Char(variable_name)), getter_setter_name); Putc(toupper((int) *Char(variable_name)), getter_setter_name);
Printf(getter_setter_name, "%s", Char(variable_name)+1); Printf(getter_setter_name, "%s", Char(variable_name)+1);
Setattr(n,"java:proxyfuncname", getter_setter_name); Setattr(n,"proxyfuncname", getter_setter_name);
Setattr(n,"java:imfuncname", symname); Setattr(n,"imfuncname", symname);
proxyClassFunctionHandler(n); proxyClassFunctionHandler(n);
Delete(getter_setter_name); Delete(getter_setter_name);
@ -1121,25 +1121,24 @@ class JAVA : public Language {
if (derived) if (derived)
tm = typemapLookup("javadestruct_derived", classDeclarationName, WARN_NONE); tm = typemapLookup("javadestruct_derived", classDeclarationName, WARN_NONE);
else else
tm = typemapLookup("javadestruct_base", classDeclarationName, WARN_NONE); tm = typemapLookup("javadestruct", classDeclarationName, WARN_NONE);
// Emit the finalize and delete methods // Emit the finalize and delete methods
if (*Char(destructor_call) && tm) { if (tm) {
Printv(destruct, tm, NIL); // Finalize method
Replaceall(destruct, "$jnicall", destructor_call); if (*Char(destructor_call)) {
// finalize method Printv(proxy_class_def,
Printv(proxy_class_def, typemapLookup("javafinalize", classDeclarationName, WARN_NONE),
typemapLookup("javafinalize", classDeclarationName, WARN_NONE), NIL);
"\n",
NIL);
// delete method
if (*Char(destruct)) {
Printv(proxy_class_def, " public void delete() ", destruct, "\n", NIL);
} }
} else { // delete method
// Ensure method exists for derived class to call. Don't bother if the typemap doesn't exist. Printv(destruct, tm, NIL);
if (tm && *Char(tm)) if (*Char(destructor_call))
Printv(proxy_class_def, "\n protected void delete() {\n }\n", NIL); Replaceall(destruct, "$jnicall", destructor_call);
else
Replaceall(destruct, "$jnicall", "");
if (*Char(destruct))
Printv(proxy_class_def, "\n ", *Char(destructor_call) ? "public": "protected", " void delete() ", destruct, "\n", NIL);
} }
Delete(destruct); Delete(destruct);
@ -1273,8 +1272,8 @@ class JAVA : public Language {
if (proxy_flag) { if (proxy_flag) {
String *overloaded_name = getOverloadedName(n); String *overloaded_name = getOverloadedName(n);
String *intermediary_function_name = Swig_name_member(proxy_class_name, overloaded_name); String *intermediary_function_name = Swig_name_member(proxy_class_name, overloaded_name);
Setattr(n,"java:proxyfuncname", Getattr(n, "sym:name")); Setattr(n,"proxyfuncname", Getattr(n, "sym:name"));
Setattr(n,"java:imfuncname", intermediary_function_name); Setattr(n,"imfuncname", intermediary_function_name);
proxyClassFunctionHandler(n); proxyClassFunctionHandler(n);
Delete(overloaded_name); Delete(overloaded_name);
} }
@ -1293,8 +1292,8 @@ class JAVA : public Language {
if (proxy_flag) { if (proxy_flag) {
String *overloaded_name = getOverloadedName(n); String *overloaded_name = getOverloadedName(n);
String *intermediary_function_name = Swig_name_member(proxy_class_name, overloaded_name); String *intermediary_function_name = Swig_name_member(proxy_class_name, overloaded_name);
Setattr(n,"java:proxyfuncname", Getattr(n,"sym:name")); Setattr(n,"proxyfuncname", Getattr(n,"sym:name"));
Setattr(n,"java:imfuncname", intermediary_function_name); Setattr(n,"imfuncname", intermediary_function_name);
proxyClassFunctionHandler(n); proxyClassFunctionHandler(n);
Delete(overloaded_name); Delete(overloaded_name);
} }
@ -1309,16 +1308,16 @@ class JAVA : public Language {
* Function called for creating a Java wrapper function around a c++ function in the * Function called for creating a Java wrapper function around a c++ function in the
* proxy class. Used for both static and non-static C++ class functions. * proxy class. Used for both static and non-static C++ class functions.
* C++ class static functions map to Java static functions. * C++ class static functions map to Java static functions.
* Two extra attributes in the Node must be available. These are "java:proxyfuncname" - * Two extra attributes in the Node must be available. These are "proxyfuncname" -
* the name of the Java class proxy function, which in turn will call "java:imfuncname" - * the name of the Java class proxy function, which in turn will call "imfuncname" -
* the intermediary (JNI) function name in the intermediary class. * the intermediary (JNI) function name in the intermediary class.
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
void proxyClassFunctionHandler(Node *n) { void proxyClassFunctionHandler(Node *n) {
SwigType *t = Getattr(n,"type"); SwigType *t = Getattr(n,"type");
ParmList *l = Getattr(n,"parms"); ParmList *l = Getattr(n,"parms");
String *intermediary_function_name = Getattr(n,"java:imfuncname"); String *intermediary_function_name = Getattr(n,"imfuncname");
String *proxy_function_name = Getattr(n,"java:proxyfuncname"); String *proxy_function_name = Getattr(n,"proxyfuncname");
String *tm; String *tm;
Parm *p; Parm *p;
int i; int i;