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)
{
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();
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 {
setResultFromObject(result, value);
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)
{
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();
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 {
setResultFromObject(result, value);