public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Clean up indentation generation.
@ 2008-05-05 16:20 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-05-05 16:20 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  a92d0b3824f9d328d49e4f849d5b94d5a1c0118f (commit)
      from  0affa135c67c130681293a5b5f28ef4fcd8d4d34 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit a92d0b3824f9d328d49e4f849d5b94d5a1c0118f
Author: Andrew Cagney <cagney@redhat.com>
Date:   Mon May 5 12:19:02 2008 -0400

    Clean up indentation generation.
    
    frysk-sys/frysk/jnixx/ChangeLog
    2008-05-05  Andrew Cagney  <cagney@redhat.com>
    
    	* Printer(dent(int,String,String)): New.
    	* PrintNamespaces.java: Clean up generated indentation.
    	* PrintDefinitions.java: Ditto.
    	* PrintDeclarations.java: Ditto.
    	* Main.java: Ditto.

-----------------------------------------------------------------------

Summary of changes:
 frysk-sys/frysk/jnixx/ChangeLog              |    6 +
 frysk-sys/frysk/jnixx/Main.java              |    8 +-
 frysk-sys/frysk/jnixx/PrintDeclarations.java |    3 +-
 frysk-sys/frysk/jnixx/PrintDefinitions.java  |  259 ++++++++++++++------------
 frysk-sys/frysk/jnixx/PrintNamespaces.java   |    6 +-
 frysk-sys/frysk/jnixx/Printer.java           |   22 +++
 6 files changed, 173 insertions(+), 131 deletions(-)

First 500 lines of diff:
diff --git a/frysk-sys/frysk/jnixx/ChangeLog b/frysk-sys/frysk/jnixx/ChangeLog
index 1308064..622b119 100644
--- a/frysk-sys/frysk/jnixx/ChangeLog
+++ b/frysk-sys/frysk/jnixx/ChangeLog
@@ -1,5 +1,11 @@
 2008-05-05  Andrew Cagney  <cagney@redhat.com>
 
+	* Printer(dent(int,String,String)): New.
+	* PrintNamespaces.java: Clean up generated indentation.
+	* PrintDefinitions.java: Ditto.
+	* PrintDeclarations.java: Ditto.
+	* Main.java: Ditto.
+
 	* jnixx.hxx: New.
 	* Printer.java: Generate jnixx::env& instead of JNIEnv*, and
 	jnixx::exception instead of jnixx_exception.
diff --git a/frysk-sys/frysk/jnixx/Main.java b/frysk-sys/frysk/jnixx/Main.java
index 52372a1..2b2e2db 100644
--- a/frysk-sys/frysk/jnixx/Main.java
+++ b/frysk-sys/frysk/jnixx/Main.java
@@ -64,10 +64,10 @@ class Main {
 	    p.print(" : public ");
 	    p.printQualifiedCxxName(parent);
 	}
-	p.println(" {");
-	WalkClass.visit(klass, new PrintDeclarations(p));
-	p.println();
-	p.println("};");
+	while(p.dent(0, "{", "};")) {
+	    WalkClass.visit(klass, new PrintDeclarations(p));
+	    p.println();
+	}
 	p.println();
 	p.println("#endif");
     }
diff --git a/frysk-sys/frysk/jnixx/PrintDeclarations.java b/frysk-sys/frysk/jnixx/PrintDeclarations.java
index a077417..d37b04b 100644
--- a/frysk-sys/frysk/jnixx/PrintDeclarations.java
+++ b/frysk-sys/frysk/jnixx/PrintDeclarations.java
@@ -54,7 +54,7 @@ class PrintDeclarations implements ClassWalker {
     public boolean acceptClass(Class klass) {
 	// Static get-class method - a class knows its own class.
 	p.println();
-	p.print("  public: static jclass Class(jnixx::env& env);");
+	p.println("public: static jclass Class(jnixx::env& env);");
 	return true;
     }
 
@@ -95,6 +95,7 @@ class PrintDeclarations implements ClassWalker {
     }
 
     public void acceptField(Field field) {
+	p.println();
 	printCxxFieldAccessorDeclaration(field, true);
 	if (!Modifier.isFinal(field.getModifiers())) {
 	    printCxxFieldAccessorDeclaration(field, false);
diff --git a/frysk-sys/frysk/jnixx/PrintDefinitions.java b/frysk-sys/frysk/jnixx/PrintDefinitions.java
index 24234fa..6aa97d8 100644
--- a/frysk-sys/frysk/jnixx/PrintDefinitions.java
+++ b/frysk-sys/frysk/jnixx/PrintDefinitions.java
@@ -58,13 +58,15 @@ class PrintDefinitions implements ClassWalker {
 	p.println();
 	p.println("jclass");
 	p.printQualifiedCxxName(klass);
-	p.println("::Class(jnixx::env& env) {");
-	p.println("  if (_Class == NULL) {");
-	p.println("    _Class = env.findClass(\""
-		+ klass.getName().replace("\\.", "/") + "\");");
-	p.println("  }");
-	p.println("  return _Class;");
-	p.println("}");
+	p.print("::Class(jnixx::env& env)");
+	while (p.dent(0, "{", "}")) {
+	    p.print("if (_Class == NULL)");
+	    while (p.dent(1, "{", "}")) {
+		p.println("_Class = env.findClass(\""
+			  + klass.getName().replace("\\.", "/") + "\");");
+	    }
+	    p.println("return _Class;");
+	}
 	return true;
     }
 
@@ -75,23 +77,25 @@ class PrintDefinitions implements ClassWalker {
 	p.printQualifiedCxxName(constructor);
 	p.print("(");
 	p.printFormalCxxParameters(constructor, true);
-	p.println(") {");
-	p.println("  static jmethodID id;");
-	p.println("  if (id == NULL)");
-	p.print("    id = env.getMethodID(Class(env), \"<init>\", \"(");
-	p.printJniSignature(constructor.getParameterTypes());
-	p.println(")V\");");
-	p.print("  ");
-	p.printCxxType(constructor.getDeclaringClass());
-	p.print(" object = (");
-	p.printCxxType(constructor.getDeclaringClass());
-	p.print(") env.newObject(");
-	p.printActualJniParameters(constructor);
-	p.println(");");
-	p.println("  if (object == NULL)");
-	p.println("    throw jnixx::exception();");
-	p.println("  return object;");
-	p.println("}");
+	p.print(")");
+	while (p.dent(0, "{", "}")) {
+	    p.println("static jmethodID id;");
+	    while (p.dent(1, "if (id == NULL) {", "}")) {
+		p.print("id = env.getMethodID(Class(env), \"<init>\", \"(");
+		p.printJniSignature(constructor.getParameterTypes());
+		p.println(")V\");");
+	    }
+	    p.printCxxType(constructor.getDeclaringClass());
+	    p.print("object = (");
+	    p.printCxxType(constructor.getDeclaringClass());
+	    p.print(") env.newObject(");
+	    p.printActualJniParameters(constructor);
+	    p.println(");");
+	    while (p.dent(1, "if (object == NULL) {", "}")) {
+		p.println("throw jnixx::exception();");
+	    }
+	    p.println("return object;");
+	}
     }
 
     private void printCxxFieldAccessorDefinition(Field field, boolean get) {
@@ -124,50 +128,51 @@ class PrintDefinitions implements ClassWalker {
 	    p.printCxxType(field.getType());
 	    p.print(" value");
 	}
-	p.println(") {");
-	p.println("  if (" + name + "ID == NULL) {");
-	p.print("    " + name + "ID = env.get");
-	if (isStatic) {
-	    p.print("Static");
-	}
-	p.print("FieldID(Class(env), \"");
-	p.print(name);
-	p.print("\", \"");
-	p.printJniSignature(field.getType());
-	p.print("\"");
-	p.println(");");
-	p.println("  }");
-	if (get) {
-	    p.print("  return");
-	    if (!field.getType().isPrimitive()) {
-		p.print(" (");
-		p.printCxxType(field.getType());
-		p.print(")");
+	p.print(")");
+	while (p.dent(0, "{", "}")) {
+	    while (p.dent(1, "if (" + name + "ID == NULL) {", "}")) {
+		p.print(name + "ID = env.get");
+		if (isStatic) {
+		    p.print("Static");
+		}
+		p.print("FieldID(Class(env), \"");
+		p.print(name);
+		p.print("\", \"");
+		p.printJniSignature(field.getType());
+		p.print("\"");
+		p.println(");");
 	    }
-	    p.print(" env.get");
-	} else {
-	    p.print("  env.set");
-	}
-	if (isStatic) {
-	    p.print("Static");
-	}
-	p.printJniReturnTypeName(field.getType());
-	p.print("Field(");
-	if (isStatic) {
-	    p.print("_Class");
-	} else {
-	    p.print("object");
-	}
-	p.print(", " + name + "ID");
-	if (!get) {
-	    p.print(",");
-	    if (!field.getType().isPrimitive()) {
-		p.print(" (jobject)");
+	    if (get) {
+		p.print("return");
+		if (!field.getType().isPrimitive()) {
+		    p.print(" (");
+		    p.printCxxType(field.getType());
+		    p.print(")");
+		}
+		p.print(" env.get");
+	    } else {
+		p.print("env.set");
 	    }
-	    p.print(" value");
+	    if (isStatic) {
+		p.print("Static");
+	    }
+	    p.printJniReturnTypeName(field.getType());
+	    p.print("Field(");
+	    if (isStatic) {
+		p.print("_Class");
+	    } else {
+		p.print("object");
+	    }
+	    p.print(", " + name + "ID");
+	    if (!get) {
+		p.print(",");
+		if (!field.getType().isPrimitive()) {
+		    p.print(" (jobject)");
+		}
+		p.print(" value");
+	    }
+	    p.println(");");
 	}
-	p.println(");");
-	p.println("}");
     }
 
     public void acceptField(Field field) {
@@ -192,77 +197,87 @@ class PrintDefinitions implements ClassWalker {
 	p.print(method.getName());
 	p.print("(");
 	p.printFormalCxxParameters(method, true);
-	p.println(") {");
-	p.println();
-	p.println("  static jmethodID id;");
-	p.println("  if (id == NULL)");
-	p.print("    id = env.get");
-	if (isStatic) {
-	    p.print("Static");
-	}
-	p.print("MethodID(Class(env), \"");
-	p.print(method.getName());
-	p.print("\", \"");
-	p.printJniSignature(method);
-	p.println("\");");
-	p.print("  ");
-	if (returnType != Void.TYPE) {
-	    p.printCxxType(returnType);
-	    p.print(" ret = ");
-	    if (!returnType.isPrimitive()) {
-		p.print("(");
+	p.println(")");
+	while (p.dent(0, "{", "}")) {
+	    p.println("static jmethodID id;");
+	    while (p.dent(1, "if (id == NULL) {", "}")) {
+		p.print("id = env.get");
+		if (isStatic) {
+		    p.print("Static");
+		}
+		p.print("MethodID(Class(env), \"");
+		p.print(method.getName());
+		p.print("\", \"");
+		p.printJniSignature(method);
+		p.println("\");");
+	    }
+	    if (returnType != Void.TYPE) {
 		p.printCxxType(returnType);
-		p.print(") ");
+		p.print(" ret = ");
+		if (!returnType.isPrimitive()) {
+		    p.print("(");
+		    p.printCxxType(returnType);
+		    p.print(") ");
+		}
+	    }
+	    p.print("env.call");
+	    if (isStatic) {
+		p.print("Static");
+	    }
+	    p.printJniReturnTypeName(returnType);
+	    p.print("Method(");
+	    p.printActualJniParameters(method);
+	    p.println(");");
+	    if (returnType != Void.TYPE) {
+		p.println("  return ret;");
 	    }
 	}
-	p.print("env.call");
-	if (isStatic) {
-	    p.print("Static");
-	}
-	p.printJniReturnTypeName(returnType);
-	p.print("Method(");
-	p.printActualJniParameters(method);
-	p.println(");");
-	if (returnType != Void.TYPE) {
-	    p.println("  return ret;");
-	}
-	p.println("}");
     }
 
     private void printNativeMethodDefinition(Method method) {
 	p.println();
-	p.println("extern \"C\" {");
-	p.print("  JNIEXPORT ");
-	p.printJniType(method.getReturnType());
-	p.print(" JNICALL ");
-	p.printJniName(method);
-	p.print("(");
-	p.printFormalJniParameters(method, false);
-	p.println(");");
-	p.println("}");
+	while (p.dent(0, "extern \"C\" {", "};")) {
+	    p.print("JNIEXPORT ");
+	    p.printJniType(method.getReturnType());
+	    p.print(" JNICALL ");
+	    p.printJniName(method);
+	    p.print("(");
+	    p.printFormalJniParameters(method, false);
+	    p.println(");");
+	}
 	p.println();
 	p.printJniType(method.getReturnType());
 	p.println();
 	p.printJniName(method);
 	p.print("(");
 	p.printFormalJniParameters(method, true);
-	p.println(") {");
-	p.println("  try {");
-	p.println("    jnixx::env jnixxEnv = jnixx::env(jniEnv);");
-	p.print("    ");
-	if (method.getReturnType() != Void.TYPE) {
-	    p.print("return ");
-	}
-	p.printQualifiedCxxName(method);
-	p.print("(");
-	p.printActualCxxParameters(method);
-	p.println(");");
-	p.println("  } catch (jnixx::exception) {");
-	if (method.getReturnType() != Void.TYPE) {
-	    p.println("    return 0;");
+	p.print(")");
+	while (p.dent(0, "{", "};")) {
+	    p.println("try {");
+	    {
+		p.indent();
+		p.println("jnixx::env jnixxEnv = jnixx::env(jniEnv);");
+		if (method.getReturnType() != Void.TYPE) {
+		    p.print("return ");
+		}
+		p.printQualifiedCxxName(method);
+		p.print("(");
+		p.printActualCxxParameters(method);
+		p.println(");");
+		p.outdent();
+	    }
+	    p.println("} catch (jnixx::exception) {");
+	    {
+		p.indent();
+		if (method.getReturnType() != Void.TYPE) {
+		    p.println("return 0;");
+		} else {
+		    p.println("return;");
+		}
+		p.outdent();
+	    }
+	    p.println("}");
 	}
-	p.println("  }");
-	p.println("}");
     }
 
     public void acceptMethod(Method method) {
diff --git a/frysk-sys/frysk/jnixx/PrintNamespaces.java b/frysk-sys/frysk/jnixx/PrintNamespaces.java
index ff403ad..edbc6a6 100644
--- a/frysk-sys/frysk/jnixx/PrintNamespaces.java
+++ b/frysk-sys/frysk/jnixx/PrintNamespaces.java
@@ -67,8 +67,7 @@ class PrintNamespaces implements ClassWalker {
 	for (int i = 0; i < names.length - 1; i++) {
 	    p.print("namespace ");
 	    p.print(names[i]);
-	    p.print(" {");
-	    p.println();
+	    p.println("{");
 	    p.indent();
 	}
 	p.print("struct ");
@@ -76,9 +75,8 @@ class PrintNamespaces implements ClassWalker {
 	p.print(";");
 	p.println();
 	for (int i = names.length - 2; i >= 0; i--) {
-	    p.print("}");
-	    p.println();
 	    p.outdent();
+	    p.println("}");
 	}
 	printedNamespaces.add(klass);
     }
diff --git a/frysk-sys/frysk/jnixx/Printer.java b/frysk-sys/frysk/jnixx/Printer.java
index ef3aaa6..30d8a6d 100644
--- a/frysk-sys/frysk/jnixx/Printer.java
+++ b/frysk-sys/frysk/jnixx/Printer.java
@@ -106,6 +106,28 @@ class Printer {
     private boolean indentationNeeded = true;
 
     /**
+     * Hack to allow the generation of indentation using a while loop.
+     * Use as: while(p.dent(0,"{","}")){...}.
+     */
+    boolean dent(int level, String prefix, String suffix) {
+	levels[level] = !levels[level];
+	if (levels[level]) {
+	    // Starting an indentation: false->true
+	    if (!indentationNeeded)
+		// part way through a line, space separate
+		print(" ");
+	    println(prefix);
+	    indent();
+	} else {
+	    // Finishing an indentation: true->false
+	    outdent();
+	    println(suffix);
+	}
+	return levels[level];
+    }
+    private boolean[] levels = new boolean[10];
+
+    /**
      * Pad using white space by N indentation units.
      */
     Printer pad(int n) {


hooks/post-receive
--
frysk system monitor/debugger


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

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

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-05 16:20 [SCM] master: Clean up indentation generation 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).