cvs: php4 /ext/java java.c reflect.java
| From: | Sam Ruby | Date: | Sat, 22 Jul 2000 17:32:31 +0000 |
| Subject: | cvs: php4 /ext/java java.c reflect.java | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-862@lists.php.net to get a copy of this message | ||
rubys Sat Jul 22 10:32:31 2000 EDT
Modified files:
/php4/ext/java java.c reflect.java
Log:
Allow java.lang.Hashtables to be passed into PHP as arrays.
Index: php4/ext/java/java.c
diff -u php4/ext/java/java.c:1.30 php4/ext/java/java.c:1.31
--- php4/ext/java/java.c:1.30 Sat Jul 22 09:13:19 2000
+++ php4/ext/java/java.c Sat Jul 22 10:32:31 2000
@@ -730,6 +730,19 @@
return (jlong)(long)result;
}
+JNIEXPORT jlong JNICALL Java_net_php_reflect_hashUpdate
+ (JNIEnv *jenv, jclass self, jlong array, jbyteArray key)
+{
+ pval *result;
+ pval pkey;
+ pval *handle = (pval*)(long)array;
+ ALLOC_ZVAL(result);
+ Java_net_php_reflect_setResultFromString(jenv, self, (jlong)(long)&pkey, key);
+ zend_hash_update(handle->value.ht, pkey.value.str.val, pkey.value.str.len+1,
+ &result, sizeof(zval *), NULL);
+ return (jlong)(long)result;
+}
+
JNIEXPORT void JNICALL Java_net_php_reflect_setException
(JNIEnv *jenv, jclass self, jlong result, jbyteArray value)
{
Index: php4/ext/java/reflect.java
diff -u php4/ext/java/reflect.java:1.15 php4/ext/java/reflect.java:1.16
--- php4/ext/java/reflect.java:1.15 Sat Jul 22 06:43:45 2000
+++ php4/ext/java/reflect.java Sat Jul 22 10:32:31 2000
@@ -45,6 +45,7 @@
private static native void setResultFromObject(long result, Object value);
private static native void setResultFromArray(long result);
private static native long nextElement(long array);
+ private static native long hashUpdate(long array, byte key[]);
private static native void setException(long result, byte value[]);
public static native void setEnv();
@@ -79,6 +80,15 @@
setResultFromArray(result);
for (int i=0; i<length; i++) {
setResult(nextElement(result), Array.get(value, i));
+ }
+
+ } else if (value instanceof java.util.Hashtable) {
+
+ Hashtable ht = (Hashtable) value;
+ setResultFromArray(result);
+ for (Enumeration e = ht.keys(); e.hasMoreElements(); ) {
+ Object key = e.nextElement();
+ setResult(hashUpdate(result, key.toString().getBytes()), ht.get(key));
}
} else {