From b153b11a2900cb88731c5dc3ae45191dd96a3e31 Mon Sep 17 00:00:00 2001 From: Saturneic Date: Wed, 22 Aug 2018 16:36:26 +0800 Subject: [PATCH] Fixed. --- .../xcdebugger/Expressions.xcexplist | 203 +-- .../xcdebugger/Breakpoints_v2.xcbkptlist | 1106 ++++++++--------- communicate/communicate.c | 3 + list/list.c | 115 +- list/list.h | 7 + test.c | 53 +- test.h | 7 +- type/type.h | 8 +- 8 files changed, 797 insertions(+), 705 deletions(-) diff --git a/ZE-Standard-Libraries.xcodeproj/project.xcworkspace/xcuserdata/huyibing.xcuserdatad/xcdebugger/Expressions.xcexplist b/ZE-Standard-Libraries.xcodeproj/project.xcworkspace/xcuserdata/huyibing.xcuserdatad/xcdebugger/Expressions.xcexplist index 9334bd2..52a1b4f 100644 --- a/ZE-Standard-Libraries.xcodeproj/project.xcworkspace/xcuserdata/huyibing.xcuserdatad/xcdebugger/Expressions.xcexplist +++ b/ZE-Standard-Libraries.xcodeproj/project.xcworkspace/xcuserdata/huyibing.xcuserdatad/xcdebugger/Expressions.xcexplist @@ -3,32 +3,52 @@ version = "1.0"> + contextName = "_doStandardDataToList:communicate.c"> + + + value = "sizeof(char)"> + + + contextName = "standardDataAddBlock:communicate.c"> + value = "(int *)data"> + + + contextName = "setS_idWithString:id.c"> + contextName = "initStandardDBlocks:communicate.c"> + contextName = "readStandardData:communicate.c"> + contextName = "dataForStandardDBlock:communicate.c"> + + + + + + + + @@ -39,22 +59,36 @@ + contextName = "freeS_id:id.c"> - - - - + contextName = "dataFileReadOut:communicate.c"> + value = "strlen(string_sid)"> + + + + + + + + + + + + + + @@ -67,7 +101,52 @@ + contextName = "releaseMalloc:list.h"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -86,95 +165,33 @@ - - - - - - - - - - - - - - - - - - - - - - + contextName = "dataFileWriteIn:communicate.c"> + + - - + value = "ABS(total_move)"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/ZE-Standard-Libraries.xcodeproj/xcuserdata/huyibing.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/ZE-Standard-Libraries.xcodeproj/xcuserdata/huyibing.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 555e5a0..d08de4d 100644 --- a/ZE-Standard-Libraries.xcodeproj/xcuserdata/huyibing.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/ZE-Standard-Libraries.xcodeproj/xcuserdata/huyibing.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -154,7 +154,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "test.c" - timestampString = "556532739.104131" + timestampString = "556616657.914873" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "45" @@ -186,7 +186,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.104285" + timestampString = "556538937.086658" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "19" @@ -202,7 +202,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.104363" + timestampString = "556538937.08676" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "114" @@ -218,7 +218,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.10443" + timestampString = "556538937.086839" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "117" @@ -234,7 +234,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.104495" + timestampString = "556538937.0869139" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "137" @@ -250,7 +250,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.10456" + timestampString = "556538937.08699" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "151" @@ -267,7 +267,7 @@ condition = "buff_count == 26" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.104624" + timestampString = "556538937.087065" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "143" @@ -284,7 +284,7 @@ condition = "string_len != 25" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.10469" + timestampString = "556538937.087142" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "206" @@ -300,7 +300,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.104753" + timestampString = "556538937.087216" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "148" @@ -317,7 +317,7 @@ condition = "buff_count == 26" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.104815" + timestampString = "556538937.087289" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "154" @@ -333,7 +333,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.104877" + timestampString = "556538937.087364" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "158" @@ -349,7 +349,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.1049449" + timestampString = "556538937.087438" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "162" @@ -365,7 +365,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.1050349" + timestampString = "556538937.08751" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "212" @@ -381,7 +381,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.105131" + timestampString = "556538937.087581" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "255" @@ -397,7 +397,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.105234" + timestampString = "556538937.087653" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "199" @@ -413,7 +413,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.105329" + timestampString = "556538937.087724" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "26" @@ -429,7 +429,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.1054161" + timestampString = "556538937.087793" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "211" @@ -445,7 +445,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.10551" + timestampString = "556538937.087862" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "219" @@ -461,7 +461,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.105608" + timestampString = "556538937.087935" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "141" @@ -477,7 +477,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.105705" + timestampString = "556538937.0880049" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "221" @@ -493,7 +493,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.105774" + timestampString = "556538937.088075" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "254" @@ -509,7 +509,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.1058379" + timestampString = "556538937.088147" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "232" @@ -525,7 +525,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "list/list_expand.c" - timestampString = "556532739.105913" + timestampString = "556615437.3113" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "84" @@ -541,41 +541,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.1063139" + timestampString = "556616657.915619" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "109" - endingLineNumber = "109" - landmarkName = "__CALLBACK_DEFINE" - landmarkType = "9"> - - - - - - - - @@ -587,11 +557,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.106678" + timestampString = "556616657.91573" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "222" - endingLineNumber = "222" + startingLineNumber = "107" + endingLineNumber = "107" landmarkName = "__CALLBACK_DEFINE" landmarkType = "9"> @@ -603,11 +573,27 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.106815" + timestampString = "556616657.915815" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "214" - endingLineNumber = "214" + startingLineNumber = "224" + endingLineNumber = "224" + landmarkName = "__CALLBACK_DEFINE" + landmarkType = "9"> + + + + @@ -619,11 +605,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.106931" + timestampString = "556616657.915984" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "168" - endingLineNumber = "168" + startingLineNumber = "170" + endingLineNumber = "170" landmarkName = "listToSTD" landmarkType = "9"> @@ -635,7 +621,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.107067" + timestampString = "556616657.916069" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "38" @@ -651,11 +637,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.107172" + timestampString = "556616657.916149" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "107" - endingLineNumber = "107" + startingLineNumber = "109" + endingLineNumber = "109" landmarkName = "__CALLBACK_DEFINE" landmarkType = "9"> @@ -667,7 +653,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.107306" + timestampString = "556538937.089959" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "270" @@ -683,7 +669,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.107371" + timestampString = "556616657.9162461" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "7" @@ -699,11 +685,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.107476" + timestampString = "556616657.916327" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "45" - endingLineNumber = "45" + startingLineNumber = "46" + endingLineNumber = "46" landmarkName = "initStandardData" landmarkType = "9"> @@ -715,11 +701,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.107699" + timestampString = "556616657.9164079" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "148" - endingLineNumber = "148" + startingLineNumber = "150" + endingLineNumber = "150" landmarkName = "__CALLBACK_DEFINE" landmarkType = "9"> @@ -731,27 +717,27 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.107849" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "129" - endingLineNumber = "129" - landmarkName = "__CALLBACK_DEFINE" - landmarkType = "9"> - - - - + + + + @@ -763,7 +749,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "list/list_expand.c" - timestampString = "556532739.108109" + timestampString = "556615437.311588" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "104" @@ -772,20 +758,6 @@ landmarkType = "9"> - - - - @@ -809,11 +781,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.108696" + timestampString = "556616657.91676" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "255" - endingLineNumber = "255" + startingLineNumber = "257" + endingLineNumber = "257" landmarkName = "__CALLBACK_DEFINE" landmarkType = "9"> @@ -825,11 +797,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.108857" + timestampString = "556616657.916842" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "252" - endingLineNumber = "252" + startingLineNumber = "254" + endingLineNumber = "254" landmarkName = "__CALLBACK_DEFINE" landmarkType = "9"> @@ -841,12 +813,12 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "list/list.c" - timestampString = "556532739.1090209" + timestampString = "556616657.916931" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "506" - endingLineNumber = "506" - landmarkName = "copyNode" + startingLineNumber = "514" + endingLineNumber = "514" + landmarkName = "mply_findByValue" landmarkType = "9"> @@ -857,7 +829,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.1091371" + timestampString = "556538937.091882" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "101" @@ -873,7 +845,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "id/id.c" - timestampString = "556532739.109255" + timestampString = "556538937.091946" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" startingLineNumber = "107" @@ -889,11 +861,13 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "test.c" - timestampString = "556532739.1093611" + timestampString = "556616657.917055" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "83" - endingLineNumber = "83"> + startingLineNumber = "103" + endingLineNumber = "103" + landmarkName = "main" + landmarkType = "9"> @@ -919,11 +893,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.109664" + timestampString = "556616657.917469" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "296" - endingLineNumber = "296" + startingLineNumber = "298" + endingLineNumber = "298" landmarkName = "unknown" landmarkType = "0"> @@ -935,135 +909,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.1098109" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "308" - endingLineNumber = "308" - landmarkName = "unknown" - landmarkType = "0"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - @@ -1207,31 +1165,15 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.1124049" + timestampString = "556616657.918712" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "326" - endingLineNumber = "326" + startingLineNumber = "328" + endingLineNumber = "328" landmarkName = "readDataFileInfo" landmarkType = "9"> - - - - @@ -1255,11 +1197,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.11274" + timestampString = "556616657.918874" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "332" - endingLineNumber = "332" + startingLineNumber = "334" + endingLineNumber = "334" landmarkName = "readDataFileInfo" landmarkType = "9"> @@ -1271,23 +1213,7 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.112847" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "86" - endingLineNumber = "86" - landmarkName = "dataFileAddStandardData" - landmarkType = "9"> - - - - + + + + @@ -1351,11 +1293,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.113662" + timestampString = "556616657.919297" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "400" - endingLineNumber = "400" + startingLineNumber = "403" + endingLineNumber = "403" landmarkName = "printStandardData" landmarkType = "9"> @@ -1367,11 +1309,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.113796" + timestampString = "556616657.919366" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "347" - endingLineNumber = "347" + startingLineNumber = "349" + endingLineNumber = "349" landmarkName = "readStandardData" landmarkType = "9"> @@ -1383,11 +1325,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.113898" + timestampString = "556616657.919434" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "353" - endingLineNumber = "353" + startingLineNumber = "355" + endingLineNumber = "355" landmarkName = "readStandardData" landmarkType = "9"> @@ -1398,13 +1340,13 @@ shouldBeEnabled = "No" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "test.c" - timestampString = "556532739.114037" + filePath = "communicate/communicate.c" + timestampString = "556616657.919505" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "75" - endingLineNumber = "75" - landmarkName = "main" + startingLineNumber = "230" + endingLineNumber = "230" + landmarkName = "__CALLBACK_DEFINE" landmarkType = "9"> @@ -1415,7 +1357,87 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "communicate/communicate.c" - timestampString = "556532739.114136" + timestampString = "556616657.919574" + startingColumnNumber = "9223372036854775807" + endingColumnNumber = "9223372036854775807" + startingLineNumber = "220" + endingLineNumber = "220" + landmarkName = "standardDataToList" + landmarkType = "9"> + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/communicate/communicate.c b/communicate/communicate.c index 2e66286..72a05ce 100644 --- a/communicate/communicate.c +++ b/communicate/communicate.c @@ -41,6 +41,7 @@ STD_DATA *initStandardData(unsigned int type, SID *s_id){ p_std->type = type; p_std->size = 0; p_std->location = 0; + p_std->read_data = 0; if(s_id == NULL) p_std->s_id = getS_id(STANDARD_DATA, 2); else p_std->s_id = copyS_id(s_id); @@ -89,6 +90,7 @@ int dataFileAddStandardData(D_FILE *p_dfile, STD_DATA *p_std){ } int dataFileWriteIn(D_FILE *p_dfile){ + fwrite(p_dfile->pf_head->head_test, sizeof(char), 18, p_dfile->fp); fwrite(&p_dfile->pf_head->data_num, sizeof(unsigned long long), 1, p_dfile->fp); fwrite("STDINFO", sizeof(char), 8, p_dfile->fp); @@ -385,6 +387,7 @@ int readStandardData(D_FILE *p_dfile,STD_DATA *p_std){ freeS_id(sb_sid); } } + p_std->read_data = 1; return 0; } diff --git a/list/list.c b/list/list.c index 39d86df..186fd8c 100644 --- a/list/list.c +++ b/list/list.c @@ -138,7 +138,7 @@ List *initList(_Bool if_sid) { return p_list; } -int initMallocValueForNode(Node *p_node, unsigned int type, const void *p_value) { +inline int initMallocValueForNode(Node *p_node, unsigned int type, const void *p_value) { p_node->type = type; p_node->value = (void *)p_value; return 0; @@ -149,10 +149,11 @@ int insertInHead(List *p_list, Node *p_node) { if(p_list->p_lq != NULL){ if(p_list->head->type == HOLE){ Node *t_node = p_list->head; - replaceNode(p_list, p_list->head, p_node); - p_list->p_lq->fn_node[0] = p_node; - releaseNode(t_node); - indexChange(p_list, 0, 1); + while(t_node->type == HOLE) t_node = t_node->next; + replaceNode(p_list, t_node->last, p_node); + p_list->p_lq->fn_node[t_node->last->f_number] = p_node; + indexChange(p_list, t_node->last->f_number, 1); + releaseNode(t_node->last); return 0; } indexChange(p_list, 0, 1); @@ -198,8 +199,10 @@ int insertInTail(List *p_list, Node *p_node) { if(p_list->p_lq != NULL){ p_node->f_number = p_list->p_lq->rlst_len; - if(p_list->p_lq->rlst_len >= p_list->p_lq->rlst_len + FN_NODE_SPARE) - p_list->p_lq->fn_node = realloc(p_list->p_lq->fn_node, sizeof(Node *) * (p_list->p_lq->rlst_len + FN_NODE_SPARE)); + if(p_list->p_lq->rlst_len >= p_list->p_lq->fn_len){ + p_list->p_lq->fn_node = realloc(p_list->p_lq->fn_node, sizeof(Node *) * (p_list->p_lq->fn_len + FN_NODE_SPARE)); + p_list->p_lq->fn_len += FN_NODE_SPARE; + } p_list->p_lq->fn_node[p_list->p_lq->rlst_len] = p_node; p_list->p_lq->rlst_len++; } @@ -225,7 +228,7 @@ int releaseNode(Node *p_node) { removeByNode(node_list, p_node); } if (p_node->value != NULL) { - if (p_node->type != POINTER) { + if (p_node->type != POINTER && p_node->type != HOLE) { if (p_node->type == LIST) { releaseList((List *)p_node->value); } @@ -331,16 +334,14 @@ int removeByNode(List *p_list, Node *p_node) { p_node->next->last = p_node->last; } else{ - if(p_node != p_list->head){ - if(p_node->f_number == 0){ - Node *fn_node = findFnNode(p_list, p_node); - indexChange(p_list, fn_node->f_number, -1); - p_node->last->next = p_node->next; - p_node->next->last = p_node->last; - } - else{ - digHole(p_list, p_node); - } + if(p_node->f_number == 0){ + Node *fn_node = findFnNode(p_list, p_node); + indexChange(p_list, fn_node->f_number, -1); + p_node->last->next = p_node->next; + p_node->next->last = p_node->last; + } + else{ + digHole(p_list, p_node); } p_list->length -= 1; } @@ -352,8 +353,22 @@ Node *popFromHead(List *p_list) { return NULL; Node *p_node = p_list->head; if(p_list->p_lq != NULL){ - if(p_list->p_lq->fn_node[0] == p_list->head){ - digHole(p_list, p_list->head); + if(p_list->head->type == HOLE){ + Node *t_node = p_list->head; + while(t_node->type == HOLE) t_node = t_node->next; + if(t_node->f_number != 0){ + Node *r_node = t_node; + digHole(p_list, t_node); + return r_node; + } + p_node = t_node; + } + else{ + if(p_list->p_lq->fn_node[0] == p_list->head){ + Node *r_node = p_list->head; + digHole(p_list, p_list->head); + return r_node; + } } } else{ @@ -376,8 +391,14 @@ Node *popFromTail(List *p_list) { return NULL; else { if(p_list->p_lq != NULL){ - if(p_list->p_lq->fn_node[p_list->p_lq->rlst_len] == p_list->tail) - p_list->p_lq->fn_node = realloc(p_list->p_lq->fn_node, sizeof(p_list->p_lq->rlst_len - 1)); + if(p_list->p_lq->fn_node[p_list->p_lq->rlst_len - 1] == p_list->tail){ + p_list->p_lq->fn_node[p_list->p_lq->rlst_len - 1] = NULL; + p_list->p_lq->rlst_len--; + if(p_list->p_lq->fn_len - p_list->p_lq->rlst_len > FN_NODE_SPARE * 2){ + p_list->p_lq->fn_node = realloc(p_list->p_lq->fn_node, sizeof(p_list->p_lq->fn_len - FN_NODE_SPARE)); + p_list->p_lq->fn_len -= FN_NODE_SPARE; + } + } } //Node *tmp = p_list->tail; p_list->tail->last->next = NULL; @@ -743,27 +764,41 @@ int enableListQuick(List *p_list){ p_list->p_lq = malloc(sizeof(struct list_quick)); register struct list_quick *p_lq = p_list->p_lq; p_lq->rlst_len = p_list->length; - p_lq->fn_node = malloc(sizeof(Node *) * (p_list->length + FN_NODE_SPARE)); + p_lq->fn_node = NULL; p_lq->if_sort = 0; + p_lq->idxc_count = 0; + p_lq->stdid_lst = initList(0); + for(int i = 0; i < INDEX_CHANGE_MAX; i++) p_lq->idxc_lst[i] = NULL; refreshFnNode(p_list); //sortListById(p_list, 0, p_list->length); - return 0; } - return -1; + return 0; } int refreshFnNode(List *p_list){ if(p_list->p_lq != NULL){ + struct list_quick *blk_plq = p_list->p_lq; initIdxcList(p_list); if(p_list->p_lq->fn_node != NULL) free(p_list->p_lq->fn_node); - p_list->p_lq->fn_node = malloc(sizeof(Node *) * p_list->length); + p_list->p_lq->fn_node = malloc(sizeof(Node *) * (p_list->length + FN_NODE_SPARE)); + p_list->p_lq->fn_len = p_list->length + FN_NODE_SPARE; + p_list->p_lq->rlst_len = p_list->length; register Node *p_node = p_list->head; unsigned long long i = 0; + p_list->p_lq = NULL; while (p_node != NULL) { - p_node->f_number = i++; + if(p_node->type == HOLE){ + removeByNode(p_list, p_node); + releaseNode(p_node); + p_node = p_node->next; + continue; + } + p_node->f_number = i; p_list->p_lq->fn_node[i] = p_node; p_node = p_node->next; + i++; } + p_list->p_lq = blk_plq; return 0; } return -1; @@ -821,14 +856,29 @@ int indexTransfromer(List *p_list, unsigned long long m_index){ Node *getNodeByFnNode(List *p_list, unsigned long long index){ if(p_list->p_lq != NULL){ struct list_quick *p_lq = p_list->p_lq; - Node *p_node = p_lq->fn_node[index]; + Node *p_node = NULL; + if(p_lq->rlst_len > index) p_node = p_lq->fn_node[index]; + else p_node = p_lq->fn_node[p_lq->rlst_len - 1]; if(p_lq->idxc_count > 0){ int total_move = indexTransfromer(p_list, index); - if(total_move >=0){ - for(int i = 0; i < ABS(total_move); i++) p_node = p_node->last; + int temp = ABS(total_move); + if(p_lq->rlst_len > index){ + if(total_move >=0){ + for(int i = 0; i < temp; ){ + p_node = p_node->last; + if(p_node->type != HOLE) i++; + } + } + else{ + for(int i = 0; i < temp; ){ + p_node = p_node->next; + if(p_node->type != HOLE) i--; + } + } } else{ - for(int i = 0; i < ABS(total_move); i++) p_node = p_node->next; + unsigned long long jump = index - temp; + for(int i = 0; i < jump; i++) p_node = p_node->next; } return p_node; } @@ -866,7 +916,6 @@ int insertAfterNode(List *p_list, Node *t_node, Node *p_node){ if(p_list->p_lq != NULL){ Node *fn_node = findFnNode(p_list, p_node); - while(fn_node->f_number != 0) fn_node = fn_node->next; indexChange(p_list, fn_node->f_number, 1); } p_list->length += 1; @@ -906,7 +955,7 @@ int insertBeforeNode(List *p_list, Node*t_node, Node *p_node){ Node *findFnNode(List *p_list, Node *p_node){ Node *fn_node = p_node; - while(fn_node->f_number != 0) fn_node = fn_node->next; + while(fn_node->f_number == 0) fn_node = fn_node->next; return fn_node; } diff --git a/list/list.h b/list/list.h index 2c5fb79..bfe0099 100644 --- a/list/list.h +++ b/list/list.h @@ -22,6 +22,13 @@ #define lisrtp(list, x) insertInTail(list, lnp(x)); #define lisrts(list, x) insertInTail(list, lns(x)); +#define lisrhi(list, x) insertInHead(list, lni(x)); +#define lisrhd(list, x) insertInHead(list, lnd(x)); +#define lisrhu(list, x) insertInHead(list, lnu(x)); +#define lisrhull(list, x) insertInHead(list, lnull(x)); +#define lisrhp(list, x) insertInHead(list, lnp(x)); +#define lisrhs(list, x) insertInHead(list, lns(x)); + #define lidxp(list, x) getByPointerForNode(findByIndexForNode(list, x)) #define lidxi(list, x) getByIntForNode(findByIndexForNode(list, x)) #define lidxd(list, x) getByDoubleForNode(findByIndexForNode(list, x)) diff --git a/test.c b/test.c index 77ed001..3438b13 100644 --- a/test.c +++ b/test.c @@ -60,23 +60,44 @@ int stack(void) { releaseStack(t_stack); return 0; } - + +int time_avg(void){ + List *t_list = initList(0); + int64_t time_all = 0; + for(int i = 0; i < 65535; i++) insertInTail(t_list,nodeWithInt(i, 0)); + for(int i = 0; i < 65535; i++) insertInTail(t_list,nodeWithInt(i, 0)); + for(int i = 0; i < 65535; i++) insertInTail(t_list,nodeWithInt(i, 0)); + for(int i = 0; i < 65535; i++) insertInTail(t_list,nodeWithInt(i, 0)); + for(int i = 0; i < 65535; i++) insertInTail(t_list,nodeWithInt(i, 0)); + enableListQuick(t_list); + for (int i = 0; i < 100; i++){ + struct timeval start,stop; + gettimeofday(&start,0); + findByIndexForNode(t_list, 200000); + gettimeofday(&stop,0); + time_all += (int64_t)(stop.tv_usec-start.tv_usec); + + } + double avg_time = (double) (time_all/(int64_t)100); + printf("TIME: %fus\n",avg_time); + releaseList(t_list); + return 0; +} int main(int argc, char **argv) { - - for (int i = 0; i < 65535; i++){ - list(); - /*D_FILE *p_dfile = initDataFileForRead("data.db"); - readDataFileInfo(p_dfile); - SID *temp_sid = setS_idWithString("f7dd8f0a75a0c20e4dca1b78347083cf"); - readStandardDataBySid(p_dfile, temp_sid); - freeS_id(temp_sid); - printListForCustom(p_dfile->pf_stdlst, printStandardData); - List *t_list = standardDataToList(p_dfile->pf_stdlst->head->value); - printList(t_list); - releaseList(t_list); - releaseDFile(p_dfile);*/ - usleep(500); - } + //time_avg(); + List *t_list = initList(0); + for(int i = 0; i < 65535; i++) lisrti(t_list, i); + for(int i = 0; i < 65535; i++) lisrti(t_list, i); + for(int i = 0; i < 65535; i++) lisrti(t_list, i); + for(int i = 0; i < 65535; i++) lisrti(t_list, i); + for(int i = 0; i < 65535; i++) lisrti(t_list, i); + enableListQuick(t_list); + findByIndexForNode(t_list, 300000); + lisrhi(t_list, -1); + insertBeforeNode(t_list, findByIndexForNode(t_list, 5), lni(6)); + popFromHead(t_list); + Node *p_node = findByIndexForNode(t_list, 7); + releaseList(t_list); return 0; } diff --git a/test.h b/test.h index b5f7cb8..8993740 100644 --- a/test.h +++ b/test.h @@ -1,5 +1,7 @@ #ifndef TEST_H -#define TEST_H +#define TEST_H + +#include #include "type/type.h" #include "list/list_expand.h" @@ -9,6 +11,7 @@ int stack(void); int list(void); -int tree(void); +int tree(void); +int time_avg(void); #endif // TEST_H diff --git a/type/type.h b/type/type.h index 2bea1ab..beef564 100644 --- a/type/type.h +++ b/type/type.h @@ -50,8 +50,8 @@ #define FILE_TSET_LEN 18 #define HEAD_TEST_LEN 9 #define INFO_TEST_LEN 8 -#define ENABLE_LIST_QUICK 1500 -#define FN_NODE_SPARE 12 +#define ENABLE_LIST_QUICK 65535 +#define FN_NODE_SPARE 500 #define INDEX_CHANGE_MAX 500 #define INDEX_DISTANCE_MAX 120 #define STD_TEXT_LEN 4 @@ -60,7 +60,7 @@ #define STANDARD 0x2 #define LOW 0x1 -#define ABS(x) (x>0)?(x):(-x) +#define ABS(x) ((x>0)?(x):(-x)) typedef struct md5_ctx{ unsigned int count[2]; @@ -125,6 +125,7 @@ struct list_quick{ Node **fn_node; _Bool if_sort; unsigned int idxc_count; + unsigned long long fn_len; struct index_change *idxc_lst[INDEX_CHANGE_MAX]; unsigned long long rlst_len; FILE *fp; @@ -224,6 +225,7 @@ typedef struct standard_data_head{ typedef struct standard_data{ SID *s_id; + int read_data; unsigned int type; unsigned long long size; unsigned long long location;