/[classpath]/classpath/native/jni/classpath/jcl.c
ViewVC logotype

Diff of /classpath/native/jni/classpath/jcl.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.12 by mark, Sat Jul 2 20:32:52 2005 UTC revision 1.13 by glavaux, Mon Jul 25 17:20:52 2005 UTC
# Line 178  JCL_FindClass (JNIEnv * env, const char Line 178  JCL_FindClass (JNIEnv * env, const char
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    }

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26