Index: jni/Utils.cpp |
=================================================================== |
--- a/jni/Utils.cpp |
+++ b/jni/Utils.cpp |
@@ -15,6 +15,8 @@ |
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
*/ |
+#include <string> |
+ |
#include "Utils.h" |
#include "Debug.h" |
@@ -36,3 +38,54 @@ |
return value; |
} |
+ |
+namespace AdblockPlus |
+{ |
+namespace Android |
+{ |
+ |
+std::string JniJava2StdString(JNIEnv* env, jstring str) |
+{ |
+ if (!str) |
+ { |
+ return std::string(); |
+ } |
+ |
+ const char* cStr = env->GetStringUTFChars(str, 0); |
+ std::string ret(cStr); |
+ env->ReleaseStringUTFChars(str, cStr); |
+ |
+ return ret; |
+} |
+ |
+jobject NewJniArrayList(JNIEnv* env) |
+{ |
+ jclass clazz = env->FindClass("java/util/ArrayList"); |
+ jmethodID ctor = env->GetMethodID(clazz, "<init>", "()V"); |
+ return env->NewObject(clazz, ctor); |
+} |
+ |
+void JniAddObjectToList(JNIEnv* env, jobject list, jobject value) |
+{ |
+ jmethodID add = env->GetMethodID(env->GetObjectClass(list), "add", "(Ljava/lang/Object;)Z"); |
+ env->CallBooleanMethod(list, add, value); |
+} |
+ |
+void JniThrowException(JNIEnv* env, const std::string& message) |
+{ |
+ jclass clazz = env->FindClass(PKG("AdblockPlusException")); |
+ env->ThrowNew(clazz, message.c_str()); |
+} |
+ |
+void JniThrowException(JNIEnv* env, const std::exception& e) |
+{ |
+ JniThrowException(env, e.what()); |
+} |
+ |
+void JniThrowException(JNIEnv* env) |
+{ |
+ JniThrowException(env, "Unknown exception from libAdblockPlus"); |
+} |
+ |
+} // namespace Android |
+} // namespace AdblockPlus |