xref: /aosp_15_r20/external/clpeak/src/entry_android.cpp (revision 1cd03ba3888297bc945f2c84574e105e3ced3e34)
1 #include <clpeak.h>
2 #include <jni_entry.h>
3 
4 #define PRINT_CALLBACK "print_callback_from_c"
5 
Java_kr_clpeak_jni_1connect_launchClpeak(JNIEnv * _jniEnv,jobject _jObject,jint argc,jobjectArray _argv)6 jint JNICALL Java_kr_clpeak_jni_1connect_launchClpeak(JNIEnv *_jniEnv,
7                                                       jobject _jObject, jint argc, jobjectArray _argv)
8 {
9   char **argv;
10   clPeak clObj;
11 
12   argv = (char **)malloc(sizeof(char *) * argc);
13 
14   // Convert jobjectArray to string array
15   for (int i = 0; i < argc; i++)
16   {
17     jstring strObj = (jstring)_jniEnv->GetObjectArrayElement(_argv, i);
18     argv[i] = (char *)_jniEnv->GetStringUTFChars(strObj, 0);
19   }
20   clObj.parseArgs(argc, argv);
21 
22   if (argv)
23   {
24     free(argv);
25   }
26 
27   clObj.log->jEnv = _jniEnv;
28   clObj.log->jObj = &(_jObject);
29   clObj.log->printCallback = _jniEnv->GetMethodID(_jniEnv->GetObjectClass(_jObject),
30                                                   PRINT_CALLBACK, "(Ljava/lang/String;)V");
31 
32   return clObj.runAll();
33 }
34 
Java_kr_clpeak_MainActivity_setenv(JNIEnv * jniEnv,jobject _jObj,jstring key,jstring value)35 void Java_kr_clpeak_MainActivity_setenv(JNIEnv *jniEnv,
36                                         jobject _jObj, jstring key, jstring value)
37 {
38   setenv((char *)jniEnv->GetStringUTFChars(key, 0),
39          (char *)jniEnv->GetStringUTFChars(value, 0), 1);
40 }
41