{\r
//listにある文字列でsを分割し、その結果をseparatedに追加する。\r
//listに存在する文字列は新しくメモリを確保せず、リスト中のStringタグへのポインタをseparatedに記録する。\r
- //従ってseparatedを解放する際は、listのdata32をすべてTrueにした上で、CHNLIB_UIPArray_FreeSelectedAllを利用するべきである。\r
+ ////従ってseparatedを解放する際は、listのdata32をすべてTrueにした上で、CHNLIB_UIPArray_FreeSelectedAllを利用するべきである。\r
+ //referenceCountは、list中の文字列は2以上になり、listにない文字列は1となる。\r
+ //従って、separatedをreleaseすれば、安全に解放できる。\r
//listにない文字列はdata32==False(0)\r
//listにある文字列はdata32==tag->data32\r
int index, end, end_end, location;\r
//もうリストの文字列はない\r
if(end != end_end){\r
//でもまだ文字列は残っている\r
- CHNLIB_UIPArray_AppendLast(separated, False, CHNLIB_String_ExtractByLength(s, end, CHNLIB_MAX_STRING_LENGTH));\r
+ CHNLIB_UIPArray_AppendLast(separated, False, autorelease(CHNLIB_String_ExtractByLength(s, end, CHNLIB_MAX_STRING_LENGTH)));\r
}\r
break;\r
}\r
//リストの文字列が見つかった\r
if(location != 0){\r
//リストの文字列の前に、リストにない文字列がある\r
- CHNLIB_UIPArray_AppendLast(separated, False, CHNLIB_String_ExtractByLength(s, end, location));\r
+ CHNLIB_UIPArray_AppendLast(separated, False, autorelease(CHNLIB_String_ExtractByLength(s, end, location)));\r
end += location;\r
}\r
CHNLIB_UIPArray_AppendLast(separated, CHNLIB_UIPArray_GetData32ByIndex(list, index), CHNLIB_UIPArray_GetPointerByIndex(list, index));\r
//終端文字\r
break;\r
}\r
- CHNLIB_UIPArray_AppendLast(separated, u, CHNLIB_String_ExtractByLength(s, (int)(p - p_base), (int)(q - p)));\r
+ CHNLIB_UIPArray_AppendLast(separated, u, autorelease(CHNLIB_String_ExtractByLength(s, (int)(p - p_base), (int)(q - p))));\r
p = q;\r
}\r
\r
\r
CHNLIB_String *CHNLIB_ReadLine(FILE *fp)\r
{\r
+ //改行文字を削除して、読み込んだ文字列一行を返す。\r
char s[CHNLIB_MAX_STRING_LENGTH];\r
\r
if(fgets(s, sizeof(s), fp) == NULL){\r
return CHNLIB_String_Initialize(s);\r
}\r
\r
+CHNLIB_UUID *CHNLIB_GenerateUUIDVersion4WithRandomGeneratorMT(CHNLIB_RandomGeneratorMT *mt)\r
+{\r
+ //mtが有効でない場合、NullUUIDを返す。\r
+ CHNLIB_UUID *uuid;\r
+ \r
+ uuid = CHNLIB_UUID_Initialise();\r
+ \r
+ if(CHNLIB_StructureHeader_GetTypeID(mt) != CHNLIB_STRUCT_ID_RandomGeneratorMT){\r
+ return uuid;\r
+ }\r
+ \r
+ CHNLIB_UUID_SetValueAsUUIDVersion4CompatibleWithRFC4122(uuid, CHNLIB_RandomGeneratorMT_GetRandomUnsignedInteger32(mt), CHNLIB_RandomGeneratorMT_GetRandomUnsignedInteger32(mt), CHNLIB_RandomGeneratorMT_GetRandomUnsignedInteger32(mt), CHNLIB_RandomGeneratorMT_GetRandomUnsignedInteger32(mt));\r
+ \r
+ return uuid;\r
+}\r
\r