summaryrefslogtreecommitdiffstats
path: root/android-utils/utils_wrap.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'android-utils/utils_wrap.cxx')
-rwxr-xr-xandroid-utils/utils_wrap.cxx462
1 files changed, 250 insertions, 212 deletions
diff --git a/android-utils/utils_wrap.cxx b/android-utils/utils_wrap.cxx
index dd0f9b1..9a43bda 100755
--- a/android-utils/utils_wrap.cxx
+++ b/android-utils/utils_wrap.cxx
@@ -1,11 +1,11 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
* Version 2.0.4
- *
- * This file is not intended to be easily readable and contains a number of
+ *
+ * This file is not intended to be easily readable and contains a number of
* coding conventions designed to improve portability and efficiency. Do not make
- * changes to this file unless you know what you are doing--modify the SWIG
- * interface file instead.
+ * changes to this file unless you know what you are doing--modify the SWIG
+ * interface file instead.
* ----------------------------------------------------------------------------- */
#define SWIGJAVA
@@ -14,24 +14,43 @@
#ifdef __cplusplus
/* SwigValueWrapper is described in swig.swg */
-template<typename T> class SwigValueWrapper {
- struct SwigMovePointer {
- T *ptr;
- SwigMovePointer(T *p) : ptr(p) { }
- ~SwigMovePointer() { delete ptr; }
- SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
- } pointer;
- SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
- SwigValueWrapper(const SwigValueWrapper<T>& rhs);
+template<typename T> class SwigValueWrapper
+{
+ struct SwigMovePointer {
+ T *ptr;
+ SwigMovePointer(T *p) : ptr(p) { }
+ ~SwigMovePointer() {
+ delete ptr;
+ }
+ SwigMovePointer& operator=(SwigMovePointer& rhs) {
+ T* oldptr = ptr;
+ ptr = 0;
+ delete oldptr;
+ ptr = rhs.ptr;
+ rhs.ptr = 0;
+ return *this;
+ }
+ } pointer;
+ SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
+ SwigValueWrapper(const SwigValueWrapper<T>& rhs);
public:
- SwigValueWrapper() : pointer(0) { }
- SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; }
- operator T&() const { return *pointer.ptr; }
- T *operator&() { return pointer.ptr; }
+ SwigValueWrapper() : pointer(0) { }
+ SwigValueWrapper& operator=(const T& t) {
+ SwigMovePointer tmp(new T(t));
+ pointer = tmp;
+ return *this;
+ }
+ operator T&() const {
+ return *pointer.ptr;
+ }
+ T *operator&() {
+ return pointer.ptr;
+ }
};
-template <typename T> T SwigValueInit() {
- return T();
+template <typename T> T SwigValueInit()
+{
+ return T();
}
#endif
@@ -66,28 +85,28 @@ template <typename T> T SwigValueInit() {
#ifndef SWIGUNUSED
# if defined(__GNUC__)
# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-# define SWIGUNUSED __attribute__ ((__unused__))
+# define SWIGUNUSED __attribute__ ((__unused__))
# else
# define SWIGUNUSED
# endif
# elif defined(__ICC)
-# define SWIGUNUSED __attribute__ ((__unused__))
+# define SWIGUNUSED __attribute__ ((__unused__))
# else
-# define SWIGUNUSED
+# define SWIGUNUSED
# endif
#endif
#ifndef SWIG_MSC_UNSUPPRESS_4505
# if defined(_MSC_VER)
# pragma warning(disable : 4505) /* unreferenced local function has been removed */
-# endif
+# endif
#endif
#ifndef SWIGUNUSEDPARM
# ifdef __cplusplus
# define SWIGUNUSEDPARM(p)
# else
-# define SWIGUNUSEDPARM(p) p SWIGUNUSED
+# define SWIGUNUSEDPARM(p) p SWIGUNUSED
# endif
#endif
@@ -130,7 +149,7 @@ template <typename T> T SwigValueInit() {
# define SWIGSTDCALL __stdcall
# else
# define SWIGSTDCALL
-# endif
+# endif
#endif
/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
@@ -147,7 +166,7 @@ template <typename T> T SwigValueInit() {
/* Fix for jlong on some versions of gcc on Windows */
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
- typedef long long __int64;
+typedef long long __int64;
#endif
/* Fix for jlong on 64-bit x86 Solaris */
@@ -164,46 +183,49 @@ template <typename T> T SwigValueInit() {
/* Support for throwing Java exceptions */
typedef enum {
- SWIG_JavaOutOfMemoryError = 1,
- SWIG_JavaIOException,
- SWIG_JavaRuntimeException,
- SWIG_JavaIndexOutOfBoundsException,
- SWIG_JavaArithmeticException,
- SWIG_JavaIllegalArgumentException,
- SWIG_JavaNullPointerException,
- SWIG_JavaDirectorPureVirtual,
- SWIG_JavaUnknownError
+ SWIG_JavaOutOfMemoryError = 1,
+ SWIG_JavaIOException,
+ SWIG_JavaRuntimeException,
+ SWIG_JavaIndexOutOfBoundsException,
+ SWIG_JavaArithmeticException,
+ SWIG_JavaIllegalArgumentException,
+ SWIG_JavaNullPointerException,
+ SWIG_JavaDirectorPureVirtual,
+ SWIG_JavaUnknownError
} SWIG_JavaExceptionCodes;
typedef struct {
- SWIG_JavaExceptionCodes code;
- const char *java_exception;
+ SWIG_JavaExceptionCodes code;
+ const char *java_exception;
} SWIG_JavaExceptions_t;
-static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg) {
- jclass excep;
- static const SWIG_JavaExceptions_t java_exceptions[] = {
- { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" },
- { SWIG_JavaIOException, "java/io/IOException" },
- { SWIG_JavaRuntimeException, "java/lang/RuntimeException" },
- { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" },
- { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" },
- { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" },
- { SWIG_JavaNullPointerException, "java/lang/NullPointerException" },
- { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" },
- { SWIG_JavaUnknownError, "java/lang/UnknownError" },
- { (SWIG_JavaExceptionCodes)0, "java/lang/UnknownError" }
- };
- const SWIG_JavaExceptions_t *except_ptr = java_exceptions;
-
- while (except_ptr->code != code && except_ptr->code)
- except_ptr++;
-
- jenv->ExceptionClear();
- excep = jenv->FindClass(except_ptr->java_exception);
- if (excep)
- jenv->ThrowNew(excep, msg);
+static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg)
+{
+ jclass excep;
+ static const SWIG_JavaExceptions_t java_exceptions[] = {
+ { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" },
+ { SWIG_JavaIOException, "java/io/IOException" },
+ { SWIG_JavaRuntimeException, "java/lang/RuntimeException" },
+ { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" },
+ { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" },
+ { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" },
+ { SWIG_JavaNullPointerException, "java/lang/NullPointerException" },
+ { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" },
+ { SWIG_JavaUnknownError, "java/lang/UnknownError" },
+ { (SWIG_JavaExceptionCodes)0, "java/lang/UnknownError" }
+ };
+ const SWIG_JavaExceptions_t *except_ptr = java_exceptions;
+
+ while (except_ptr->code != code && except_ptr->code) {
+ except_ptr++;
+ }
+
+ jenv->ExceptionClear();
+ excep = jenv->FindClass(except_ptr->java_exception);
+ if (excep) {
+ jenv->ThrowNew(excep, msg);
+ }
}
@@ -224,127 +246,139 @@ static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionC
#include <iostream>
#endif
-namespace Swig {
- /* Java object wrapper */
- class JObjectWrapper {
- public:
+namespace Swig
+{
+/* Java object wrapper */
+class JObjectWrapper
+{
+public:
JObjectWrapper() : jthis_(NULL), weak_global_(true) {
}
~JObjectWrapper() {
- jthis_ = NULL;
- weak_global_ = true;
+ jthis_ = NULL;
+ weak_global_ = true;
}
bool set(JNIEnv *jenv, jobject jobj, bool mem_own, bool weak_global) {
- if (!jthis_) {
- weak_global_ = weak_global;
- if (jobj)
- jthis_ = ((weak_global_ || !mem_own) ? jenv->NewWeakGlobalRef(jobj) : jenv->NewGlobalRef(jobj));
+ if (!jthis_) {
+ weak_global_ = weak_global;
+ if (jobj) {
+ jthis_ = ((weak_global_ || !mem_own) ? jenv->NewWeakGlobalRef(jobj) : jenv->NewGlobalRef(jobj));
+ }
#if defined(DEBUG_DIRECTOR_OWNED)
- std::cout << "JObjectWrapper::set(" << jobj << ", " << (weak_global ? "weak_global" : "global_ref") << ") -> " << jthis_ << std::endl;
+ std::cout << "JObjectWrapper::set(" << jobj << ", " << (weak_global ? "weak_global" : "global_ref") << ") -> " << jthis_ << std::endl;
#endif
- return true;
- } else {
+ return true;
+ }
+ else {
#if defined(DEBUG_DIRECTOR_OWNED)
- std::cout << "JObjectWrapper::set(" << jobj << ", " << (weak_global ? "weak_global" : "global_ref") << ") -> already set" << std::endl;
+ std::cout << "JObjectWrapper::set(" << jobj << ", " << (weak_global ? "weak_global" : "global_ref") << ") -> already set" << std::endl;
#endif
- return false;
- }
+ return false;
+ }
}
jobject get(JNIEnv *jenv) const {
#if defined(DEBUG_DIRECTOR_OWNED)
- std::cout << "JObjectWrapper::get(";
- if (jthis_)
- std::cout << jthis_;
- else
- std::cout << "null";
- std::cout << ") -> return new local ref" << std::endl;
+ std::cout << "JObjectWrapper::get(";
+ if (jthis_) {
+ std::cout << jthis_;
+ }
+ else {
+ std::cout << "null";
+ }
+ std::cout << ") -> return new local ref" << std::endl;
#endif
- return (jthis_ ? jenv->NewLocalRef(jthis_) : jthis_);
+ return (jthis_ ? jenv->NewLocalRef(jthis_) : jthis_);
}
void release(JNIEnv *jenv) {
#if defined(DEBUG_DIRECTOR_OWNED)
- std::cout << "JObjectWrapper::release(" << jthis_ << "): " << (weak_global_ ? "weak global ref" : "global ref") << std::endl;
+ std::cout << "JObjectWrapper::release(" << jthis_ << "): " << (weak_global_ ? "weak global ref" : "global ref") << std::endl;
#endif
- if (jthis_) {
- if (weak_global_) {
- if (jenv->IsSameObject(jthis_, NULL) == JNI_FALSE)
- jenv->DeleteWeakGlobalRef((jweak)jthis_);
- } else
- jenv->DeleteGlobalRef(jthis_);
- }
-
- jthis_ = NULL;
- weak_global_ = true;
+ if (jthis_) {
+ if (weak_global_) {
+ if (jenv->IsSameObject(jthis_, NULL) == JNI_FALSE) {
+ jenv->DeleteWeakGlobalRef((jweak)jthis_);
+ }
+ }
+ else {
+ jenv->DeleteGlobalRef(jthis_);
+ }
+ }
+
+ jthis_ = NULL;
+ weak_global_ = true;
}
jobject peek() {
- return jthis_;
+ return jthis_;
}
/* Java proxy releases ownership of C++ object, C++ object is now
responsible for destruction (creates NewGlobalRef to pin Java
proxy) */
void java_change_ownership(JNIEnv *jenv, jobject jself, bool take_or_release) {
- if (take_or_release) { /* Java takes ownership of C++ object's lifetime. */
- if (!weak_global_) {
- jenv->DeleteGlobalRef(jthis_);
- jthis_ = jenv->NewWeakGlobalRef(jself);
- weak_global_ = true;
+ if (take_or_release) { /* Java takes ownership of C++ object's lifetime. */
+ if (!weak_global_) {
+ jenv->DeleteGlobalRef(jthis_);
+ jthis_ = jenv->NewWeakGlobalRef(jself);
+ weak_global_ = true;
+ }
}
- } else { /* Java releases ownership of C++ object's lifetime */
- if (weak_global_) {
- jenv->DeleteWeakGlobalRef((jweak)jthis_);
- jthis_ = jenv->NewGlobalRef(jself);
- weak_global_ = false;
+ else { /* Java releases ownership of C++ object's lifetime */
+ if (weak_global_) {
+ jenv->DeleteWeakGlobalRef((jweak)jthis_);
+ jthis_ = jenv->NewGlobalRef(jself);
+ weak_global_ = false;
+ }
}
- }
}
- private:
+private:
/* pointer to Java object */
jobject jthis_;
/* Local or global reference flag */
bool weak_global_;
- };
+};
- /* director base class */
- class Director {
+/* director base class */
+class Director
+{
/* pointer to Java virtual machine */
JavaVM *swig_jvm_;
- protected:
+protected:
#if defined (_MSC_VER) && (_MSC_VER<1300)
class JNIEnvWrapper;
friend class JNIEnvWrapper;
#endif
/* Utility class for managing the JNI environment */
- class JNIEnvWrapper {
- const Director *director_;
- JNIEnv *jenv_;
+ class JNIEnvWrapper
+ {
+ const Director *director_;
+ JNIEnv *jenv_;
public:
- JNIEnvWrapper(const Director *director) : director_(director), jenv_(0) {
+ JNIEnvWrapper(const Director *director) : director_(director), jenv_(0) {
#if defined(SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON)
- // Attach a daemon thread to the JVM. Useful when the JVM should not wait for
- // the thread to exit upon shutdown. Only for jdk-1.4 and later.
- director_->swig_jvm_->AttachCurrentThreadAsDaemon((JNIEnv **) &jenv_, NULL);
+ // Attach a daemon thread to the JVM. Useful when the JVM should not wait for
+ // the thread to exit upon shutdown. Only for jdk-1.4 and later.
+ director_->swig_jvm_->AttachCurrentThreadAsDaemon((JNIEnv **) &jenv_, NULL);
#else
- director_->swig_jvm_->AttachCurrentThread((JNIEnv **) &jenv_, NULL);
+ director_->swig_jvm_->AttachCurrentThread((JNIEnv **) &jenv_, NULL);
#endif
- }
- ~JNIEnvWrapper() {
+ }
+ ~JNIEnvWrapper() {
#if !defined(SWIG_JAVA_NO_DETACH_CURRENT_THREAD)
- // Some JVMs, eg jdk-1.4.2 and lower on Solaris have a bug and crash with the DetachCurrentThread call.
- // However, without this call, the JVM hangs on exit when the thread was not created by the JVM and creates a memory leak.
- director_->swig_jvm_->DetachCurrentThread();
+ // Some JVMs, eg jdk-1.4.2 and lower on Solaris have a bug and crash with the DetachCurrentThread call.
+ // However, without this call, the JVM hangs on exit when the thread was not created by the JVM and creates a memory leak.
+ director_->swig_jvm_->DetachCurrentThread();
#endif
- }
- JNIEnv *getJNIEnv() const {
- return jenv_;
- }
+ }
+ JNIEnv *getJNIEnv() const {
+ return jenv_;
+ }
};
/* Java object wrapper */
@@ -352,48 +386,48 @@ namespace Swig {
/* Disconnect director from Java object */
void swig_disconnect_director_self(const char *disconn_method) {
- JNIEnvWrapper jnienv(this) ;
- JNIEnv *jenv = jnienv.getJNIEnv() ;
- jobject jobj = swig_self_.peek();
+ JNIEnvWrapper jnienv(this) ;
+ JNIEnv *jenv = jnienv.getJNIEnv() ;
+ jobject jobj = swig_self_.peek();
#if defined(DEBUG_DIRECTOR_OWNED)
- std::cout << "Swig::Director::disconnect_director_self(" << jobj << ")" << std::endl;
+ std::cout << "Swig::Director::disconnect_director_self(" << jobj << ")" << std::endl;
#endif
- if (jobj && jenv->IsSameObject(jobj, NULL) == JNI_FALSE) {
- jmethodID disconn_meth = jenv->GetMethodID(jenv->GetObjectClass(jobj), disconn_method, "()V");
- if (disconn_meth) {
+ if (jobj && jenv->IsSameObject(jobj, NULL) == JNI_FALSE) {
+ jmethodID disconn_meth = jenv->GetMethodID(jenv->GetObjectClass(jobj), disconn_method, "()V");
+ if (disconn_meth) {
#if defined(DEBUG_DIRECTOR_OWNED)
- std::cout << "Swig::Director::disconnect_director_self upcall to " << disconn_method << std::endl;
+ std::cout << "Swig::Director::disconnect_director_self upcall to " << disconn_method << std::endl;
#endif
- jenv->CallVoidMethod(jobj, disconn_meth);
+ jenv->CallVoidMethod(jobj, disconn_meth);
+ }
}
- }
}
- public:
+public:
Director(JNIEnv *jenv) : swig_jvm_((JavaVM *) NULL), swig_self_() {
- /* Acquire the Java VM pointer */
- jenv->GetJavaVM(&swig_jvm_);
+ /* Acquire the Java VM pointer */
+ jenv->GetJavaVM(&swig_jvm_);
}
virtual ~Director() {
- JNIEnvWrapper jnienv(this) ;
- JNIEnv *jenv = jnienv.getJNIEnv() ;
- swig_self_.release(jenv);
+ JNIEnvWrapper jnienv(this) ;
+ JNIEnv *jenv = jnienv.getJNIEnv() ;
+ swig_self_.release(jenv);
}
bool swig_set_self(JNIEnv *jenv, jobject jself, bool mem_own, bool weak_global) {
- return swig_self_.set(jenv, jself, mem_own, weak_global);
+ return swig_self_.set(jenv, jself, mem_own, weak_global);
}
jobject swig_get_self(JNIEnv *jenv) const {
- return swig_self_.get(jenv);
+ return swig_self_.get(jenv);
}
// Change C++ object's ownership, relative to Java
void swig_java_change_ownership(JNIEnv *jenv, jobject jself, bool take_or_release) {
- swig_self_.java_change_ownership(jenv, jself, take_or_release);
+ swig_self_.java_change_ownership(jenv, jself, take_or_release);
}
- };
+};
}
#endif /* __cplusplus */
@@ -418,81 +452,85 @@ namespace Swig {
extern "C" {
#endif
-SWIGEXPORT jlong JNICALL Java_org_doubango_utils_utilsJNI_new_1AndroidUtils(JNIEnv *jenv, jclass jcls) {
- jlong jresult = 0 ;
- AndroidUtils *result = 0 ;
-
- (void)jenv;
- (void)jcls;
- result = (AndroidUtils *)new AndroidUtils();
- *(AndroidUtils **)&jresult = result;
- return jresult;
+SWIGEXPORT jlong JNICALL Java_org_doubango_utils_utilsJNI_new_1AndroidUtils(JNIEnv *jenv, jclass jcls)
+{
+ jlong jresult = 0 ;
+ AndroidUtils *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ result = (AndroidUtils *)new AndroidUtils();
+ *(AndroidUtils **)&jresult = result;
+ return jresult;
}
-SWIGEXPORT void JNICALL Java_org_doubango_utils_utilsJNI_delete_1AndroidUtils(JNIEnv *jenv, jclass jcls, jlong jarg1) {
- AndroidUtils *arg1 = (AndroidUtils *) 0 ;
-
- (void)jenv;
- (void)jcls;
- arg1 = *(AndroidUtils **)&jarg1;
- delete arg1;
+SWIGEXPORT void JNICALL Java_org_doubango_utils_utilsJNI_delete_1AndroidUtils(JNIEnv *jenv, jclass jcls, jlong jarg1)
+{
+ AndroidUtils *arg1 = (AndroidUtils *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(AndroidUtils **)&jarg1;
+ delete arg1;
}
-SWIGEXPORT jobject JNICALL Java_org_doubango_utils_utilsJNI_AndroidUtils_1getCpuFamily(JNIEnv *jenv, jclass jcls) {
- jobject jresult = 0 ;
- uint64_t result;
-
- (void)jenv;
- (void)jcls;
- result = (uint64_t)AndroidUtils::getCpuFamily();
- {
- jbyteArray ba = jenv->NewByteArray(9);
- jbyte* bae = jenv->GetByteArrayElements(ba, 0);
- jclass clazz = jenv->FindClass("java/math/BigInteger");
- jmethodID mid = jenv->GetMethodID(clazz, "<init>", "([B)V");
- jobject bigint;
- int i;
-
- bae[0] = 0;
- for(i=1; i<9; i++ ) {
- bae[i] = (jbyte)(result>>8*(8-i));
+SWIGEXPORT jobject JNICALL Java_org_doubango_utils_utilsJNI_AndroidUtils_1getCpuFamily(JNIEnv *jenv, jclass jcls)
+{
+ jobject jresult = 0 ;
+ uint64_t result;
+
+ (void)jenv;
+ (void)jcls;
+ result = (uint64_t)AndroidUtils::getCpuFamily();
+ {
+ jbyteArray ba = jenv->NewByteArray(9);
+ jbyte* bae = jenv->GetByteArrayElements(ba, 0);
+ jclass clazz = jenv->FindClass("java/math/BigInteger");
+ jmethodID mid = jenv->GetMethodID(clazz, "<init>", "([B)V");
+ jobject bigint;
+ int i;
+
+ bae[0] = 0;
+ for(i=1; i<9; i++ ) {
+ bae[i] = (jbyte)(result>>8*(8-i));
+ }
+
+ jenv->ReleaseByteArrayElements(ba, bae, 0);
+ bigint = jenv->NewObject(clazz, mid, ba);
+ jresult = bigint;
}
-
- jenv->ReleaseByteArrayElements(ba, bae, 0);
- bigint = jenv->NewObject(clazz, mid, ba);
- jresult = bigint;
- }
- return jresult;
+ return jresult;
}
-SWIGEXPORT jobject JNICALL Java_org_doubango_utils_utilsJNI_AndroidUtils_1getCpuFeatures(JNIEnv *jenv, jclass jcls) {
- jobject jresult = 0 ;
- uint64_t result;
-
- (void)jenv;
- (void)jcls;
- result = (uint64_t)AndroidUtils::getCpuFeatures();
- {
- jbyteArray ba = jenv->NewByteArray(9);
- jbyte* bae = jenv->GetByteArrayElements(ba, 0);
- jclass clazz = jenv->FindClass("java/math/BigInteger");
- jmethodID mid = jenv->GetMethodID(clazz, "<init>", "([B)V");
- jobject bigint;
- int i;
-
- bae[0] = 0;
- for(i=1; i<9; i++ ) {
- bae[i] = (jbyte)(result>>8*(8-i));
+SWIGEXPORT jobject JNICALL Java_org_doubango_utils_utilsJNI_AndroidUtils_1getCpuFeatures(JNIEnv *jenv, jclass jcls)
+{
+ jobject jresult = 0 ;
+ uint64_t result;
+
+ (void)jenv;
+ (void)jcls;
+ result = (uint64_t)AndroidUtils::getCpuFeatures();
+ {
+ jbyteArray ba = jenv->NewByteArray(9);
+ jbyte* bae = jenv->GetByteArrayElements(ba, 0);
+ jclass clazz = jenv->FindClass("java/math/BigInteger");
+ jmethodID mid = jenv->GetMethodID(clazz, "<init>", "([B)V");
+ jobject bigint;
+ int i;
+
+ bae[0] = 0;
+ for(i=1; i<9; i++ ) {
+ bae[i] = (jbyte)(result>>8*(8-i));
+ }
+
+ jenv->ReleaseByteArrayElements(ba, bae, 0);
+ bigint = jenv->NewObject(clazz, mid, ba);
+ jresult = bigint;
}
-
- jenv->ReleaseByteArrayElements(ba, bae, 0);
- bigint = jenv->NewObject(clazz, mid, ba);
- jresult = bigint;
- }
- return jresult;
+ return jresult;
}
OpenPOWER on IntegriCloud