Added some functions and fixed.
This commit is contained in:
parent
5a96a5ab9e
commit
498d988a5e
@ -120,6 +120,7 @@
|
|||||||
927993B420CB87D6008CE3A9 = {
|
927993B420CB87D6008CE3A9 = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
92A15CFC211442C700826FB8 /* graph */,
|
||||||
9286EB7C2114021E00752977 /* communicate */,
|
9286EB7C2114021E00752977 /* communicate */,
|
||||||
9286EB78211400BD00752977 /* error */,
|
9286EB78211400BD00752977 /* error */,
|
||||||
9269D4F1210F1B9E00161557 /* id */,
|
9269D4F1210F1B9E00161557 /* id */,
|
||||||
@ -159,6 +160,13 @@
|
|||||||
name = communicate;
|
name = communicate;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
92A15CFC211442C700826FB8 /* graph */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
);
|
||||||
|
name = graph;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
|
@ -3,10 +3,33 @@
|
|||||||
version = "1.0">
|
version = "1.0">
|
||||||
<ContextStates>
|
<ContextStates>
|
||||||
<ContextState
|
<ContextState
|
||||||
contextName = "init_node:list.h">
|
contextName = "freeS_id:id.c">
|
||||||
|
</ContextState>
|
||||||
|
<ContextState
|
||||||
|
contextName = "asciiStringToS_id:id.c">
|
||||||
<PersistentStrings>
|
<PersistentStrings>
|
||||||
<PersistentString
|
<PersistentString
|
||||||
value = "list_list">
|
value = "buff[string_len-1]">
|
||||||
|
</PersistentString>
|
||||||
|
<PersistentString
|
||||||
|
value = "5 + i * 5 + j">
|
||||||
|
</PersistentString>
|
||||||
|
<PersistentString
|
||||||
|
value = "s_id->value[i]">
|
||||||
|
</PersistentString>
|
||||||
|
<PersistentString
|
||||||
|
value = "strlen(string)">
|
||||||
|
</PersistentString>
|
||||||
|
</PersistentStrings>
|
||||||
|
</ContextState>
|
||||||
|
<ContextState
|
||||||
|
contextName = "s_idToASCIIString:id.c">
|
||||||
|
<PersistentStrings>
|
||||||
|
<PersistentString
|
||||||
|
value = "sizeof(char)">
|
||||||
|
</PersistentString>
|
||||||
|
<PersistentString
|
||||||
|
value = "buff[buff_count]">
|
||||||
</PersistentString>
|
</PersistentString>
|
||||||
</PersistentStrings>
|
</PersistentStrings>
|
||||||
</ContextState>
|
</ContextState>
|
||||||
@ -27,8 +50,27 @@
|
|||||||
<ContextState
|
<ContextState
|
||||||
contextName = "releaseMalloc:list.h">
|
contextName = "releaseMalloc:list.h">
|
||||||
</ContextState>
|
</ContextState>
|
||||||
|
<ContextState
|
||||||
|
contextName = "init_node:list.h">
|
||||||
|
<PersistentStrings>
|
||||||
|
<PersistentString
|
||||||
|
value = "list_list">
|
||||||
|
</PersistentString>
|
||||||
|
</PersistentStrings>
|
||||||
|
</ContextState>
|
||||||
|
<ContextState
|
||||||
|
contextName = "initS_id:id.c">
|
||||||
|
</ContextState>
|
||||||
<ContextState
|
<ContextState
|
||||||
contextName = "init_list:list.h">
|
contextName = "init_list:list.h">
|
||||||
</ContextState>
|
</ContextState>
|
||||||
|
<ContextState
|
||||||
|
contextName = "main:test.c">
|
||||||
|
<PersistentStrings>
|
||||||
|
<PersistentString
|
||||||
|
value = "strlen(string)">
|
||||||
|
</PersistentString>
|
||||||
|
</PersistentStrings>
|
||||||
|
</ContextState>
|
||||||
</ContextStates>
|
</ContextStates>
|
||||||
</VariablesViewState>
|
</VariablesViewState>
|
||||||
|
@ -154,7 +154,7 @@
|
|||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "test.c"
|
filePath = "test.c"
|
||||||
timestampString = "554959944.593868"
|
timestampString = "554985107.001519"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "64"
|
startingLineNumber = "64"
|
||||||
@ -179,5 +179,344 @@
|
|||||||
landmarkType = "9">
|
landmarkType = "9">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.0016969"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "19"
|
||||||
|
endingLineNumber = "19"
|
||||||
|
landmarkName = "initS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.001803"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "81"
|
||||||
|
endingLineNumber = "81"
|
||||||
|
landmarkName = "s_idToASCIIString"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.001882"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "84"
|
||||||
|
endingLineNumber = "84"
|
||||||
|
landmarkName = "s_idToASCIIString"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.001967"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "101"
|
||||||
|
endingLineNumber = "101"
|
||||||
|
landmarkName = "s_idToASCIIString"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002043"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "115"
|
||||||
|
endingLineNumber = "115"
|
||||||
|
landmarkName = "s_idToASCIIString"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
condition = "buff_count == 26"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002121"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "107"
|
||||||
|
endingLineNumber = "107"
|
||||||
|
landmarkName = "s_idToASCIIString"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
condition = "string_len != 25"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002201"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "170"
|
||||||
|
endingLineNumber = "170"
|
||||||
|
landmarkName = "asciiStringToS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002274"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "112"
|
||||||
|
endingLineNumber = "112"
|
||||||
|
landmarkName = "s_idToASCIIString"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
condition = "buff_count == 26"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002347"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "118"
|
||||||
|
endingLineNumber = "118"
|
||||||
|
landmarkName = "s_idToASCIIString"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002418"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "122"
|
||||||
|
endingLineNumber = "122"
|
||||||
|
landmarkName = "s_idToASCIIString"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.0024869"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "126"
|
||||||
|
endingLineNumber = "126"
|
||||||
|
landmarkName = "s_idToASCIIString"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002557"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "174"
|
||||||
|
endingLineNumber = "174"
|
||||||
|
landmarkName = "asciiStringToS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002624"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "218"
|
||||||
|
endingLineNumber = "218"
|
||||||
|
landmarkName = "freeS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002689"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "163"
|
||||||
|
endingLineNumber = "163"
|
||||||
|
landmarkName = "asciiStringToS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002749"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "20"
|
||||||
|
endingLineNumber = "20"
|
||||||
|
landmarkName = "initS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002807"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "172"
|
||||||
|
endingLineNumber = "172"
|
||||||
|
landmarkName = "asciiStringToS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002861"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "182"
|
||||||
|
endingLineNumber = "182"
|
||||||
|
landmarkName = "asciiStringToS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002926"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "105"
|
||||||
|
endingLineNumber = "105"
|
||||||
|
landmarkName = "s_idToASCIIString"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.002979"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "184"
|
||||||
|
endingLineNumber = "184"
|
||||||
|
landmarkName = "asciiStringToS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.003031"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "217"
|
||||||
|
endingLineNumber = "217"
|
||||||
|
landmarkName = "freeS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
shouldBeEnabled = "No"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "id/id.c"
|
||||||
|
timestampString = "554985107.003078"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "195"
|
||||||
|
endingLineNumber = "195"
|
||||||
|
landmarkName = "asciiStringToS_id"
|
||||||
|
landmarkType = "9">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
</Breakpoints>
|
</Breakpoints>
|
||||||
</Bucket>
|
</Bucket>
|
||||||
|
@ -52,32 +52,7 @@ int loadFromFile(FILE *fp,char* number) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pushInfo(Info *p_info, const char *head, const char *body) {
|
int saveError(Error *p_error) {
|
||||||
p_info->head = (char *)malloc(sizeof(char) * strlen(head));
|
|
||||||
p_info->body = (char *)malloc(sizeof(char) * strlen(body));
|
|
||||||
strcpy(p_info->head, head);
|
|
||||||
strcpy(p_info->body, body);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int pushError(unsigned int type, int pri, Info *p_info) {
|
|
||||||
Error error;
|
|
||||||
error.type = type;
|
|
||||||
error.priority = pri;
|
|
||||||
error.p_info = p_info;
|
|
||||||
error.time = time(NULL);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int pushNotice(unsigned int type, Info *p_info) {
|
|
||||||
Notice notice;
|
|
||||||
notice.type = type;
|
|
||||||
notice.p_info = p_info;
|
|
||||||
notice.time = time(NULL);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int saveError(Error *p_error) {
|
|
||||||
fprintf(logfile.fp,
|
fprintf(logfile.fp,
|
||||||
"--------------------\n\
|
"--------------------\n\
|
||||||
ERROR\n\
|
ERROR\n\
|
||||||
@ -88,10 +63,10 @@ static int saveError(Error *p_error) {
|
|||||||
%s\n\
|
%s\n\
|
||||||
%s\n\
|
%s\n\
|
||||||
---------------------\n",
|
---------------------\n",
|
||||||
p_error->type, p_error->priority, ctime( &(p_error->time) ), p_error->p_info->head, p_error->p_info->body);
|
p_error->type, p_error->priority, ctime( &(p_error->time) ), p_error->info.head, p_error->info.body);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static int saveNotice(Notice *p_notice) {
|
int saveNotice(Notice *p_notice) {
|
||||||
fprintf(logfile.fp,
|
fprintf(logfile.fp,
|
||||||
"--------------------\n\
|
"--------------------\n\
|
||||||
NOTICE\n\
|
NOTICE\n\
|
||||||
@ -101,6 +76,6 @@ static int saveNotice(Notice *p_notice) {
|
|||||||
%s\n\
|
%s\n\
|
||||||
%s\n\
|
%s\n\
|
||||||
----------------------\n",
|
----------------------\n",
|
||||||
p_notice->type, ctime( &(p_notice->time) ), p_notice->p_info->head, p_notice->p_info->body);
|
p_notice->type, ctime( &(p_notice->time) ), p_notice->info.head, p_notice->info.body);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,37 +1,8 @@
|
|||||||
#include "../list/list_expand.h"
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#ifndef ERROR_H
|
#ifndef ERROR_H
|
||||||
#define ERROR_H
|
#define ERROR_H
|
||||||
|
|
||||||
#define HIGH 0x3
|
#include "../type/type.h"
|
||||||
#define STANDARD 0x2
|
#include "../list/list_expand.h"
|
||||||
#define LOW 0x1
|
|
||||||
|
|
||||||
typedef struct Info{
|
|
||||||
char *head;
|
|
||||||
char *body;
|
|
||||||
}Info;
|
|
||||||
|
|
||||||
typedef struct Error{
|
|
||||||
unsigned int type;
|
|
||||||
int priority;
|
|
||||||
Info *p_info;
|
|
||||||
time_t time;
|
|
||||||
}Error;
|
|
||||||
|
|
||||||
typedef struct Notice{
|
|
||||||
unsigned int type;
|
|
||||||
Info *p_info;
|
|
||||||
time_t time;
|
|
||||||
}Notice;
|
|
||||||
|
|
||||||
typedef struct Log{
|
|
||||||
FILE *fp;
|
|
||||||
int if_enable;
|
|
||||||
unsigned long int id;
|
|
||||||
}Log;
|
|
||||||
|
|
||||||
Log logfile;
|
Log logfile;
|
||||||
List *error_list = NULL;
|
List *error_list = NULL;
|
||||||
@ -42,14 +13,10 @@ int initErrorSystem(void);
|
|||||||
|
|
||||||
int setLogDirectory(const char *path);
|
int setLogDirectory(const char *path);
|
||||||
int closeLogDirectory(void);
|
int closeLogDirectory(void);
|
||||||
|
|
||||||
int loadFromFile(FILE *fp,char* number);
|
int loadFromFile(FILE *fp,char* number);
|
||||||
|
|
||||||
int pushInfo(Info *p_info, const char *head,const char *body);
|
int saveError(Error *p_error);
|
||||||
int pushError(unsigned int type, int pri, Info *p_info);
|
int saveNotice(Notice *p_notice);
|
||||||
int pushNotice(unsigned int type, Info *p_info);
|
|
||||||
|
|
||||||
//为保证处理效果,不允许外调下列函数
|
|
||||||
static int saveError(Error *p_error);
|
|
||||||
static int saveNotice(Notice *p_notice);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
86
id/id.c
86
id/id.c
@ -22,30 +22,19 @@ SID *initS_id(unsigned int deep_level){
|
|||||||
p_sid->value = NULL;
|
p_sid->value = NULL;
|
||||||
p_sid->value_deeper = NULL;
|
p_sid->value_deeper = NULL;
|
||||||
p_sid->value_deepest = NULL;
|
p_sid->value_deepest = NULL;
|
||||||
if (deep_level > 0) p_sid->value = (unsigned int (*)[DEEPC_LEN])malloc(sizeof(unsigned int)*DEEPC_LEN);
|
if (deep_level > 0) p_sid->value = (unsigned int *)malloc(sizeof(unsigned int)*DEEPC_LEN);
|
||||||
if (deep_level > 1) p_sid->value_deeper = (unsigned int (*)[DEEPB_LEN])malloc(sizeof(unsigned int)*DEEPB_LEN);
|
if (deep_level > 1) p_sid->value_deeper = (unsigned int *)malloc(sizeof(unsigned int)*DEEPB_LEN);
|
||||||
if (deep_level > 2) p_sid->value_deepest = (unsigned int (*)[DEEPA_LEN])malloc(sizeof(unsigned int)*DEEPA_LEN);
|
if (deep_level > 2) p_sid->value_deepest = (unsigned int *)malloc(sizeof(unsigned int)*DEEPA_LEN);
|
||||||
return p_sid;
|
return p_sid;
|
||||||
}
|
}
|
||||||
|
|
||||||
SID *getS_id(unsigned int type, unsigned int deep_level){
|
SID *getS_id(unsigned int type, unsigned int deep_level){
|
||||||
SID *p_sid = (SID *)malloc(sizeof(SID));
|
SID *p_sid = initS_id(deep_level);
|
||||||
p_sid->type = type;
|
p_sid->type = type;
|
||||||
p_sid->deep = deep_level;
|
|
||||||
p_sid->value = NULL;
|
|
||||||
p_sid->value_deeper = NULL;
|
|
||||||
p_sid->value_deepest = NULL;
|
|
||||||
if(deep_level > 0){
|
if(deep_level > 0){
|
||||||
p_sid->value = (unsigned int (*)[DEEPC_LEN])malloc(sizeof(unsigned int)*DEEPC_LEN);
|
for(int i = 0; i < DEEPC_LEN; i++) p_sid->value[i] = rand()%65535;
|
||||||
for(int i = 0; i < DEEPC_LEN; i++) (*p_sid->value)[i] = rand()%65535;
|
if(deep_level > 1) for(int i = 0; i < DEEPB_LEN; i++) p_sid->value_deeper[i] = rand()%65535;
|
||||||
if(deep_level > 1){
|
if (deep_level > 2) for(int i = 0; i < DEEPA_LEN; i++) p_sid->value_deepest[i] = rand()%65535;
|
||||||
p_sid->value_deeper = (unsigned int (*)[DEEPB_LEN])malloc(sizeof(unsigned int)*DEEPB_LEN);
|
|
||||||
for(int i = 0; i < DEEPB_LEN; i++) (*p_sid->value_deeper)[i] = rand()%65535;
|
|
||||||
}
|
|
||||||
if (deep_level > 2) {
|
|
||||||
p_sid->value_deepest = (unsigned int (*)[DEEPA_LEN])malloc(sizeof(unsigned int)*DEEPA_LEN);
|
|
||||||
for(int i = 0; i < DEEPA_LEN; i++) (*p_sid->value_deepest)[i] = rand()%65535;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return p_sid;
|
return p_sid;
|
||||||
@ -56,20 +45,20 @@ int fitS_id(const SID *fs_id, const SID *ss_id){
|
|||||||
if(fs_id->deep == ss_id->deep){
|
if(fs_id->deep == ss_id->deep){
|
||||||
if (fs_id->deep > 0)
|
if (fs_id->deep > 0)
|
||||||
for(int i = 0; i < DEEPC_LEN; i++){
|
for(int i = 0; i < DEEPC_LEN; i++){
|
||||||
if((*fs_id->value)[i] == (*ss_id->value)[i]) continue;
|
if(fs_id->value[i] == ss_id->value[i]) continue;
|
||||||
else if((*fs_id->value)[i] > (*ss_id->value)[i]) return 1;
|
else if(fs_id->value[i] > ss_id->value[i]) return 1;
|
||||||
else return -1;
|
else return -1;
|
||||||
}
|
}
|
||||||
if (fs_id->deep > 1)
|
if (fs_id->deep > 1)
|
||||||
for(int i = 0; i < DEEPB_LEN; i++){
|
for(int i = 0; i < DEEPB_LEN; i++){
|
||||||
if((*fs_id->value_deeper)[i] == (*ss_id->value_deeper)[i]) continue;
|
if(fs_id->value_deeper[i] == ss_id->value_deeper[i]) continue;
|
||||||
else if((*fs_id->value_deeper)[i] > (*ss_id->value_deeper)[i]) return 1;
|
else if(fs_id->value_deeper[i] > ss_id->value_deeper[i]) return 1;
|
||||||
else return -1;
|
else return -1;
|
||||||
}
|
}
|
||||||
if (fs_id->deep > 2)
|
if (fs_id->deep > 2)
|
||||||
for(int i = 0; i < DEEPA_LEN; i++){
|
for(int i = 0; i < DEEPA_LEN; i++){
|
||||||
if((*fs_id->value_deepest)[i] == (*ss_id->value_deepest)[i]) continue;
|
if(fs_id->value_deepest[i] == ss_id->value_deepest[i]) continue;
|
||||||
else if((*fs_id->value_deepest)[i] > (*ss_id->value_deepest)[i]) return 1;
|
else if(fs_id->value_deepest[i] > ss_id->value_deepest[i]) return 1;
|
||||||
else return -1;
|
else return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -95,17 +84,17 @@ char *s_idToASCIIString(const SID *s_id){
|
|||||||
unsigned int buff[DATA_BIT];
|
unsigned int buff[DATA_BIT];
|
||||||
if(s_id->deep > 0){
|
if(s_id->deep > 0){
|
||||||
if (s_id->deep == DEEPC){
|
if (s_id->deep == DEEPC){
|
||||||
string = (char *) malloc(sizeof(char) * (DEEPC_LEN + 1) * DATA_BIT + 1);
|
string = (char *) malloc(sizeof(char) * (DEEPC_LEN + 1) * DATA_BIT);
|
||||||
deep_len = DEEPC_LEN + 1;
|
deep_len = DEEPC_LEN + 1;
|
||||||
deep_len *= DATA_BIT;
|
deep_len *= DATA_BIT;
|
||||||
}
|
}
|
||||||
else if (s_id->deep == DEEPB){
|
else if (s_id->deep == DEEPB){
|
||||||
string = (char *) malloc(sizeof(char) * (DEEPC_LEN + DEEPB_LEN + 1) * DATA_BIT + 1);
|
string = (char *) malloc(sizeof(char) * (DEEPC_LEN + DEEPB_LEN + 1) * DATA_BIT);
|
||||||
deep_len = DEEPC_LEN + DEEPB_LEN + 1;
|
deep_len = DEEPC_LEN + DEEPB_LEN + 1;
|
||||||
deep_len *= DATA_BIT;
|
deep_len *= DATA_BIT;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
string = (char *)malloc(sizeof(char) * (DEEPC_LEN + DEEPB_LEN + DEEPA_LEN + 1) * DATA_BIT + 1);
|
string = (char *)malloc(sizeof(char) * (DEEPC_LEN + DEEPB_LEN + DEEPA_LEN + 1) * DATA_BIT);
|
||||||
deep_len = DEEPC_LEN + DEEPB_LEN + DEEPA_LEN + 1;
|
deep_len = DEEPC_LEN + DEEPB_LEN + DEEPA_LEN + 1;
|
||||||
deep_len *= DATA_BIT;
|
deep_len *= DATA_BIT;
|
||||||
}
|
}
|
||||||
@ -121,7 +110,7 @@ char *s_idToASCIIString(const SID *s_id){
|
|||||||
}
|
}
|
||||||
deep_len -= DATA_BIT;
|
deep_len -= DATA_BIT;
|
||||||
for(int i = 0; i < DEEPC_LEN; i++){
|
for(int i = 0; i < DEEPC_LEN; i++){
|
||||||
temp = (*s_id->value)[i];
|
temp = s_id->value[i];
|
||||||
for (int i = 0; i < DATA_BIT; i++) buff[i] = 0;
|
for (int i = 0; i < DATA_BIT; i++) buff[i] = 0;
|
||||||
string_count = TYPE_LEN + (i) * 5;
|
string_count = TYPE_LEN + (i) * 5;
|
||||||
buff_count = DATA_BIT - 1;
|
buff_count = DATA_BIT - 1;
|
||||||
@ -135,7 +124,7 @@ char *s_idToASCIIString(const SID *s_id){
|
|||||||
deep_len -= DEEPC_LEN * DATA_BIT;
|
deep_len -= DEEPC_LEN * DATA_BIT;
|
||||||
if(deep_len > 0)
|
if(deep_len > 0)
|
||||||
for(int i = 0; i < DEEPB_LEN; i++){
|
for(int i = 0; i < DEEPB_LEN; i++){
|
||||||
temp = (*s_id->value_deeper)[i];
|
temp = s_id->value_deeper[i];
|
||||||
for (int i = 0; i < DATA_BIT; i++) buff[i] = 0;
|
for (int i = 0; i < DATA_BIT; i++) buff[i] = 0;
|
||||||
string_count = TYPE_LEN + DEEPC_LEN * DATA_BIT + (i) * DATA_BIT;
|
string_count = TYPE_LEN + DEEPC_LEN * DATA_BIT + (i) * DATA_BIT;
|
||||||
buff_count = DATA_BIT - 1;
|
buff_count = DATA_BIT - 1;
|
||||||
@ -150,7 +139,7 @@ char *s_idToASCIIString(const SID *s_id){
|
|||||||
deep_len -= DEEPB_LEN * DATA_BIT;
|
deep_len -= DEEPB_LEN * DATA_BIT;
|
||||||
if(deep_len > 0)
|
if(deep_len > 0)
|
||||||
for(int i = 0; i < DEEPA_LEN; i++){
|
for(int i = 0; i < DEEPA_LEN; i++){
|
||||||
temp = (*s_id->value_deepest)[i];
|
temp = s_id->value_deepest[i];
|
||||||
for (int i = 0; i < DATA_BIT; i++) buff[i] = 0;
|
for (int i = 0; i < DATA_BIT; i++) buff[i] = 0;
|
||||||
string_count = TYPE_LEN + (DEEPC_LEN + DEEPB_LEN) * DATA_BIT + (i) * DATA_BIT;
|
string_count = TYPE_LEN + (DEEPC_LEN + DEEPB_LEN) * DATA_BIT + (i) * DATA_BIT;
|
||||||
buff_count = DATA_BIT - 1;
|
buff_count = DATA_BIT - 1;
|
||||||
@ -162,7 +151,6 @@ char *s_idToASCIIString(const SID *s_id){
|
|||||||
}
|
}
|
||||||
for(int i = DATA_BIT - 1; i >= 0; i--) string[string_count + i] = buff[i] + 48;
|
for(int i = DATA_BIT - 1; i >= 0; i--) string[string_count + i] = buff[i] + 48;
|
||||||
}
|
}
|
||||||
printf("%s",string);
|
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@ -173,52 +161,52 @@ char *s_idToASCIIString(const SID *s_id){
|
|||||||
SID *asciiStringToS_id(const char *string){
|
SID *asciiStringToS_id(const char *string){
|
||||||
SID *s_id = NULL;
|
SID *s_id = NULL;
|
||||||
unsigned long long string_len = strlen(string);
|
unsigned long long string_len = strlen(string);
|
||||||
unsigned int *buff = (unsigned int *) malloc(sizeof(string_len - 1));
|
|
||||||
for(int i = 0; i < string_len; i++){
|
|
||||||
buff[i] = string[i] - 48;
|
|
||||||
}
|
|
||||||
if (string_len == 25) s_id = initS_id(1);
|
if (string_len == 25) s_id = initS_id(1);
|
||||||
else if (string_len == 65) s_id = initS_id(2);
|
else if (string_len == 65) s_id = initS_id(2);
|
||||||
else if (string_len == 225) s_id = initS_id(3);
|
else if (string_len == 225) s_id = initS_id(3);
|
||||||
else return NULL;
|
else return NULL;
|
||||||
|
|
||||||
|
unsigned int *buff = (unsigned int *) malloc(sizeof(unsigned int) * (string_len));
|
||||||
|
for(int i = 0; i < string_len; i++){
|
||||||
|
buff[i] = (unsigned int)string[i] - 48;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%s\n",string);
|
||||||
|
|
||||||
|
s_id->type = 0;
|
||||||
for (int i = 0; i < 5; i++){
|
for (int i = 0; i < 5; i++){
|
||||||
s_id->type += buff[i] ;
|
s_id->type += buff[i] ;
|
||||||
s_id->type *= 10;
|
s_id->type *= 10u;
|
||||||
}
|
}
|
||||||
s_id->type /= 10;
|
s_id->type /= 10u;
|
||||||
|
|
||||||
if (string_len >= 25){
|
if (string_len >= 25){
|
||||||
for(int i = 0; i < DEEPC_LEN; i++){
|
for(int i = 0; i < DEEPC_LEN; i++){
|
||||||
(*s_id->value)[i] = 0;
|
s_id->value[i] = 0;
|
||||||
for (int j = 0; j < 5; j++){
|
for (int j = 0; j < 5; j++){
|
||||||
(*s_id->value)[i] += (int)buff[5 + i * 5 + j];
|
s_id->value[i] += (unsigned int)buff[5 + i * 5 + j];
|
||||||
(*s_id->value)[i] *= 10;
|
if(j < 4) s_id->value[i] *= 10;
|
||||||
}
|
}
|
||||||
(*s_id->value)[i] /= 10;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string_len >= 65){
|
if (string_len >= 65){
|
||||||
for(int i = 0; i < DEEPB_LEN; i++){
|
for(int i = 0; i < DEEPB_LEN; i++){
|
||||||
(*s_id->value_deeper)[i] = 0;
|
s_id->value_deeper[i] = 0;
|
||||||
for (int j = 0; j < 5; j++){
|
for (int j = 0; j < 5; j++){
|
||||||
(*s_id->value_deeper)[i] += buff[25 + i * 5 + j];
|
s_id->value_deeper[i] += buff[25 + i * 5 + j];
|
||||||
(*s_id->value_deeper)[i] *= 10;
|
if(j < 4) s_id->value_deeper[i] *= 10;
|
||||||
}
|
}
|
||||||
(*s_id->value_deeper)[i] /= 10;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (string_len >= 225){
|
if (string_len >= 225){
|
||||||
for(int i = 0; i < DEEPA_LEN; i++){
|
for(int i = 0; i < DEEPA_LEN; i++){
|
||||||
(*s_id->value_deepest)[i] = 0;
|
s_id->value_deepest[i] = 0;
|
||||||
for (int j = 0; j < 5; j++){
|
for (int j = 0; j < 5; j++){
|
||||||
(*s_id->value_deepest)[i] += buff[65 + i * 5 + j];
|
s_id->value_deepest[i] += buff[65 + i * 5 + j];
|
||||||
(*s_id->value_deepest)[i] *= 10;
|
if(j < 4) s_id->value_deepest[i] *= 10;
|
||||||
}
|
}
|
||||||
(*s_id->value_deepest)[i] /= 10;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(buff);
|
free(buff);
|
||||||
|
16
id/id.h
16
id/id.h
@ -1,11 +1,3 @@
|
|||||||
//
|
|
||||||
// id.h
|
|
||||||
// ZE-Standard-Libraries
|
|
||||||
//
|
|
||||||
// Created by 胡一兵 on 2018/7/25.
|
|
||||||
// Copyright © 2018年 ZE. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef id_h
|
#ifndef id_h
|
||||||
#define id_h
|
#define id_h
|
||||||
|
|
||||||
@ -15,14 +7,6 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "../type/type.h"
|
#include "../type/type.h"
|
||||||
|
|
||||||
typedef struct s_id{
|
|
||||||
unsigned int type;
|
|
||||||
unsigned int (*value)[DEEPC_LEN];//4
|
|
||||||
unsigned int (*value_deeper)[DEEPB_LEN];//8
|
|
||||||
unsigned int (*value_deepest)[DEEPA_LEN];//32
|
|
||||||
unsigned int deep;
|
|
||||||
}SID;
|
|
||||||
|
|
||||||
void init_rand(void);
|
void init_rand(void);
|
||||||
unsigned long long getId(void);
|
unsigned long long getId(void);
|
||||||
|
|
||||||
|
97
list/list.c
97
list/list.c
@ -83,6 +83,7 @@ Node *initNode(void) {
|
|||||||
Node *p_node = (Node *)malloc(sizeof(Node));
|
Node *p_node = (Node *)malloc(sizeof(Node));
|
||||||
Node *prec_node = NULL;
|
Node *prec_node = NULL;
|
||||||
p_node->s_id = getS_id(LIST_NODE, 2);
|
p_node->s_id = getS_id(LIST_NODE, 2);
|
||||||
|
p_node->if_sid = 1;
|
||||||
p_node->if_malloc = 0;
|
p_node->if_malloc = 0;
|
||||||
p_node->next = NULL;
|
p_node->next = NULL;
|
||||||
p_node->last = NULL;
|
p_node->last = NULL;
|
||||||
@ -101,6 +102,7 @@ List *initList(void) {
|
|||||||
Node *p_node;
|
Node *p_node;
|
||||||
List *p_list = (List *)malloc(sizeof(List));
|
List *p_list = (List *)malloc(sizeof(List));
|
||||||
p_list->s_id = getS_id(LIST, 1);
|
p_list->s_id = getS_id(LIST, 1);
|
||||||
|
p_list->if_sid = 1;
|
||||||
p_list->head = NULL;
|
p_list->head = NULL;
|
||||||
p_list->tail = NULL;
|
p_list->tail = NULL;
|
||||||
p_list->length = 0;
|
p_list->length = 0;
|
||||||
@ -297,7 +299,6 @@ int popFromTail(List *p_list) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*该函数算法需要改进*/
|
|
||||||
Node *findByIdForNode(List *p_list, const SID *s_id) {
|
Node *findByIdForNode(List *p_list, const SID *s_id) {
|
||||||
Node *ph_node = p_list->head;
|
Node *ph_node = p_list->head;
|
||||||
Node *pt_node = p_list->tail;
|
Node *pt_node = p_list->tail;
|
||||||
@ -330,7 +331,7 @@ Node *findByValue(List *p_list, unsigned int type, const void *value) {
|
|||||||
while (p_node != NULL) {
|
while (p_node != NULL) {
|
||||||
if (p_node->type != type) {
|
if (p_node->type != type) {
|
||||||
p_node = p_node->next;
|
p_node = p_node->next;
|
||||||
continue;//跳过不合类型的节点
|
continue;
|
||||||
}
|
}
|
||||||
if (type == INT) {
|
if (type == INT) {
|
||||||
if (*((int *)p_node->value) == *((int *)value)) {
|
if (*((int *)p_node->value) == *((int *)value)) {
|
||||||
@ -457,3 +458,95 @@ int releaseOnlyNode(Node *p_node) {
|
|||||||
free(p_node);
|
free(p_node);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int releaseNodeForCustom(Node *p_node, int (*func)(void *)){
|
||||||
|
if (if_safeModeForNode == 1) {
|
||||||
|
removeByNode(node_list, p_node);
|
||||||
|
}
|
||||||
|
if (p_node->if_malloc == 1) {
|
||||||
|
if (!func(p_node->value))
|
||||||
|
showError(pushError(LIST_NODE, STANDARD, initInfo("releaseNodeForCustom()", "Error in using custom freeing value function.")));
|
||||||
|
p_node->value = NULL;
|
||||||
|
}
|
||||||
|
p_node->last = NULL;
|
||||||
|
p_node->next = NULL;
|
||||||
|
p_node->type = VOID;
|
||||||
|
p_node->value = NULL;
|
||||||
|
freeS_id(p_node->s_id);
|
||||||
|
p_node->if_malloc = 0;
|
||||||
|
free(p_node);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int releaseListForCustom(List *p_list, int (*func)(void *)){
|
||||||
|
Node *p_node, *pl_node;
|
||||||
|
p_node = p_list->head;
|
||||||
|
if (if_safeModeForNode == 1) {
|
||||||
|
Node *tar_list = findByValue(list_list, POINTER, (void *)p_list);
|
||||||
|
removeByNode(list_list, tar_list);
|
||||||
|
}
|
||||||
|
while (p_node != NULL) {
|
||||||
|
pl_node = p_node;
|
||||||
|
p_node = p_node->next;
|
||||||
|
pl_node->next = NULL;
|
||||||
|
pl_node->last = NULL;
|
||||||
|
releaseNodeForCustom(pl_node,func);
|
||||||
|
}
|
||||||
|
p_list->head = NULL;
|
||||||
|
p_list->tail = NULL;
|
||||||
|
p_list->length = 0;
|
||||||
|
freeS_id(p_list->s_id);
|
||||||
|
free(p_list);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pushInfo(Info *p_info, const char *head, const char *body) {
|
||||||
|
strcpy(p_info->head, head);
|
||||||
|
strcpy(p_info->body, body);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Error *pushError(unsigned int type, int pri, Info *p_info) {
|
||||||
|
Error *p_error = (Error *)malloc(sizeof(Error));
|
||||||
|
p_error->type = type;
|
||||||
|
p_error->priority = pri;
|
||||||
|
p_error->info = *p_info;
|
||||||
|
p_error->time = time(NULL);
|
||||||
|
free(p_info);
|
||||||
|
return p_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
Notice *pushNotice(unsigned int type, Info *p_info) {
|
||||||
|
Notice *p_notice = (Notice *)malloc(sizeof(Notice));
|
||||||
|
p_notice->type = type;
|
||||||
|
p_notice->info = *p_info;
|
||||||
|
p_notice->time = time(NULL);
|
||||||
|
free(p_info);
|
||||||
|
return p_notice;
|
||||||
|
}
|
||||||
|
|
||||||
|
Info *initInfo(const char *head, const char *body){
|
||||||
|
Info *p_info = (Info *)malloc(sizeof(Info));
|
||||||
|
pushInfo(p_info, head, body);
|
||||||
|
return p_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
int showError(Error *p_error){
|
||||||
|
printf("\n");
|
||||||
|
for (int i = 0; i < p_error->priority; i++) {
|
||||||
|
printf("!");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("(Error) %s\n",asctime(localtime(&p_error->time)));
|
||||||
|
printf("%s: %s.\n",p_error->info.head,p_error->info.body);
|
||||||
|
free(p_error);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int showWarning(Notice *p_notice){
|
||||||
|
printf("\n@");
|
||||||
|
printf("(Warning) %s\n",asctime(localtime(&p_notice->time)));
|
||||||
|
printf("%s: %s.\n",p_notice->info.head,p_notice->info.body);
|
||||||
|
free(p_notice);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
35
list/list.h
35
list/list.h
@ -1,31 +1,8 @@
|
|||||||
#ifndef LIST_H
|
#ifndef LIST_H
|
||||||
#define LIST_H
|
#define LIST_H
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include "../type/type.h"
|
#include "../type/type.h"
|
||||||
#include "../id/id.h"
|
#include "../id/id.h"
|
||||||
|
|
||||||
typedef struct Node{
|
|
||||||
SID *s_id;
|
|
||||||
void *value;
|
|
||||||
_Bool if_malloc;
|
|
||||||
_Bool if_sid;
|
|
||||||
unsigned int type;
|
|
||||||
struct Node *next;
|
|
||||||
struct Node *last;
|
|
||||||
} Node;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct List{
|
|
||||||
SID *s_id;
|
|
||||||
Node *head;
|
|
||||||
Node *tail;
|
|
||||||
unsigned long long length;
|
|
||||||
} List;
|
|
||||||
|
|
||||||
int safeModeForNode(int ifon);
|
int safeModeForNode(int ifon);
|
||||||
int releaseSingleListForsafeModeForNode(List *p_list);
|
int releaseSingleListForsafeModeForNode(List *p_list);
|
||||||
int releaseSingleNodeForsafeModeForNode(List *p_list);
|
int releaseSingleNodeForsafeModeForNode(List *p_list);
|
||||||
@ -55,13 +32,25 @@ Node *findByValue(List *p_list, unsigned int type, const void *value);
|
|||||||
List *mply_findByValue(List *p_list, unsigned int type, const void *value);
|
List *mply_findByValue(List *p_list, unsigned int type, const void *value);
|
||||||
|
|
||||||
int releaseList(List *p_list);
|
int releaseList(List *p_list);
|
||||||
|
int releaseListForCustom(List *p_list, int (*func)(void *));
|
||||||
int releaseListForSingle(List *p_list);
|
int releaseListForSingle(List *p_list);
|
||||||
int releaseNode(Node *p_node);
|
int releaseNode(Node *p_node);
|
||||||
|
int releaseNodeForCustom(Node *p_node, int (*func)(void *));
|
||||||
int releaseOnlyNode(Node *p_node);
|
int releaseOnlyNode(Node *p_node);
|
||||||
|
|
||||||
int isListEmpty(List *p_list);
|
int isListEmpty(List *p_list);
|
||||||
List *copyList(List *p_list);
|
List *copyList(List *p_list);
|
||||||
|
|
||||||
|
int pushInfo(Info *p_info, const char *head,const char *body);
|
||||||
|
Error *pushError(unsigned int type, int pri, Info *p_info);
|
||||||
|
Notice *pushNotice(unsigned int type, Info *p_info);
|
||||||
|
|
||||||
|
Info *initInfo(const char *head, const char *body);
|
||||||
|
Error *createError(Info *info,unsigned int type,int pri);
|
||||||
|
Notice *createWarning(Info *info, unsigned int type, int pri);
|
||||||
|
int showError(Error *);
|
||||||
|
int showWarning(Notice *);
|
||||||
|
|
||||||
static int if_safeModeForNode;
|
static int if_safeModeForNode;
|
||||||
static List *node_list;
|
static List *node_list;
|
||||||
static List *list_list;
|
static List *list_list;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#ifndef LIST_EXPAND_H
|
#ifndef LIST_EXPAND_H
|
||||||
#define LIST_EXPAND_H
|
#define LIST_EXPAND_H
|
||||||
|
|
||||||
#include "list.h"
|
#include "list.h"
|
||||||
|
|
||||||
Node *nodeWithInt(int);
|
Node *nodeWithInt(int);
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#ifndef STACK_H
|
#ifndef STACK_H
|
||||||
#define STACK_H
|
#define STACK_H
|
||||||
#include "../list/list_expand.h"
|
#include "../list/list_expand.h"
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#ifndef STACK_EXPAND_H
|
#ifndef STACK_EXPAND_H
|
||||||
#define STACK_EXPAND_H
|
#define STACK_EXPAND_H
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include "stack.h"
|
#include "stack.h"
|
||||||
|
|
||||||
SNode *snodeWithInt(int);
|
SNode *snodeWithInt(int);
|
||||||
|
5
test.c
5
test.c
@ -84,10 +84,5 @@ int stack(void) {
|
|||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
//tree();
|
//tree();
|
||||||
init_rand();
|
init_rand();
|
||||||
SID *p_sid = getS_id(LIST_NODE, 1);
|
|
||||||
char *string = s_idToASCIIString(p_sid);
|
|
||||||
SID *t_sid = asciiStringToS_id(string);
|
|
||||||
int if_same = simFitS_id(p_sid, t_sid);
|
|
||||||
getchar();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
4
test.h
4
test.h
@ -1,11 +1,9 @@
|
|||||||
#ifndef TEST_H
|
#ifndef TEST_H
|
||||||
#define TEST_H
|
#define TEST_H
|
||||||
|
|
||||||
#include<stdio.h>
|
#include "type/type.h"
|
||||||
|
|
||||||
#include "list/list_expand.h"
|
#include "list/list_expand.h"
|
||||||
#include "stack/stack_expand.h"
|
#include "stack/stack_expand.h"
|
||||||
#include "tree/tree.h"
|
|
||||||
#include "tree/tree_expand.h"
|
#include "tree/tree_expand.h"
|
||||||
|
|
||||||
int stack(void);
|
int stack(void);
|
||||||
|
@ -32,6 +32,7 @@ TNode *initTNode(void) {
|
|||||||
Node *s_node;
|
Node *s_node;
|
||||||
TNode *p_tnode = (TNode *)malloc(sizeof(TNode));
|
TNode *p_tnode = (TNode *)malloc(sizeof(TNode));
|
||||||
p_tnode->s_id = getS_id(TREE_NODE, 2);
|
p_tnode->s_id = getS_id(TREE_NODE, 2);
|
||||||
|
p_tnode->if_sid = 1;
|
||||||
p_tnode->child_num = 0;
|
p_tnode->child_num = 0;
|
||||||
p_tnode->father = NULL;
|
p_tnode->father = NULL;
|
||||||
p_tnode->if_malloc = 0;
|
p_tnode->if_malloc = 0;
|
||||||
@ -61,6 +62,7 @@ Tree *initTree(void) {
|
|||||||
Node *s_node;
|
Node *s_node;
|
||||||
Tree *p_tree = (Tree *)malloc(sizeof(Tree));
|
Tree *p_tree = (Tree *)malloc(sizeof(Tree));
|
||||||
p_tree->s_id = getS_id(TREE, 1);
|
p_tree->s_id = getS_id(TREE, 1);
|
||||||
|
p_tree->if_sid = 1;
|
||||||
p_tree->root = NULL;
|
p_tree->root = NULL;
|
||||||
if (if_safeModeForTree) {
|
if (if_safeModeForTree) {
|
||||||
if (if_safeModeForNode) {
|
if (if_safeModeForNode) {
|
||||||
|
21
tree/tree.h
21
tree/tree.h
@ -4,27 +4,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "../list/list_expand.h"
|
#include "../list/list_expand.h"
|
||||||
|
|
||||||
typedef struct tree_node
|
|
||||||
{
|
|
||||||
SID *s_id;
|
|
||||||
List *home;
|
|
||||||
struct tree_node *father;
|
|
||||||
Node *room;
|
|
||||||
unsigned long long child_num;
|
|
||||||
unsigned int type;
|
|
||||||
void *value;
|
|
||||||
_Bool if_malloc;
|
|
||||||
_Bool if_sid;
|
|
||||||
}TNode;
|
|
||||||
|
|
||||||
typedef struct tree
|
|
||||||
{
|
|
||||||
SID *s_id;
|
|
||||||
_Bool if_sid;
|
|
||||||
TNode *root;
|
|
||||||
}Tree;
|
|
||||||
|
|
||||||
|
|
||||||
int safeModeForTree(int ifon);
|
int safeModeForTree(int ifon);
|
||||||
int releaseAllForTree(void);
|
int releaseAllForTree(void);
|
||||||
|
|
||||||
|
86
type/type.h
86
type/type.h
@ -1,6 +1,11 @@
|
|||||||
#ifndef type_h
|
#ifndef type_h
|
||||||
#define type_h
|
#define type_h
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#define VOID 0
|
#define VOID 0
|
||||||
#define INT 1
|
#define INT 1
|
||||||
#define DOUBLE 2
|
#define DOUBLE 2
|
||||||
@ -13,16 +18,89 @@
|
|||||||
#define TREE_NODE 9
|
#define TREE_NODE 9
|
||||||
#define STACK_NODE 10
|
#define STACK_NODE 10
|
||||||
|
|
||||||
#define TYPE_LEN 5
|
|
||||||
|
|
||||||
#define DEEPC 1
|
#define DEEPC 1
|
||||||
#define DEEPB 2
|
#define DEEPB 2
|
||||||
#define DEEPA 3
|
#define DEEPA 3
|
||||||
|
#define TYPE_LEN 5
|
||||||
#define DEEPC_LEN 4
|
#define DEEPC_LEN 4
|
||||||
#define DEEPB_LEN 8
|
#define DEEPB_LEN 8
|
||||||
#define DEEPA_LEN 32
|
#define DEEPA_LEN 32
|
||||||
|
|
||||||
#define DATA_BIT 5
|
#define DATA_BIT 5
|
||||||
|
|
||||||
|
#define HIGH 0x3
|
||||||
|
#define STANDARD 0x2
|
||||||
|
#define LOW 0x1
|
||||||
|
|
||||||
|
typedef struct s_id{
|
||||||
|
unsigned int type;
|
||||||
|
unsigned int *value;//4
|
||||||
|
unsigned int *value_deeper;//8
|
||||||
|
unsigned int *value_deepest;//32
|
||||||
|
unsigned int deep;
|
||||||
|
}SID;
|
||||||
|
|
||||||
|
typedef struct Node{
|
||||||
|
SID *s_id;
|
||||||
|
void *value;
|
||||||
|
_Bool if_malloc;
|
||||||
|
_Bool if_sid;
|
||||||
|
unsigned int type;
|
||||||
|
struct Node *next;
|
||||||
|
struct Node *last;
|
||||||
|
} Node;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct List{
|
||||||
|
SID *s_id;
|
||||||
|
Node *head;
|
||||||
|
Node *tail;
|
||||||
|
_Bool if_sid;
|
||||||
|
unsigned long long length;
|
||||||
|
} List;
|
||||||
|
|
||||||
|
typedef struct Info{
|
||||||
|
char head[64];
|
||||||
|
char body[256];
|
||||||
|
}Info;
|
||||||
|
|
||||||
|
typedef struct Error{
|
||||||
|
unsigned int type;
|
||||||
|
int priority;
|
||||||
|
Info info;
|
||||||
|
time_t time;
|
||||||
|
}Error;
|
||||||
|
|
||||||
|
typedef struct Notice{
|
||||||
|
unsigned int type;
|
||||||
|
Info info;
|
||||||
|
time_t time;
|
||||||
|
}Notice;
|
||||||
|
|
||||||
|
typedef struct Log{
|
||||||
|
FILE *fp;
|
||||||
|
int if_enable;
|
||||||
|
unsigned long int id;
|
||||||
|
}Log;
|
||||||
|
|
||||||
|
typedef struct tree_node
|
||||||
|
{
|
||||||
|
SID *s_id;
|
||||||
|
List *home;
|
||||||
|
struct tree_node *father;
|
||||||
|
Node *room;
|
||||||
|
unsigned long long child_num;
|
||||||
|
unsigned int type;
|
||||||
|
void *value;
|
||||||
|
_Bool if_malloc;
|
||||||
|
_Bool if_sid;
|
||||||
|
}TNode;
|
||||||
|
|
||||||
|
typedef struct tree
|
||||||
|
{
|
||||||
|
SID *s_id;
|
||||||
|
_Bool if_sid;
|
||||||
|
TNode *root;
|
||||||
|
}Tree;
|
||||||
|
|
||||||
|
|
||||||
#endif /* type_h */
|
#endif /* type_h */
|
||||||
|
Loading…
Reference in New Issue
Block a user