cvs: php4 /ext/java java.c reflect.java

From: 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 {

« previous php.cvs (#862) next »