bool AbstractToJObject (value inValue, jobject &outObject) { JNIObject *jniobj = 0; if (AbstractToObject (inValue, jniobj)) { outObject = jniobj->GetJObject (); return true; } static int id__jobject = -1; if (id__jobject < 0) { id__jobject = val_id ("__jobject"); } value jobj = val_field (inValue, id__jobject); if (val_is_null (jobj)) { return false; } return AbstractToJObject (jobj, outObject); }
bool AbstractToJObject(value inValue, jobject &outObject) { HaxeJavaLink *link = 0; if (AbstractToObject(inValue,link)) { outObject = link->GetJObject(); return true; } JNIObject *jniobj = 0; if (AbstractToObject(inValue,jniobj)) { outObject = jniobj->GetJObject(); return true; } static int id__jobject = -1; if (id__jobject<0) id__jobject = val_id("__jobject"); value jobj = val_field(inValue,id__jobject); if (val_is_null(jobj)) return false; return AbstractToJObject(jobj,outObject); }
static jbyteArray android_net_wifi_readKernelLog(JNIEnv *env, jclass cls) { JNIHelper helper(env); ALOGV("Reading kernel logs"); int size = klogctl(/* SYSLOG_ACTION_SIZE_BUFFER */ 10, 0, 0); if (size < 1) { ALOGD("no kernel logs"); return helper.newByteArray(0).detach(); } char *buf = (char *)malloc(size); if (buf == NULL) { ALOGD("can't allocate temporary storage"); return helper.newByteArray(0).detach(); } int read = klogctl(/* SYSLOG_ACTION_READ_ALL */ 3, buf, size); if (read < 0) { ALOGD("can't read logs - %d", read); free(buf); return helper.newByteArray(0).detach(); } else { ALOGV("read %d bytes", read); } if (read != size) { ALOGV("read %d bytes, expecting %d", read, size); } JNIObject<jbyteArray> result = helper.newByteArray(read); if (result.isNull()) { ALOGD("can't allocate array"); free(buf); return result.detach(); } helper.setByteArrayRegion(result, 0, read, (jbyte*)buf); free(buf); return result.detach(); }