Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/java/generator/src/cpp/listconverters.cpp
16354 views
1
// This file is part of OpenCV project.
2
// It is subject to the license terms in the LICENSE file found in the top-level directory
3
// of this distribution and at http://opencv.org/license.html
4
5
// Author: abratchik
6
7
#define LOG_TAG "org.opencv.utils.Converters"
8
#include "common.h"
9
10
11
jobject vector_String_to_List(JNIEnv* env, std::vector<cv::String>& vs) {
12
13
static jclass juArrayList = ARRAYLIST(env);
14
static jmethodID m_create = CONSTRUCTOR(env, juArrayList);
15
jmethodID m_add = LIST_ADD(env, juArrayList);
16
17
jobject result = env->NewObject(juArrayList, m_create, vs.size());
18
for (std::vector<cv::String>::iterator it = vs.begin(); it != vs.end(); ++it) {
19
jstring element = env->NewStringUTF((*it).c_str());
20
env->CallBooleanMethod(result, m_add, element);
21
env->DeleteLocalRef(element);
22
}
23
return result;
24
}
25
26
std::vector<cv::String> List_to_vector_String(JNIEnv* env, jobject list)
27
{
28
static jclass juArrayList = ARRAYLIST(env);
29
jmethodID m_size = LIST_SIZE(env,juArrayList);
30
jmethodID m_get = LIST_GET(env, juArrayList);
31
32
jint len = env->CallIntMethod(list, m_size);
33
std::vector<cv::String> result;
34
result.reserve(len);
35
for (jint i=0; i<len; i++)
36
{
37
jstring element = static_cast<jstring>(env->CallObjectMethod(list, m_get, i));
38
const char* pchars = env->GetStringUTFChars(element, NULL);
39
result.push_back(pchars);
40
env->ReleaseStringUTFChars(element, pchars);
41
env->DeleteLocalRef(element);
42
}
43
return result;
44
}
45
46
void Copy_vector_String_to_List(JNIEnv* env, std::vector<cv::String>& vs, jobject list)
47
{
48
static jclass juArrayList = ARRAYLIST(env);
49
jmethodID m_clear = LIST_CLEAR(env, juArrayList);
50
jmethodID m_add = LIST_ADD(env, juArrayList);
51
52
env->CallVoidMethod(list, m_clear);
53
for (std::vector<cv::String>::iterator it = vs.begin(); it != vs.end(); ++it)
54
{
55
jstring element = env->NewStringUTF((*it).c_str());
56
env->CallBooleanMethod(list, m_add, element);
57
env->DeleteLocalRef(element);
58
}
59
}
60
61