public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Clean up indentation generation.
Date: Mon, 05 May 2008 16:20:00 -0000	[thread overview]
Message-ID: <20080505162007.17188.qmail@sourceware.org> (raw)

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


                 reply	other threads:[~2008-05-05 16:20 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=20080505162007.17188.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).