amzijni.cpp
来自「prolog开发工具」· C++ 代码 · 共 1,850 行 · 第 1/3 页
CPP
1,850 行
*/
JNIEXPORT jint JNICALL Java_amzi_ls_LogicServer_GetParmType
(JNIEnv * jenv, jobject jobj, jint iarg)
{
pTYPE type;
GET_EID(e);
type = lsGetParmType(e, (int)iarg);
if (type < 0)
amzi_error(jenv, e, "GetTermType");
return (jint)type;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetParm
* Signature: (I)J
*/
JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_GetParm
(JNIEnv * jenv, jobject jobj, jint iarg)
{
TERM t;
RC rc;
GET_EID(e);
rc = lsGetParm(e, (int)iarg, cTERM, &t);
if (rc != OK)
amzi_error(jenv, e, "GetParm");
return (jlong)t;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetStrParm
* Signature: (I)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_amzi_ls_LogicServer_GetStrParm
(JNIEnv * jenv, jobject jobj, jint iarg)
{
RC rc;
aCHAR* str;
GET_EID(e);
int len = lsStrParmLen(e, (int)iarg);
str = new aCHAR[len+1];
rc = lsGetParm(e, (int)iarg, cWSTR, str);
jCHAR *jcstr = new jCHAR[len+1];
ac_to_jc(jcstr, str, len);
jstring jstr = jenv->NewString(jcstr, len);
delete[] str;
delete[] jcstr;
if (rc != OK)
amzi_error(jenv, e, "GetStrParm");
return jstr;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetIntParm
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_amzi_ls_LogicServer_GetIntParm
(JNIEnv * jenv, jobject jobj, jint iarg)
{
RC rc;
int i;
GET_EID(e);
rc = lsGetParm(e, (int)iarg, cINT, &i);
if (rc != OK)
amzi_error(jenv, e, "GetIntParm");
return (jint)i;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetFloatParm
* Signature: (I)D
*/
JNIEXPORT jdouble JNICALL Java_amzi_ls_LogicServer_GetFloatParm
(JNIEnv * jenv, jobject jobj, jint iarg)
{
RC rc;
double d;
GET_EID(e);
rc = lsGetParm(e, (int)iarg, cDOUBLE, &d);
if (rc != OK)
amzi_error(jenv, e, "GetFloatParm");
return (jdouble)d;
}
/*
* Class: amzi_ls_LogicServer
* Method: UnifyParm
* Signature: (IJ)Z
*/
JNIEXPORT jboolean JNICALL Java_amzi_ls_LogicServer_UnifyParm
(JNIEnv * jenv, jobject jobj, jint iarg, jlong term)
{
TF tf;
GET_EID(e);
tf = lsUnifyParm(e, (int)iarg, cTERM, &term);
switch(tf)
{
case TRUE:
case FALSE:
return (jboolean)tf;
default: amzi_error(jenv, e, "UnifyParm"); return 0;
}
}
/*
* Class: amzi_ls_LogicServer
* Method: UnifyStrParm
* Signature: (ILjava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_amzi_ls_LogicServer_UnifyStrParm
(JNIEnv * jenv, jobject jobj, jint iarg, jstring jstr)
{
TF tf;
aCHAR* str;
GET_EID(e);
str = JtoC(jenv, jstr);
tf = lsUnifyParm(e, (int)iarg, cWSTR, str);
delete[] str;
switch(tf)
{
case TRUE:
case FALSE:
return (jboolean)tf;
default: amzi_error(jenv, e, "UnifyStrParm"); return 0;
}
}
/*
* Class: amzi_ls_LogicServer
* Method: UnifyIntParm
* Signature: (II)Z
*/
JNIEXPORT jboolean JNICALL Java_amzi_ls_LogicServer_UnifyIntParm
(JNIEnv * jenv, jobject jobj, jint iarg, jint ji)
{
TF tf;
GET_EID(e);
tf = lsUnifyParm(e, (int)iarg, cINT, &ji);
switch(tf)
{
case TRUE:
case FALSE:
return (jboolean)tf;
default: amzi_error(jenv, e, "UnifyIntParm"); return 0;
}
}
/*
* Class: amzi_ls_LogicServer
* Method: UnifyFloatParm
* Signature: (ID)Z
*/
JNIEXPORT jboolean JNICALL Java_amzi_ls_LogicServer_UnifyFloatParm
(JNIEnv * jenv, jobject jobj, jint iarg, jdouble jd)
{
TF tf;
GET_EID(e);
tf = lsUnifyParm(e, (int)iarg, cDOUBLE, &jd);
switch(tf)
{
case TRUE:
case FALSE:
return (jboolean)tf;
default: amzi_error(jenv, e, "UnifyFloatParm"); return 0;
}
}
/*
* Class: amzi_ls_LogicServer
* Method: GetFunctor
* Signature: (J)Ljava/lang/String;
*/
extern "C" JNIEXPORT jstring JNICALL Java_amzi_ls_LogicServer_GetFunctor
(JNIEnv * jenv, jobject jobj, jlong jt)
{
RC rc;
aCHAR str[1024];
jCHAR jcstr[1024];
ARITY a;
GET_EID(e);
rc = lsGetFA(e, (TERM)jt, str, &a);
if (rc != OK)
amzi_error(jenv, e, "GetFunctor");
int len = wcslen(str);
ac_to_jc(jcstr, str, len+1);
jstring jstr = jenv->NewString(jcstr, len);
return jstr;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetArity
* Signature: (J)S
*/
extern "C" JNIEXPORT jint JNICALL Java_amzi_ls_LogicServer_GetArity
(JNIEnv * jenv, jobject jobj, jlong jt)
{
RC rc;
aCHAR str[1024];
ARITY a;
GET_EID(e);
rc = lsGetFA(e, (TERM)jt, str, &a);
if (rc != OK)
amzi_error(jenv, e, "GetArity");
return (jint)a;
}
/*
* Class: amzi_ls_LogicServer
* Method: MakeFA
* Signature: (Ljava/lang/String;I)J
*/
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_MakeFA
(JNIEnv * jenv, jobject jobj, jstring jstr, jint ja)
{
RC rc;
TERM t;
aCHAR* str;
GET_EID(e);
str = JtoC(jenv, jstr);
rc = lsMakeFA(e, &t, str, (ARITY)ja);
delete[] str;
if (rc != OK)
amzi_error(jenv, e, "MakeFA");
return (jlong)t;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetArg
* Signature: (JI)J
*/
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_GetArg
(JNIEnv * jenv, jobject jobj, jlong jt, jint ji)
{
RC rc;
TERM t;
GET_EID(e);
rc = lsGetArg(e, (TERM)jt, (int)ji, cTERM, &t);
if (rc != OK)
amzi_error(jenv, e, "GetArg");
return (jlong)t;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetStrArg
* Signature: (JI)Ljava/lang/String;
*/
extern "C" JNIEXPORT jstring JNICALL Java_amzi_ls_LogicServer_GetStrArg
(JNIEnv * jenv, jobject jobj, jlong t, jint iarg)
{
RC rc;
GET_EID(e);
int len = lsStrArgLen(e, (TERM)t, (int)iarg);
aCHAR* str = new aCHAR[len+1];
rc = lsGetArg(e, (TERM)t, (int)iarg, cWSTR, str);
jCHAR* jcstr = new jCHAR[len+1];
ac_to_jc(jcstr, str, len);
jstring jstr = jenv->NewString(jcstr, len);
delete[] str;
delete[] jcstr;
if (rc != OK)
amzi_error(jenv, e, "GetStrArg");
return jstr;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetIntArg
* Signature: (JI)I
*/
extern "C" JNIEXPORT jint JNICALL Java_amzi_ls_LogicServer_GetIntArg
(JNIEnv * jenv, jobject jobj, jlong jt, jint ji)
{
RC rc;
int i;
GET_EID(e);
rc = lsGetArg(e, (TERM)jt, (int)ji, cINT, &i);
if (rc != OK)
amzi_error(jenv, e, "GetIntArg");
return (jint)i;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetFloatArg
* Signature: (JI)D
*/
extern "C" JNIEXPORT jdouble JNICALL Java_amzi_ls_LogicServer_GetFloatArg
(JNIEnv * jenv, jobject jobj, jlong jt, jint ji)
{
RC rc;
double d;
GET_EID(e);
rc = lsGetArg(e, (TERM)jt, (int)ji, cDOUBLE, &d);
if (rc != OK)
amzi_error(jenv, e, "GetFloatArg");
return (jdouble)d;
}
/*
* Class: amzi_ls_LogicServer
* Method: UnifyStrArg
* Signature: (JILjava/lang/String;)J
*/
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_UnifyStrArg
(JNIEnv * jenv, jobject jobj, jlong jt, jint ji, jstring jstr)
{
TF tf;
TERM t;
aCHAR* str;
GET_EID(e);
t = (TERM)jt;
str = JtoC(jenv, jstr);
tf = lsUnifyArg(e, &t, (int)ji, cWSTR, str);
delete[] str;
switch(tf)
{
case TRUE: return (jlong)t;
case FALSE: return 0;
default: amzi_error(jenv, e, "UnifyStrArg"); return 0;
}
}
/*
* Class: amzi_ls_LogicServer
* Method: UnifyIntArg
* Signature: (JII)J
*/
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_UnifyIntArg
(JNIEnv * jenv, jobject jobj, jlong jt, jint jarg, jint ji)
{
TF tf;
TERM t;
int i;
GET_EID(e);
t = (TERM)jt;
i = (int)ji;
tf = lsUnifyArg(e, &t, (int)jarg, cINT, &i);
switch(tf)
{
case TRUE: return (jlong)t;
case FALSE: return 0;
default: amzi_error(jenv, e, "UnifyIntArg"); return 0;
}
}
/*
* Class: amzi_ls_LogicServer
* Method: UnifyFloatArg
* Signature: (JID)J
*/
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_UnifyFloatArg
(JNIEnv * jenv, jobject jobj, jlong jt, jint jarg, jdouble jd)
{
TF tf;
TERM t;
double d;
GET_EID(e);
t = (TERM)jt;
d = (double)jd;
tf = lsUnifyArg(e, &t, (int)jarg, cDOUBLE, &d);
switch(tf)
{
case TRUE: return (jlong)t;
case FALSE: return 0;
default: amzi_error(jenv, e, "UnifyFloatArg"); return 0;
}
}
/*
* Class: amzi_ls_LogicServer
* Method: GetArgType
* Signature: (JI)S
*/
extern "C" JNIEXPORT jint JNICALL Java_amzi_ls_LogicServer_GetArgType
(JNIEnv * jenv, jobject jobj, jlong jt, jint ji)
{
pTYPE type;
GET_EID(e);
type = lsGetArgType(e, (TERM)jt, (int)ji);
return (jint)type;
}
/*
* Class: amzi_ls_LogicServer
* Method: StrArgLen
* Signature: (JI)I
*/
extern "C" JNIEXPORT jint JNICALL Java_amzi_ls_LogicServer_StrArgLen
(JNIEnv * jenv, jobject jobj, jlong jt, jint ji)
{
int len;
GET_EID(e);
len = lsStrArgLen(e, (TERM)jt, (int)ji);
return (jint)len;
}
/*
* Class: amzi_ls_LogicServer
* Method: MakeList
* Signature: ()J
*/
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_MakeList
(JNIEnv * jenv, jobject jobj)
{
RC rc;
TERM t;
GET_EID(e);
rc = lsMakeList(e, &t);
if (rc != OK)
amzi_error(jenv, e, "MakeList");
return (jlong)t;
}
/*
* Class: amzi_ls_LogicServer
* Method: PushList
* Signature: (JJ)J
*/
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_PushList
(JNIEnv * jenv, jobject jobj, jlong jt, jlong jlt)
{
RC rc;
TERM t;
GET_EID(e);
t = (TERM)jt;
rc = lsPushList(e, &t, (TERM)jlt);
if (rc != OK)
amzi_error(jenv, e, "PushList");
return (jlong)t;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetHead
* Signature: (J)J
*/
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_GetHead
(JNIEnv * jenv, jobject jobj, jlong jt)
{
RC rc;
TERM t;
GET_EID(e);
rc = lsGetHead(e, (TERM)jt, cTERM, &t);
if (rc != OK)
amzi_error(jenv, e, "GetHead");
return (jlong)t;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetStrHead
* Signature: (J)Ljava/lang/String;
*/
extern "C" JNIEXPORT jstring JNICALL Java_amzi_ls_LogicServer_GetStrHead
(JNIEnv * jenv, jobject jobj, jlong jt)
{
RC rc;
aCHAR* str;
jCHAR* jcstr;
TERM t;
GET_EID(e);
rc = lsGetHead(e, (TERM)jt, cTERM, &t);
if (rc != OK)
amzi_error(jenv, e, "GetStrHead");
int len = lsStrTermLen(e, t);
str = new aCHAR[len+1];
rc = lsGetTerm(e, t, cWSTR, str);
jcstr = new jCHAR[len+1];
ac_to_jc(jcstr, str, len);
jstring jstr = jenv->NewString(jcstr, len);
delete[] str;
delete[] jcstr;
if (rc != OK)
amzi_error(jenv, e, "GetStrHead");
return jstr;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetIntHead
* Signature: (I)S
*/
extern "C" JNIEXPORT jint JNICALL Java_amzi_ls_LogicServer_GetIntHead
(JNIEnv * jenv, jobject jobj, jlong jt)
{
RC rc;
int i;
GET_EID(e);
rc = lsGetHead(e, (TERM)jt, cINT, &i);
if (rc != OK)
amzi_error(jenv, e, "GetIntHead");
return (jint)i;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetFloatHead
* Signature: (J)D
*/
extern "C" JNIEXPORT jdouble JNICALL Java_amzi_ls_LogicServer_GetFloatHead
(JNIEnv * jenv, jobject jobj, jlong jt)
{
RC rc;
double d;
GET_EID(e);
rc = lsGetHead(e, (TERM)jt, cDOUBLE, &d);
if (rc != OK)
amzi_error(jenv, e, "GetFloatHead");
return (jdouble)d;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetTail
* Signature: (J)J
*/
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_GetTail
(JNIEnv * jenv, jobject jobj, jlong jt)
{
TERM t;
GET_EID(e);
t = lsGetTail(e, (TERM)jt);
return (jlong)t;
}
/*
* Class: amzi_ls_LogicServer
* Method: GetVersion
* Signature: ()Ljava/lang/String;
*/
extern "C" JNIEXPORT jstring JNICALL Java_amzi_ls_LogicServer_GetVersion
(JNIEnv * jenv, jobject jobj)
{
RC rc;
aCHAR str[1024];
jCHAR jcstr[1024];
GET_EID(e);
rc = lsGetVersion(e, str);
if (rc != OK)
amzi_error(jenv, e, "GetVersion");
int len = wcslen(str);
ac_to_jc(jcstr, str, len+1);
jstring jstr = jenv->NewString(jcstr, len);
return jstr;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?