Skip to content

Commit 1c6c1aa

Browse files
committed
[JAVA_API] Add as_long() to Tensor
1 parent b34ff38 commit 1c6c1aa

File tree

4 files changed

+32
-0
lines changed

4 files changed

+32
-0
lines changed

modules/java_api/src/main/cpp/openvino_java.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ extern "C"
6666
JNIEXPORT jintArray JNICALL Java_org_intel_openvino_Tensor_GetShape(JNIEnv *, jobject, jlong);
6767
JNIEXPORT jfloatArray JNICALL Java_org_intel_openvino_Tensor_asFloat(JNIEnv *, jobject, jlong);
6868
JNIEXPORT jintArray JNICALL Java_org_intel_openvino_Tensor_asInt(JNIEnv *, jobject, jlong);
69+
JNIEXPORT jlongArray JNICALL Java_org_intel_openvino_Tensor_asLong(JNIEnv *, jobject, jlong);
6970
JNIEXPORT void JNICALL Java_org_intel_openvino_Tensor_delete(JNIEnv *, jobject, jlong);
7071

7172
// ov::PrePostProcessor

modules/java_api/src/main/cpp/tensor.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,29 @@ JNIEXPORT jintArray JNICALL Java_org_intel_openvino_Tensor_asInt(JNIEnv *env, jo
160160
return 0;
161161
}
162162

163+
JNIEXPORT jlongArray JNICALL Java_org_intel_openvino_Tensor_asLong(JNIEnv *env, jobject, jlong addr)
164+
{
165+
JNI_METHOD(
166+
"asLong",
167+
Tensor *ov_tensor = (Tensor *)addr;
168+
169+
size_t size = ov_tensor->get_size();
170+
const long *data = ov_tensor->data<const long>();
171+
172+
jlongArray result = env->NewLongArray(size);
173+
if (!result) {
174+
throw std::runtime_error("Out of memory!");
175+
} jlong *arr = env->GetLongArrayElements(result, nullptr);
176+
177+
for (size_t i = 0; i < size; ++i)
178+
arr[i] = data[i];
179+
180+
env->ReleaseLongArrayElements(result, arr, 0);
181+
return result;
182+
)
183+
return 0;
184+
}
185+
163186
JNIEXPORT void JNICALL Java_org_intel_openvino_Tensor_delete(JNIEnv *, jobject, jlong addr)
164187
{
165188
Tensor *tensor = (Tensor *)addr;

modules/java_api/src/main/java/org/intel/openvino/Tensor.java

+7
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ public int[] as_int() {
6666
return asInt(nativeObj);
6767
}
6868

69+
/** Returns the tensor data as a long array. */
70+
public long[] as_long() {
71+
return asLong(nativeObj);
72+
}
73+
6974
/*----------------------------------- native methods -----------------------------------*/
7075
private static native long TensorCArray(int type, int[] shape, long cArray);
7176

@@ -81,6 +86,8 @@ public int[] as_int() {
8186

8287
private static native int[] asInt(long addr);
8388

89+
private static native long[] asLong(long addr);
90+
8491
private static native int GetSize(long addr);
8592

8693
@Override

modules/java_api/src/test/java/org/intel/openvino/TensorTests.java

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public void testGetTensorFromLong() {
4040
Tensor tensor = new Tensor(dimsArr, inputData);
4141

4242
assertArrayEquals(dimsArr, tensor.get_shape());
43+
assertArrayEquals(inputData, tensor.as_long());
4344
assertEquals(size, tensor.get_size());
4445
}
4546
}

0 commit comments

Comments
 (0)