public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Fill in missing jnixx bindings.
Date: Thu, 08 May 2008 23:18:00 -0000	[thread overview]
Message-ID: <20080508231842.31186.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  776b3cd28bc6c5bfecf4fec01b1d0a7d53445d48 (commit)
      from  855c3c2f1a1b4440791453e42e8716ace63326c2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 776b3cd28bc6c5bfecf4fec01b1d0a7d53445d48
Author: Andrew Cagney <cagney@redhat.com>
Date:   Thu May 8 19:17:09 2008 -0400

    Fill in missing jnixx bindings.
    
    frysk-sys/frysk/config/ChangeLog
    2008-05-08  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/FryskVersion.cxx-in: Update to match jnixx::env.
    	* jni/PrefixFactory.cxx-in: Ditto.
    	* jni/Host.cxx-in: Ditto.
    
    frysk-sys/frysk/jnixx/ChangeLog
    2008-05-08  Andrew Cagney  <cagney@redhat.com>
    
    	* jnixx.hxx (jnixx::env): Fill in missing JNI bindings; match JNI
    	names.
    	* print.cxx: Update.
    	* exceptions.cxx: Update.
    
    frysk-sys/frysk/rsl/ChangeLog
    2008-05-08  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/Log.cxx: Update to match jnixx::env.
    
    frysk-sys/frysk/sys/ChangeLog
    2008-05-08  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/PseudoTerminal.cxx: Update to match jnixx::env.
    	* jni/Signal.cxx-sh: Ditto.
    
    frysk-sys/frysk/testbed/ChangeLog
    2008-05-08  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/LocalMemory.cxx: Update to match jnixx::env.
    
    frysk-sys/lib/stdcpp/ChangeLog
    2008-05-08  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/Demangler.cxx: Update to match jnixx::env.

-----------------------------------------------------------------------

Summary of changes:
 frysk-sys/frysk/config/ChangeLog                |    6 +
 frysk-sys/frysk/config/jni/FryskVersion.cxx-in  |    2 +-
 frysk-sys/frysk/config/jni/Host.cxx-in          |    2 +-
 frysk-sys/frysk/config/jni/PrefixFactory.cxx-in |   16 +-
 frysk-sys/frysk/jnixx/ChangeLog                 |    5 +
 frysk-sys/frysk/jnixx/Main.java                 |    4 -
 frysk-sys/frysk/jnixx/PrintHxxDefinitions.java  |   16 +-
 frysk-sys/frysk/jnixx/exceptions.cxx            |    6 +-
 frysk-sys/frysk/jnixx/jnixx.hxx                 | 2116 +++++++++++++++--------
 frysk-sys/frysk/jnixx/print.cxx                 |    2 +-
 frysk-sys/frysk/rsl/ChangeLog                   |    4 +
 frysk-sys/frysk/rsl/jni/Log.cxx                 |    4 +-
 frysk-sys/frysk/sys/ChangeLog                   |    5 +
 frysk-sys/frysk/sys/jni/PseudoTerminal.cxx      |    2 +-
 frysk-sys/frysk/sys/jni/Signal.cxx-sh           |    8 +-
 frysk-sys/frysk/testbed/ChangeLog               |    4 +
 frysk-sys/frysk/testbed/jni/LocalMemory.cxx     |    8 +-
 frysk-sys/lib/stdcpp/ChangeLog                  |    4 +
 frysk-sys/lib/stdcpp/jni/Demangler.cxx          |    6 +-
 19 files changed, 1483 insertions(+), 737 deletions(-)

First 500 lines of diff:
diff --git a/frysk-sys/frysk/config/ChangeLog b/frysk-sys/frysk/config/ChangeLog
index 3d53fc4..7855299 100644
--- a/frysk-sys/frysk/config/ChangeLog
+++ b/frysk-sys/frysk/config/ChangeLog
@@ -1,3 +1,9 @@
+2008-05-08  Andrew Cagney  <cagney@redhat.com>
+
+	* jni/FryskVersion.cxx-in: Update to match jnixx::env.
+	* jni/PrefixFactory.cxx-in: Ditto.
+	* jni/Host.cxx-in: Ditto.
+
 2008-05-07  Andrew Cagney  <cagney@redhat.com>
 
 	* jni/BuildCompiler.cxx: Include "jni.hxx".
diff --git a/frysk-sys/frysk/config/jni/FryskVersion.cxx-in b/frysk-sys/frysk/config/jni/FryskVersion.cxx-in
index 12cf78e..27d988e 100644
--- a/frysk-sys/frysk/config/jni/FryskVersion.cxx-in
+++ b/frysk-sys/frysk/config/jni/FryskVersion.cxx-in
@@ -41,5 +41,5 @@
 
 java::lang::String
 frysk::config::FryskVersion::version(::jnixx::env env) {
-  return env.newStringUTF("@VERSION@");
+  return env.NewStringUTF("@VERSION@");
 }
diff --git a/frysk-sys/frysk/config/jni/Host.cxx-in b/frysk-sys/frysk/config/jni/Host.cxx-in
index 7662acb..43e5ec2 100644
--- a/frysk-sys/frysk/config/jni/Host.cxx-in
+++ b/frysk-sys/frysk/config/jni/Host.cxx-in
@@ -48,5 +48,5 @@ frysk::config::Host::wordSize(::jnixx::env env) {
 
 java::lang::String
 frysk::config::Host::cpuXXX(::jnixx::env env) {
-  return env.newStringUTF("@host_cpu@");
+  return env.NewStringUTF("@host_cpu@");
 }
diff --git a/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in b/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in
index 7e1c62c..7e65d2e 100644
--- a/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in
+++ b/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in
@@ -43,41 +43,41 @@
 
 java::lang::String
 frysk::config::PrefixFactory::gladeDir(::jnixx::env env) {
-  return env.newStringUTF("@gladedir@");
+  return env.NewStringUTF("@gladedir@");
 }
 
 java::lang::String
 frysk::config::PrefixFactory::helpDir(::jnixx::env env) {
-  return env.newStringUTF("@helpdir@");
+  return env.NewStringUTF("@helpdir@");
 }
 
 java::lang::String
 frysk::config::PrefixFactory::imagesDir(::jnixx::env env) {
-  return env.newStringUTF("@imagesdir@");
+  return env.NewStringUTF("@imagesdir@");
 }
 
 java::lang::String
 frysk::config::PrefixFactory::binDir(::jnixx::env env) {
-  return env.newStringUTF("@bindir@");
+  return env.NewStringUTF("@bindir@");
 }
 
 java::lang::String
 frysk::config::PrefixFactory::pkgDataDir(::jnixx::env env) {
-  return env.newStringUTF("@pkgdatadir@");
+  return env.NewStringUTF("@pkgdatadir@");
 }
 
 java::lang::String
 frysk::config::PrefixFactory::pkgLibDir(::jnixx::env env) {
-  return env.newStringUTF("@pkglibdir@");
+  return env.NewStringUTF("@pkglibdir@");
 }
 
 java::lang::String
 frysk::config::PrefixFactory::pkgLib32Dir(::jnixx::env env) {
-  return env.newStringUTF("@pkglib32dir@");
+  return env.NewStringUTF("@pkglib32dir@");
 }
 
 java::lang::String
 frysk::config::PrefixFactory::sourceDir(::jnixx::env env) {
   // An educated guess.
-  return env.newStringUTF("@prefix@/src/debug/frysk-@VERSION@");
+  return env.NewStringUTF("@prefix@/src/debug/frysk-@VERSION@");
 }
diff --git a/frysk-sys/frysk/jnixx/ChangeLog b/frysk-sys/frysk/jnixx/ChangeLog
index c747bc4..d3758c1 100644
--- a/frysk-sys/frysk/jnixx/ChangeLog
+++ b/frysk-sys/frysk/jnixx/ChangeLog
@@ -1,5 +1,10 @@
 2008-05-08  Andrew Cagney  <cagney@redhat.com>
 
+	* jnixx.hxx (jnixx::env): Fill in missing JNI bindings; match JNI
+	names.
+	* print.cxx: Update.
+	* exceptions.cxx: Update.
+	
 	* JniBindings.java: New; enbed JNI in class.
 	* PrintHxxDefinitions.java: Use.
 	* PrintDeclarations.java: Use.
diff --git a/frysk-sys/frysk/jnixx/Main.java b/frysk-sys/frysk/jnixx/Main.java
index 4b52314..97ccadc 100644
--- a/frysk-sys/frysk/jnixx/Main.java
+++ b/frysk-sys/frysk/jnixx/Main.java
@@ -44,13 +44,9 @@ import java.io.PrintWriter;
 class Main {
 
     private static void printHxxFile(Printer p, Class[] classes) {
-	p.println("// Get declarations.");
 	p.println("#include \"frysk/jnixx/jnixx.hxx\"");
 	new PrintNamespaces(p).walk(classes);
 	new PrintDeclarations(p).walk(classes);
-	p.println();
-	p.println("// Get definitions.");
-	p.println("#include \"frysk/jnixx/jnixx.hxx\"");
 	new PrintHxxDefinitions(p).walk(classes);
     }
 
diff --git a/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java b/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java
index 1f604fc..fc7a7c6 100644
--- a/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java
+++ b/frysk-sys/frysk/jnixx/PrintHxxDefinitions.java
@@ -84,7 +84,7 @@ class PrintHxxDefinitions extends ClassWalker {
 	    p.print(" == NULL)");
 	    while (p.dent(1, "{", "}")) {
 		p.printID(field);
-		p.print(" = _env.get");
+		p.print(" = _env.Get");
 		if (isStatic) {
 		    p.print("Static");
 		}
@@ -101,9 +101,9 @@ class PrintHxxDefinitions extends ClassWalker {
 		p.print("(");
 		p.printJniType(type);
 		p.print(")");
-		p.print(" _env.get");
+		p.print(" _env.Get");
 	    } else {
-		p.print("_env.set");
+		p.print("_env.Set");
 	    }
 	    if (isStatic) {
 		p.print("Static");
@@ -142,7 +142,7 @@ class PrintHxxDefinitions extends ClassWalker {
 	    p.print(" == NULL)");
 	    while (p.dent(1, "{", "}")) {
 		p.printID(method);
-		p.print(" = _env.get");
+		p.print(" = _env.Get");
 		if (isStatic) {
 		    p.print("Static");
 		}
@@ -160,7 +160,7 @@ class PrintHxxDefinitions extends ClassWalker {
 		}
 		p.print(" ret = ");
 	    }
-	    p.print("_env.call");
+	    p.print("_env.Call");
 	    if (isStatic) {
 		p.print("Static");
 	    }
@@ -200,11 +200,11 @@ class PrintHxxDefinitions extends ClassWalker {
 		    p.print(" == NULL)");
 		    while (p.dent(1, "{", "}")) {
 			p.printID(constructor);
-			p.print(" = _env.getMethodID(_class_(_env), \"<init>\", \"(");
+			p.print(" = _env.GetMethodID(_class_(_env), \"<init>\", \"(");
 			p.printJniSignature(constructor.getParameterTypes());
 			p.println(")V\");");
 		    }
-		    p.print("jobject object = _env.newObject(");
+		    p.print("jobject object = _env.NewObject(");
 		    p.printActualJniParameters(constructor);
 		    p.println(");");
 		    while (p.dent(1, "if (object == NULL) {", "}")) {
@@ -246,7 +246,7 @@ class PrintHxxDefinitions extends ClassWalker {
 	p.print("::_class_(::jnixx::env _env)");
 	while (p.dent(0, "{", "}")) {
 	    while (p.dent(1, "if (_class == NULL) {", "}")) {
-		p.print("_class = _env.findClass(\"");
+		p.print("_class = _env.FindClass(\"");
 		p.print(klass.getName());
 		p.println("\");");
 	    }
diff --git a/frysk-sys/frysk/jnixx/exceptions.cxx b/frysk-sys/frysk/jnixx/exceptions.cxx
index d932c9c..ff43114 100644
--- a/frysk-sys/frysk/jnixx/exceptions.cxx
+++ b/frysk-sys/frysk/jnixx/exceptions.cxx
@@ -64,7 +64,7 @@ errnoException(::jnixx::env& env, int error, const char *prefix,
 
 void
 runtimeException(::jnixx::env& env, const char *fmt, ...) {
-  jclass cls = env.findClass("java/lang/RuntimeException");
+  jclass cls = env.FindClass("java/lang/RuntimeException");
   va_list ap;
   va_start(ap, fmt);
   char *msg = NULL;
@@ -73,10 +73,10 @@ runtimeException(::jnixx::env& env, const char *fmt, ...) {
   if (status < 0) {
     fprintf(stderr, "runtimeException: vasprintf failed: %s",
 	    ::strerror(errno));
-    env.throwNew(cls, "runtimeException: vasprintf failed");
+    env.ThrowNew(cls, "runtimeException: vasprintf failed");
   }
   try {
-    env.throwNew(cls, msg);
+    env.ThrowNew(cls, msg);
   } catch (jnixx::exception e) {
     // XXX: Work around lack of finally by catchching, then
     // re-throwing, the exception
diff --git a/frysk-sys/frysk/jnixx/jnixx.hxx b/frysk-sys/frysk/jnixx/jnixx.hxx
index caf2bfa..5e60c10 100644
--- a/frysk-sys/frysk/jnixx/jnixx.hxx
+++ b/frysk-sys/frysk/jnixx/jnixx.hxx
@@ -37,31 +37,1433 @@
 // version and license this file solely under the GPL without
 // exception.
 
-/**
- * XXX: This header is included twice, first to get the declarations
- * and, second, to get the corresponding definitions.
- */
-
-#if !defined frysk_jnixx_hxx_1
-#define frysk_jnixx_hxx_1
-/**
- * First pass, declare everything used by generated code.
- */
+#if !defined frysk_jnixx_hxx
 
 #include <jni.h>
 #include <stdarg.h>
 
 namespace jnixx {
-  /**
-   * JNIXX wrapper for the JNIEnv.
-   */
-  struct env;
+
   /**
    * An exception to throw when JNI makes an exception pending, caught
    * by the JNI wrapper stub.
    */
   struct exception {
   };
+
+  /**
+   * JNIXX wrapper for the JNIEnv; just like JNIEnv except it throws
+   * an exception for any error or exception check.
+   */
+  struct env {
+
+    JNIEnv* _jni;
+    env(JNIEnv* _jni) {
+      this->_jni = _jni;
+    }
+
+    // Version Information
+
+    jint GetVersion() {
+      return _jni->GetVersion();
+    }
+
+    // Class Operations
+
+    jclass DefineClass(const char *name, jobject loader,
+			      const jbyte *buf, jsize bufLen) {
+      jclass klass = _jni->DefineClass(name, loader, buf, bufLen);
+      if (klass == NULL) {
+	throw new exception();
+      }
+      return klass;
+    }
+    jclass FindClass(const char *signature) {
+      jclass klass = _jni->FindClass(signature);
+      if (klass == NULL) {
+	fprintf(stderr, "%s(\"%s\") failed\n",
+		__func__, signature);
+	throw new exception();
+      }
+      return klass;
+    }
+    jclass GetSuperclass(jclass klass) {
+      return _jni->GetSuperclass(klass);
+    }
+    jboolean IsAssignableFrom(jclass klass1, jclass klass2) {
+      return _jni->IsAssignableFrom(klass1, klass2);
+    }
+
+    // Exceptions
+
+    void Throw(jthrowable obj) __attribute__((noreturn)) {
+      _jni->Throw(obj);
+      throw exception();
+    }
+    void ThrowNew(jclass klass, const char* message) __attribute__((noreturn)) {
+      _jni->ThrowNew(klass, message);
+      throw exception();
+    }
+    jthrowable ExceptionOccurred() {
+      return _jni->ExceptionOccurred();
+    }
+    void ExceptionDescribe() {
+      _jni->ExceptionDescribe();
+    }
+    void ExceptionClear() {
+      _jni->ExceptionClear();
+    }
+    void FatalError(const char *msg) {
+      _jni->FatalError(msg);
+    }
+    jboolean ExceptionCheck() {
+      return _jni->ExceptionCheck();
+    }
+
+    // Global and Local References
+
+    // GLobal References
+
+    jobject NewGlobalRef(jobject obj) {
+      jobject glob = _jni->NewGlobalRef(obj);
+      if (glob == NULL) {
+	throw exception();
+      }
+      return glob;
+    }
+    void DeleteGlobalRef(jobject obj) {
+      _jni->DeleteGlobalRef(obj);
+    }
+
+    // Local References
+
+    void DeleteLocalRef(jobject obj) {
+      _jni->DeleteLocalRef(obj);
+    }
+    void EnsureLocalCapacity(jint capacity) {
+      if (_jni->EnsureLocalCapacity(capacity) < 0) {
+	throw exception();
+      }
+    }
+    void PushLocalFrame(jint capacity) {
+      if (_jni->PushLocalFrame(capacity) < 0) {
+	throw exception();
+      }
+    }
+    jobject PopLocalFrame(jobject result) {
+      return _jni->PopLocalFrame(result);
+    }
+    jobject NewLocalRef(jobject obj) {
+      return _jni->NewLocalRef(obj);
+    }
+
+    // Weak Global References
+
+    jweak NewWeakGlobalRef(jobject ref) {
+      jweak weak = _jni->NewWeakGlobalRef(ref);
+      if (weak == NULL) {
+	throw exception();
+      }
+      return weak;
+    }
+    void DeleteWeakGlobalRef(jweak weak) {
+      _jni->DeleteWeakGlobalRef(weak);
+    }
+
+    // Object Operations
+
+    jobject AllocObject(jclass klass) {
+      jobject object = _jni->AllocObject(klass);
+      if (object == NULL) {
+	throw exception();
+      }
+    }
+    jobject NewObject(jclass klass, jmethodID id, ...) {
+      va_list ap;
+      va_start(ap, id);
+      jobject object = _jni->NewObjectV(klass, id, ap);
+      va_end(ap);
+      if (object == NULL) {
+	throw exception();
+      }
+      return object;
+    }
+    jobject NewObjectA(jclass klass, jmethodID id, jvalue* args) {
+      jobject object = _jni->NewObjectA(klass, id, args);
+      if (object == NULL) {
+	throw exception();
+      }
+    }
+    jobject NewObjectV(jclass klass, jmethodID id, va_list args) {
+      jobject object = _jni->NewObjectV(klass, id, args);
+      if (object == NULL) {
+	throw exception();
+      }
+    }
+    jclass GetObjectClass(jobject object) {
+      return _jni->GetObjectClass(object);
+    }
+    jboolean IsInstanceOf(jobject object, jclass klass) {
+      return _jni->IsInstanceOf(object, klass);
+    }
+    jboolean IsSameObject(jobject ref1, jobject ref2) {
+      return _jni->IsSameObject(ref1, ref2);
+    }
+
+    // Accessing Fields of Objects
+
+    jfieldID GetFieldID(jclass klass, const char name[],
+			const char signature[]) {
+      jfieldID fieldID = _jni->GetFieldID(klass, name, signature);
+      if (fieldID == NULL) {
+	fprintf(stderr, "%s(%p,\"%s\",\"%s\") failed\n",
+		__func__, klass, name, signature);
+	throw exception();
+      }
+      return fieldID;
+    }
+    jobject GetObjectField(jobject object, jfieldID id) {
+      jobject tmp = _jni->GetObjectField(object, id);
+      if (_jni->ExceptionCheck())
+	throw exception();
+      return tmp;
+    }
+    jboolean GetBooleanField(jobject object, jfieldID id) {
+      jboolean tmp = _jni->GetBooleanField(object, id);
+      if (_jni->ExceptionCheck())
+	throw exception();
+      return tmp;
+    }
+    jbyte GetByteField(jobject object, jfieldID id) {
+      jbyte tmp = _jni->GetByteField(object, id);
+      if (_jni->ExceptionCheck())
+	throw exception();
+      return tmp;
+    }
+    jchar GetCharField(jobject object, jfieldID id) {
+      jchar tmp = _jni->GetCharField(object, id);
+      if (_jni->ExceptionCheck())
+	throw exception();
+      return tmp;
+    }
+    jshort GetShortField(jobject object, jfieldID id) {
+      jshort tmp = _jni->GetShortField(object, id);
+      if (_jni->ExceptionCheck())
+	throw exception();
+      return tmp;
+    }
+    jint GetIntField(jobject object, jfieldID id) {
+      jint tmp = _jni->GetIntField(object, id);
+      if (_jni->ExceptionCheck())
+	throw exception();
+      return tmp;
+    }
+    jlong GetLongField(jobject object, jfieldID id) {
+      jlong tmp = _jni->GetLongField(object, id);
+      if (_jni->ExceptionCheck())
+	throw exception();
+      return tmp;
+    }
+    jfloat GetFloatField(jobject object, jfieldID id) {
+      jfloat tmp = _jni->GetFloatField(object, id);
+      if (_jni->ExceptionCheck())
+	throw exception();
+      return tmp;
+    }
+    jdouble GetDoubleField(jobject object, jfieldID id) {
+      jdouble tmp = _jni->GetDoubleField(object, id);
+      if (_jni->ExceptionCheck())
+	throw exception();
+      return tmp;
+    }
+    void SetObjectField(jobject object, jfieldID id, jobject value) {
+      _jni->SetObjectField(object, id, value);
+      if (_jni->ExceptionCheck())
+	throw exception();
+    }
+    void SetBooleanField(jobject object, jfieldID id, jboolean value) {
+      _jni->SetBooleanField(object, id, value);
+      if (_jni->ExceptionCheck())
+	throw exception();
+    }
+    void SetByteField(jobject object, jfieldID id, jbyte value) {
+      _jni->SetByteField(object, id, value);
+      if (_jni->ExceptionCheck())
+	throw exception();
+    }
+    void SetCharField(jobject object, jfieldID id, jchar value) {
+      _jni->SetCharField(object, id, value);
+      if (_jni->ExceptionCheck())
+	throw exception();
+    }
+    void SetShortField(jobject object, jfieldID id, jshort value) {
+      _jni->SetShortField(object, id, value);
+      if (_jni->ExceptionCheck())
+	throw exception();


hooks/post-receive
--
frysk system monitor/debugger


                 reply	other threads:[~2008-05-08 23:18 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=20080508231842.31186.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).