| 3015 | // called by a java program to format the source code |
| 3016 | // the function name is constructed from method names in the calling java program |
| 3017 | extern "C" EXPORT |
| 3018 | jstring STDCALL Java_AStyleInterface_AStyleMain(JNIEnv* env, |
| 3019 | jobject obj, |
| 3020 | jstring textInJava, |
| 3021 | jstring optionsJava) |
| 3022 | { |
| 3023 | g_env = env; // make object available globally |
| 3024 | g_obj = obj; // make object available globally |
| 3025 | |
| 3026 | jstring textErr = env->NewStringUTF(""); // zero length text returned if an error occurs |
| 3027 | |
| 3028 | // get the method ID |
| 3029 | jclass cls = env->GetObjectClass(obj); |
| 3030 | g_mid = env->GetMethodID(cls, "ErrorHandler","(ILjava/lang/String;)V"); |
| 3031 | if (g_mid == 0) |
| 3032 | { |
| 3033 | cout << "Cannot find java method ErrorHandler" << endl; |
| 3034 | return textErr; |
| 3035 | } |
| 3036 | |
| 3037 | // convert jstring to char* |
| 3038 | const char* textIn = env->GetStringUTFChars(textInJava, NULL); |
| 3039 | const char* options = env->GetStringUTFChars(optionsJava, NULL); |
| 3040 | |
| 3041 | // call the C++ formatting function |
| 3042 | char* textOut = AStyleMain(textIn, options, javaErrorHandler, javaMemoryAlloc); |
| 3043 | // if an error message occurred it was displayed by errorHandler |
| 3044 | if (textOut == NULL) |
| 3045 | return textErr; |
| 3046 | |
| 3047 | // release memory |
| 3048 | jstring textOutJava = env->NewStringUTF(textOut); |
| 3049 | delete [] textOut; |
| 3050 | env->ReleaseStringUTFChars(textInJava, textIn); |
| 3051 | env->ReleaseStringUTFChars(optionsJava, options); |
| 3052 | |
| 3053 | return textOutJava; |
| 3054 | } |
| 3055 | |
| 3056 | // Call the Java error handler |
| 3057 | void STDCALL javaErrorHandler(int errorNumber, const char* errorMessage) |
nothing calls this directly
no test coverage detected