Example #1
0
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;

}
Example #2
0
/*--------------------------------------------------------------------------*/
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;

}