public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Liberally generate global (::) qualified names.
@ 2008-05-09 16:49 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-05-09 16:49 UTC (permalink / raw)
  To: frysk-cvs

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 <cagney@redhat.com>
Date:   Fri May 9 12:48:07 2008 -0400

    Liberally generate global (::) qualified names.
    
    frysk-sys/frysk/jnixx/ChangeLog
    2008-05-09  Andrew Cagney  <cagney@redhat.com>
    
    	* 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  <cagney@redhat.com>
 
+	* 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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-05-09 16:49 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-09 16:49 [SCM] master: Liberally generate global (::) qualified names cagney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).