39 |
#include "xmlj_error.h" |
#include "xmlj_error.h" |
40 |
#include <libxml/tree.h> |
#include <libxml/tree.h> |
41 |
#include <unistd.h> |
#include <unistd.h> |
42 |
|
#include <jcl.h> |
43 |
|
|
44 |
/* xmlChar->jstring cache */ |
/* xmlChar->jstring cache */ |
45 |
#ifdef XMLJ_STRING_CACHE |
#ifdef XMLJ_STRING_CACHE |
219 |
void * |
void * |
220 |
xmljAsPointer (JNIEnv *env, jobject ptr) |
xmljAsPointer (JNIEnv *env, jobject ptr) |
221 |
{ |
{ |
222 |
jclass cls; |
return JCL_GetRawData(env, ptr); |
|
jfieldID field; |
|
|
|
|
|
#if defined XMLJ_64BIT_POINTER |
|
|
cls = (*env)->FindClass (env, "gnu/classpath/RawData64"); |
|
|
field = (*env)->GetFieldID (env, cls, "data", "J"); |
|
|
return (void *) (*env)->GetLongField (env, ptr, field); |
|
|
#else |
|
|
cls = (*env)->FindClass (env, "gnu/classpath/RawData32"); |
|
|
field = (*env)->GetFieldID (env, cls, "data", "I"); |
|
|
return (void *) (*env)->GetIntField (env, ptr, field); |
|
|
#endif |
|
223 |
} |
} |
224 |
|
|
225 |
jobject |
jobject |
226 |
xmljAsField (JNIEnv *env, void * ptr) |
xmljAsField (JNIEnv *env, void * ptr) |
227 |
{ |
{ |
228 |
jclass cls; |
return JCL_NewRawDataObject(env, ptr); |
|
jmethodID method; |
|
|
|
|
|
#if defined XMLJ_64BIT_POINTER |
|
|
cls = (*env)->FindClass (env, "gnu/classpath/RawData64"); |
|
|
method = (*env)->GetMethodID (env, cls, "<init>", "(J)V"); |
|
|
return (*env)->NewObject (env, cls, method, (jlong) ptr); |
|
|
#else |
|
|
cls = (*env)->FindClass (env, "gnu/classpath/RawData32"); |
|
|
method = (*env)->GetMethodID (env, cls, "<init>", "(I)V"); |
|
|
return (*env)->NewObject (env, cls, method, (jint) ptr); |
|
|
#endif |
|
229 |
} |
} |
230 |
|
|
231 |
JNIEnv * |
JNIEnv * |