From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14987 invoked by alias); 8 May 2008 03:53:27 -0000 Received: (qmail 14962 invoked by uid 367); 8 May 2008 03:53:27 -0000 Date: Thu, 08 May 2008 03:53:00 -0000 Message-ID: <20080508035327.14947.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Factor out a common print-return-code method. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 2a7c99edb7f6fde358b17281aa82837b0a1b4229 X-Git-Newrev: 476c341a9e7d666f1e0724392ca8c2d0c00b895f Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q2/txt/msg00202.txt.bz2 The branch, master has been updated via 476c341a9e7d666f1e0724392ca8c2d0c00b895f (commit) from 2a7c99edb7f6fde358b17281aa82837b0a1b4229 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 476c341a9e7d666f1e0724392ca8c2d0c00b895f Author: Andrew Cagney Date: Wed May 7 23:51:55 2008 -0400 Factor out a common print-return-code method. frysk-sys/frysk/jnixx/ChangeLog 2008-05-07 Andrew Cagney * Printer.java (printReturn): New. * PrintHxxDefinitions.java: Use. ----------------------------------------------------------------------- Summary of changes: frysk-sys/frysk/jnixx/ChangeLog | 3 +++ frysk-sys/frysk/jnixx/PrintHxxDefinitions.java | 24 +++++------------------- frysk-sys/frysk/jnixx/Printer.java | 21 +++++++++++++++++++++ 3 files changed, 29 insertions(+), 19 deletions(-) First 500 lines of diff: diff --git a/frysk-sys/frysk/jnixx/ChangeLog b/frysk-sys/frysk/jnixx/ChangeLog index 48251d9..66077cd 100644 --- a/frysk-sys/frysk/jnixx/ChangeLog +++ b/frysk-sys/frysk/jnixx/ChangeLog @@ -1,5 +1,8 @@ 2008-05-07 Andrew Cagney + * Printer.java (printReturn): New. + * PrintHxxDefinitions.java: Use. + * jni/Native.cxx: Include jni.hxx; fully qualify jnixx::env. * print.cxx: Ditto. * print.hxx: Ditto. diff --git a/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java b/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java index a1d4607..7e81aeb 100644 --- a/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java +++ b/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java @@ -117,15 +117,7 @@ class PrintHxxDefinitions extends ClassWalker { } p.println(");"); if (get) { - p.print("return "); - if (type.isPrimitive()) { - p.print("ret"); - } else if (type.getName().startsWith("java.")) { - p.print("ret"); - } else { - p.printCxxType(type); - p.print("(ret)"); - } + p.printReturn(isStatic, type, "ret"); p.println(";"); } } @@ -177,13 +169,7 @@ class PrintHxxDefinitions extends ClassWalker { p.printActualJniParameters(method); p.println(");"); if (returnType != Void.TYPE) { - p.print("return "); - if (returnType.isPrimitive()) { - p.print("ret;"); - } else { - p.printCxxType(returnType); - p.print("(ret)"); - } + p.printReturn(isStatic, returnType, "ret"); p.println(";"); } } @@ -224,9 +210,9 @@ class PrintHxxDefinitions extends ClassWalker { while (p.dent(1, "if (object == NULL) {", "}")) { p.println("throw ::jnixx::exception();"); } - p.print("return "); - p.printCxxType(constructor.getDeclaringClass()); - p.println("(object);"); + p.printReturn(true, constructor.getDeclaringClass(), + "object"); + p.println(";"); } } diff --git a/frysk-sys/frysk/jnixx/Printer.java b/frysk-sys/frysk/jnixx/Printer.java index e18ae2a..7c8f1b8 100644 --- a/frysk-sys/frysk/jnixx/Printer.java +++ b/frysk-sys/frysk/jnixx/Printer.java @@ -551,6 +551,27 @@ class Printer { } /** + * Print a return statement, possibly using casts. + */ + void printReturn(boolean isStatic, Class returnType, String variable) { + print("return "); + if (returnType.isPrimitive()) { + print(variable); + } else if (returnType.isArray() + && returnType.getComponentType().isPrimitive()) { + print("("); + printCxxType(returnType); + print(")"); + print(variable); + } else { + printCxxType(returnType); + print("("); + print(variable); + print(")"); + } + } + + /** * Flush the output. */ void flush() { hooks/post-receive -- frysk system monitor/debugger