New<PrimitiveType>Array Routines - NewFloatArray
ArrayType New<PrimitiveType>Array
(JNIEnv *env, jsize length);
A family of operations used to construct a new primitive array object. Table 4-8 describes the specific primitive array constructors. You should replace New<PrimitiveType>Array with one of the actual primitive array constructor routine names from the following table, and replace ArrayType with the corresponding array type for that routine.(NewFloatArray)
Table 4-8a New<PrimitiveType>Array Family of Array Constructors
LINKAGE:
Indices in the JNIEnv interface function table.
Table 4-8b New<PrimitiveType>Array Family of Array Constructors
New<PrimitiveType>Array Routines
|
Index
|
---|---|
NewBooleanArray() |
175
|
NewByteArray() |
176
|
NewCharArray() |
177
|
NewShortArray() |
178
|
NewIntArray() |
179
|
NewLongArray() |
180
|
NewFloatArray() |
181
|
NewDoubleArray() |
182
|
PARAMETERS of NewFloatArray
env
: the JNI interface pointer.length
: the array length.RETURNS of NewFloatArray
Returns a Java array, or
Example of NewFloatArrayNULL
if the array cannot be constructed.
int tempSize = mParticleSystem->mSizeOfSystem*2;
jfloatArray jArray = env->NewFloatArray(tempSize);
if (jArray != NULL)
{
env->SetFloatArrayRegion(jArray, 0, tempSize, mParticleSystem->mParticlePositions);
}
return jArray;
If it is not float array then use following code, no need to create additional float array:
int tempSize = mParticleSystem->mSizeOfSystem*2;
jfloatArray jArray = env->NewFloatArray(tempSize);
if (jArray != NULL)
{
if (float* ptr = env->GetFloatArrayElements(jArray, NULL))
{
for (int i=0; i<tempSize; i++)
{
ptr[i] = mParticleSystem->mParticlePositions[i];
}
env->ReleaseFloatArrayElements(jArray, ptr, JNI_COMMIT);
}
}
return jArray;