in src/main/c/h3-java/src/jniapi.c [305:331]
JNIEXPORT jint JNICALL Java_com_uber_h3core_NativeMethods_cellToBoundary(
JNIEnv *env, jobject thiz, jlong h3, jdoubleArray verts) {
CellBoundary boundary;
H3Error err = cellToBoundary(h3, &boundary);
if (err) {
ThrowH3Exception(env, err);
return -1;
}
jsize sz = (**env).GetArrayLength(env, verts);
jdouble *vertsElements = (**env).GetDoubleArrayElements(env, verts, 0);
if (vertsElements != NULL) {
// if sz is too small, we will fail to write all the elements
for (jsize i = 0; i < sz && i < boundary.numVerts * 2; i += 2) {
vertsElements[i] = boundary.verts[i / 2].lat;
vertsElements[i + 1] = boundary.verts[i / 2].lng;
}
(**env).ReleaseDoubleArrayElements(env, verts, vertsElements, 0);
return boundary.numVerts;
} else {
ThrowOutOfMemoryError(env);
return -1;
}
}