OSDN Git Service

chnlib:CHNLIB_UUID(UUIDv4), メルセンヌ・ツイスターを利用した乱数生成器CHNLIB_RandomGeneratorMTを追加。
[chnosproject/CHNOSProject.git] / CHNOSProject / chn / chnlib02.c
index ba92bbd..39d5d22 100644 (file)
@@ -139,4 +139,19 @@ CHNLIB_String *CHNLIB_ReadLine(FILE *fp)
     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