📄 simple_agent.c
字号:
#include <libicl.h>
#include <liboaa.h>
#include <stdio.h>
void test_solve(){
ICLTerm* local_goal = icl_NewTermFromString("weather(X)");
ICLTerm* local_params = icl_NewTermFromString("[]");
ICLTerm* local_solutions = NULL;
char* result_as_string = NULL;
oaa_Solve(local_goal, local_params, NULL, &local_solutions);
result_as_string = icl_NewStringFromTerm(local_solutions);
printf("Solutions : %s\n ", result_as_string);
free(result_as_string);
icl_Free(local_solutions);
icl_Free(local_params);
icl_Free(local_goal);
}
int myOaaInterpret_Callback(ICLTerm* goal, ICLTerm* params, ICLTerm* solutions) {
return oaa_Interpret(goal, params, &solutions);
}
int myDoEvent_Callback(ICLTerm* goal, ICLTerm* params, ICLTerm* solutions) {
printf("In do event goal : %s params : %s solutions : %s \n",
icl_NewStringFromTerm(goal),
icl_NewStringFromTerm(params),
icl_NewStringFromTerm(solutions));
if ( STREQ(icl_Str(goal), "a") ) {
icl_AddToList(solutions, icl_NewTermFromString("a(2)"), TRUE);
icl_AddToList(solutions, icl_NewTermFromString("a(3)"), TRUE);
}else
if ( STREQ(icl_Str(goal), "test_agent") ) {
ICLTerm* first_param = icl_NthTerm(params, 1);
if (icl_Str(first_param), "solve") {
test_solve();
icl_AddToList(solutions, icl_NewTermFromString("test_agent(solve)"),
TRUE);
}
}
return FALSE;
}
int myTestSolve_Callback(ICLTerm* goal, ICLTerm* params, ICLTerm* solutions) {
printf("In test_1 goal : %s params : %s solutions : %s \n",
icl_NewStringFromTerm(goal),
icl_NewStringFromTerm(params),
icl_NewStringFromTerm(solutions));
icl_AddToList(solutions, icl_NewTermFromString("test_call(test_1,ok)"),
TRUE);
return FALSE;
}
int setup_oaa_connection(int argc, char *argv[]) {
ICLTerm* mySolvablesAsTerm = icl_NewList(NULL);
icl_AddToList(mySolvablesAsTerm, icl_NewTermFromString("a(X)"), TRUE);
icl_AddToList(mySolvablesAsTerm, icl_NewTermFromString("test_agent(Y)"), TRUE);
icl_AddToList(mySolvablesAsTerm,
icl_NewTermFromString("solvable(oaa_interpret(test_agent_c,Command),[callback(interpret)])"), TRUE);
icl_AddToList(mySolvablesAsTerm,
icl_NewTermFromString("solvable(test_call(test1,X),[callback(test1)])"),
TRUE);
icl_AddToList(mySolvablesAsTerm,
icl_NewTermFromString("solvable(d(X),[type(data)], [write(true)])"),
TRUE);
if (com_Connect("parent", ICL_VAR)<0) {
printf("Could not connect\n");
return FALSE;
}
if (!oaa_Register("parent", "simple_agent_c", mySolvablesAsTerm)) {
printf("Could not register\n");
return FALSE;
}
if (!oaa_RegisterCallback("app_do_event", myDoEvent_Callback)) {
printf("Could not register app_do_event callback\n");
return FALSE;
}
/*
if (!oaa_RegisterCallback("test1", myTestSolve_Callback)) {
printf("Could not register test_1 callback\n");
return FALSE;
}
*/
/*
if (!oaa_RegisterCallback("interpret", myOaaInterpret_Callback)) {
printf("Could not register myOaaInterpret_Callback callback\n");
return FALSE;
}
*/
icl_Free(mySolvablesAsTerm);
oaa_MainLoop(TRUE);
}
int main(int argc, char *argv[])
{
oaa_Init(argc, argv);
setup_oaa_connection(argc, argv);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -