5 // Created by 西田 耀 on 13/01/01.
6 // Copyright (c) 2013年 Hikaru Nishida. All rights reserved.
11 void AI_ThinkMain(void)
13 char line[AI_MAX_STRINGLENGTH];
15 AI_Array *separated, *meanlist;
19 separated = AI_Array_Initialize();
24 AI_ReadInput(line, sizeof(line), stdin);
26 if(line[0] == ':' && line[1] == ':'){
29 AI_Array_GetSeparatedStringByArray(&separated, &AI_SystemStringList, &line[2]);
30 if(AI_String_CompareString_Strict((const char *)AI_Array_GetPointerByIndex(separated, 0), "info")){
31 AI_Command_System_info(separated);
32 } else if(AI_String_CompareString_Strict((const char *)AI_Array_GetPointerByIndex(separated, 0), "setmode")){
33 AI_Command_System_setmode(separated);
34 } else if(AI_String_CompareString_Strict((const char *)AI_Array_GetPointerByIndex(separated, 0), "exit")){
36 } else if(AI_String_CompareString_Strict((const char *)AI_Array_GetPointerByIndex(separated, 0), "save")){
37 AI_Memory_SaveMemory((const char *)AI_Array_GetPointerByIndex(separated, 2));
41 AI_Array_FreePointer(separated);
42 AI_Array_Free(&separated);
45 AI_Think_GetSeparatedStringByMemory(&separated, line);
46 switch(AI_MainMemory.mode){
48 AI_Speak("mode 0\nInput:");
49 j = AI_Array_GetNumberOfTags(separated);
50 for(i = 0; i < j; i++){
51 printf("%s(0x%08X) ", AI_Array_GetPointerByIndex(separated, i), AI_Array_GetDataIDByIndex(separated, i));
54 meanlist = AI_Memory_Expression_GetMeanFromSeparatedString(separated);
55 if(AI_Array_GetIndexByDataID(meanlist, AI_SYSDATAID_M_DEFINE) != AI_ARRAY_INDEX_NOTFOUND){
60 AI_Array_Free(&meanlist);
63 k = (AI_String_GetLength(line) % 10) + 1;
65 for(j = 0; j < k; j++){
66 i = rand() % AI_Array_GetNumberOfTags(AI_MainMemory.list_word);
67 printf("%s ", AI_Array_GetPointerByIndex(AI_MainMemory.list_word, i));
72 AI_Speak("default\n");
75 AI_Array_FreePointer(separated);
76 AI_Array_Free(&separated);
83 int AI_Think_GetSeparatedStringByMemory(AI_Array **separated, const char s[])
85 return AI_Array_GetSeparatedStringByArray(separated, AI_MainMemory.list_word, s);