Add jniclasspackage pragma & change error regarding use of nspace without -package to warning.
This commit is contained in:
parent
dba0adce71
commit
3bdcb14117
2 changed files with 33 additions and 9 deletions
|
|
@ -241,6 +241,7 @@
|
|||
#define WARN_JAVA_TYPEMAP_JAVACONSTRUCT_UNDEF 823
|
||||
#define WARN_JAVA_TYPEMAP_DIRECTORIN_NODESC 824
|
||||
#define WARN_JAVA_NO_DIRECTORCONNECT_ATTR 825
|
||||
#define WARN_JAVA_NSPACE_WITHOUT_PACKAGE 826
|
||||
|
||||
/* please leave 810-829 free for Java */
|
||||
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ class JAVA:public Language {
|
|||
String *imclass_imports; //intermediary class imports from %pragma
|
||||
String *module_imports; //module imports from %pragma
|
||||
String *imclass_baseclass; //inheritance for intermediary class class from %pragma
|
||||
String *imclass_class_package; //package in which to generate the jni class
|
||||
String *module_baseclass; //inheritance for module class from %pragma
|
||||
String *imclass_interfaces; //interfaces for intermediary class class from %pragma
|
||||
String *module_interfaces; //interfaces for module class from %pragma
|
||||
|
|
@ -364,6 +365,7 @@ public:
|
|||
proxy_class_code = NewString("");
|
||||
module_class_constants_code = NewString("");
|
||||
imclass_baseclass = NewString("");
|
||||
imclass_class_package = NewString("");
|
||||
imclass_interfaces = NewString("");
|
||||
imclass_class_modifiers = NewString("");
|
||||
module_class_code = NewString("");
|
||||
|
|
@ -444,7 +446,7 @@ public:
|
|||
}
|
||||
// Generate the intermediary class
|
||||
{
|
||||
String *filen = NewStringf("%s%s.java", SWIG_output_directory(), imclass_name);
|
||||
String *filen = NewStringf("%s%s/%s.java", SWIG_output_directory(), imclass_class_package, imclass_name);
|
||||
File *f_im = NewFile(filen, "w", SWIG_output_files());
|
||||
if (!f_im) {
|
||||
FileErrorDisplay(filen);
|
||||
|
|
@ -457,8 +459,10 @@ public:
|
|||
// Start writing out the intermediary class file
|
||||
emitBanner(f_im);
|
||||
|
||||
if (package)
|
||||
Printf(f_im, "package %s;\n", package);
|
||||
if (Len(imclass_class_package))
|
||||
Printf(f_im, "package %s;", imclass_class_package);
|
||||
else if (package)
|
||||
Printf(f_im, "package %s;\n", package);
|
||||
|
||||
if (imclass_imports)
|
||||
Printf(f_im, "%s\n", imclass_imports);
|
||||
|
|
@ -625,6 +629,8 @@ public:
|
|||
module_class_constants_code = NULL;
|
||||
Delete(imclass_baseclass);
|
||||
imclass_baseclass = NULL;
|
||||
Delete(imclass_class_package);
|
||||
imclass_class_package = NULL;
|
||||
Delete(imclass_interfaces);
|
||||
imclass_interfaces = NULL;
|
||||
Delete(imclass_class_modifiers);
|
||||
|
|
@ -1186,8 +1192,7 @@ public:
|
|||
full_imclass_name = NewStringf("%s.%s", package, imclass_name);
|
||||
} else {
|
||||
String *name = Getattr(n, "name") ? Getattr(n, "name") : NewString("<unnamed>");
|
||||
Swig_error(Getfile(n), Getline(n), "The nspace feature used on '%s' is not supported unless a package is specified with -package - Java does not support types declared in a named package accessing types declared in an unnamed package.\n", name);
|
||||
SWIG_exit(EXIT_FAILURE);
|
||||
Swig_warning(WARN_JAVA_NSPACE_WITHOUT_PACKAGE, Getfile(n), Getline(n), "The nspace feature is used on '%s' without a package is specified with -package - This may result in generated code that does not compile as Java does not support types declared in a named package accessing types declared in an unnamed package.\n", name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1574,7 +1579,8 @@ public:
|
|||
* pragmaDirective()
|
||||
*
|
||||
* Valid Pragmas:
|
||||
* jniclassbase - base (extends) for the intermediary class
|
||||
* jniclassbase - base (extends) for the intermediary
|
||||
* jniclasspackage - package in which to generate the jni class
|
||||
* jniclassclassmodifiers - class modifiers for the intermediary class
|
||||
* jniclasscode - text (java code) is copied verbatim to the intermediary class
|
||||
* jniclassimports - import statements for the intermediary class
|
||||
|
|
@ -1602,7 +1608,25 @@ public:
|
|||
if (Strcmp(code, "jniclassbase") == 0) {
|
||||
Delete(imclass_baseclass);
|
||||
imclass_baseclass = Copy(strvalue);
|
||||
} else if (Strcmp(code, "jniclassclassmodifiers") == 0) {
|
||||
} else if (Strcmp(code, "jniclasspackage") == 0) {
|
||||
Delete(imclass_class_package);
|
||||
imclass_class_package = Copy(strvalue);
|
||||
String *imclass_class_package_jniname = makeValidJniName(imclass_class_package);
|
||||
Printv(jnipackage, imclass_class_package_jniname, NIL);
|
||||
Delete(imclass_class_package_jniname);
|
||||
Replaceall(jnipackage, NSPACE_SEPARATOR, "_");
|
||||
Append(jnipackage, "_");
|
||||
|
||||
String *wrapper_name = NewString("");
|
||||
String *imclass_class_jniname = makeValidJniName(imclass_name);
|
||||
Printf(wrapper_name, "Java_%s%s_%%f", jnipackage, imclass_class_jniname);
|
||||
Delete(imclass_class_jniname);
|
||||
|
||||
Swig_name_unregister("wrapper");
|
||||
Swig_name_register("wrapper", Char(wrapper_name));
|
||||
|
||||
Delete(wrapper_name);
|
||||
} else if (Strcmp(code, "jniclassclassmodifiers") == 0) {
|
||||
Delete(imclass_class_modifiers);
|
||||
imclass_class_modifiers = Copy(strvalue);
|
||||
} else if (Strcmp(code, "jniclasscode") == 0) {
|
||||
|
|
@ -1894,8 +1918,7 @@ public:
|
|||
full_imclass_name = NewStringf("%s.%s", package, imclass_name);
|
||||
} else {
|
||||
String *name = Getattr(n, "name") ? Getattr(n, "name") : NewString("<unnamed>");
|
||||
Swig_error(Getfile(n), Getline(n), "The nspace feature used on '%s' is not supported unless a package is specified with -package - Java does not support types declared in a named package accessing types declared in an unnamed package.\n", name);
|
||||
SWIG_exit(EXIT_FAILURE);
|
||||
Swig_warning(WARN_JAVA_NSPACE_WITHOUT_PACKAGE, Getfile(n), Getline(n), "The nspace feature is used on '%s' without a package is specified with -package - This may result in generated code that does not compile as Java does not support types declared in a named package accessing types declared in an unnamed package.\n", name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue