public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Liberally generate global (::) qualified names.
Date: Fri, 09 May 2008 16:49:00 -0000	[thread overview]
Message-ID: <20080509164924.9816.qmail@sourceware.org> (raw)

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


                 reply	other threads:[~2008-05-09 16:49 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080509164924.9816.qmail@sourceware.org \
    --to=cagney@sourceware.org \
    --cc=frysk-cvs@sourceware.org \
    --cc=frysk@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).