amzijni.cpp

来自「prolog开发工具」· C++ 代码 · 共 1,850 行 · 第 1/3 页

CPP
1,850
字号
   TF  tf;

   GET_EID(e);
   tf = lsMain(e);
   if (tf != TRUE && tf != FALSE)
      amzi_error(jenv, e, "Main");

   return (jboolean)tf;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    Reset
 * Signature: ()V
 */
extern "C" JNIEXPORT void JNICALL Java_amzi_ls_LogicServer_Reset
  (JNIEnv * jenv, jobject jobj)
{
   RC  rc;

   GET_EID(e);
   rc = lsReset(e);
   if (rc != OK)
      amzi_error(jenv, e, "Reset");

   return;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    JClose
 * Signature: (Ljava/lang/Object;)V
 */
JNIEXPORT void JNICALL Java_amzi_ls_LogicServer_JClose
  (JNIEnv * jenv, jobject jobj, jlong lseng)
{
   RC    rc;

   GET_EID(e);

   JExtPred *e1 = EpList;
   JExtPred *e2;
   JExtPred *e0 = NULL;

   while(e1)
   {
      e2 = e1->pnext;
      if (e1->lseng == lseng)
      {
         if (e0)
            e0->pnext = e2;
         if (EpList == e1)
            EpList = e2;
         delete e1;
      }
      else
      {
         e0 = e1;
      }
      e1 = e2;
   }
   
   rc = lsClose(e);
   if (rc != OK)
      amzi_error(jenv, e, "Close");

   return;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    Close
 * Signature: ()V
 */
/*
extern "C" JNIEXPORT void JNICALL Java_amzi_ls_LogicServer_Close
  (JNIEnv * jenv, jobject jobj)
{
   RC    rc;

   GET_EID(e);
   
   rc = lsClose(e);
   if (rc != OK)
      amzi_error(jenv, e, "Close");

   return;
}
*/

/*
 * Class:     amzi_ls_LogicServer
 * Method:    Exec
 * Signature: (J)J
 */
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_Exec
  (JNIEnv * jenv, jobject jobj, jlong jterm)
{
   TF   tf;
   TERM t;

   jenv_current = jenv;

   GET_EID(e);
   t = (TERM)jterm;
   tf = lsExec(e, &t);
   switch(tf)
   {
   case TRUE: return (jlong)t;
   case FALSE: return 0;
   default: amzi_error(jenv, e, "Exec"); return 0;
   }
}

  
/*
 * Class:     amzi_ls_LogicServer
 * Method:    ExecStr
 * Signature: (Ljava/lang/String;)J
 */
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_ExecStr
  (JNIEnv * jenv, jobject jobj, jstring jstr)
{
   TF     tf;
   TERM   t;
   aCHAR* query;

   jenv_current = jenv;

   GET_EID(e);
   query = JtoC(jenv, jstr);
   tf = lsExecStr(e, &t, query);
   delete[] query;

   switch(tf)
   {
   case TRUE: return (jlong)t;
   case FALSE: return 0;
   default: amzi_error(jenv, e, "ExecStr"); return 0;
   }
}


/*
 * Class:     amzi_ls_LogicServer
 * Method:    Call
 * Signature: (J)J
 */
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_Call
  (JNIEnv * jenv, jobject jobj, jlong jterm)
{
   TF   tf;
   TERM t;

   jenv_current = jenv;

   GET_EID(e);
   t = (TERM)jterm;
   tf = lsCall(e, &t);
   switch(tf)
   {
   case TRUE: return (jlong)t;
   case FALSE: return 0;
   default: amzi_error(jenv, e, "Call"); return 0;
   }
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    CallStr
 * Signature: (Ljava/lang/String;)J
 */
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_CallStr
  (JNIEnv * jenv, jobject jobj, jstring jstr)
{
   TF     tf;
   TERM   t;
   aCHAR* query;

   jenv_current = jenv;

   GET_EID(e);
   query = JtoC(jenv, jstr);
   tf = lsCallStr(e, &t, query);
   delete[] query;

   switch(tf)
   {
   case TRUE: return (jlong)t;
   case FALSE: return 0;
   default: amzi_error(jenv, e, "CallStr"); return 0;
   }
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    Redo
 * Signature: ()Z
 */
extern "C" JNIEXPORT jboolean JNICALL Java_amzi_ls_LogicServer_Redo
  (JNIEnv * jenv, jobject jobj)
{
   TF  tf;

   jenv_current = jenv;

   GET_EID(e);
   tf = lsRedo(e);
   if (tf != TRUE && tf != FALSE)
      amzi_error(jenv, e, "Redo");

   return (jboolean)tf;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    ClearCall
 * Signature: ()V
 */
extern "C" JNIEXPORT void JNICALL Java_amzi_ls_LogicServer_ClearCall
  (JNIEnv * jenv, jobject jobj)
{
   RC  rc;

   GET_EID(e);
   rc = lsClearCall(e);
   if (rc != OK)
      amzi_error(jenv, e, "ClearCall");

   return;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    Asserta
 * Signature: (J)V
 */
extern "C" JNIEXPORT void JNICALL Java_amzi_ls_LogicServer_Asserta
  (JNIEnv * jenv, jobject jobj, jlong jterm)
{
   RC  rc;

   GET_EID(e);
   rc = lsAsserta(e, (TERM)jterm);
   if (rc != OK)
      amzi_error(jenv, e, "Asserta");

   return;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    Assertz
 * Signature: (J)V
 */
extern "C" JNIEXPORT void JNICALL Java_amzi_ls_LogicServer_Assertz
  (JNIEnv * jenv, jobject jobj, jlong jterm)
{
   RC  rc;

   GET_EID(e);
   rc = lsAssertz(e, (TERM)jterm);
   if (rc != OK)
      amzi_error(jenv, e, "Assertz");

   return;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    Retract
 * Signature: (J)V
 */
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_Retract
  (JNIEnv * jenv, jobject jobj, jlong jterm)
{
   TF   tf;
   TERM t;

   GET_EID(e);
   t = (TERM)jterm;
   tf = lsRetract(e, t);
   switch(tf)
   {
   case TRUE: return (jlong)t;
   case FALSE: return 0;
   default: amzi_error(jenv, e, "Retract"); return 0;
   }
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    AssertaStr
 * Signature: (Ljava/lang/String;)V
 */
extern "C" JNIEXPORT void JNICALL Java_amzi_ls_LogicServer_AssertaStr
  (JNIEnv * jenv, jobject jobj, jstring jstr)
{
   RC     rc;
   aCHAR* astr;

   GET_EID(e);
   astr = JtoC(jenv, jstr);
   rc = lsAssertaStr(e, astr);
   delete[] astr;
   if (rc != OK)
      amzi_error(jenv, e, "AssertaStr");

   return;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    AssertzStr
 * Signature: (Ljava/lang/String;)V
 */
extern "C" JNIEXPORT void JNICALL Java_amzi_ls_LogicServer_AssertzStr
  (JNIEnv * jenv, jobject jobj, jstring jstr)
{
   RC     rc;
   aCHAR* astr;

   GET_EID(e);
   astr = JtoC(jenv, jstr);
   rc = lsAssertzStr(e, astr);
   delete[] astr;
   if (rc != OK)
      amzi_error(jenv, e, "AssertzStr");

   return;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    RetractStr
 * Signature: (Ljava/lang/String;)V
 */
extern "C" JNIEXPORT jboolean JNICALL Java_amzi_ls_LogicServer_RetractStr
  (JNIEnv * jenv, jobject jobj, jstring jstr)
{
   TF   tf;
   aCHAR* rstr;

   GET_EID(e);
   rstr = JtoC(jenv, jstr);
   tf = lsRetractStr(e, rstr);
   delete[] rstr;
   switch(tf)
   {
   case TRUE:
   case FALSE:
      return (jboolean)tf;
   default: amzi_error(jenv, e, "RetractStr"); return 0;
   }
}

  
/*
 * Class:     amzi_ls_LogicServer
 * Method:    TermToStr
 * Signature: (JI)Ljava/lang/String;
 */
extern "C" JNIEXPORT jstring JNICALL Java_amzi_ls_LogicServer_TermToStr
  (JNIEnv * jenv, jobject jobj, jlong t, jint jlen)
{
   RC     rc;
   aCHAR* str = new aCHAR[jlen+1];

   GET_EID(e);
   rc = lsTermToStr(e, (TERM)t, str, jlen);
   int len = wcslen(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, "TermToStr");

   return jstr;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    TermToStrQ
 * Signature: (JI)Ljava/lang/String;
 */
extern "C" JNIEXPORT jstring JNICALL Java_amzi_ls_LogicServer_TermToStrQ
  (JNIEnv * jenv, jobject jobj, jlong t, jint jlen)
{
   RC     rc;
   aCHAR* str = new aCHAR[jlen+1];

   GET_EID(e);
   rc = lsTermToStrQ(e, (TERM)t, str, jlen);
   int len = wcslen(str);
   jCHAR* jcstr = new jCHAR[len+1];
   ac_to_jc(jcstr, str, len);
   jstring jstr = jenv->NewString(jcstr, len);
   delete[] str;
   if (rc != OK)
      amzi_error(jenv, e, "TermToStrQ");

   return jstr;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    StrToTerm
 * Signature: (Ljava/lang/String;)J
 */
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_StrToTerm
  (JNIEnv * jenv, jobject jobj, jstring jstr)
{
   RC     rc;
   TERM   t;
   aCHAR* istr;

   GET_EID(e);
   istr = JtoC(jenv, jstr);
   rc = lsStrToTerm(e, &t, istr);
   delete[] istr;

   if (rc != OK)
      amzi_error(jenv, e, "StrToTerm");
   
   return (jlong)t;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    StrTermLen
 * Signature: (J)J
 */
extern "C" JNIEXPORT jint JNICALL Java_amzi_ls_LogicServer_StrTermLen
  (JNIEnv * jenv, jobject jobj, jlong jterm)
{
   int len;

   GET_EID(e);
   len = lsStrTermLen(e, (TERM)jterm);

   return (jint)len;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    MakeAtom
 * Signature: (Ljava/lang/String;)J
 */
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_MakeAtom
  (JNIEnv * jenv, jobject jobj, jstring jstr)
{
   RC     rc;
   aCHAR* atom;
   TERM   t;

   GET_EID(e);
   atom = JtoC(jenv, jstr);
   rc = lsMakeAtom(e, &t, atom);
   delete[] atom;

   if (rc != OK)
      amzi_error(jenv, e, "MakeAtom");

   return (jlong)t;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    MakeStr
 * Signature: (Ljava/lang/String;)J
 */
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_MakeStr
  (JNIEnv * jenv, jobject jobj, jstring jstr)
{
   RC     rc;
   aCHAR* str;
   TERM   t;

   GET_EID(e);
   str = JtoC(jenv, jstr);
   rc = lsMakeStr(e, &t, str);
   delete[] str;

   if (rc != OK)
      amzi_error(jenv, e, "MakeStr");

   return (jlong)t;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    MakeInt
 * Signature: (I)J
 */
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_MakeInt
  (JNIEnv * jenv, jobject jobj, jint ji)
{
   RC     rc;
   TERM   t;

   GET_EID(e);
   rc = lsMakeInt(e, &t, (int)ji);

   if (rc != OK)
      amzi_error(jenv, e, "MakeInt");

   return (jlong)t;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    MakeFloat
 * Signature: (D)J
 */
extern "C" JNIEXPORT jlong JNICALL Java_amzi_ls_LogicServer_MakeFloat
  (JNIEnv * jenv, jobject jobj, jdouble jd)
{
   RC     rc;
   TERM   t;

   GET_EID(e);
   rc = lsMakeFloat(e, &t, (double)jd);

   if (rc != OK)
      amzi_error(jenv, e, "MakeFloat");

   return (jlong)t;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    GetTermType
 * Signature: (J)I
 */
extern "C" JNIEXPORT jint JNICALL Java_amzi_ls_LogicServer_GetTermType
  (JNIEnv * jenv, jobject jobj, jlong jterm)
{
   pTYPE type;

   GET_EID(e);
   type = lsGetTermType(e, (TERM)jterm);
   if (type < 0)
      amzi_error(jenv, e, "GetTermType");

   return (jint)type;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    GetStrTerm
 * Signature: (J)Ljava/lang/String;
 */
extern "C" JNIEXPORT jstring JNICALL Java_amzi_ls_LogicServer_GetStrTerm
  (JNIEnv * jenv, jobject jobj, jlong jt)
{
   RC     rc;
   aCHAR* str;

   GET_EID(e);
   int len = lsStrTermLen(e, (TERM)jt);
   str = new aCHAR[len+1];
   rc = lsGetTerm(e, (TERM)jt, 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, "GetStrTerm");

   return jstr;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    GetIntTerm
 * Signature: (J)I
 */
extern "C" JNIEXPORT jint JNICALL Java_amzi_ls_LogicServer_GetIntTerm
  (JNIEnv * jenv, jobject jobj, jlong jt)
{
   RC     rc;
   int    i;

   GET_EID(e);
   rc = lsGetTerm(e, (TERM)jt, cINT, &i);
   if (rc != OK)
      amzi_error(jenv, e, "GetIntTerm");

   return (jint)i;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    GetFloatTerm
 * Signature: (J)D
 */
extern "C" JNIEXPORT jdouble JNICALL Java_amzi_ls_LogicServer_GetFloatTerm
  (JNIEnv * jenv, jobject jobj, jlong jt)
{
   RC     rc;
   double d;

   GET_EID(e);
   rc = lsGetTerm(e, (TERM)jt, cDOUBLE, &d);
   if (rc != OK)
      amzi_error(jenv, e, "GetFloatTerm");

   return (jdouble)d;
}

/*
 * Class:     amzi_ls_LogicServer
 * Method:    GetParmType
 * Signature: (I)I

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?