178 |
} |
} |
179 |
return retval; |
return retval; |
180 |
} |
} |
181 |
|
|
182 |
|
|
183 |
|
/* |
184 |
|
* Build a RawData object. The function caches the class type |
185 |
|
*/ |
186 |
|
|
187 |
|
static jclass rawDataClass; |
188 |
|
static jfieldID rawData_fid; |
189 |
|
static jmethodID rawData_mid; |
190 |
|
|
191 |
|
JNIEXPORT jobject JNICALL |
192 |
|
JCL_NewRawDataObject (JNIEnv * env, void *data) |
193 |
|
{ |
194 |
|
if (rawDataClass == NULL) |
195 |
|
{ |
196 |
|
#ifdef POINTERS_ARE_64BIT |
197 |
|
rawDataClass = (*env)->FindClass (env, "gnu/classpath/RawData64"); |
198 |
|
rawData_mid = (*env)->GetMethodID (env, rawDataClass, "<init>", "(J)V"); |
199 |
|
rawData_fid = (*env)->GetFieldID (env, rawDataClass, "data", "J"); |
200 |
|
#else |
201 |
|
rawDataClass = (*env)->FindClass (env, "gnu/classpath/RawData32"); |
202 |
|
rawData_mid = (*env)->GetMethodID (env, rawDataClass, "<init>", "(I)V"); |
203 |
|
rawData_fid = (*env)->GetFieldID (env, rawDataClass, "data", "I"); |
204 |
|
#endif |
205 |
|
(*env)->DeleteLocalRef(env, rawDataClass); |
206 |
|
rawDataClass = (*env)->NewGlobalRef (env, rawDataClass); |
207 |
|
} |
208 |
|
|
209 |
|
#ifdef POINTERS_ARE_64BIT |
210 |
|
return (*env)->NewObject (env, rawDataClass, rawData_mid, (jlong) data); |
211 |
|
#else |
212 |
|
return (*env)->NewObject (env, rawDataClass, rawData_mid, (jint) data); |
213 |
|
#endif |
214 |
|
} |
215 |
|
|
216 |
|
JNIEXPORT void * JNICALL |
217 |
|
JCL_GetRawData (JNIEnv * env, jobject rawdata) |
218 |
|
{ |
219 |
|
#ifdef POINTERS_ARE_64BIT |
220 |
|
return (void *) (*env)->GetLongField (env, rawdata, rawData_fid); |
221 |
|
#else |
222 |
|
return (void *) (*env)->GetIntField (env, rawdata, rawData_fid); |
223 |
|
#endif |
224 |
|
} |