OSDN Git Service

CHNLIB_UIPArray_GetSeparatedStringByUIPArrayの仕様を変更。
authorhikarupsp <hikarupsp@users.sourceforge.jp>
Mon, 25 Feb 2013 07:12:26 +0000 (16:12 +0900)
committerhikarupsp <hikarupsp@users.sourceforge.jp>
Mon, 25 Feb 2013 07:12:26 +0000 (16:12 +0900)
c2wikiは一応動作するようになった。

CHNOSProject/AI003/AI003/main.c
CHNOSProject/c2wiki/c2wiki/main.c
CHNOSProject/chn/chnlib02.c

index e75a4e6..fd52d91 100755 (executable)
@@ -21,6 +21,7 @@ AI_WorkingSet WorkingSet;
 \r
 int main(int argc, const char * argv[])\r
 {\r
+    //エントリポイント\r
     int i, i_max;\r
     CHNLIB_String *input, *temp;\r
     CHNLIB_UIPArray *separated;\r
@@ -82,6 +83,7 @@ int main(int argc, const char * argv[])
 \r
 CHNLIB_UIPArray *AI_Think_SlideLookUpWordByHistory(CHNLIB_String *input)\r
 {\r
+    //入力文字列と履歴文字列を照らし合わせ、単語の候補を抜き出す。\r
     CHNLIB_UIPArray *candidatewordlist;\r
     int i, i_max;\r
     int j, j_max;\r
@@ -134,6 +136,8 @@ CHNLIB_UIPArray *AI_Think_SlideLookUpWordByHistory(CHNLIB_String *input)
 \r
 void AI_Memory_AddRootWordData(CHNLIB_String *tag)\r
 {\r
+    //WorkingSet.RootWordListに文字列を追加する。\r
+    //重複がある場合は警告を出し、追加しない。\r
     int i, i_max;\r
     \r
     i_max = CHNLIB_UIPArray_GetNumberOfDatas(WorkingSet.RootWordList);\r
@@ -153,6 +157,7 @@ void AI_Memory_AddRootWordData(CHNLIB_String *tag)
 \r
 int AI_Memory_AddRootWordData_IsDuplicated(const void *listtag, const void *newtag)\r
 {\r
+    //CHNLIB_UIPArray_AppendLast_ProtectFromDuplicationに渡す関数ポインタ。\r
     if(CHNLIB_StructureHeader_GetTypeID(listtag) != CHNLIB_STRUCT_ID_String){\r
         return False;\r
     }\r
@@ -165,9 +170,10 @@ int AI_Memory_AddRootWordData_IsDuplicated(const void *listtag, const void *newt
 \r
 void AI_System_InitializeSystemWorkingSet(void)\r
 {\r
+    //WorkingSetを初期化する。\r
     WorkingSet.SystemWordList0 = CHNLIB_UIPArray_Initialize();\r
-    CHNLIB_UIPArray_AppendLast(&WorkingSet.SystemWordList0, 0, CHNLIB_String_Initialize(":"));\r
-    CHNLIB_UIPArray_AppendLast(&WorkingSet.SystemWordList0, 0, CHNLIB_String_Initialize(","));\r
+    CHNLIB_UIPArray_AppendLast(&WorkingSet.SystemWordList0, True, CHNLIB_String_Initialize(":"));\r
+    CHNLIB_UIPArray_AppendLast(&WorkingSet.SystemWordList0, True, CHNLIB_String_Initialize(","));\r
     \r
     WorkingSet.InputHistory = CHNLIB_UIPArray_Initialize();\r
     \r
@@ -176,6 +182,7 @@ void AI_System_InitializeSystemWorkingSet(void)
 \r
 void AI_System_LoadMemory(const char configfilename[])\r
 {\r
+    //指定されたファイル名のテキストファイルから設定を読み出す。\r
     FILE *fp;\r
     CHNLIB_String *line, *currentfilename;\r
     int i;\r
index 5a97057..f4cba72 100644 (file)
@@ -15,6 +15,7 @@ int main(int argc, const char * argv[])
     CHNLIB_String *line;
     CHNLIB_UIPArray *root, *wordlist;
     int i, i_max;
+    int level, recording;
     
     CHNLIB_Environment_SetCurrentWorkingDirectory(argv[0]);
     
@@ -32,7 +33,7 @@ int main(int argc, const char * argv[])
     wordlist = CHNLIB_UIPArray_Initialize();
     CHNLIB_UIPArray_AppendLast(&wordlist, 1, CHNLIB_String_Initialize("{"));
     CHNLIB_UIPArray_AppendLast(&wordlist, 2, CHNLIB_String_Initialize("}"));
-    //CHNLIB_UIPArray_AppendLast(&wordlist, 1, CHNLIB_String_Initialize(""));
+    CHNLIB_UIPArray_AppendLast(&wordlist, 3, CHNLIB_String_Initialize("//"));
     
     root = CHNLIB_UIPArray_Initialize();
     for(;;){
@@ -48,10 +49,36 @@ int main(int argc, const char * argv[])
     i_max = CHNLIB_UIPArray_GetNumberOfDatas(root);
     fp = fopen("out.txt", "wb");
     
+    recording = False;
+    level = 0;
     for(i = 0; i < i_max; i++){
-    
+        switch(CHNLIB_UIPArray_GetData32ByIndex(root, i)){
+            case 1: //"{"
+                if(level == 0){
+                    fprintf(fp, "***%s\n", CHNLIB_String_GetReferencePointerOfCString(CHNLIB_UIPArray_GetPointerByIndex(root, i - 1)));
+                    recording = True;
+                } else if(recording){
+                    recording = False;
+                    fprintf(fp, "\n");
+                }
+                level++;
+                break;
+            case 2: //"}"
+                if(recording){
+                    recording = False;
+                    fprintf(fp, "\n");
+                }
+                level--;
+                break;
+            case 3: //"//"
+                if(recording){
+                    i++;
+                    fprintf(fp, "%s\n", CHNLIB_String_GetReferencePointerOfCString(CHNLIB_UIPArray_GetPointerByIndex(root, i)));
+                }
+                break;
+        }
     }
-    
+    fflush(fp);
     fclose(fp);
     
     return 0;
index f5b13b8..e37e969 100644 (file)
@@ -60,9 +60,9 @@ int CHNLIB_UIPArray_GetSeparatedStringByUIPArray(CHNLIB_UIPArray **separated, co
 {\r
     //listにある文字列でsを分割し、その結果をseparatedに追加する。\r
     //listに存在する文字列は新しくメモリを確保せず、リスト中のStringタグへのポインタをseparatedに記録する。\r
-    //従ってseparatedを解放する際は、CHNLIB_UIPArray_FreeSelectedAllを利用するべきである。\r
-    //listにない文字列はdata32==False\r
-    //listにある文字列はdata32==True\r
+    //従ってseparatedを解放する際は、listのdata32をすべてTrueにした上で、CHNLIB_UIPArray_FreeSelectedAllを利用するべきである。\r
+    //listにない文字列はdata32==False(0)\r
+    //listにある文字列はdata32==tag->data32\r
     int index, end, end_end, location;\r
     \r
     if(s == NULL){\r
@@ -87,7 +87,7 @@ int CHNLIB_UIPArray_GetSeparatedStringByUIPArray(CHNLIB_UIPArray **separated, co
             CHNLIB_UIPArray_AppendLast(separated, False, CHNLIB_String_ExtractByLength(s, end, location));\r
             end += location;\r
         }\r
-        CHNLIB_UIPArray_AppendLast(separated, True, CHNLIB_UIPArray_GetPointerByIndex(list, index));\r
+        CHNLIB_UIPArray_AppendLast(separated, CHNLIB_UIPArray_GetData32ByIndex(list, index), CHNLIB_UIPArray_GetPointerByIndex(list, index));\r
         end += CHNLIB_String_GetLength(CHNLIB_UIPArray_GetPointerByIndex(list, index));\r
     }\r
     return 0;\r