📄 jnicli.cpp
字号:
}
jintArray JNICALL jniGetIntArray(JNIEnv* env, jclass, jlong cursor)
{
return ((JniResultSet*)cursor)->nextIntArray(env);
}
jlongArray JNICALL jniGetLongArray(JNIEnv* env, jclass, jlong cursor)
{
return ((JniResultSet*)cursor)->nextLongArray(env);
}
jfloatArray JNICALL jniGetFloatArray(JNIEnv* env, jclass, jlong cursor)
{
return ((JniResultSet*)cursor)->nextFloatArray(env);
}
jdoubleArray JNICALL jniGetDoubleArray(JNIEnv* env, jclass, jlong cursor)
{
return ((JniResultSet*)cursor)->nextDoubleArray(env);
}
jobjectArray JNICALL jniGetStringArray(JNIEnv* env, jclass, jlong cursor)
{
return ((JniResultSet*)cursor)->nextStringArray(env);
}
jint JNICALL jniGetNumberOfSelectedRecords(JNIEnv* env, jclass, long cursor)
{
return ((JniResultSet*)cursor)->size();
}
void jniCloseCursor(JNIEnv* env, jclass, jlong cursor)
{
delete (JniResultSet*)cursor;
}
jlong JNICALL jniInsert(JNIEnv* env, jclass, jlong db, jlong desc, jlong buf)
{
return (jlong)((JniDatabase*)db)->insert((dbTableDescriptor*)desc, (ObjectBuffer*)buf);
}
void JNICALL jniUpdate(JNIEnv* env, jclass, jlong db, jlong oid, jlong desc, jlong buf)
{
((JniDatabase*)db)->update((oid_t)oid, (dbTableDescriptor*)desc, (ObjectBuffer*)buf);
}
jlong JNICALL jniSelect(JNIEnv* env, jclass, jlong db, jlong desc, jstring condition)
{
char const* query = getStringBody(env, condition);
JniResultSet* rs = ((JniDatabase*)db)->select((dbTableDescriptor*)desc, query);
releaseStringBody(env, condition, query);
return (jlong)rs;
}
jint JNICALL jniDelete(JNIEnv* env, jclass, jlong db, jlong desc, jstring condition)
{
char const* query = getStringBody(env, condition);
int result = ((JniDatabase*)db)->remove((dbTableDescriptor*)desc, query);
releaseStringBody(env, condition, query);
return result;
}
void JNICALL jniCommit(JNIEnv* env, jclass, jlong db)
{
((JniDatabase*)db)->commit();
}
void JNICALL jniRollback(JNIEnv* env, jclass, jlong db)
{
((JniDatabase*)db)->rollback();
}
void JNICALL jniLock(JNIEnv* env, jclass, jlong db)
{
((JniDatabase*)db)->lock();
}
void JNICALL jniAttach(JNIEnv* env, jclass, jlong db)
{
((JniDatabase*)db)->attach();
}
void JNICALL jniDetach(JNIEnv* env, jclass, jlong db, jint flags)
{
((JniDatabase*)db)->detach(flags);
}
void JNICALL jniSetThreadContext(JNIEnv* env, jclass, jlong db, jlong ctx)
{
((JniDatabase*)db)->setThreadContext((dbDatabaseThreadContext*)ctx);
}
jlong JNICALL jniGetThreadContext(JNIEnv* env, jclass, jlong db)
{
return (jlong)((JniDatabase*)db)->getThreadContext();
}
jlong JNICALL jniCreateTableDescriptor(JNIEnv* env, jclass, jlong db, jstring table, jobjectArray fields, jintArray types, jobjectArray referencedTables, jobjectArray inverseFields, jintArray constraintMasks)
{
return (jlong)((JniDatabase*)db)->createTableDescriptor(env, table, fields, types, referencedTables, inverseFields, constraintMasks);
}
static JNINativeMethod fastdbApiMethods[] =
{
{
"jniOpen",
"(ILjava/lang/String;Ljava/lang/String;JI)J",
(void*)&jniOpen
},
{
"jniClose",
"(J)V",
(void*)&jniClose
},
{
"jniNextTable",
"(J)Ljava/lang/String;",
(void*)&jniNextTable
},
{
"jniSetByte",
"(JB)V",
(void*)&jniSetByte
},
{
"jniSetShort",
"(JS)V",
(void*)&jniSetShort
},
{
"jniSetInt",
"(JI)V",
(void*)&jniSetInt
},
{
"jniSetLong",
"(JJ)V",
(void*)&jniSetLong
},
{
"jniSetString",
"(JLjava/lang/String;)V",
(void*)&jniSetString
},
{
"jniSetBoolArray",
"(J[Z)V",
(void*)&jniSetBoolArray
},
{
"jniSetCharArray",
"(J[C)V",
(void*)&jniSetCharArray
},
{
"jniSetByteArray",
"(J[B)V",
(void*)&jniSetByteArray
},
{
"jniSetShortArray",
"(J[S)V",
(void*)&jniSetShortArray
},
{
"jniSetIntArray",
"(J[I)V",
(void*)&jniSetIntArray
},
{
"jniSetLongArray",
"(J[J)V",
(void*)&jniSetLongArray
},
{
"jniSetFloatArray",
"(J[F)V",
(void*)&jniSetFloatArray
},
{
"jniSetDoubleArray",
"(J[D)V",
(void*)&jniSetDoubleArray
},
{
"jniSetStringArray",
"(J[Ljava/lang/String;)V",
(void*)&jniSetStringArray
},
{
"jniCreateBuffer",
"()J",
(void*)&jniCreateBuffer
},
{
"jniCreateTable",
"(JLjava/lang/String;J)J",
(void*)&jniCreateTable
},
{
"jniUpdateTable",
"(JLjava/lang/String;J)J",
(void*)&jniUpdateTable
},
{
"jniNext",
"(J)J",
(void*)&jniNext
},
{
"jniCloseCursor",
"(J)V",
(void*)&jniCloseCursor
},
{
"jniGetByte",
"(J)B",
(void*)&jniGetByte
},
{
"jniGetShort",
"(J)S",
(void*)&jniGetShort
},
{
"jniGetInt",
"(J)I",
(void*)&jniGetInt
},
{
"jniGetLong",
"(J)J",
(void*)&jniGetLong
},
{
"jniGetString",
"(J)Ljava/lang/String;",
(void*)&jniGetString
},
{
"jniGetBoolArray",
"(J)[Z",
(void*)&jniGetBoolArray
},
{
"jniGetCharArray",
"(J)[C",
(void*)&jniGetCharArray
},
{
"jniGetByteArray",
"(J)[B",
(void*)&jniGetByteArray
},
{
"jniGetShortArray",
"(J)[S",
(void*)&jniGetShortArray
},
{
"jniGetIntArray",
"(J)[I",
(void*)&jniGetIntArray
},
{
"jniGetLongArray",
"(J)[J",
(void*)&jniGetLongArray
},
{
"jniGetFloatArray",
"(J)[F",
(void*)&jniGetFloatArray
},
{
"jniGetDoubleArray",
"(J)[D",
(void*)&jniGetDoubleArray
},
{
"jniGetStringArray",
"(J)[Ljava/lang/String;",
(void*)&jniGetStringArray
},
{
"jniInsert",
"(JJJ)J",
(void*)&jniInsert
},
{
"jniUpdate",
"(JJJJ)V",
(void*)&jniUpdate
},
{
"jniSelect",
"(JJLjava/lang/String;)J",
(void*)&jniSelect
},
{
"jniGetNumberOfSelectedRecords",
"(J)I",
(void*)&jniGetNumberOfSelectedRecords
},
{
"jniDelete",
"(JJLjava/lang/String;)I",
(void*)&jniDelete
},
{
"jniCommit",
"(J)V",
(void*)&jniCommit
},
{
"jniRollback",
"(J)V",
(void*)&jniRollback
},
{
"jniLock",
"(J)V",
(void*)&jniLock
},
{
"jniAttach",
"(J)V",
(void*)&jniAttach
},
{
"jniDetach",
"(JI)V",
(void*)&jniDetach
},
{
"jniGetThreadContext",
"(J)J",
(void*)&jniGetThreadContext
},
{
"jniSetThreadContext",
"(JJ)V",
(void*)&jniSetThreadContext
},
{
"jniCreateTableDescriptor",
"(JLjava/lang/String;[Ljava/lang/String;[I[Ljava/lang/String;[Ljava/lang/String;[I)J",
(void*)&jniCreateTableDescriptor
}
};
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *)
{
JNIEnv *env;
vm->GetEnv((void**)&env, JNI_VERSION_1_2);
jclass cls = env->FindClass("jnicli/DatabaseJNI");
if (cls == NULL) {
printf("Class jnicli/DatabaseJNI is not found\n");
} else {
env->RegisterNatives(cls, fastdbApiMethods, itemsof(fastdbApiMethods));
}
return JNI_VERSION_1_2;
}
JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *)
{
JNIEnv *env;
vm->GetEnv((void**)&env, JNI_VERSION_1_2);
jclass cls = env->FindClass("jnicli/DatabaseJNI");
env->UnregisterNatives(cls);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -