OSDN Git Service

debug系関数の引数の一部マクロ化。
[chnosproject/CHNOSProject.git] / CHNOSProject / chn / chnlib01.c
index db26f9e..76df884 100644 (file)
@@ -6,6 +6,8 @@
 //  Copyright (c) 2013年 Hikaru Nishida. All rights reserved.\r
 //\r
 \r
+//String関連のうち、このソースファイルで完結する関数群\r
+\r
 //\r
 //Include headers\r
 //\r
@@ -30,6 +32,7 @@ CHNLIB_String *CHNLIB_String_Internal_Allocate(void);
 //\r
 \r
 struct CHNLIB_STRING {\r
+    //文字列を保持する\r
     CHNLIB_StructureHeader header;\r
     char *str;\r
 };\r
@@ -40,6 +43,8 @@ struct CHNLIB_STRING {
 \r
 CHNLIB_String *CHNLIB_String_Initialize(const char str[])\r
 {\r
+    //指定された引数strと等価なStringを確保し返す。\r
+    //str==NULLの時は、NULLポインタへの参照を持つStringを返す。\r
     CHNLIB_String *strtag;\r
     \r
     strtag = CHNLIB_String_Internal_Allocate();\r
@@ -52,31 +57,41 @@ CHNLIB_String *CHNLIB_String_Initialize(const char str[])
 \r
 void CHNLIB_String_Free(CHNLIB_String *strtag)\r
 {\r
-    if(strtag == NULL){\r
+    //strtagを解放する。\r
+    \r
+    if(CHNLIB_StructureHeader_GetTypeID(strtag) != CHNLIB_STRUCT_ID_String){\r
         return;\r
     }\r
     \r
     if(strtag->str != NULL){\r
-        CHNLIB_System_FreeMemory(strtag->str, __FILE__, __LINE__, __FUNCTION__);\r
+        CHNLIB_System_FreeMemory(strtag->str, CHNLIB_DEBUG_ARGUMENTS);\r
     }\r
     strtag->header.typeid = CHNLIB_STRUCT_ID_Null;\r
     strtag->header.signature = 0;\r
-    CHNLIB_System_FreeMemory(strtag, __FILE__, __LINE__, __FUNCTION__);\r
+    CHNLIB_System_FreeMemory(strtag, CHNLIB_DEBUG_ARGUMENTS);\r
+    \r
+    return;\r
 }\r
 \r
 int CHNLIB_String_SetStringFromCString(CHNLIB_String *strtag, const char s[])\r
 {\r
+    //strtagにsと等価な文字列を代入する。\r
+    //strtag==Invalid || s==NULLのときは何もしない。\r
     int i, size;\r
     \r
-    if(strtag == NULL){\r
+    if(CHNLIB_StructureHeader_GetTypeID(strtag) != CHNLIB_STRUCT_ID_String){\r
+        return 0;\r
+    }\r
+    \r
+    if(s == NULL){\r
         return 0;\r
     }\r
     \r
     size = CHNLIB_CString_GetLength(s) + 1;\r
     if(strtag->str != NULL){\r
-        CHNLIB_System_FreeMemory(strtag->str, __FILE__, __LINE__, __FUNCTION__);\r
+        CHNLIB_System_FreeMemory(strtag->str, CHNLIB_DEBUG_ARGUMENTS);\r
     }\r
-    strtag->str = CHNLIB_System_AllocateMemory_Strict(size, __FILE__, __LINE__, __FUNCTION__);\r
+    strtag->str = CHNLIB_System_AllocateMemory_Strict(size, CHNLIB_DEBUG_ARGUMENTS);\r
     for(i = 0; i < size - 1; i++){\r
         strtag->str[i] = s[i];\r
     }\r
@@ -86,7 +101,8 @@ int CHNLIB_String_SetStringFromCString(CHNLIB_String *strtag, const char s[])
 \r
 int CHNLIB_String_Print(CHNLIB_String *strtag)\r
 {\r
-    if(strtag == NULL){\r
+    //strtagが格納している文字列を標準出力に出力する。\r
+    if(CHNLIB_StructureHeader_GetTypeID(strtag) != CHNLIB_STRUCT_ID_String){\r
         return 0;\r
     }\r
     if(strtag->str == NULL){\r
@@ -98,6 +114,8 @@ int CHNLIB_String_Print(CHNLIB_String *strtag)
 \r
 const char *CHNLIB_String_GetReferencePointerOfCString(const CHNLIB_String *strtag)\r
 {\r
+    //strtagが格納している文字列へのポインタを返す。\r
+    //strtag==Invalidの場合、NULLを返す。\r
     if(CHNLIB_StructureHeader_GetTypeID(strtag) != CHNLIB_STRUCT_ID_String){\r
         return NULL;\r
     }\r
@@ -107,6 +125,10 @@ const char *CHNLIB_String_GetReferencePointerOfCString(const CHNLIB_String *strt
 \r
 CHNLIB_String *CHNLIB_String_ExtractByLength(const CHNLIB_String *strtag, int start, int len)\r
 {\r
+    //strtagが格納している文字列sについて、\r
+    //s[start]からs[start + len - 1]の文字を含む文字列と等価なStringを確保し返す。\r
+    //lenに満たずにsが終端文字を迎えた場合は、sの終端文字直前までの文字列がコピーされる。\r
+    //(len < 0)のときは、NULLを返す。また、結果として(len < 0)となった時も同様にNULLを返す。\r
     char *retstr;\r
     CHNLIB_String *retstrtag;\r
     \r
@@ -217,7 +239,7 @@ char *CHNLIB_CString_ExtractByLength(const char s[], int start, int len)
     int utf8type;\r
     \r
     if(s == NULL){\r
-        CHNLIB_ReportError("Null s[]\n", __FILE__, __LINE__, __FUNCTION__);\r
+        CHNLIB_ReportError("Null s[]\n", CHNLIB_DEBUG_ARGUMENTS);\r
         return NULL;\r
     }\r
     \r
@@ -231,7 +253,7 @@ char *CHNLIB_CString_ExtractByLength(const char s[], int start, int len)
         return NULL;\r
     }\r
     \r
-    str = CHNLIB_System_AllocateMemory_Strict(i, __FILE__, __LINE__, __FUNCTION__);\r
+    str = CHNLIB_System_AllocateMemory_Strict(i, CHNLIB_DEBUG_ARGUMENTS);\r
 \r
     for(i = 0; s[i + start] != '\0'; i++){\r
         if(len <= 0){\r
@@ -259,7 +281,7 @@ int CHNLIB_CString_CompareString(const char s[], const char search[])
     int i;\r
     \r
     if(s == NULL || search == NULL){\r
-        CHNLIB_ReportError("Null str.\n", __FILE__, __LINE__, __FUNCTION__);\r
+        CHNLIB_ReportError("Null str.\n", CHNLIB_DEBUG_ARGUMENTS);\r
         return False;\r
     }\r
     \r
@@ -278,7 +300,7 @@ int CHNLIB_CString_CompareString_Strict(const char s[], const char search[])
     int i;\r
     \r
     if(s == NULL || search == NULL){\r
-        CHNLIB_ReportError("Null str.\n", __FILE__, __LINE__, __FUNCTION__);\r
+        CHNLIB_ReportError("Null str.\n", CHNLIB_DEBUG_ARGUMENTS);\r
         return False;\r
     }\r
     \r
@@ -300,7 +322,7 @@ int CHNLIB_CString_CompareString_LeftHand(const char s[], const char search[])
     int i;\r
     \r
     if(s == NULL || search == NULL){\r
-        CHNLIB_ReportError("Null str.\n", __FILE__, __LINE__, __FUNCTION__);\r
+        CHNLIB_ReportError("Null str.\n", CHNLIB_DEBUG_ARGUMENTS);\r
         return 0;\r
     }\r
     \r
@@ -320,7 +342,7 @@ uint CHNLIB_CString_GetCountOfContain(const char s[], const char search[])
     int i;\r
     \r
     if(s == NULL || search == NULL){\r
-        CHNLIB_ReportError("Null str.\n", __FILE__, __LINE__, __FUNCTION__);\r
+        CHNLIB_ReportError("Null str.\n", CHNLIB_DEBUG_ARGUMENTS);\r
         return 0;\r
     }\r
     \r
@@ -341,7 +363,7 @@ CHNLIB_String *CHNLIB_String_Internal_Allocate(void)
 {\r
     CHNLIB_String *tag;\r
     \r
-    tag = (CHNLIB_String *)CHNLIB_System_AllocateMemory_Strict(sizeof(CHNLIB_String), __FILE__, __LINE__, __FUNCTION__);\r
+    tag = (CHNLIB_String *)CHNLIB_System_AllocateMemory_Strict(sizeof(CHNLIB_String), CHNLIB_DEBUG_ARGUMENTS);\r
     \r
     CHNLIB_StructureHeader_Initialize(&tag->header, CHNLIB_STRUCT_ID_String);\r
     \r