public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Require explict cast from jobject to jnixx object. Date: Fri, 09 May 2008 19:11:00 -0000 [thread overview] Message-ID: <20080509191147.13589.qmail@sourceware.org> (raw) The branch, master has been updated via 57fc116cd48ffb2388ccc34c8319f61eaa9c01e0 (commit) from 507270cf6348bdc42d1eed23c7b5eed81cf0b7a6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 57fc116cd48ffb2388ccc34c8319f61eaa9c01e0 Author: Andrew Cagney <cagney@redhat.com> Date: Fri May 9 15:10:30 2008 -0400 Require explict cast from jobject to jnixx object. frysk-sys/frysk/config/ChangeLog 2008-05-09 Andrew Cagney <cagney@redhat.com> * jni/FryskVersion.cxx-in: Use String's JNI methods. * jni/Host.cxx-in: Ditto. * jni/PrefixFactory.cxx-in: Ditto. frysk-sys/frysk/jnixx/ChangeLog 2008-05-09 Andrew Cagney <cagney@redhat.com> * PrintDeclarations.java: Generate a protected constructor; and a static Cast method. * jnixx.hxx (jnixx::array): Add Cast method. * Printer.java: Generate calls to Cast. * PrintCxxDefinitions.java: Ditto * print.cxx: Use explicit casts. frysk-sys/frysk/rsl/ChangeLog 2008-05-09 Andrew Cagney <cagney@redhat.com> * jni/Log.cxx: Use String's JNI methods. frysk-sys/frysk/sys/ChangeLog 2008-05-09 Andrew Cagney <cagney@redhat.com> * jni/PseudoTerminal.cxx: Use String's JNI methods. frysk-sys/frysk/testbed/ChangeLog 2008-05-09 Andrew Cagney <cagney@redhat.com> * jni/LocalMemory.cxx (LocalMemory::getCodeFile): Use String's JNI methods. frysk-sys/lib/stdcpp/ChangeLog 2008-05-09 Andrew Cagney <cagney@redhat.com> * jni/Demangler.cxx: Use String's JNI methods. ----------------------------------------------------------------------- Summary of changes: frysk-sys/frysk/config/ChangeLog | 6 ++++ frysk-sys/frysk/config/jni/FryskVersion.cxx-in | 6 +++- frysk-sys/frysk/config/jni/Host.cxx-in | 6 +++- frysk-sys/frysk/config/jni/PrefixFactory.cxx-in | 34 ++++++++++++----------- frysk-sys/frysk/jnixx/ChangeLog | 7 +++++ frysk-sys/frysk/jnixx/PrintCxxDefinitions.java | 1 + frysk-sys/frysk/jnixx/PrintDeclarations.java | 16 +++++++--- frysk-sys/frysk/jnixx/Printer.java | 4 ++- frysk-sys/frysk/jnixx/jnixx.hxx | 12 ++++++-- frysk-sys/frysk/jnixx/print.cxx | 10 ++++--- frysk-sys/frysk/rsl/ChangeLog | 4 +++ frysk-sys/frysk/rsl/jni/Log.cxx | 24 +++++++++++----- frysk-sys/frysk/sys/ChangeLog | 4 +++ frysk-sys/frysk/sys/jni/PseudoTerminal.cxx | 6 +++- frysk-sys/frysk/testbed/ChangeLog | 5 +++ frysk-sys/frysk/testbed/jni/LocalMemory.cxx | 6 +++- frysk-sys/lib/stdcpp/ChangeLog | 4 +++ frysk-sys/lib/stdcpp/jni/Demangler.cxx | 9 +++--- 18 files changed, 115 insertions(+), 49 deletions(-) First 500 lines of diff: diff --git a/frysk-sys/frysk/config/ChangeLog b/frysk-sys/frysk/config/ChangeLog index 7855299..edf0de6 100644 --- a/frysk-sys/frysk/config/ChangeLog +++ b/frysk-sys/frysk/config/ChangeLog @@ -1,3 +1,9 @@ +2008-05-09 Andrew Cagney <cagney@redhat.com> + + * jni/FryskVersion.cxx-in: Use String's JNI methods. + * jni/Host.cxx-in: Ditto. + * jni/PrefixFactory.cxx-in: Ditto. + 2008-05-08 Andrew Cagney <cagney@redhat.com> * jni/FryskVersion.cxx-in: Update to match jnixx::env. diff --git a/frysk-sys/frysk/config/jni/FryskVersion.cxx-in b/frysk-sys/frysk/config/jni/FryskVersion.cxx-in index 27d988e..1f4e101 100644 --- a/frysk-sys/frysk/config/jni/FryskVersion.cxx-in +++ b/frysk-sys/frysk/config/jni/FryskVersion.cxx-in @@ -39,7 +39,9 @@ #include "jni.hxx" -java::lang::String +using namespace java::lang; + +String frysk::config::FryskVersion::version(::jnixx::env env) { - return env.NewStringUTF("@VERSION@"); + return String::NewStringUTF(env, "@VERSION@"); } diff --git a/frysk-sys/frysk/config/jni/Host.cxx-in b/frysk-sys/frysk/config/jni/Host.cxx-in index 43e5ec2..c5ab352 100644 --- a/frysk-sys/frysk/config/jni/Host.cxx-in +++ b/frysk-sys/frysk/config/jni/Host.cxx-in @@ -41,12 +41,14 @@ #include "jni.hxx" +using namespace java::lang; + jint frysk::config::Host::wordSize(::jnixx::env env) { return sizeof(long) * 8; } -java::lang::String +String frysk::config::Host::cpuXXX(::jnixx::env env) { - return env.NewStringUTF("@host_cpu@"); + return String::NewStringUTF(env, "@host_cpu@"); } diff --git a/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in b/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in index 7e65d2e..5c8d9e4 100644 --- a/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in +++ b/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in @@ -41,43 +41,45 @@ #include "jni.hxx" -java::lang::String +using namespace java::lang; + +String frysk::config::PrefixFactory::gladeDir(::jnixx::env env) { - return env.NewStringUTF("@gladedir@"); + return String::NewStringUTF(env, "@gladedir@"); } -java::lang::String +String frysk::config::PrefixFactory::helpDir(::jnixx::env env) { - return env.NewStringUTF("@helpdir@"); + return String::NewStringUTF(env, "@helpdir@"); } -java::lang::String +String frysk::config::PrefixFactory::imagesDir(::jnixx::env env) { - return env.NewStringUTF("@imagesdir@"); + return String::NewStringUTF(env, "@imagesdir@"); } -java::lang::String +String frysk::config::PrefixFactory::binDir(::jnixx::env env) { - return env.NewStringUTF("@bindir@"); + return String::NewStringUTF(env, "@bindir@"); } -java::lang::String +String frysk::config::PrefixFactory::pkgDataDir(::jnixx::env env) { - return env.NewStringUTF("@pkgdatadir@"); + return String::NewStringUTF(env, "@pkgdatadir@"); } -java::lang::String +String frysk::config::PrefixFactory::pkgLibDir(::jnixx::env env) { - return env.NewStringUTF("@pkglibdir@"); + return String::NewStringUTF(env, "@pkglibdir@"); } -java::lang::String +String frysk::config::PrefixFactory::pkgLib32Dir(::jnixx::env env) { - return env.NewStringUTF("@pkglib32dir@"); + return String::NewStringUTF(env, "@pkglib32dir@"); } -java::lang::String +String frysk::config::PrefixFactory::sourceDir(::jnixx::env env) { // An educated guess. - return env.NewStringUTF("@prefix@/src/debug/frysk-@VERSION@"); + return String::NewStringUTF(env, "@prefix@/src/debug/frysk-@VERSION@"); } diff --git a/frysk-sys/frysk/jnixx/ChangeLog b/frysk-sys/frysk/jnixx/ChangeLog index 1ba36ad..9590e1b 100644 --- a/frysk-sys/frysk/jnixx/ChangeLog +++ b/frysk-sys/frysk/jnixx/ChangeLog @@ -1,5 +1,12 @@ 2008-05-09 Andrew Cagney <cagney@redhat.com> + * PrintDeclarations.java: Generate a protected constructor; and a + static Cast method. + * jnixx.hxx (jnixx::array): Add Cast method. + * Printer.java: Generate calls to Cast. + * PrintCxxDefinitions.java: Ditto + * print.cxx: Use explicit casts. + * jnixx.hxx (jnixx::array): Add templated JNI array method. * chars.cxx: Use tempated array methods. * JniBindings.java: Drop String parameter to GetStringLength. diff --git a/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java b/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java index 9bd1efe..da83514 100644 --- a/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java +++ b/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java @@ -86,6 +86,7 @@ class PrintCxxDefinitions extends ClassWalker { p.printGlobalCxxName(method); } else { p.printGlobalCxxName(method.getDeclaringClass()); + p.print("::Cast"); p.print("(object)."); p.print(method.getName()); } diff --git a/frysk-sys/frysk/jnixx/PrintDeclarations.java b/frysk-sys/frysk/jnixx/PrintDeclarations.java index f50dee5..3861e6b 100644 --- a/frysk-sys/frysk/jnixx/PrintDeclarations.java +++ b/frysk-sys/frysk/jnixx/PrintDeclarations.java @@ -128,7 +128,7 @@ class PrintDeclarations extends ClassWalker { p.println(); p.print("// "); p.println(klass); - p.print("struct "); + p.print("class "); p.printQualifiedCxxName(klass); Class parent = klass.getSuperclass(); p.print(" : public "); @@ -139,6 +139,7 @@ class PrintDeclarations extends ClassWalker { } while(p.dent(0, "{", "};")) { // Constructor. + p.print("protected: "); p.printUnqualifiedCxxName(klass); p.print("(jobject _object)"); p.print(" : "); @@ -147,11 +148,16 @@ class PrintDeclarations extends ClassWalker { } else { p.printGlobalCxxName(parent); } - p.print("(_object)"); - p.println(" { }"); + p.println("(_object) {}"); + // Explicit cast operator. + p.print("public: static "); + p.printUnqualifiedCxxName(klass); + p.print(" Cast(jobject object) { return "); + p.printUnqualifiedCxxName(klass); + p.println("(object); }"); // Static get-class method - a class knows its own class. - p.println("private: static jclass _class; public:"); - p.println("static inline jclass _class_(::jnixx::env _env);"); + p.println("private: static jclass _class;"); + p.println("public: static inline jclass _class_(::jnixx::env _env);"); JniBindings.printDeclarations(p, klass); printer.visit(klass); } diff --git a/frysk-sys/frysk/jnixx/Printer.java b/frysk-sys/frysk/jnixx/Printer.java index 15b9509..007acc2 100644 --- a/frysk-sys/frysk/jnixx/Printer.java +++ b/frysk-sys/frysk/jnixx/Printer.java @@ -181,7 +181,7 @@ class Printer { } print("jnixx::array<"); printCxxName(klass.getComponentType(), false); - if (!componentType.isPrimitive()) { + if (componentType.isArray()) { print(" "); // prevent's ">>". } print(">"); @@ -473,6 +473,7 @@ class Printer { print("p" + i); } else { printGlobalCxxName(param); + print("::Cast"); print("(p" + i + ")"); } } @@ -588,6 +589,7 @@ class Printer { print(variable); } else { printGlobalCxxName(returnType); + print("::Cast"); print("("); print(variable); print(")"); diff --git a/frysk-sys/frysk/jnixx/jnixx.hxx b/frysk-sys/frysk/jnixx/jnixx.hxx index e894821..af38a18 100644 --- a/frysk-sys/frysk/jnixx/jnixx.hxx +++ b/frysk-sys/frysk/jnixx/jnixx.hxx @@ -1489,18 +1489,24 @@ namespace jnixx { * extends jnixx::object). */ template <typename Object> class array : public object { - public: + protected: array(jobject _object) : object(_object) { } + public: + static array<Object> Cast(jobject object) { + return array<Object>(object); + } + public: jsize GetArrayLength(::jnixx::env env) { return env.GetArrayLength((jarray)_object); } static array<Object> NewObjectArray(::jnixx::env env, jsize length, - ::jnixx::object init) { + ::jnixx::object init) { return env.NewObjectArray(length, Object::_class_(env), init._object); } Object GetObjectArrayElement(::jnixx::env env, jsize index) { - return env.GetObjectArrayElement((jobjectArray)_object, index); + return Object::Cast(env.GetObjectArrayElement((jobjectArray)_object, + index)); } void SetObjectArrayElement(::jnixx::env env, jsize index, Object object) { env.SetObjectArrayElement((jobjectArray)_object, index, object._object); diff --git a/frysk-sys/frysk/jnixx/print.cxx b/frysk-sys/frysk/jnixx/print.cxx index d9efd7c..cbec1e1 100644 --- a/frysk-sys/frysk/jnixx/print.cxx +++ b/frysk-sys/frysk/jnixx/print.cxx @@ -44,15 +44,17 @@ #include "frysk/jnixx/print.hxx" #include "frysk/jnixx/exceptions.hxx" +using namespace java::lang; + /** * Do printf style printing to a java String. */ -java::lang::String +String ajprintf(::jnixx::env& env, const char *fmt, ...) { va_list ap; va_start (ap, fmt); - java::lang::String jmessage = vajprintf(env, fmt, ap); + String jmessage = vajprintf(env, fmt, ap); va_end (ap); return jmessage; } @@ -60,14 +62,14 @@ ajprintf(::jnixx::env& env, const char *fmt, ...) { /** * Do vprintf style printing to a java String. */ -java::lang::String +String vajprintf(::jnixx::env& env, const char *fmt, va_list ap) { char* message = NULL; if (::vasprintf(&message, fmt, ap) < 0) { errnoException(env, errno, "vasprintf"); } try { - return env.NewStringUTF(message); + return String::NewStringUTF(env, message); } catch (jnixx::exception) { ::free(message); throw; diff --git a/frysk-sys/frysk/rsl/ChangeLog b/frysk-sys/frysk/rsl/ChangeLog index fa5fb4a..998ed6a 100644 --- a/frysk-sys/frysk/rsl/ChangeLog +++ b/frysk-sys/frysk/rsl/ChangeLog @@ -1,3 +1,7 @@ +2008-05-09 Andrew Cagney <cagney@redhat.com> + + * jni/Log.cxx: Use String's JNI methods. + 2008-05-08 Andrew Cagney <cagney@redhat.com> * jni/Log.cxx: Update to match jnixx::env. diff --git a/frysk-sys/frysk/rsl/jni/Log.cxx b/frysk-sys/frysk/rsl/jni/Log.cxx index 0fe4bc5..6561e27 100644 --- a/frysk-sys/frysk/rsl/jni/Log.cxx +++ b/frysk-sys/frysk/rsl/jni/Log.cxx @@ -45,6 +45,8 @@ #include "frysk/jnixx/print.hxx" #include "frysk/rsl/jni/Log.hxx" +using namespace java::lang; + void logf(::jnixx::env env, frysk::rsl::Log logger, const char* format, ...) { @@ -52,35 +54,41 @@ logf(::jnixx::env env, frysk::rsl::Log logger, return; va_list ap; va_start(ap, format); - java::lang::String message = vajprintf(env, format, ap); + String message = vajprintf(env, format, ap); logger.log(env, message); + message.DeleteLocalRef(env); va_end(ap); } void -logf(::jnixx::env env, frysk::rsl::Log logger, java::lang::Object object, +logf(::jnixx::env env, frysk::rsl::Log logger, Object object, const char* format, ...) { if (!logger.logging(env)) return; va_list ap; va_start(ap, format); - java::lang::String message = vajprintf(env, format, ap); + String message = vajprintf(env, format, ap); logger.log(env, message); + message.DeleteLocalRef(env); va_end(ap); } void log(::jnixx::env env, frysk::rsl::Log logger, - const char* p1, java::lang::Object p2) { + const char* p1, Object p2) { if (!logger.logging(env)) return; - logger.log(env, env.NewStringUTF(p1), p2); + String message = String::NewStringUTF(env, p1); + logger.log(env, message, p2); + message.DeleteLocalRef(env); } void -log(::jnixx::env env, frysk::rsl::Log logger, java::lang::Object self, - const char* p1, java::lang::Object p2) { +log(::jnixx::env env, frysk::rsl::Log logger, Object self, + const char* p1, Object p2) { if (!logger.logging(env)) return; - logger.log(env, self, env.NewStringUTF(p1), p2); + String message = String::NewStringUTF(env, p1); + logger.log(env, self, message, p2); + message.DeleteLocalRef(env); } diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog index a74b04c..a8cd1cd 100644 --- a/frysk-sys/frysk/sys/ChangeLog +++ b/frysk-sys/frysk/sys/ChangeLog @@ -1,3 +1,7 @@ +2008-05-09 Andrew Cagney <cagney@redhat.com> + + * jni/PseudoTerminal.cxx: Use String's JNI methods. + 2008-05-08 Andrew Cagney <cagney@redhat.com> * jni/PseudoTerminal.cxx: Update to match jnixx::env. diff --git a/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx b/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx index d1166d6..04b36d2 100644 --- a/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx +++ b/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx @@ -44,12 +44,14 @@ #include "frysk/jnixx/exceptions.hxx" -::java::lang::String +using namespace java::lang; + +::String frysk::sys::PseudoTerminal::getName(::jnixx::env env, jint pty) { const char *name = ::ptsname(pty); if (name == NULL) errnoException(env, errno, "ptsname"); - return env.NewStringUTF(name); + return String::NewStringUTF(env, name); } jint diff --git a/frysk-sys/frysk/testbed/ChangeLog b/frysk-sys/frysk/testbed/ChangeLog index f4d8977..64ac04f 100644 --- a/frysk-sys/frysk/testbed/ChangeLog +++ b/frysk-sys/frysk/testbed/ChangeLog @@ -1,3 +1,8 @@ +2008-05-09 Andrew Cagney <cagney@redhat.com> + + * jni/LocalMemory.cxx (LocalMemory::getCodeFile): Use String's JNI + methods. + 2008-05-08 Andrew Cagney <cagney@redhat.com> * jni/LocalMemory.cxx: Update to match jnixx::env. diff --git a/frysk-sys/frysk/testbed/jni/LocalMemory.cxx b/frysk-sys/frysk/testbed/jni/LocalMemory.cxx index fbad642..a7283ab 100644 --- a/frysk-sys/frysk/testbed/jni/LocalMemory.cxx +++ b/frysk-sys/frysk/testbed/jni/LocalMemory.cxx @@ -44,6 +44,8 @@ #include "jni.hxx" #include "frysk/jnixx/exceptions.hxx" +using namespace java::lang; + static jbyteArray getBytes(::jnixx::env env, void *addr, size_t length) { jbyteArray bytes = env.NewByteArray(length); @@ -76,9 +78,9 @@ frysk::testbed::LocalMemory::getDataBytes(::jnixx::env env) { */ jint frysk::testbed::LocalMemory::getCodeLine (::jnixx::env) { return __LINE__; } -java::lang::String +String frysk::testbed::LocalMemory::getCodeFile(::jnixx::env env) { - return env.NewStringUTF(__FILE__); + return String::NewStringUTF(env, __FILE__); } static void* diff --git a/frysk-sys/lib/stdcpp/ChangeLog b/frysk-sys/lib/stdcpp/ChangeLog index ac5706e..da9d115 100644 --- a/frysk-sys/lib/stdcpp/ChangeLog +++ b/frysk-sys/lib/stdcpp/ChangeLog @@ -1,3 +1,7 @@ +2008-05-09 Andrew Cagney <cagney@redhat.com> + + * jni/Demangler.cxx: Use String's JNI methods. + 2008-05-08 Andrew Cagney <cagney@redhat.com> * jni/Demangler.cxx: Update to match jnixx::env. diff --git a/frysk-sys/lib/stdcpp/jni/Demangler.cxx b/frysk-sys/lib/stdcpp/jni/Demangler.cxx index cf4da6a..43cae48 100644 --- a/frysk-sys/lib/stdcpp/jni/Demangler.cxx +++ b/frysk-sys/lib/stdcpp/jni/Demangler.cxx @@ -45,12 +45,13 @@ #include "jni.hxx" using namespace abi; +using namespace java::lang; -::java::lang::String +String lib::stdcpp::Demangler::demangle(::jnixx::env env, - ::java::lang::String mangledString) { + String mangledString) { if (mangledString == NULL) - return NULL; + return mangledString; int status = -1; @@ -59,7 +60,7 @@ lib::stdcpp::Demangler::demangle(::jnixx::env env, mangledString.ReleaseStringUTFChars(env, mangledName); if (status == 0) - return env.NewStringUTF(demangledName); + return String::NewStringUTF(env, demangledName); else return mangledString; } hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-05-09 19:11 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=20080509191147.13589.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).