public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: Rename ArrayBytes -> jbyteArrayElements, define jlongArrayElements et.al.
Date: Sun, 25 May 2008 21:49:00 -0000	[thread overview]
Message-ID: <20080525214951.1936.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  5d97469db26f702cc28746e00e1022a7588d1ae6 (commit)
      from  3e3394b67b6c1dcb5bce4216bedc5f363d287263 (commit)

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

- Log -----------------------------------------------------------------
commit 5d97469db26f702cc28746e00e1022a7588d1ae6
Author: Andrew Cagney <cagney@redhat.com>
Date:   Sun May 25 17:48:29 2008 -0400

    Rename ArrayBytes -> jbyteArrayElements, define jlongArrayElements et.al.
    
    frysk-sys/frysk/sys/ChangeLog
    2008-05-25  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/FileDescriptor.cxx: Use jbyteArrayElements / jstringUTFChars.
    	* jni/AuditLibs.cxx: Ditto.
    	* jni/StatelessFile.cxx: Ditto
    	* jni/Signal.cxx-sh: Ditto
    	* jni/Fork.hxx: Ditto.
    	* jni/PseudoTerminal.cxx: Ditto.
    
    frysk-sys/frysk/sys/proc/ChangeLog
    2008-05-25  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/CmdLineBuilder.cxx: Use jbyteArrayElements.
    	* jni/Status.cxx: Ditto.
    	* jni/Stat.cxx: Ditto.
    	* jni/MapsBuilder.cxx: Ditto.
    
    frysk-sys/frysk/sys/ptrace/ChangeLog
    2008-05-25  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/AddressSpace.cxx: Use jbyteArrayElements.
    	* jni/RegisterSet.cxx: Ditto.
    
    frysk-sys/jnixx/ChangeLog
    2008-05-25  Andrew Cagney  <cagney@redhat.com>
    
    	* elements.hxx (jbyteArrayElements): Rename ArrayBytes.
    	(jlongArrayElements): Define.
    	(jstringUTFChars): Replace StringChars.
    	* jni/Native.cxx: Update.

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

Summary of changes:
 frysk-sys/frysk/sys/ChangeLog                   |    9 +++
 frysk-sys/frysk/sys/jni/AuditLibs.cxx           |    2 +-
 frysk-sys/frysk/sys/jni/FileDescriptor.cxx      |    6 +-
 frysk-sys/frysk/sys/jni/Fork.cxx                |   12 ++--
 frysk-sys/frysk/sys/jni/Fork.hxx                |    4 +-
 frysk-sys/frysk/sys/jni/PseudoTerminal.cxx      |    4 +-
 frysk-sys/frysk/sys/jni/Signal.cxx-sh           |    2 +-
 frysk-sys/frysk/sys/jni/StatelessFile.cxx       |    8 +-
 frysk-sys/frysk/sys/proc/ChangeLog              |    7 ++
 frysk-sys/frysk/sys/proc/jni/AuxvBuilder.cxx    |    2 +-
 frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx |    2 +-
 frysk-sys/frysk/sys/proc/jni/MapsBuilder.cxx    |    4 +-
 frysk-sys/frysk/sys/proc/jni/Stat.cxx           |    2 +-
 frysk-sys/frysk/sys/proc/jni/Status.cxx         |    2 +-
 frysk-sys/frysk/sys/ptrace/ChangeLog            |    5 ++
 frysk-sys/frysk/sys/ptrace/jni/AddressSpace.cxx |    2 +-
 frysk-sys/frysk/sys/ptrace/jni/RegisterSet.cxx  |    2 +-
 frysk-sys/jnixx/ChangeLog                       |    5 ++
 frysk-sys/jnixx/elements.hxx                    |   83 +++++++++++------------
 frysk-sys/jnixx/jni/Native.cxx                  |    8 +-
 20 files changed, 97 insertions(+), 74 deletions(-)

First 500 lines of diff:
diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog
index c6c850e..d26ad79 100644
--- a/frysk-sys/frysk/sys/ChangeLog
+++ b/frysk-sys/frysk/sys/ChangeLog
@@ -1,3 +1,12 @@
+2008-05-25  Andrew Cagney  <cagney@redhat.com>
+
+	* jni/FileDescriptor.cxx: Use jbyteArrayElements / jstringUTFChars.
+	* jni/AuditLibs.cxx: Ditto.
+	* jni/StatelessFile.cxx: Ditto
+	* jni/Signal.cxx-sh: Ditto
+	* jni/Fork.hxx: Ditto.
+	* jni/PseudoTerminal.cxx: Ditto.
+
 2008-05-24  Andrew Cagney  <cagney@redhat.com>
 
 	* jni/FileDescriptor.cxx: Update; byteArray -> jbyteArray.
diff --git a/frysk-sys/frysk/sys/jni/AuditLibs.cxx b/frysk-sys/frysk/sys/jni/AuditLibs.cxx
index 9614942..fb0cda7 100644
--- a/frysk-sys/frysk/sys/jni/AuditLibs.cxx
+++ b/frysk-sys/frysk/sys/jni/AuditLibs.cxx
@@ -60,6 +60,6 @@ frysk::sys::AuditLibs::syscallToName(jnixx::env env, jint syscall,
 jint
 frysk::sys::AuditLibs::nameToSyscall(jnixx::env env, String name,
 				     jint machine) {
-  StringChars syscall_name = StringChars(env, name);
+  jstringUTFChars syscall_name = jstringUTFChars(env, name);
   return audit_name_to_syscall(syscall_name.elements(), machine);
 }
diff --git a/frysk-sys/frysk/sys/jni/FileDescriptor.cxx b/frysk-sys/frysk/sys/jni/FileDescriptor.cxx
index 0c33fd4..b831562 100644
--- a/frysk-sys/frysk/sys/jni/FileDescriptor.cxx
+++ b/frysk-sys/frysk/sys/jni/FileDescriptor.cxx
@@ -85,7 +85,7 @@ FileDescriptor::write(jnixx::env env, jint fd,
 {
   verifyBounds(env, bytes, off, len);
   errno = 0;
-  ArrayBytes b = ArrayBytes(env, bytes);
+  jbyteArrayElements b = jbyteArrayElements(env, bytes);
   int size = ::write(fd, b.elements() + off, len);
   int err = errno;
   // ::fprintf (stderr, "wrote <<%c>>\n", (char) b);
@@ -152,7 +152,7 @@ FileDescriptor::read(jnixx::env env, jint fd,
 		     jnixx::jbyteArray bytes,
 		     jint off, jint len) {
   verifyBounds(env, bytes, off, len);
-  ArrayBytes b = ArrayBytes(env, bytes);
+  jbyteArrayElements b = jbyteArrayElements(env, bytes);
   jint ok = doRead(env, fd, b.elements() + off, len);
   b.release();
   return ok;
@@ -181,7 +181,7 @@ FileDescriptor::creat(jnixx::env) {
 jint
 FileDescriptor::open(jnixx::env env, String file, jint flags, jint mode) {
   // ::fprintf ("opening <<%s>>\n", pathname);
-  StringChars pathname = StringChars(env, file);
+  jstringUTFChars pathname = jstringUTFChars(env, file);
   int fd = ::open(pathname.elements(), flags, mode);
   if (fd < 0) {
     errnoException(env, errno, "open", "file %s", pathname.elements());
diff --git a/frysk-sys/frysk/sys/jni/Fork.cxx b/frysk-sys/frysk/sys/jni/Fork.cxx
index 0eeefe3..561ffe6 100644
--- a/frysk-sys/frysk/sys/jni/Fork.cxx
+++ b/frysk-sys/frysk/sys/jni/Fork.cxx
@@ -141,17 +141,17 @@ private:
       ::_exit(errno);
     }
   }
-  StringChars in;
-  StringChars out;
-  StringChars err;
+  jstringUTFChars in;
+  jstringUTFChars out;
+  jstringUTFChars err;
   const char* inElements;
   const char* outElements;
   const char* errElements;
 public:
   redirect_stdio(jnixx::env env, String in, String out, String err) {
-    this->in = StringChars(env, in);
-    this->out = StringChars(env, out);
-    this->err = StringChars(env, err);
+    this->in = jstringUTFChars(env, in);
+    this->out = jstringUTFChars(env, out);
+    this->err = jstringUTFChars(env, err);
     // allocate memory for the arrays before the fork.
     inElements = this->in.elements();
     outElements = this->out.elements();
diff --git a/frysk-sys/frysk/sys/jni/Fork.hxx b/frysk-sys/frysk/sys/jni/Fork.hxx
index b64feb2..2b78775 100644
--- a/frysk-sys/frysk/sys/jni/Fork.hxx
+++ b/frysk-sys/frysk/sys/jni/Fork.hxx
@@ -80,7 +80,7 @@ public:
  * exec the specified program.
  */
 class exec_program : public exec {
-  StringChars exe;
+  jstringUTFChars exe;
   const char* exeElements;
   StringArrayChars argv;
   char** argvElements;
@@ -88,7 +88,7 @@ class exec_program : public exec {
 public:
   exec_program(jnixx::env env, java::lang::String exe,
 	       jnixx::array<java::lang::String> args, jlong environ) {
-    this->exe = StringChars(env, exe);
+    this->exe = jstringUTFChars(env, exe);
     this->argv = StringArrayChars(env, args);
     this->environ = (char**)(long)environ;
     // allocate the exec strings before the fork
diff --git a/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx b/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx
index 4118ba9..c3eee94 100644
--- a/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx
+++ b/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx
@@ -89,11 +89,11 @@ frysk::sys::PseudoTerminal::getName(jnixx::env env, jint fd) {
 }
 
 class redirect_tty : public redirect {
-  StringChars pty;
+  jstringUTFChars pty;
   const char* ptyElements;
 public:
   redirect_tty(jnixx::env env, String name) {
-    pty = StringChars(env, name);
+    pty = jstringUTFChars(env, name);
     ptyElements = pty.elements();
   }
   ~redirect_tty() {
diff --git a/frysk-sys/frysk/sys/jni/Signal.cxx-sh b/frysk-sys/frysk/sys/jni/Signal.cxx-sh
index f9744ce..cd03ccd 100644
--- a/frysk-sys/frysk/sys/jni/Signal.cxx-sh
+++ b/frysk-sys/frysk/sys/jni/Signal.cxx-sh
@@ -71,7 +71,7 @@ frysk::sys::Signal::tkill(::jnixx::env env, jint tid, jint sig,
                           ::java::lang::String name) {
   errno = 0;
   if (::syscall(__NR_tkill, tid, sig) < 0) {
-    StringChars sname = StringChars(env, name);
+    jstringUTFChars sname = jstringUTFChars(env, name);
     errnoException(env, errno, "tkill", "task %d, signal %s (%d)",
     		   tid, sname.elements(), sig);
     sname.release(); // happens during unwind
diff --git a/frysk-sys/frysk/sys/jni/StatelessFile.cxx b/frysk-sys/frysk/sys/jni/StatelessFile.cxx
index 489c4b4..d2dc7b0 100644
--- a/frysk-sys/frysk/sys/jni/StatelessFile.cxx
+++ b/frysk-sys/frysk/sys/jni/StatelessFile.cxx
@@ -58,7 +58,7 @@ frysk::sys::StatelessFile::pread(jnixx::env env, jlong fileOffset,
 				 jint start, jint length) {
   verifyBounds(env, bytes, start, length);
   
-  ArrayBytes unixPath = ArrayBytes(env, GetUnixPath(env));
+  jbyteArrayElements unixPath = jbyteArrayElements(env, GetUnixPath(env));
   int fd = ::open((const char *)unixPath.elements(), O_RDONLY);
   if (fd < 0)
     errnoException(env, errno, "open", "filename %s",
@@ -66,7 +66,7 @@ frysk::sys::StatelessFile::pread(jnixx::env env, jlong fileOffset,
   unixPath.release();
 
   // XXX: 64-bit?
-  ArrayBytes buffer = ArrayBytes(env, bytes);
+  jbyteArrayElements buffer = jbyteArrayElements(env, bytes);
   ssize_t rc = ::pread64 (fd, start + buffer.elements(), length, fileOffset);
   if (rc < 0) {
     int savedErrno = errno;
@@ -86,7 +86,7 @@ frysk::sys::StatelessFile::pwrite(jnixx::env env, jlong fileOffset,
 				  jint start, jint length) {
   verifyBounds (env, bytes, start, length);
   
-  ArrayBytes unixPath = ArrayBytes(env, GetUnixPath(env));
+  jbyteArrayElements unixPath = jbyteArrayElements(env, GetUnixPath(env));
   int fd = ::open((const char *)unixPath.elements(), O_WRONLY);
   if (fd < 0)
     errnoException(env, errno, "open", "filename %s",
@@ -94,7 +94,7 @@ frysk::sys::StatelessFile::pwrite(jnixx::env env, jlong fileOffset,
   unixPath.release();
 
   // XXX: 64-bit?
-  ArrayBytes buffer = ArrayBytes(env, bytes);
+  jbyteArrayElements buffer = jbyteArrayElements(env, bytes);
   ssize_t rc = ::pwrite64 (fd, start + buffer.elements(), length, fileOffset);
   if (rc < 0) {
     int savedErrno = errno;
diff --git a/frysk-sys/frysk/sys/proc/ChangeLog b/frysk-sys/frysk/sys/proc/ChangeLog
index b6047f9..9873ddd 100644
--- a/frysk-sys/frysk/sys/proc/ChangeLog
+++ b/frysk-sys/frysk/sys/proc/ChangeLog
@@ -1,3 +1,10 @@
+2008-05-25  Andrew Cagney  <cagney@redhat.com>
+
+	* jni/CmdLineBuilder.cxx: Use jbyteArrayElements.
+	* jni/Status.cxx: Ditto.
+	* jni/Stat.cxx: Ditto.
+	* jni/MapsBuilder.cxx: Ditto.
+
 2008-05-24  Andrew Cagney  <cagney@redhat.com>
 
 	* jni/AuxvBuilder.cxx: Update; byteArray -> jbyteArray.
diff --git a/frysk-sys/frysk/sys/proc/jni/AuxvBuilder.cxx b/frysk-sys/frysk/sys/proc/jni/AuxvBuilder.cxx
index b90a1ba..ef013aa 100644
--- a/frysk-sys/frysk/sys/proc/jni/AuxvBuilder.cxx
+++ b/frysk-sys/frysk/sys/proc/jni/AuxvBuilder.cxx
@@ -193,7 +193,7 @@ AuxvBuilder::construct(jnixx::env env, jint pid) {
 
 bool
 AuxvBuilder::construct(jnixx::env env, jnixx::jbyteArray buf) {
-  ArrayBytes bytes = ArrayBytes(env, buf);
+  jbyteArrayElements bytes = jbyteArrayElements(env, buf);
   bool ok = ::construct(env, *this, bytes);
   bytes.release();
   return ok;
diff --git a/frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx b/frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx
index 98cec61..cb0b1ec 100644
--- a/frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx
+++ b/frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx
@@ -85,7 +85,7 @@ frysk::sys::proc::CmdLineBuilder::construct(jnixx::env env, jint pid) {
 bool
 frysk::sys::proc::CmdLineBuilder::construct(jnixx::env env,
 					    jnixx::jbyteArray buf) {
-  ArrayBytes bytes = ArrayBytes(env, buf);
+  jbyteArrayElements bytes = jbyteArrayElements(env, buf);
   bool ok = ::construct(env, this, bytes);
   bytes.release();
   return ok;
diff --git a/frysk-sys/frysk/sys/proc/jni/MapsBuilder.cxx b/frysk-sys/frysk/sys/proc/jni/MapsBuilder.cxx
index b8d00d3..ddea631 100644
--- a/frysk-sys/frysk/sys/proc/jni/MapsBuilder.cxx
+++ b/frysk-sys/frysk/sys/proc/jni/MapsBuilder.cxx
@@ -102,7 +102,7 @@ construct(jnixx::env env, frysk::sys::proc::MapsBuilder* builder, Bytes& buf) {
 
 bool
 frysk::sys::proc::MapsBuilder::construct(jnixx::env env, jnixx::jbyteArray buf) {
-  ArrayBytes bytes = ArrayBytes(env, buf);
+  jbyteArrayElements bytes = jbyteArrayElements(env, buf);
   bool ok = ::construct(env, this, bytes);
   bytes.release();
   return ok;
@@ -115,7 +115,7 @@ frysk::sys::proc::MapsBuilder::construct(jnixx::env env, jint pid) {
     return false;
   {
     jnixx::jbyteArray array = jnixx::jbyteArray::NewByteArray(env, bytes.length());
-    ArrayBytes b = ArrayBytes(env, array);
+    jbyteArrayElements b = jbyteArrayElements(env, array);
     memcpy(b.elements(), bytes.elements(), bytes.length());
     b.release();
     buildBuffer(env, array);
diff --git a/frysk-sys/frysk/sys/proc/jni/Stat.cxx b/frysk-sys/frysk/sys/proc/jni/Stat.cxx
index f7e675f..44129b4 100644
--- a/frysk-sys/frysk/sys/proc/jni/Stat.cxx
+++ b/frysk-sys/frysk/sys/proc/jni/Stat.cxx
@@ -140,7 +140,7 @@ frysk::sys::proc::Stat::scan(jnixx::env env, jint procPid) {
 
 frysk::sys::proc::Stat
 frysk::sys::proc::Stat::scan(jnixx::env env, jnixx::jbyteArray buf) {
-  ArrayBytes bytes = ArrayBytes(env, buf);
+  jbyteArrayElements bytes = jbyteArrayElements(env, buf);
   ::scan(env, (const char*) bytes.elements(), *this, GetFine(env));
   bytes.release();
   return *this;
diff --git a/frysk-sys/frysk/sys/proc/jni/Status.cxx b/frysk-sys/frysk/sys/proc/jni/Status.cxx
index 4bb296f..8bcf600 100644
--- a/frysk-sys/frysk/sys/proc/jni/Status.cxx
+++ b/frysk-sys/frysk/sys/proc/jni/Status.cxx
@@ -124,7 +124,7 @@ Status::scan(jnixx::env env, jint pid) {
 
 Status
 Status::scan(jnixx::env env, jnixx::jbyteArray buf) {
-  ArrayBytes bytes = ArrayBytes(env, buf);
+  jbyteArrayElements bytes = jbyteArrayElements(env, buf);
   Status s = ::scan(env, (const char*)bytes.elements(), *this, GetFine(env));
   bytes.release();
   return s;
diff --git a/frysk-sys/frysk/sys/ptrace/ChangeLog b/frysk-sys/frysk/sys/ptrace/ChangeLog
index 0121fe7..9484163 100644
--- a/frysk-sys/frysk/sys/ptrace/ChangeLog
+++ b/frysk-sys/frysk/sys/ptrace/ChangeLog
@@ -1,3 +1,8 @@
+2008-05-25  Andrew Cagney  <cagney@redhat.com>
+
+	* jni/AddressSpace.cxx: Use jbyteArrayElements.
+	* jni/RegisterSet.cxx: Ditto.
+
 2008-05-24  Andrew Cagney  <cagney@redhat.com>
 
 	* jni/AddressSpace.cxx: Update; byteArray -> jbyteArray.
diff --git a/frysk-sys/frysk/sys/ptrace/jni/AddressSpace.cxx b/frysk-sys/frysk/sys/ptrace/jni/AddressSpace.cxx
index 0d3c666..598d8cc 100644
--- a/frysk-sys/frysk/sys/ptrace/jni/AddressSpace.cxx
+++ b/frysk-sys/frysk/sys/ptrace/jni/AddressSpace.cxx
@@ -147,7 +147,7 @@ frysk::sys::ptrace::AddressSpace::transfer(::jnixx::env env,
       }
 
     // extract or modify
-    ArrayBytes bytes = ArrayBytes(env, byteArray);
+    jbyteArrayElements bytes = jbyteArrayElements(env, byteArray);
     if (op == ptPeek)
       memcpy(offset + i + bytes.elements(), &w.b[woff], wlen);
     else {
diff --git a/frysk-sys/frysk/sys/ptrace/jni/RegisterSet.cxx b/frysk-sys/frysk/sys/ptrace/jni/RegisterSet.cxx
index e22ab3c..d8fe8ca 100644
--- a/frysk-sys/frysk/sys/ptrace/jni/RegisterSet.cxx
+++ b/frysk-sys/frysk/sys/ptrace/jni/RegisterSet.cxx
@@ -55,7 +55,7 @@ frysk::sys::ptrace::RegisterSet::transfer(::jnixx::env env,
 					  ::jnixx::jbyteArray data,
 					  jint length) {
   verifyBounds(env, data, length);
-  ArrayBytes bytes = ArrayBytes(env, data);
+  jbyteArrayElements bytes = jbyteArrayElements(env, data);
   ptraceOp(env, op, pid, NULL, (long) bytes.elements());
   bytes.release();
 }
diff --git a/frysk-sys/jnixx/ChangeLog b/frysk-sys/jnixx/ChangeLog
index d59e3b2..4cc0ec7 100644
--- a/frysk-sys/jnixx/ChangeLog
+++ b/frysk-sys/jnixx/ChangeLog
@@ -1,5 +1,10 @@
 2008-05-25  Andrew Cagney  <cagney@redhat.com>
 
+	* elements.hxx (jbyteArrayElements): Rename ArrayBytes.
+	(jlongArrayElements): Define.
+	(jstringUTFChars): Replace StringChars.
+	* jni/Native.cxx: Update.
+	
 	* JniBindings.java: Generate GetArrayElements and
 	ReleaesArrayElements as aliases for Get<primitive>ArrayElements
 	et.al.
diff --git a/frysk-sys/jnixx/elements.hxx b/frysk-sys/jnixx/elements.hxx
index bafbb51..75f137f 100644
--- a/frysk-sys/jnixx/elements.hxx
+++ b/frysk-sys/jnixx/elements.hxx
@@ -51,48 +51,6 @@ extern char** strings2chars(::jnixx::env, ::jnixx::array<java::lang::String>);
 extern ::jnixx::array<java::lang::String> chars2strings(::jnixx::env, char**);
 extern void slurp(::jnixx::env, const char[], jbyte* (&), jsize&);
 
-class StringChars {
-private:
-  ::java::lang::String string;
-  ::jnixx::env env;
-  const char* p;
-public:
-  void operator=(const StringChars& src) {
-    this->env = src.env;
-    this->string = src.string;
-    // Avoid double references by not copying P.
-    this->p = NULL;
-  }
-  StringChars() {
-    this->p = NULL;
-  }
-  StringChars(const StringChars& old) {
-    this->operator=(old);
-  }
-  StringChars(::jnixx::env env, ::java::lang::String string) {
-    this->env = env;
-    this->string = string;
-    this->p = NULL;
-  }
-  const char* elements() {
-    if (p == NULL) {
-      if (string != NULL) {
-	this->p = string.GetStringUTFChars(env);
-      }
-    }
-    return p;
-  }
-  void release() {
-    if (p != NULL) {
-      string.ReleaseStringUTFChars(env, p);
-      p = NULL;
-    }
-  }
-  ~StringChars() {
-    release();
-  }
-};
-
 class StringArrayChars {
 private:
   ::jnixx::env env;
@@ -197,6 +155,44 @@ public:
 typedef Elements<jbyte> Bytes;
 
 /**
+ * Scratch UTF Chars.
+ */
+class jstringUTFChars : public Elements<const char> {
+private:
+  ::java::lang::String string;
+public:
+  void operator=(const jstringUTFChars& src) {
+    this->copy(src);
+    this->string = src.string;
+  }
+  jstringUTFChars() {
+  }
+  jstringUTFChars(const jstringUTFChars& old) {
+    this->operator=(old);
+  }
+  jstringUTFChars(::jnixx::env env, ::java::lang::String string)
+    : Elements<const char>(env) {
+    this->string = string;
+  }
+  void slurp(jnixx::env& env, const char* (&buf), jsize &len) {
+    if (string == NULL) {
+      buf = NULL;
+      len = 0;
+    } else {
+      buf = string.GetStringUTFChars(env);
+      len = ::strlen(buf);
+    }
+  }
+  void free(jnixx::env& env, const char* buf, int mode) {
+    string.ReleaseStringUTFChars(env, buf);
+  }
+  ~jstringUTFChars() {
+    release();
+  }
+};
+
+
+/**
  * A scratch buffer containing the file's entire contents; the buffer
  * is recovered once this goes out of scope.
  */
@@ -292,6 +288,7 @@ protected:
     types.ReleaseArrayElements(env, buf, mode);
   }
 };
-typedef ArrayElements<jbyte,::jnixx::jbyteArray> ArrayBytes;
+typedef ArrayElements<jbyte,::jnixx::jbyteArray> jbyteArrayElements;
+typedef ArrayElements<jlong,::jnixx::jlongArray> jlongArrayElements;
 
 #endif
diff --git a/frysk-sys/jnixx/jni/Native.cxx b/frysk-sys/jnixx/jni/Native.cxx
index c207cce..646aee4 100644
--- a/frysk-sys/jnixx/jni/Native.cxx
+++ b/frysk-sys/jnixx/jni/Native.cxx
@@ -97,9 +97,9 @@ jnixx::Native::catchRuntimeException(jnixx::env env, jnixx::Native e) {
 }
 
 static void
-throwCopy(jnixx::env env, int n, StringChars stringChars,
+throwCopy(jnixx::env env, int n, jstringUTFChars stringChars,
 	  StringArrayChars stringArrayChars,
-	  ArrayBytes arrayBytes) {
+	  jbyteArrayElements arrayBytes) {
   if (n <= 0) {
     java::lang::RuntimeException::ThrowNew(env, "oops!");
   } else {
@@ -114,8 +114,8 @@ void
 jnixx::Native::throwElements(jnixx::env env, String string,
 			     jnixx::array<String> stringArray,
 			     jnixx::jbyteArray bytes) {
-  StringChars stringChars = StringChars(env, string);
+  jstringUTFChars stringChars = jstringUTFChars(env, string);
   StringArrayChars stringArrayChars = StringArrayChars(env, stringArray);
-  ArrayBytes arrayBytes = ArrayBytes(env, bytes);
+  jbyteArrayElements arrayBytes = jbyteArrayElements(env, bytes);
   throwCopy(env, 4, stringChars, stringArrayChars, arrayBytes);
 }


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


                 reply	other threads:[~2008-05-25 21:49 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=20080525214951.1936.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).