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: linkBe 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).