public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Rename ArrayBytes -> jbyteArrayElements, define jlongArrayElements et.al.
@ 2008-05-25 21:49 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-05-25 21:49 UTC (permalink / raw)
  To: frysk-cvs

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


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

only message in thread, other threads:[~2008-05-25 21:49 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-25 21:49 [SCM] master: Rename ArrayBytes -> jbyteArrayElements, define jlongArrayElements et.al 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).