37 JNIEXPORT jint JNICALL
JNI_OnLoad(JavaVM *vm,
void *reserved) {
39 jclass nexusException;
41 jint ret = (*vm)->GetEnv(vm, (
void **)&env, JNI_VERSION_1_1);
43 assert(ret == JNI_OK);
47 nexusException = (*env)->FindClass(env,
"org/nexusformat/NexusException");
48 if (nexusException == NULL) {
49 fprintf(stderr,
"cannot find NexusException - this will not work. Terminating.");
50 assert(nexusException);
53 return JNI_VERSION_1_1;
62 static void JapiError(
void *pData,
char *text) {
64 jclass nexusException;
67 fprintf(stderr,
"JapiError called with: %s\n", text);
71 (*jvm)->AttachCurrentThread (jvm, (
void **) &env, NULL);
79 nexusException = (*env)->FindClass(env,
"org/nexusformat/NexusException");
80 (*env)->ThrowNew(env, nexusException, text);
87 (JNIEnv *env, jobject obj, jstring filename, jint access)
94 NXMSetTError(env,JapiError);
97 fileName = (
char *) (*env)->GetStringUTFChars(env, filename, 0);
101 fprintf(stderr,
"Calling NXopen on %s, with %d\n", fileName, access);
103 iRet = NXopen(fileName,access,&handle);
106 fprintf(stderr,
"Handle allocated for %s\n", fileName);
110 (*env)->ReleaseStringUTFChars(env,filename, fileName);
125 (JNIEnv *env, jobject obj, jint handle)
131 NXMSetTError(env,JapiError);
140 iRet = NXflush(&nxhandle);
155 (JNIEnv *env, jobject obj, jint handle)
161 NXMSetTError(env,JapiError);
166 fprintf(stderr,
"closing handle %d, nxhandle %d\n", handle, nxhandle);
169 iRet = NXclose(&nxhandle);
175 JapiError(env,
"NXclose failed");
182 (JNIEnv *env, jobject obj, jint handle, jstring name, jstring nxclass)
184 char *Name, *Nxclass;
189 NXMSetTError(env,JapiError);
195 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
196 Nxclass = (
char *) (*env)->GetStringUTFChars(env,nxclass,0);
198 iRet = NXmakegroup(nxhandle, Name, Nxclass);
201 (*env)->ReleaseStringUTFChars(env,name, Name);
202 (*env)->ReleaseStringUTFChars(env,nxclass, Nxclass);
205 JapiError(env,
"NXmakegroup failed");
212 (JNIEnv *env, jobject obj, jint handle, jstring name, jstring nxclass)
214 char *Name, *Nxclass;
219 NXMSetTError(env,JapiError);
225 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
226 Nxclass = (
char *) (*env)->GetStringUTFChars(env,nxclass,0);
228 iRet = NXopengroup(nxhandle, Name, Nxclass);
233 fprintf(stderr,
"Cleanup code called after raising Exception\n");
237 (*env)->ReleaseStringUTFChars(env,name, Name);
238 (*env)->ReleaseStringUTFChars(env,nxclass, Nxclass);
241 JapiError(env,
"NXopengroup failed");
248 (JNIEnv *env, jobject obj, jint handle, jstring path)
255 NXMSetTError(env,JapiError);
261 nxpath = (
char *) (*env)->GetStringUTFChars(env,path,0);
263 iRet = NXopenpath(nxhandle, nxpath);
268 fprintf(stderr,
"Cleanup code called after raising Exception\n");
272 (*env)->ReleaseStringUTFChars(env,path, nxpath);
275 JapiError(env,
"NXopenpath failed");
282 (JNIEnv *env, jobject obj, jint handle, jstring path)
289 NXMSetTError(env,JapiError);
295 nxpath = (
char *) (*env)->GetStringUTFChars(env,path,0);
297 iRet = NXopengrouppath(nxhandle, nxpath);
302 fprintf(stderr,
"Cleanup code called after raising Exception\n");
306 (*env)->ReleaseStringUTFChars(env,path, nxpath);
309 JapiError(env,
"NXopengrouppath failed");
314 (JNIEnv *env, jobject obj, jint handle)
321 NXMSetTError(env,JapiError);
326 if (NXgetpath(nxhandle, path,1024) != NX_OK) {
327 JapiError(env,
"NXgetpath failed");
330 return (*env)->NewStringUTF(env,path);
337 (JNIEnv *env, jobject obj, jint handle)
343 NXMSetTError(env,JapiError);
348 if (NXclosegroup(nxhandle) != NX_OK) {
349 JapiError(env,
"NXclosegroup failed");
356 (JNIEnv *env, jobject obj, jint handle, jstring name, jint type,
357 jint rank, jintArray dim)
365 NXMSetTError(env,JapiError);
371 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
374 iDim = (*env)->GetIntArrayElements(env,dim,0);
376 iRet = NXmakedata(nxhandle,Name,type,rank,iDim);
379 (*env)->ReleaseStringUTFChars(env,name, Name);
380 (*env)->ReleaseIntArrayElements(env,dim,iDim,0);
383 JapiError(env,
"NXmakedata failed");
390 (JNIEnv *env, jobject obj, jint handle, jstring name, jint type,
391 jint rank, jlongArray dim)
399 NXMSetTError(env,JapiError);
405 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
408 iDim = (*env)->GetLongArrayElements(env,dim,0);
410 iRet = NXmakedata64(nxhandle,Name,type,rank,iDim);
413 (*env)->ReleaseStringUTFChars(env,name, Name);
414 (*env)->ReleaseLongArrayElements(env,dim,iDim,0);
417 JapiError(env,
"NXmakedata failed");
424 (JNIEnv *env, jobject obj, jint handle, jstring name, jint type,
425 jint rank, jintArray dim, jint compression_type, jintArray chunk)
433 NXMSetTError(env,JapiError);
439 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
442 iDim = (*env)->GetIntArrayElements(env,dim,0);
445 iChunk = (*env)->GetIntArrayElements(env,chunk,0);
447 iRet = NXcompmakedata(nxhandle,Name,type,rank,iDim,
448 compression_type,iChunk);
451 (*env)->ReleaseStringUTFChars(env,name, Name);
452 (*env)->ReleaseIntArrayElements(env,dim,iDim,0);
453 (*env)->ReleaseIntArrayElements(env,chunk,iChunk,0);
456 JapiError(env,
"NXcompmakedata failed");
464 (JNIEnv *env, jobject obj, jint handle, jstring name, jint type,
465 jint rank, jlongArray dim, jint compression_type, jlongArray chunk)
469 jlong *iDim, *iChunk;
473 NXMSetTError(env,JapiError);
479 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
482 iDim = (*env)->GetLongArrayElements(env,dim,0);
485 iChunk = (*env)->GetLongArrayElements(env,chunk,0);
487 iRet = NXcompmakedata64(nxhandle,Name,type,rank,iDim,
488 compression_type,iChunk);
491 (*env)->ReleaseStringUTFChars(env,name, Name);
492 (*env)->ReleaseLongArrayElements(env,dim,iDim,0);
493 (*env)->ReleaseLongArrayElements(env,chunk,iChunk,0);
496 JapiError(env,
"NXcompmakedata failed");
504 (JNIEnv *env, jobject obj, jint handle , jstring name)
511 NXMSetTError(env,JapiError);
517 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
519 iRet = NXopendata(nxhandle,Name);
522 (*env)->ReleaseStringUTFChars(env,name, Name);
525 JapiError(env,
"NXopendata failed");
532 (JNIEnv *env, jobject obj, jint handle)
538 NXMSetTError(env,JapiError);
543 if (NXclosedata(nxhandle) != NX_OK) {
544 JapiError(env,
"NXclosedata failed");
551 (JNIEnv *env, jobject obj, jint handle , jint comp_type)
557 NXMSetTError(env,JapiError);
563 fprintf(stderr,
"Compressing at %d with type %d\n", nxhandle, comp_type);
566 if (NXcompress(nxhandle,comp_type) != NX_OK) {
567 JapiError(env,
"NXcompress failed");
574 (JNIEnv *env, jobject obj, jint handle, jbyteArray data)
581 NXMSetTError(env,JapiError);
587 bdata = (*env)->GetByteArrayElements(env,data,0);
589 iRet = NXputdata(nxhandle, bdata);
592 (*env)->ReleaseByteArrayElements(env,data,bdata,0);
598 JapiError(env,
"NXputdata failed");
606 (JNIEnv *env, jobject obj, jint handle, jbyteArray data,
607 jintArray start, jintArray end)
615 NXMSetTError(env,JapiError);
621 bdata = (*env)->GetByteArrayElements(env,data,0);
622 iStart = (*env)->GetIntArrayElements(env,start,0);
623 iEnd = (*env)->GetIntArrayElements(env,end,0);
626 iRet = NXputslab(nxhandle, bdata, iStart, iEnd);
629 (*env)->ReleaseByteArrayElements(env,data,bdata,0);
630 (*env)->ReleaseIntArrayElements(env,start,iStart,0);
631 (*env)->ReleaseIntArrayElements(env,end,iEnd,0);
634 JapiError(env,
"NXputslab failed");
641 (JNIEnv *env, jobject obj, jint handle, jbyteArray data,
642 jlongArray start, jlongArray end)
646 jlong *iStart, *iEnd;
650 NXMSetTError(env,JapiError);
656 bdata = (*env)->GetByteArrayElements(env,data,0);
657 iStart = (*env)->GetLongArrayElements(env,start,0);
658 iEnd = (*env)->GetLongArrayElements(env,end,0);
661 iRet = NXputslab64(nxhandle, bdata, iStart, iEnd);
664 (*env)->ReleaseByteArrayElements(env,data,bdata,0);
665 (*env)->ReleaseLongArrayElements(env,start,iStart,0);
666 (*env)->ReleaseLongArrayElements(env,end,iEnd,0);
669 JapiError(env,
"NXputslab failed");
676 (JNIEnv *env, jobject obj, jint handle , jstring name,
677 jbyteArray data, jint type)
682 int iRet, iDataLen, div = 1;
685 NXMSetTError(env,JapiError);
691 bdata = (*env)->GetByteArrayElements(env,data,0);
692 iDataLen = (*env)->GetArrayLength(env,data);
715 JapiError(env,
"Bad data type in NXputattr");
719 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
721 iRet = NXputattr(nxhandle,Name, bdata, iDataLen, type);
724 (*env)->ReleaseByteArrayElements(env,data,bdata,0);
725 (*env)->ReleaseStringUTFChars(env,name, Name);
728 JapiError(env,
"NXputattr failed");
735 (JNIEnv *env, jobject obj, jint handle, jbyteArray data)
742 NXMSetTError(env,JapiError);
748 bdata = (*env)->GetByteArrayElements(env,data,0);
750 iRet = NXgetdata(nxhandle, bdata);
753 (*env)->ReleaseByteArrayElements(env,data,bdata,0);
759 JapiError(env,
"NXgetdata failed");
767 (JNIEnv *env, jobject obj, jint handle, jintArray start,
768 jintArray end, jbyteArray data)
776 NXMSetTError(env,JapiError);
782 bdata = (*env)->GetByteArrayElements(env,data,0);
783 iStart = (*env)->GetIntArrayElements(env,start,0);
784 iEnd = (*env)->GetIntArrayElements(env,end,0);
786 iRet = NXgetslab(nxhandle, bdata, iStart, iEnd);
789 (*env)->ReleaseByteArrayElements(env,data,bdata,0);
790 (*env)->ReleaseIntArrayElements(env,start,iStart,0);
791 (*env)->ReleaseIntArrayElements(env,end,iEnd,0);
794 JapiError(env,
"NXgetslab failed");
801 (JNIEnv *env, jobject obj, jint handle, jlongArray start,
802 jlongArray end, jbyteArray data)
806 jlong *iStart, *iEnd;
810 NXMSetTError(env,JapiError);
816 bdata = (*env)->GetByteArrayElements(env,data,0);
817 iStart = (*env)->GetLongArrayElements(env,start,0);
818 iEnd = (*env)->GetLongArrayElements(env,end,0);
820 iRet = NXgetslab64(nxhandle, bdata, iStart, iEnd);
823 (*env)->ReleaseByteArrayElements(env,data,bdata,0);
824 (*env)->ReleaseLongArrayElements(env,start,iStart,0);
825 (*env)->ReleaseLongArrayElements(env,end,iEnd,0);
828 JapiError(env,
"NXgetslab failed");
835 (JNIEnv *env, jobject obj, jint handle, jstring name,
836 jbyteArray data, jintArray args)
846 NXMSetTError(env,JapiError);
852 bdata = (*env)->GetByteArrayElements(env,data,0);
853 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
854 iargs = (*env)->GetIntArrayElements(env,args,0);
856 fprintf(stderr,
"nxgetattr converted types \n");
862 fprintf(stderr,
"nxgetattr: iLen %d, iType: %d\n",iLen, iType);
865 iRet = NXgetattr(nxhandle, Name, bdata, &iLen, &iType);
869 fprintf(stderr,
"nxgetattr cleaning up \n");
873 (*env)->ReleaseByteArrayElements(env,data,bdata,0);
874 (*env)->ReleaseStringUTFChars(env,name, Name);
875 (*env)->ReleaseIntArrayElements(env,args,iargs,0);
878 JapiError(env,
"NXgetattr failed");
885 (JNIEnv *env, jobject obj, jint handle, jobject linki)
895 NXMSetTError(env,JapiError);
900 iRet = NXgetgroupID(nxhandle, &myLink);
904 cls = (*env)->GetObjectClass(env, linki);
908 "ERROR: failed to locate class in nxgetgroupid");
911 fid = (*env)->GetFieldID(env,cls,
"tag",
"I");
915 "ERROR: failed to locate fieldID in nxgetgroupid");
918 (*env)->SetIntField(env,linki,fid,myLink.iTag);
920 fid = (*env)->GetFieldID(env,cls,
"ref",
"I");
924 "ERROR: failed to locate fieldID in nxgetgroupid");
927 (*env)->SetIntField(env,linki,fid,myLink.iRef);
933 fid = (*env)->GetFieldID(env,cls,
"targetPath",
"Ljava/lang/String;");
937 "ERROR: failed to locate targetPath in nxgetgroupid");
940 jstr = (*env)->NewStringUTF(env,myLink.targetPath);
941 (*env)->SetObjectField(env, linki, fid, jstr);
943 fid = (*env)->GetFieldID(env,cls,
"linkType",
"I");
947 "ERROR: failed to locate linkType in nxgetgroupid");
950 (*env)->SetIntField(env,linki,fid,myLink.linkType);
953 fid = (*env)->GetFieldID(env,cls,
"targetPath",
"Ljava/lang/String;");
957 "ERROR: failed to locate targetPath in nxgetgroupid");
960 jstr = (*env)->NewStringUTF(env,myLink.targetPath);
961 (*env)->SetObjectField(env, linki, fid, jstr);
968 (JNIEnv *env, jobject obj, jint handle, jobject linki)
978 NXMSetTError(env,JapiError);
983 iRet = NXgetdataID(nxhandle, &myLink);
987 cls = (*env)->GetObjectClass(env, linki);
991 "ERROR: failed to locate class in nxgetdataid");
994 fid = (*env)->GetFieldID(env,cls,
"tag",
"I");
998 "ERROR: failed to locate fieldID in nxgetdataid");
1001 (*env)->SetIntField(env,linki,fid,myLink.iTag);
1002 fid = (*env)->GetFieldID(env,cls,
"ref",
"I");
1006 "ERROR: failed to locate fieldID in nxgetdataid");
1009 (*env)->SetIntField(env,linki,fid,myLink.iRef);
1015 fid = (*env)->GetFieldID(env,cls,
"targetPath",
"Ljava/lang/String;");
1019 "ERROR: failed to locate targetPath in nxgetgroupid");
1022 jstr = (*env)->NewStringUTF(env,myLink.targetPath);
1023 (*env)->SetObjectField(env, linki, fid, jstr);
1025 fid = (*env)->GetFieldID(env,cls,
"linkType",
"I");
1029 "ERROR: failed to locate linkType in nxgetgroupid");
1032 (*env)->SetIntField(env,linki,fid,myLink.linkType);
1035 fid = (*env)->GetFieldID(env,cls,
"targetPath",
"Ljava/lang/String;");
1039 "ERROR: failed to locate targetPath in nxgetdataid");
1042 jstr = (*env)->NewStringUTF(env,myLink.targetPath);
1043 (*env)->SetObjectField(env, linki, fid, jstr);
1051 (JNIEnv *env, jobject obj, jint handle, jobject target)
1061 NXMSetTError(env,JapiError);
1067 cls = (*env)->GetObjectClass(env, target);
1071 "ERROR: failed to locate class in nxmakelink");
1074 fid = (*env)->GetFieldID(env,cls,
"tag",
"I");
1078 "ERROR: failed to locate fieldID in nxmakelink");
1081 myLink.iTag = (*env)->GetIntField(env,target,fid);
1082 fid = (*env)->GetFieldID(env,cls,
"ref",
"I");
1086 "ERROR: failed to locate fieldID in nxmakelink");
1089 myLink.iRef = (*env)->GetIntField(env,target,fid);
1095 fid = (*env)->GetFieldID(env,cls,
"targetPath",
"Ljava/lang/String;");
1099 "ERROR: failed to locate targetPath in nxmakelink");
1102 jstr = (*env)->GetObjectField(env, target, fid);
1103 cData = (*env)->GetStringUTFChars(env, jstr, 0);
1104 strcpy(myLink.targetPath,cData);
1105 (*env)->ReleaseStringUTFChars(env, jstr, cData);
1107 fid = (*env)->GetFieldID(env,cls,
"linkType",
"I");
1111 "ERROR: failed to locate linkType in nxmakelink");
1114 myLink.linkType = (*env)->GetIntField(env,target,fid);
1117 fid = (*env)->GetFieldID(env,cls,
"targetPath",
"Ljava/lang/String;");
1121 "ERROR: failed to locate targetPath in nxmakelink");
1124 jstr = (*env)->GetObjectField(env, target, fid);
1125 cData = (*env)->GetStringUTFChars(env, jstr, 0);
1126 strcpy(myLink.targetPath,cData);
1127 (*env)->ReleaseStringUTFChars(env, jstr, cData);
1130 if (NXmakelink(nxhandle, &myLink) != NX_OK) {
1131 JapiError(env,
"NXmakelink failed");
1138 (JNIEnv *env, jobject obj, jint handle, jstring name, jobject target)
1149 NXMSetTError(env,JapiError);
1155 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
1158 cls = (*env)->GetObjectClass(env, target);
1162 "ERROR: failed to locate class in nxmakelink");
1165 fid = (*env)->GetFieldID(env,cls,
"tag",
"I");
1169 "ERROR: failed to locate fieldID in nxmakelink");
1172 myLink.iTag = (*env)->GetIntField(env,target,fid);
1173 fid = (*env)->GetFieldID(env,cls,
"ref",
"I");
1177 "ERROR: failed to locate fieldID in nxmakelink");
1180 myLink.iRef = (*env)->GetIntField(env,target,fid);
1186 fid = (*env)->GetFieldID(env,cls,
"targetPath",
"Ljava/lang/String;");
1190 "ERROR: failed to locate targetPath in nxmakelink");
1193 jstr = (*env)->GetObjectField(env, target, fid);
1194 cData = (*env)->GetStringUTFChars(env, jstr, 0);
1195 strcpy(myLink.targetPath,cData);
1196 (*env)->ReleaseStringUTFChars(env, jstr, cData);
1198 fid = (*env)->GetFieldID(env,cls,
"linkType",
"I");
1202 "ERROR: failed to locate linkType in nxmakelink");
1205 myLink.linkType = (*env)->GetIntField(env,target,fid);
1208 fid = (*env)->GetFieldID(env,cls,
"targetPath",
"Ljava/lang/String;");
1212 "ERROR: failed to locate targetPath in nxmakelink");
1215 jstr = (*env)->GetObjectField(env, target, fid);
1216 cData = (*env)->GetStringUTFChars(env, jstr, 0);
1217 strcpy(myLink.targetPath,cData);
1218 (*env)->ReleaseStringUTFChars(env, jstr, cData);
1221 if (NXmakenamedlink(nxhandle, Name, &myLink) != NX_OK) {
1222 JapiError(env,
"NXmakenamedlink failed");
1230 (JNIEnv *env, jobject obj, jint handle)
1235 NXMSetTError(env,JapiError);
1240 if (NXopensourcegroup(nxhandle) != NX_OK) {
1241 JapiError(env,
"NXopensourcegroup failed");
1249 (JNIEnv *env, jobject obj, jint handle, jint type, jstring format)
1256 NXMSetTError(env,JapiError);
1264 cformat = (
char *) (*env)->GetStringUTFChars(env,format,0);
1269 iRet = NXsetnumberformat(nxhandle,type,cformat);
1273 (*env)->ReleaseStringUTFChars(env,format, cformat);
1275 if (iRet != NX_OK) {
1276 JapiError(env,
"NXsetnumberformat failed");
1283 (JNIEnv *env, jobject obj, jint handle, jintArray dim, jintArray args)
1285 int rank, type, iRet, iDim[NX_MAXRANK], i;
1290 NXMSetTError(env,JapiError);
1296 iRet = NXgetinfo(nxhandle, &rank, iDim, &type);
1301 jdata = (*env)->GetIntArrayElements(env,dim,0);
1302 for(i = 0; i < rank; i++)
1306 (*env)->ReleaseIntArrayElements(env,dim,jdata,0);
1307 jdata = (*env)->GetIntArrayElements(env,args,0);
1310 (*env)->ReleaseIntArrayElements(env,args,jdata,0);
1317 (JNIEnv *env, jobject obj, jint handle, jlongArray dim, jintArray args)
1319 int rank, type, iRet, i;
1320 jlong iDim[NX_MAXRANK];
1326 NXMSetTError(env,JapiError);
1332 iRet = NXgetinfo64(nxhandle, &rank, iDim, &type);
1337 jdata = (*env)->GetLongArrayElements(env,dim,0);
1338 for(i = 0; i < rank; i++)
1342 (*env)->ReleaseLongArrayElements(env,dim,jdata,0);
1344 jargsdata = (*env)->GetIntArrayElements(env,args,0);
1345 jargsdata[0] = rank;
1346 jargsdata[1] = type;
1347 (*env)->ReleaseIntArrayElements(env,args,jargsdata,0);
1354 (JNIEnv *env, jobject obj, jint handle, jobjectArray jnames)
1357 NXname pName, pClass;
1362 NXMSetTError(env,JapiError);
1367 iRet = NXgetnextentry(nxhandle,pName, pClass,&iType);
1368 if(iRet != NX_ERROR)
1371 rstring = (*env)->NewStringUTF(env,pName);
1372 (*env)->SetObjectArrayElement(env,jnames,0,(jobject)rstring);
1373 rstring = (*env)->NewStringUTF(env,pClass);
1374 (*env)->SetObjectArrayElement(env,jnames,1,(jobject)rstring);
1382 (JNIEnv *env, jobject obj, jint handle, jobjectArray jnames, jintArray args)
1386 int iRet, iType, iLen;
1390 NXMSetTError(env,JapiError);
1395 iRet = NXgetnextattr(nxhandle, pName, &iLen, &iType);
1396 if(iRet != NX_ERROR)
1399 rstring = (*env)->NewStringUTF(env,pName);
1400 (*env)->SetObjectArrayElement(env,jnames,0,(jobject)rstring);
1401 jarray = (*env)->GetIntArrayElements(env,args,0);
1404 (*env)->ReleaseIntArrayElements(env,args,jarray,0);
1410 jobject obj , jint handle, jobjectArray jnames){
1413 char filename[1024];
1417 NXMSetTError(env,JapiError);
1421 status = NXinquirefile(nxhandle,filename,1023);
1422 if(status == NX_OK){
1423 rstring = (*env)->NewStringUTF(env,filename);
1424 (*env)->SetObjectArrayElement(env,jnames,0,(jobject)rstring);
1429 (JNIEnv *env, jobject obj, jint handle, jstring name,
1430 jstring nxclass, jstring nxurl){
1433 char *Name, *Nxclass, *Nxurl;
1436 NXMSetTError(env,JapiError);
1442 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
1443 Nxclass = (
char *) (*env)->GetStringUTFChars(env,nxclass,0);
1444 Nxurl = (
char *) (*env)->GetStringUTFChars(env,nxurl,0);
1445 iRet = NXlinkexternal(nxhandle,Name,Nxclass,Nxurl);
1448 (*env)->ReleaseStringUTFChars(env,name, Name);
1449 (*env)->ReleaseStringUTFChars(env,nxclass, Nxclass);
1450 (*env)->ReleaseStringUTFChars(env,nxurl, Nxurl);
1452 if (iRet != NX_OK) {
1453 JapiError(env,
"NXlinkexternal failed");
1458 (JNIEnv *env, jobject obj, jint handle, jstring name, jstring nxurl){
1464 NXMSetTError(env,JapiError);
1470 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
1471 Nxurl = (
char *) (*env)->GetStringUTFChars(env,nxurl,0);
1472 iRet = NXlinkexternaldataset(nxhandle,Name,Nxurl);
1475 (*env)->ReleaseStringUTFChars(env,name, Name);
1476 (*env)->ReleaseStringUTFChars(env,nxurl, Nxurl);
1478 if (iRet != NX_OK) {
1479 JapiError(env,
"NXlinkexternaldataset failed");
1484 (JNIEnv *env, jobject obj, jint handle, jstring name, jstring nxclass,
1485 jobjectArray jnames){
1486 int status, length = 1024;
1488 char *Name, *Nxclass, nxurl[1024];
1492 NXMSetTError(env,JapiError);
1498 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
1499 Nxclass = (
char *) (*env)->GetStringUTFChars(env,nxclass,0);
1501 status = NXisexternalgroup(nxhandle,Name,Nxclass,nxurl,length);
1504 (*env)->ReleaseStringUTFChars(env,name, Name);
1505 (*env)->ReleaseStringUTFChars(env,nxclass, Nxclass);
1507 if(status == NX_OK){
1508 rstring = (*env)->NewStringUTF(env,nxurl);
1509 (*env)->SetObjectArrayElement(env,jnames,0,(jobject)rstring);
1515 (JNIEnv *env, jobject obj, jint handle, jstring name, jobjectArray jnames){
1516 int status, length = 1024;
1518 char *Name, nxurl[1024];
1522 NXMSetTError(env,JapiError);
1528 Name = (
char *) (*env)->GetStringUTFChars(env,name,0);
1530 status = NXisexternaldataset(nxhandle,Name,nxurl,length);
1533 (*env)->ReleaseStringUTFChars(env,name, Name);
1535 if(status == NX_OK){
1536 rstring = (*env)->NewStringUTF(env,nxurl);
1537 (*env)->SetObjectArrayElement(env,jnames,0,(jobject)rstring);
1543 (JNIEnv *env, jobject obj, jint handle)
1549 NXMSetTError(env,JapiError);
1554 if (NXinitattrdir(nxhandle) != NX_OK) {
1555 JapiError(env,
"NXinitattrdir failed");
1560 (JNIEnv *env, jobject obj, jint handle)
1566 NXMSetTError(env,JapiError);
1571 if (NXinitgroupdir(nxhandle) != NX_OK) {
1572 JapiError(env,
"NXinitgroupdir failed");
1580 (JNIEnv *env, jobject obj)