public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Fill in missing jnixx bindings.
@ 2008-05-08 23:18 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-05-08 23:18 UTC (permalink / raw)
  To: frysk-cvs

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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-05-08 23:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-08 23:18 [SCM] master: Fill in missing jnixx bindings cagney

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