BOOL *getBoolean(char *variableName, int *nbRow, int *nbCol) { SciErr sciErr; BOOL *matrixOfBoolean = NULL; sciErr = readNamedMatrixOfBoolean(NULL, variableName, nbRow, nbCol, NULL); if (sciErr.iErr) { printError(&sciErr, 0); } /* Alloc the memory */ matrixOfBoolean = (BOOL *) malloc(((*nbRow) * (*nbCol)) * sizeof(BOOL)); /* Load the matrix */ sciErr = readNamedMatrixOfBoolean(NULL, variableName, nbRow, nbCol, matrixOfBoolean); if (sciErr.iErr) { printError(&sciErr, 0); } return matrixOfBoolean; }
/*--------------------------------------------------------------------------*/ int getNamedScalarBoolean(void* _pvCtx, const char* _pstName, int* _piBool) { SciErr sciErr; sciErr.iErr = 0; sciErr.iMsgCount = 0; int iRows = 0; int iCols = 0; int iBool = 0; sciErr = readNamedMatrixOfBoolean(_pvCtx, _pstName, &iRows, &iCols, &iBool); if(sciErr.iErr) { addErrorMessage(&sciErr, API_ERROR_GET_NAMED_SCALAR_BOOLEAN, _("%s: Unable to get argument \"%s\""), "getNamedScalarBoolean", _pstName); printError(&sciErr, 0); return sciErr.iErr; } if(isNamedScalar(_pvCtx, _pstName) == 0) { addErrorMessage(&sciErr, API_ERROR_GET_NAMED_SCALAR_BOOLEAN, _("%s: Wrong type for input argument \"%s\": A scalar expected.\n"), "getNamedScalarBoolean", _pstName); printError(&sciErr, 0); return sciErr.iErr; } if(_piBool != NULL) { *_piBool = iBool; } return 0; }
/*! public native boolean GetElement(int indr, int indc); */ JNIEXPORT jboolean JNICALL Java_javasci_SciBooleanArray_GetElement(JNIEnv *env , jobject obj_this,jint indrarg, jint indcarg) { SciErr sciErr; jboolean Value = JNI_FALSE; int *CX = NULL; jclass class_Mine = (*env)->GetObjectClass(env, obj_this); jfieldID id_name = (*env)->GetFieldID(env, class_Mine, "name","Ljava/lang/String;"); jfieldID id_m = (*env)->GetFieldID(env, class_Mine, "m", "I"); jfieldID id_n = (*env)->GetFieldID(env, class_Mine, "n", "I"); jstring jname = (jstring) (*env)->GetObjectField(env, obj_this, id_name); jint jm = (*env)->GetIntField(env, obj_this, id_m); jint jn = (*env)->GetIntField(env, obj_this, id_n); const char *cname = (*env)->GetStringUTFChars(env, jname, NULL); jfieldID id_x; jbooleanArray jx; jboolean *cx = NULL; int dimension[2]; int i = 0; int cm = 0, cn = 0; sciErr = getNamedVarDimension(pvApiCtx, (char*)cname, &dimension[0], &dimension[1]); if(sciErr.iErr) { fprintf(stderr,"%s", getErrorMessage(sciErr)); (*env)->ReleaseStringUTFChars(env, jname , cname); fprintf(stderr,"Error in Java_javasci_SciBooleanArray_GetElement (1).\n"); return Value; } if (dimension[0] != jm) { fprintf(stderr,"Error in Java_javasci_SciBooleanArray_GetElement (2).\n"); (*env)->ReleaseStringUTFChars(env, jname , cname); return Value; } if (dimension[1] != jn) { fprintf(stderr,"Error in Java_javasci_SciBooleanArray_GetElement (3).\n"); (*env)->ReleaseStringUTFChars(env, jname , cname); return Value; } id_x = (*env)->GetFieldID(env, class_Mine, "x", "[Z"); jx = (*env)->GetObjectField(env, obj_this, id_x); cx = (*env)->GetBooleanArrayElements(env, jx, NULL); CX = (int*) MALLOC(sizeof(int)*(jm * jn)); if (CX == NULL) { fprintf(stderr,"Error in Java_javasci_SciBooleanArray_GetElement (4).\n"); (*env)->ReleaseBooleanArrayElements(env, jx, cx, 0); return 1; } sciErr = readNamedMatrixOfBoolean(pvApiCtx, (char*)cname, &cm, &cn, CX); if(sciErr.iErr) { fprintf(stderr,"%s", getErrorMessage(sciErr)); fprintf(stderr,"Error in Java_javasci_SciBooleanArray_GetElement (5).\n"); (*env)->ReleaseBooleanArrayElements(env, jx, cx, 0); return 1; } for(i = 0; i < cm*cn; i++) { cx[i] = (jboolean)CX[i]; } FREE(CX); CX = NULL; if ( (indrarg <= 0) || (indcarg <= 0) ) { (*env)->ReleaseBooleanArrayElements(env, jx, cx, 0); (*env)->ReleaseStringUTFChars(env, jname , cname); fprintf(stderr,"Error with int indr & int indc must be >0.\n"); return Value; } if ( (indrarg > jm) || (indcarg > jn) ) { (*env)->ReleaseBooleanArrayElements(env, jx, cx, 0); (*env)->ReleaseStringUTFChars(env, jname , cname); fprintf(stderr,"Error with int indr & int indc.\n"); return Value; } Value = (jboolean)cx[(indcarg - 1) * cm + (indrarg - 1)]; (*env)->ReleaseBooleanArrayElements(env, jx, cx, 0); (*env)->ReleaseStringUTFChars(env, jname , cname); return Value; }