From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9898 invoked by alias); 9 May 2008 16:49:25 -0000 Received: (qmail 9831 invoked by uid 367); 9 May 2008 16:49:24 -0000 Date: Fri, 09 May 2008 16:49:00 -0000 Message-ID: <20080509164924.9816.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Liberally generate global (::) qualified names. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: dcceec6534cd5e28eca8dccc095f4c44113d9160 X-Git-Newrev: 3b8311fe61d3f7cf617fbbfa8467402c590e6834 Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q2/txt/msg00212.txt.bz2 The branch, master has been updated via 3b8311fe61d3f7cf617fbbfa8467402c590e6834 (commit) from dcceec6534cd5e28eca8dccc095f4c44113d9160 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 3b8311fe61d3f7cf617fbbfa8467402c590e6834 Author: Andrew Cagney Date: Fri May 9 12:48:07 2008 -0400 Liberally generate global (::) qualified names. frysk-sys/frysk/jnixx/ChangeLog 2008-05-09 Andrew Cagney * Printer.java (printCxxType(Class)): Delete. (printCxxName(Class,boolean)): New. (printQualifiedCxxName(Class)): Use. (printGlobalCxxName(Class)): Use. (printGlobalCxxName(Member)): New. * PrintHxxDefinitions.java: Update. * PrintCxxDefinitions.java: Update. * PrintDeclarations.java: Update. ----------------------------------------------------------------------- Summary of changes: frysk-sys/frysk/jnixx/ChangeLog | 9 ++ frysk-sys/frysk/jnixx/PrintCxxDefinitions.java | 6 +- frysk-sys/frysk/jnixx/PrintDeclarations.java | 8 +- frysk-sys/frysk/jnixx/PrintHxxDefinitions.java | 8 +- frysk-sys/frysk/jnixx/Printer.java | 114 +++++++++++++----------- 5 files changed, 81 insertions(+), 64 deletions(-) First 500 lines of diff: diff --git a/frysk-sys/frysk/jnixx/ChangeLog b/frysk-sys/frysk/jnixx/ChangeLog index c527462..42d2714 100644 --- a/frysk-sys/frysk/jnixx/ChangeLog +++ b/frysk-sys/frysk/jnixx/ChangeLog @@ -1,5 +1,14 @@ 2008-05-09 Andrew Cagney + * Printer.java (printCxxType(Class)): Delete. + (printCxxName(Class,boolean)): New. + (printQualifiedCxxName(Class)): Use. + (printGlobalCxxName(Class)): Use. + (printGlobalCxxName(Member)): New. + * PrintHxxDefinitions.java: Update. + * PrintCxxDefinitions.java: Update. + * PrintDeclarations.java: Update. + * Main.java (treatAsNative(Method)): New. (treatAsPrivate(Member)): New. * PrintDeclarations.java: Use. diff --git a/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java b/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java index 1e8be54..9bd1efe 100644 --- a/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java +++ b/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java @@ -79,13 +79,13 @@ class PrintCxxDefinitions extends ClassWalker { p.println("::jnixx::env _env = ::jnixx::env(_jni);"); Class returnType = method.getReturnType(); if (returnType != Void.TYPE) { - p.printCxxType(returnType); + p.printGlobalCxxName(returnType); p.print(" ret = "); } if (isStatic) { - p.printQualifiedCxxName(method); + p.printGlobalCxxName(method); } else { - p.printCxxType(method.getDeclaringClass()); + p.printGlobalCxxName(method.getDeclaringClass()); p.print("(object)."); p.print(method.getName()); } diff --git a/frysk-sys/frysk/jnixx/PrintDeclarations.java b/frysk-sys/frysk/jnixx/PrintDeclarations.java index 32c9b34..6aa507f 100644 --- a/frysk-sys/frysk/jnixx/PrintDeclarations.java +++ b/frysk-sys/frysk/jnixx/PrintDeclarations.java @@ -59,7 +59,7 @@ class PrintDeclarations extends ClassWalker { } p.print("inline "); if (get) { - p.printCxxType(field.getType()); + p.printGlobalCxxName(field.getType()); p.print(" Get"); } else { p.print("void Set"); @@ -70,7 +70,7 @@ class PrintDeclarations extends ClassWalker { p.print("(::jnixx::env"); if (!get) { p.print(", "); - p.printCxxType(field.getType()); + p.printGlobalCxxName(field.getType()); } p.println(");"); } @@ -85,7 +85,7 @@ class PrintDeclarations extends ClassWalker { public void acceptConstructor(Constructor constructor) { p.printlnModifiers(constructor); p.print("static inline "); - p.printCxxType(constructor.getDeclaringClass()); + p.printGlobalCxxName(constructor.getDeclaringClass()); p.print(" New("); p.printFormalCxxParameters(constructor, false); p.println(");"); @@ -108,7 +108,7 @@ class PrintDeclarations extends ClassWalker { if (!Main.treatAsNative(method)) { p.print("inline "); } - p.printCxxType(method.getReturnType()); + p.printGlobalCxxName(method.getReturnType()); p.print(" "); p.printName(method); p.print("("); diff --git a/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java b/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java index 8ae9bea..2c07a7f 100644 --- a/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java +++ b/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java @@ -56,7 +56,7 @@ class PrintHxxDefinitions extends ClassWalker { Class type = field.getType(); p.println(); if (get) { - p.printCxxType(type); + p.printGlobalCxxName(type); p.println(); } else { p.println("void"); @@ -74,7 +74,7 @@ class PrintHxxDefinitions extends ClassWalker { p.print("(::jnixx::env _env"); if (!get) { p.print(", "); - p.printCxxType(type); + p.printGlobalCxxName(type); p.print(" p0"); } p.print(")"); @@ -127,7 +127,7 @@ class PrintHxxDefinitions extends ClassWalker { boolean isStatic = Modifier.isStatic(method.getModifiers()); Class returnType = method.getReturnType(); p.println(); - p.printCxxType(returnType); + p.printGlobalCxxName(returnType); p.println(); p.printQualifiedCxxName(method); p.print("("); @@ -185,7 +185,7 @@ class PrintHxxDefinitions extends ClassWalker { } void acceptConstructor(Constructor constructor) { p.println(); - p.printCxxType(constructor.getDeclaringClass()); + p.printGlobalCxxName(constructor.getDeclaringClass()); p.println(); p.printQualifiedCxxName(constructor); p.print("("); diff --git a/frysk-sys/frysk/jnixx/Printer.java b/frysk-sys/frysk/jnixx/Printer.java index e5a472f..b75968a 100644 --- a/frysk-sys/frysk/jnixx/Printer.java +++ b/frysk-sys/frysk/jnixx/Printer.java @@ -151,32 +151,51 @@ class Printer { } /** - * Print the class's fully qualified C++ name; that is "." - * replaced by "::". + * Given a class describing a type (class of basic), print the JNI + * equivalent name. */ - void printGlobalCxxName(Class klass) { + private void printCxxName(Class klass, boolean global) { if (klass == null) { - print("::jnixx::interface"); - } else if (klass.isArray()) { - throw new RuntimeException("array class: " + klass); + if (global) { + print("::"); + } + print("jnixx::interface"); } else if (klass.isPrimitive()) { - print("j"); - print(klass.getName()); + if (klass == Void.TYPE) { + print("void"); + } else if (klass == Boolean.TYPE) { + print("bool"); + } else { + print("j"); + print(klass.getName()); + } + } else if (klass.isArray()) { + Class componentType = klass.getComponentType(); + if (componentType.isPrimitive()) { + print("j"); + print(componentType.getName()); + print("Array"); + } else { + printCxxName(klass.getComponentType(), global); + print("Array"); + } } else { - print("::"); + if (global) { + print("::"); + } print(klass.getName().replaceAll("\\.", "::")); } } + + /** + * Print the class's fully qualified C++ name; that is "." + * replaced by "::". + */ + void printGlobalCxxName(Class klass) { + printCxxName(klass, true); + } void printQualifiedCxxName(Class klass) { - if (klass.isPrimitive()) { - print("j"); - print(klass.getName()); - } else if (klass.isArray()) { - printQualifiedCxxName(klass.getComponentType()); - print("Array"); - } else { - print(klass.getName().replaceAll("\\.", "::")); - } + printCxxName(klass, false); } /** @@ -197,21 +216,37 @@ class Printer { * Print the method's fully qualified C++ name; that is "." * replaced by "::". */ - Printer printQualifiedCxxName(Member member) { + void printQualifiedCxxName(Member member) { printQualifiedCxxName(member.getDeclaringClass()); print("::"); printName(member); - return this; + } + /** + * Print the method's fully qualified C++ name; that is "." + * replaced by "::". + */ + void printGlobalCxxName(Member member) { + printGlobalCxxName(member.getDeclaringClass()); + print("::"); + printName(member); } /** * Print the constructor's fully qualified C++ name; that is "." * replaced by "::". */ - Printer printQualifiedCxxName(Constructor constructor) { + void printQualifiedCxxName(Constructor constructor) { printQualifiedCxxName(constructor.getDeclaringClass()); print("::"); print("New"); - return this; + } + /** + * Print the constructor's fully qualified C++ name; that is "." + * replaced by "::". + */ + void printGlobalCxxName(Constructor constructor) { + printGlobalCxxName(constructor.getDeclaringClass()); + print("::"); + print("New"); } /** @@ -376,33 +411,6 @@ class Printer { } /** - * Given a class describing a type (class of basic), print the JNI - * equivalent name. - */ - void printCxxType(Class klass) { - if (klass.isPrimitive()) { - if (klass == Void.TYPE) { - print("void"); - } else if (klass == Boolean.TYPE) { - print("bool"); - } else { - print("j"); - print(klass.getName()); - } - } else if (klass.isArray()) { - if (klass.getComponentType() == Boolean.TYPE) { - print("jbooleanArray"); - } else { - printCxxType(klass.getComponentType()); - print("Array"); - } - } else { - print("::"); - print(klass.getName().replaceAll("\\.", "::")); - } - } - - /** * Given an array of types, print them as a list (presumably this * is a list of parameters). */ @@ -414,7 +422,7 @@ class Printer { print(" _env"); for (int i = 0; i < params.length; i++) { print(", "); - printCxxType(params[i]); + printGlobalCxxName(params[i]); if (printArgs) print(" p" + i); } @@ -457,7 +465,7 @@ class Printer { && param.getComponentType().isPrimitive()) { print("p" + i); } else { - printCxxType(param); + printGlobalCxxName(param); print("(p" + i + ")"); } } @@ -568,11 +576,11 @@ class Printer { } else if (returnType.isArray() && returnType.getComponentType().isPrimitive()) { print("("); - printCxxType(returnType); + printGlobalCxxName(returnType); print(")"); print(variable); } else { - printCxxType(returnType); + printGlobalCxxName(returnType); print("("); print(variable); print(")"); hooks/post-receive -- frysk system monitor/debugger