OSDN Git Service

chnlib:構造体のハッシュ値取得を実装。検索の高速化に利用する予定。文字列の連結・コピーも実装。合わせてlibtestも更新。
[chnosproject/CHNOSProject.git] / CHNOSProject / chn / chnlib.c
index 7072ab9..ba98665 100755 (executable)
@@ -108,6 +108,7 @@ void CHNLIB_StructureHeader_Initialize(CHNLIB_StructureHeader *header, uint type
 #endif\r
     header->referenceCount = 1;\r
     header->destructor = NULL;\r
+    header->getHash = NULL;\r
     return;\r
 }\r
 \r
@@ -128,6 +129,24 @@ uint CHNLIB_StructureHeader_GetTypeID(const void *structure)
     return CHNLIB_STRUCT_ID_Null;\r
 }\r
 \r
+uint CHNLIB_StructureHeader_GetHash(const void *structure)\r
+{\r
+    //structureが指す構造体のヘッダを確認して、その構造体定義のハッシュ値を返す。\r
+    CHNLIB_StructureHeader *strhead;\r
+    \r
+    if(structure == NULL){\r
+        return 0;\r
+    }\r
+    \r
+    strhead = (CHNLIB_StructureHeader *)structure;\r
+    if(strhead->signature == CHNLIB_STRUCTURE_SIGNATURE){\r
+        if(strhead->getHash != NULL){\r
+            return strhead->getHash(structure);\r
+        }\r
+    }\r
+    return 0;\r
+}\r
+\r
 void *CHNLIB_System_AllocateMemory_Strict(int size, const char filename[], int line, const char funcname[])\r
 {\r
     //mallocを行い、確保が失敗した場合にメッセージを出力してプログラムを終了する。\r