This is the mail archive of the frysk-cvs@sources.redhat.com mailing list for the frysk project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[SCM] master: Clean up indentation generation.


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]