/*---------------------------------------------------------------------------------------- Module header file for: ht module ----------------------------------------------------------------------------------------*/ #ifndef HTDATABASE_H #define HTDATABASE_H #if defined __cplusplus extern "C" { #endif #ifndef DD_UTIL_H #include "ddutil.h" #endif /* Class reference definitions */ #if defined(DD_DEBUG) && !defined(DD_NOSTRICT) typedef struct _struct_htGraph{char val;} *htGraph; #define htGraphNull ((htGraph)(UINT32_MAX)) #define htGraph2Index(Graph) ((uint32)((Graph) - (htGraph)(0))) #define htGraph2ValidIndex(Graph) ((uint32)(htValidGraph(Graph) - (htGraph)(0))) #define htIndex2Graph(xGraph) ((htGraph)((xGraph) + (htGraph)(0))) typedef struct _struct_htNode{char val;} *htNode; #define htNodeNull ((htNode)(UINT32_MAX)) #define htNode2Index(Node) ((uint32)((Node) - (htNode)(0))) #define htNode2ValidIndex(Node) ((uint32)(htValidNode(Node) - (htNode)(0))) #define htIndex2Node(xNode) ((htNode)((xNode) + (htNode)(0))) typedef struct _struct_htDatadrawRoot{char val;} *htDatadrawRoot; #define htDatadrawRootNull ((htDatadrawRoot)(UINT32_MAX)) #define htDatadrawRoot2Index(DatadrawRoot) ((uint32)((DatadrawRoot) - (htDatadrawRoot)(0))) #define htDatadrawRoot2ValidIndex(DatadrawRoot) ((uint32)(htValidDatadrawRoot(DatadrawRoot) - (htDatadrawRoot)(0))) #define htIndex2DatadrawRoot(xDatadrawRoot) ((htDatadrawRoot)((xDatadrawRoot) + (htDatadrawRoot)(0))) typedef struct _struct_htSparseParentGraphNodeData{char val;} *htSparseParentGraphNodeData; #define htSparseParentGraphNodeDataNull ((htSparseParentGraphNodeData)(UINT32_MAX)) #define htSparseParentGraphNodeData2Index(SparseParentGraphNodeData) ((uint32)((SparseParentGraphNodeData) - (htSparseParentGraphNodeData)(0))) #define htSparseParentGraphNodeData2ValidIndex(SparseParentGraphNodeData) ((uint32)(htValidSparseParentGraphNodeData(SparseParentGraphNodeData) - (htSparseParentGraphNodeData)(0))) #define htIndex2SparseParentGraphNodeData(xSparseParentGraphNodeData) ((htSparseParentGraphNodeData)((xSparseParentGraphNodeData) + (htSparseParentGraphNodeData)(0))) typedef struct _struct_htSparseChildGraphNodeData{char val;} *htSparseChildGraphNodeData; #define htSparseChildGraphNodeDataNull ((htSparseChildGraphNodeData)(UINT32_MAX)) #define htSparseChildGraphNodeData2Index(SparseChildGraphNodeData) ((uint32)((SparseChildGraphNodeData) - (htSparseChildGraphNodeData)(0))) #define htSparseChildGraphNodeData2ValidIndex(SparseChildGraphNodeData) ((uint32)(htValidSparseChildGraphNodeData(SparseChildGraphNodeData) - (htSparseChildGraphNodeData)(0))) #define htIndex2SparseChildGraphNodeData(xSparseChildGraphNodeData) ((htSparseChildGraphNodeData)((xSparseChildGraphNodeData) + (htSparseChildGraphNodeData)(0))) typedef struct _struct_htSparseNodeNameIndexData{char val;} *htSparseNodeNameIndexData; #define htSparseNodeNameIndexDataNull ((htSparseNodeNameIndexData)(UINT32_MAX)) #define htSparseNodeNameIndexData2Index(SparseNodeNameIndexData) ((uint32)((SparseNodeNameIndexData) - (htSparseNodeNameIndexData)(0))) #define htSparseNodeNameIndexData2ValidIndex(SparseNodeNameIndexData) ((uint32)(htValidSparseNodeNameIndexData(SparseNodeNameIndexData) - (htSparseNodeNameIndexData)(0))) #define htIndex2SparseNodeNameIndexData(xSparseNodeNameIndexData) ((htSparseNodeNameIndexData)((xSparseNodeNameIndexData) + (htSparseNodeNameIndexData)(0))) typedef struct _struct_htSparseNodeNumNameData{char val;} *htSparseNodeNumNameData; #define htSparseNodeNumNameDataNull ((htSparseNodeNumNameData)(UINT32_MAX)) #define htSparseNodeNumNameData2Index(SparseNodeNumNameData) ((uint32)((SparseNodeNumNameData) - (htSparseNodeNumNameData)(0))) #define htSparseNodeNumNameData2ValidIndex(SparseNodeNumNameData) ((uint32)(htValidSparseNodeNumNameData(SparseNodeNumNameData) - (htSparseNodeNumNameData)(0))) #define htIndex2SparseNodeNumNameData(xSparseNodeNumNameData) ((htSparseNodeNumNameData)((xSparseNodeNumNameData) + (htSparseNodeNumNameData)(0))) typedef struct _struct_htSparseNodeXData{char val;} *htSparseNodeXData; #define htSparseNodeXDataNull ((htSparseNodeXData)(UINT32_MAX)) #define htSparseNodeXData2Index(SparseNodeXData) ((uint32)((SparseNodeXData) - (htSparseNodeXData)(0))) #define htSparseNodeXData2ValidIndex(SparseNodeXData) ((uint32)(htValidSparseNodeXData(SparseNodeXData) - (htSparseNodeXData)(0))) #define htIndex2SparseNodeXData(xSparseNodeXData) ((htSparseNodeXData)((xSparseNodeXData) + (htSparseNodeXData)(0))) #else typedef uint32 htGraph; #define htGraphNull UINT32_MAX #define htGraph2Index(Graph) (Graph) #define htGraph2ValidIndex(Graph) (htValidGraph(Graph)) #define htIndex2Graph(xGraph) ((xGraph)) typedef uint32 htNode; #define htNodeNull UINT32_MAX #define htNode2Index(Node) (Node) #define htNode2ValidIndex(Node) (htValidNode(Node)) #define htIndex2Node(xNode) ((xNode)) typedef uint32 htDatadrawRoot; #define htDatadrawRootNull UINT32_MAX #define htDatadrawRoot2Index(DatadrawRoot) (DatadrawRoot) #define htDatadrawRoot2ValidIndex(DatadrawRoot) (htValidDatadrawRoot(DatadrawRoot)) #define htIndex2DatadrawRoot(xDatadrawRoot) ((xDatadrawRoot)) typedef uint32 htSparseParentGraphNodeData; #define htSparseParentGraphNodeDataNull UINT32_MAX #define htSparseParentGraphNodeData2Index(SparseParentGraphNodeData) (SparseParentGraphNodeData) #define htSparseParentGraphNodeData2ValidIndex(SparseParentGraphNodeData) (htValidSparseParentGraphNodeData(SparseParentGraphNodeData)) #define htIndex2SparseParentGraphNodeData(xSparseParentGraphNodeData) ((xSparseParentGraphNodeData)) typedef uint32 htSparseChildGraphNodeData; #define htSparseChildGraphNodeDataNull UINT32_MAX #define htSparseChildGraphNodeData2Index(SparseChildGraphNodeData) (SparseChildGraphNodeData) #define htSparseChildGraphNodeData2ValidIndex(SparseChildGraphNodeData) (htValidSparseChildGraphNodeData(SparseChildGraphNodeData)) #define htIndex2SparseChildGraphNodeData(xSparseChildGraphNodeData) ((xSparseChildGraphNodeData)) typedef uint32 htSparseNodeNameIndexData; #define htSparseNodeNameIndexDataNull UINT32_MAX #define htSparseNodeNameIndexData2Index(SparseNodeNameIndexData) (SparseNodeNameIndexData) #define htSparseNodeNameIndexData2ValidIndex(SparseNodeNameIndexData) (htValidSparseNodeNameIndexData(SparseNodeNameIndexData)) #define htIndex2SparseNodeNameIndexData(xSparseNodeNameIndexData) ((xSparseNodeNameIndexData)) typedef uint32 htSparseNodeNumNameData; #define htSparseNodeNumNameDataNull UINT32_MAX #define htSparseNodeNumNameData2Index(SparseNodeNumNameData) (SparseNodeNumNameData) #define htSparseNodeNumNameData2ValidIndex(SparseNodeNumNameData) (htValidSparseNodeNumNameData(SparseNodeNumNameData)) #define htIndex2SparseNodeNumNameData(xSparseNodeNumNameData) ((xSparseNodeNumNameData)) typedef uint32 htSparseNodeXData; #define htSparseNodeXDataNull UINT32_MAX #define htSparseNodeXData2Index(SparseNodeXData) (SparseNodeXData) #define htSparseNodeXData2ValidIndex(SparseNodeXData) (htValidSparseNodeXData(SparseNodeXData)) #define htIndex2SparseNodeXData(xSparseNodeXData) ((xSparseNodeXData)) #endif /* Validate macros */ #if defined(DD_DEBUG) #define htValidGraph(Graph) (utLikely((uint32)((Graph) - (htGraph)0) < \ htRootData.usedGraph)? (Graph) : (utExit("Invalid Graph"), (htGraph)0)) #define htValidNode(Node) (utLikely((uint32)((Node) - (htNode)0) < \ htRootData.usedNode)? (Node) : (utExit("Invalid Node"), (htNode)0)) #define htValidDatadrawRoot(DatadrawRoot) (utLikely((uint32)((DatadrawRoot) - (htDatadrawRoot)0) < \ htRootData.usedDatadrawRoot)? (DatadrawRoot) : (utExit("Invalid DatadrawRoot"), (htDatadrawRoot)0)) #define htValidSparseParentGraphNodeData(SparseParentGraphNodeData) (utLikely((uint32)((SparseParentGraphNodeData) - (htSparseParentGraphNodeData)0) < \ htRootData.usedSparseParentGraphNodeData)? (SparseParentGraphNodeData) : (utExit("Invalid SparseParentGraphNodeData"), (htSparseParentGraphNodeData)0)) #define htValidSparseChildGraphNodeData(SparseChildGraphNodeData) (utLikely((uint32)((SparseChildGraphNodeData) - (htSparseChildGraphNodeData)0) < \ htRootData.usedSparseChildGraphNodeData)? (SparseChildGraphNodeData) : (utExit("Invalid SparseChildGraphNodeData"), (htSparseChildGraphNodeData)0)) #define htValidSparseNodeNameIndexData(SparseNodeNameIndexData) (utLikely((uint32)((SparseNodeNameIndexData) - (htSparseNodeNameIndexData)0) < \ htRootData.usedSparseNodeNameIndexData)? (SparseNodeNameIndexData) : (utExit("Invalid SparseNodeNameIndexData"), (htSparseNodeNameIndexData)0)) #define htValidSparseNodeNumNameData(SparseNodeNumNameData) (utLikely((uint32)((SparseNodeNumNameData) - (htSparseNodeNumNameData)0) < \ htRootData.usedSparseNodeNumNameData)? (SparseNodeNumNameData) : (utExit("Invalid SparseNodeNumNameData"), (htSparseNodeNumNameData)0)) #define htValidSparseNodeXData(SparseNodeXData) (utLikely((uint32)((SparseNodeXData) - (htSparseNodeXData)0) < \ htRootData.usedSparseNodeXData)? (SparseNodeXData) : (utExit("Invalid SparseNodeXData"), (htSparseNodeXData)0)) #else #define htValidGraph(Graph) (Graph) #define htValidNode(Node) (Node) #define htValidDatadrawRoot(DatadrawRoot) (DatadrawRoot) #define htValidSparseParentGraphNodeData(SparseParentGraphNodeData) (SparseParentGraphNodeData) #define htValidSparseChildGraphNodeData(SparseChildGraphNodeData) (SparseChildGraphNodeData) #define htValidSparseNodeNameIndexData(SparseNodeNameIndexData) (SparseNodeNameIndexData) #define htValidSparseNodeNumNameData(SparseNodeNumNameData) (SparseNodeNumNameData) #define htValidSparseNodeXData(SparseNodeXData) (SparseNodeXData) #endif /*---------------------------------------------------------------------------------------- Fields for class Graph. ----------------------------------------------------------------------------------------*/ struct htGraphFields { htNode *NodeTable; htGraph *FreeList; }; extern struct htGraphFields htGraphs; extern htNode htGraphGetFirstNode(htGraph Graph); extern void htGraphSetFirstNode(htGraph Graph, htNode value); extern htNode htGraphGetLastNode(htGraph Graph); extern void htGraphSetLastNode(htGraph Graph, htNode value); extern uint32 htGraphGetNodeTableIndex(htGraph Graph); extern void htGraphSetNodeTableIndex(htGraph Graph, uint32 value); extern uint32 htGraphGetNumNodeTable(htGraph Graph); extern void htGraphSetNumNodeTable(htGraph Graph, uint32 value); #if defined(DD_DEBUG) #define htGraphCheckNodeTableIndex(Graph, x) ((uint32)(x) < htGraphGetNumNodeTable(Graph)? (x) : \ (utAssert(false),(x))) #else #define htGraphCheckNodeTableIndex(Graph, x) (x) #endif #define htGraphGetiNodeTable(_Graph, x) ((htGraphs.NodeTable)[ \ htGraphGetNodeTableIndex(_Graph) + htGraphCheckNodeTableIndex(_Graph, (x))]) #define htGraphGetNodeTable(Graph) (htGraphs.NodeTable + htGraphGetNodeTableIndex(Graph)) #define htGraphGetNodeTables htGraphGetNodeTable #define htGraphSetNodeTable(Graph, valuePtr, numNodeTable) (htGraphResizeNodeTables(Graph, numNodeTable), memcpy(htGraphGetNodeTables(Graph), valuePtr, \ numNodeTable*sizeof(htNode))) #define htGraphSetiNodeTable(Graph, x, value) ((htGraphs.NodeTable)[ \ htGraphGetNodeTableIndex(Graph) + htGraphCheckNodeTableIndex(Graph, (x))] = (value)) extern uint32 htGraphGetNumNode(htGraph Graph); extern void htGraphSetNumNode(htGraph Graph, uint32 value); #define htGraphGetFreeList(_Graph) (htGraphs.FreeList[htGraph2ValidIndex(_Graph)]) #define htGraphSetFreeList(_Graph, value) ((htGraphs.FreeList)[htGraph2ValidIndex(_Graph)] = (value)) htNode htGraphFindNode(htGraph Graph, int32 X, int32 Y); void htGraphRenameNode(htGraph Graph, htNode _Node, utSym sym); #define htForeachGraphNode(pVar, cVar) \ for(cVar = htGraphGetFirstNode(pVar); cVar != htNodeNull; \ cVar = htNodeGetNextGraphNode(cVar)) #define htEndGraphNode #define htSafeForeachGraphNode(pVar, cVar) { \ htNode _nextNode; \ for(cVar = htGraphGetFirstNode(pVar); cVar != htNodeNull; cVar = _nextNode) { \ _nextNode = htNodeGetNextGraphNode(cVar); #define htEndSafeGraphNode }} #define htGraphSetConstructorCallback(func) (htGraphConstructorCallback = (func)) #define htGraphGetConstructorCallback() (htGraphConstructorCallback) #define htGraphSetDestructorCallback(func) (htGraphDestructorCallback = (func)) #define htGraphGetDestructorCallback() (htGraphDestructorCallback) #define htGraphNextFree(_Graph) (((htGraph *)(void *)(htGraphs.FreeList))[htGraph2ValidIndex(_Graph)]) #define htGraphSetNextFree(_Graph, value) (((htGraph *)(void *)(htGraphs.FreeList)) \ [htGraph2ValidIndex(_Graph)] = (value)) #define htGraphAllocRaw() ( \ htRootData.firstFreeGraph != htGraphNull? \ (htTemp_.Graph = htRootData.firstFreeGraph, \ htSetFirstFreeGraph(htGraphNextFree(htTemp_.Graph)), true) \ : (htRootData.usedGraph == htRootData.allocatedGraph && (htGraphAllocMore(), true), \ htTemp_.Graph = htIndex2Graph(htRootData.usedGraph), \ htSetUsedGraph(htUsedGraph() + 1)), \ htTemp_.Graph) #define htGraphAlloc() ( \ htRootData.firstFreeGraph != htGraphNull? \ (htTemp_.Graph = htRootData.firstFreeGraph, \ htSetFirstFreeGraph(htGraphNextFree(htTemp_.Graph)), true) \ : (htRootData.usedGraph == htRootData.allocatedGraph && (htGraphAllocMore(), true), \ htTemp_.Graph = htIndex2Graph(htRootData.usedGraph), \ htSetUsedGraph(htUsedGraph() + 1)), \ htGraphSetFirstNode(htTemp_.Graph, htNodeNull), \ htGraphSetLastNode(htTemp_.Graph, htNodeNull), \ htGraphSetNodeTableIndex(htTemp_.Graph, 0), \ htGraphSetNumNodeTable(htTemp_.Graph, 0), \ htGraphSetNumNodeTable(htTemp_.Graph, 0), \ htGraphSetNumNode(htTemp_.Graph, 0), \ htGraphSetFreeList(htTemp_.Graph, htGraphNull), \ htGraphConstructorCallback != NULL && (htGraphConstructorCallback(htTemp_.Graph), true), \ htTemp_.Graph) #define htGraphFree(Graph) (htGraphFreeNodeTables(Graph), \ htGraphSetNextFree(Graph, htRootData.firstFreeGraph), \ htSetFirstFreeGraph(Graph)) void htGraphDestroy(htGraph Graph); void htGraphAllocMore(void); void htGraphCopyProps(htGraph htOldGraph, htGraph htNewGraph); void htGraphAllocNodeTables(htGraph Graph, uint32 numNodeTables); void htGraphResizeNodeTables(htGraph Graph, uint32 numNodeTables); void htGraphFreeNodeTables(htGraph Graph); void htCompactGraphNodeTables(void); void htGraphInsertNode(htGraph Graph, htNode _Node); void htGraphRemoveNode(htGraph Graph, htNode _Node); void htGraphInsertAfterNode(htGraph Graph, htNode prevNode, htNode _Node); void htGraphAppendNode(htGraph Graph, htNode _Node); /*---------------------------------------------------------------------------------------- Fields for class Node. ----------------------------------------------------------------------------------------*/ struct htNodeFields { char *Name; int32 *Y; htNode *FreeList; }; extern struct htNodeFields htNodes; extern uint32 htNodeGetNameIndex(htNode Node); extern void htNodeSetNameIndex(htNode Node, uint32 value); extern uint32 htNodeGetNumName(htNode Node); extern void htNodeSetNumName(htNode Node, uint32 value); #if defined(DD_DEBUG) #define htNodeCheckNameIndex(Node, x) ((uint32)(x) < htNodeGetNumName(Node)? (x) : \ (utAssert(false),(x))) #else #define htNodeCheckNameIndex(Node, x) (x) #endif #define htNodeGetiName(_Node, x) ((htNodes.Name)[ \ htNodeGetNameIndex(_Node) + htNodeCheckNameIndex(_Node, (x))]) #define htNodeGetName(Node) (htNodes.Name + htNodeGetNameIndex(Node)) #define htNodeGetNames htNodeGetName #define htNodeSetName(Node, valuePtr, numName) (htNodeResizeNames(Node, numName), memcpy(htNodeGetNames(Node), valuePtr, \ numName*sizeof(char))) #define htNodeSetiName(Node, x, value) ((htNodes.Name)[ \ htNodeGetNameIndex(Node) + htNodeCheckNameIndex(Node, (x))] = (value)) extern int32 htNodeGetX(htNode Node); extern void htNodeSetX(htNode Node, int32 value); #define htNodeGetY(_Node) (htNodes.Y[htNode2ValidIndex(_Node)]) #define htNodeSetY(_Node, value) ((htNodes.Y)[htNode2ValidIndex(_Node)] = (value)) extern htNode htNodeGetNextGraphNode(htNode Node); extern void htNodeSetNextGraphNode(htNode Node, htNode value); extern htNode htNodeGetPrevGraphNode(htNode Node); extern void htNodeSetPrevGraphNode(htNode Node, htNode value); extern htNode htNodeGetNextTableGraphNode(htNode Node); extern void htNodeSetNextTableGraphNode(htNode Node, htNode value); #define htNodeGetFreeList(_Node) (htNodes.FreeList[htNode2ValidIndex(_Node)]) #define htNodeSetFreeList(_Node, value) ((htNodes.FreeList)[htNode2ValidIndex(_Node)] = (value)) #define htNodeSetConstructorCallback(func) (htNodeConstructorCallback = (func)) #define htNodeGetConstructorCallback() (htNodeConstructorCallback) #define htNodeSetDestructorCallback(func) (htNodeDestructorCallback = (func)) #define htNodeGetDestructorCallback() (htNodeDestructorCallback) #define htNodeNextFree(_Node) (((htNode *)(void *)(htNodes.FreeList))[htNode2ValidIndex(_Node)]) #define htNodeSetNextFree(_Node, value) (((htNode *)(void *)(htNodes.FreeList)) \ [htNode2ValidIndex(_Node)] = (value)) #define htNodeAllocRaw() ( \ htRootData.firstFreeNode != htNodeNull? \ (htTemp_.Node = htRootData.firstFreeNode, \ htSetFirstFreeNode(htNodeNextFree(htTemp_.Node)), true) \ : (htRootData.usedNode == htRootData.allocatedNode && (htNodeAllocMore(), true), \ htTemp_.Node = htIndex2Node(htRootData.usedNode), \ htSetUsedNode(htUsedNode() + 1)), \ htTemp_.Node) #define htNodeAlloc() ( \ htRootData.firstFreeNode != htNodeNull? \ (htTemp_.Node = htRootData.firstFreeNode, \ htSetFirstFreeNode(htNodeNextFree(htTemp_.Node)), true) \ : (htRootData.usedNode == htRootData.allocatedNode && (htNodeAllocMore(), true), \ htTemp_.Node = htIndex2Node(htRootData.usedNode), \ htSetUsedNode(htUsedNode() + 1)), \ htNodeSetNameIndex(htTemp_.Node, 0), \ htNodeSetNumName(htTemp_.Node, 0), \ htNodeSetNumName(htTemp_.Node, 0), \ htNodeSetX(htTemp_.Node, 0), \ htNodeSetY(htTemp_.Node, 0), \ htNodeSetNextGraphNode(htTemp_.Node, htNodeNull), \ htNodeSetPrevGraphNode(htTemp_.Node, htNodeNull), \ htNodeSetNextTableGraphNode(htTemp_.Node, htNodeNull), \ htNodeSetFreeList(htTemp_.Node, htNodeNull), \ htNodeConstructorCallback != NULL && (htNodeConstructorCallback(htTemp_.Node), true), \ htTemp_.Node) #define htNodeFree(Node) (htNodeFreeNames(Node), \ htNodeSetNextFree(Node, htRootData.firstFreeNode), \ htSetFirstFreeNode(Node)) void htNodeDestroy(htNode Node); void htNodeAllocMore(void); void htNodeCopyProps(htNode htOldNode, htNode htNewNode); void htNodeAllocNames(htNode Node, uint32 numNames); void htNodeResizeNames(htNode Node, uint32 numNames); void htNodeFreeNames(htNode Node); void htCompactNodeNames(void); /*---------------------------------------------------------------------------------------- Fields for class DatadrawRoot. ----------------------------------------------------------------------------------------*/ struct htDatadrawRootFields { htSparseParentGraphNodeData *FirstSparseParentGraphNodeData; htSparseParentGraphNodeData *LastSparseParentGraphNodeData; uint32 *SparseParentGraphNodeDataTableIndex; uint32 *NumSparseParentGraphNodeDataTable; htSparseParentGraphNodeData *SparseParentGraphNodeDataTable; uint32 *NumSparseParentGraphNodeData; htSparseChildGraphNodeData *FirstSparseChildGraphNodeData; htSparseChildGraphNodeData *LastSparseChildGraphNodeData; uint32 *SparseChildGraphNodeDataTableIndex; uint32 *NumSparseChildGraphNodeDataTable; htSparseChildGraphNodeData *SparseChildGraphNodeDataTable; uint32 *NumSparseChildGraphNodeData; htSparseNodeNameIndexData *FirstSparseNodeNameIndexData; htSparseNodeNameIndexData *LastSparseNodeNameIndexData; uint32 *SparseNodeNameIndexDataTableIndex; uint32 *NumSparseNodeNameIndexDataTable; htSparseNodeNameIndexData *SparseNodeNameIndexDataTable; uint32 *NumSparseNodeNameIndexData; htSparseNodeNumNameData *FirstSparseNodeNumNameData; htSparseNodeNumNameData *LastSparseNodeNumNameData; uint32 *SparseNodeNumNameDataTableIndex; uint32 *NumSparseNodeNumNameDataTable; htSparseNodeNumNameData *SparseNodeNumNameDataTable; uint32 *NumSparseNodeNumNameData; htSparseNodeXData *FirstSparseNodeXData; htSparseNodeXData *LastSparseNodeXData; uint32 *SparseNodeXDataTableIndex; uint32 *NumSparseNodeXDataTable; htSparseNodeXData *SparseNodeXDataTable; uint32 *NumSparseNodeXData; }; extern struct htDatadrawRootFields htDatadrawRoots; #define htDatadrawRootGetFirstSparseParentGraphNodeData(_DatadrawRoot) (htDatadrawRoots.FirstSparseParentGraphNodeData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetFirstSparseParentGraphNodeData(_DatadrawRoot, value) ((htDatadrawRoots.FirstSparseParentGraphNodeData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetLastSparseParentGraphNodeData(_DatadrawRoot) (htDatadrawRoots.LastSparseParentGraphNodeData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetLastSparseParentGraphNodeData(_DatadrawRoot, value) ((htDatadrawRoots.LastSparseParentGraphNodeData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetSparseParentGraphNodeDataTableIndex(_DatadrawRoot) (htDatadrawRoots.SparseParentGraphNodeDataTableIndex[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetSparseParentGraphNodeDataTableIndex(_DatadrawRoot, value) ((htDatadrawRoots.SparseParentGraphNodeDataTableIndex)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetNumSparseParentGraphNodeDataTable(_DatadrawRoot) (htDatadrawRoots.NumSparseParentGraphNodeDataTable[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetNumSparseParentGraphNodeDataTable(_DatadrawRoot, value) ((htDatadrawRoots.NumSparseParentGraphNodeDataTable)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #if defined(DD_DEBUG) #define htDatadrawRootCheckSparseParentGraphNodeDataTableIndex(DatadrawRoot, x) ((uint32)(x) < htDatadrawRootGetNumSparseParentGraphNodeDataTable(DatadrawRoot)? (x) : \ (utAssert(false),(x))) #else #define htDatadrawRootCheckSparseParentGraphNodeDataTableIndex(DatadrawRoot, x) (x) #endif #define htDatadrawRootGetiSparseParentGraphNodeDataTable(_DatadrawRoot, x) ((htDatadrawRoots.SparseParentGraphNodeDataTable)[ \ htDatadrawRootGetSparseParentGraphNodeDataTableIndex(_DatadrawRoot) + htDatadrawRootCheckSparseParentGraphNodeDataTableIndex(_DatadrawRoot, (x))]) #define htDatadrawRootGetSparseParentGraphNodeDataTable(DatadrawRoot) (htDatadrawRoots.SparseParentGraphNodeDataTable + htDatadrawRootGetSparseParentGraphNodeDataTableIndex(DatadrawRoot)) #define htDatadrawRootGetSparseParentGraphNodeDataTables htDatadrawRootGetSparseParentGraphNodeDataTable #define htDatadrawRootSetSparseParentGraphNodeDataTable(DatadrawRoot, valuePtr, numSparseParentGraphNodeDataTable) (htDatadrawRootResizeSparseParentGraphNodeDataTables(DatadrawRoot, numSparseParentGraphNodeDataTable), memcpy(htDatadrawRootGetSparseParentGraphNodeDataTables(DatadrawRoot), valuePtr, \ numSparseParentGraphNodeDataTable*sizeof(htSparseParentGraphNodeData))) #define htDatadrawRootSetiSparseParentGraphNodeDataTable(DatadrawRoot, x, value) ((htDatadrawRoots.SparseParentGraphNodeDataTable)[ \ htDatadrawRootGetSparseParentGraphNodeDataTableIndex(DatadrawRoot) + htDatadrawRootCheckSparseParentGraphNodeDataTableIndex(DatadrawRoot, (x))] = (value)) #define htDatadrawRootGetNumSparseParentGraphNodeData(_DatadrawRoot) (htDatadrawRoots.NumSparseParentGraphNodeData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetNumSparseParentGraphNodeData(_DatadrawRoot, value) ((htDatadrawRoots.NumSparseParentGraphNodeData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetFirstSparseChildGraphNodeData(_DatadrawRoot) (htDatadrawRoots.FirstSparseChildGraphNodeData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetFirstSparseChildGraphNodeData(_DatadrawRoot, value) ((htDatadrawRoots.FirstSparseChildGraphNodeData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetLastSparseChildGraphNodeData(_DatadrawRoot) (htDatadrawRoots.LastSparseChildGraphNodeData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetLastSparseChildGraphNodeData(_DatadrawRoot, value) ((htDatadrawRoots.LastSparseChildGraphNodeData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetSparseChildGraphNodeDataTableIndex(_DatadrawRoot) (htDatadrawRoots.SparseChildGraphNodeDataTableIndex[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetSparseChildGraphNodeDataTableIndex(_DatadrawRoot, value) ((htDatadrawRoots.SparseChildGraphNodeDataTableIndex)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetNumSparseChildGraphNodeDataTable(_DatadrawRoot) (htDatadrawRoots.NumSparseChildGraphNodeDataTable[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetNumSparseChildGraphNodeDataTable(_DatadrawRoot, value) ((htDatadrawRoots.NumSparseChildGraphNodeDataTable)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #if defined(DD_DEBUG) #define htDatadrawRootCheckSparseChildGraphNodeDataTableIndex(DatadrawRoot, x) ((uint32)(x) < htDatadrawRootGetNumSparseChildGraphNodeDataTable(DatadrawRoot)? (x) : \ (utAssert(false),(x))) #else #define htDatadrawRootCheckSparseChildGraphNodeDataTableIndex(DatadrawRoot, x) (x) #endif #define htDatadrawRootGetiSparseChildGraphNodeDataTable(_DatadrawRoot, x) ((htDatadrawRoots.SparseChildGraphNodeDataTable)[ \ htDatadrawRootGetSparseChildGraphNodeDataTableIndex(_DatadrawRoot) + htDatadrawRootCheckSparseChildGraphNodeDataTableIndex(_DatadrawRoot, (x))]) #define htDatadrawRootGetSparseChildGraphNodeDataTable(DatadrawRoot) (htDatadrawRoots.SparseChildGraphNodeDataTable + htDatadrawRootGetSparseChildGraphNodeDataTableIndex(DatadrawRoot)) #define htDatadrawRootGetSparseChildGraphNodeDataTables htDatadrawRootGetSparseChildGraphNodeDataTable #define htDatadrawRootSetSparseChildGraphNodeDataTable(DatadrawRoot, valuePtr, numSparseChildGraphNodeDataTable) (htDatadrawRootResizeSparseChildGraphNodeDataTables(DatadrawRoot, numSparseChildGraphNodeDataTable), memcpy(htDatadrawRootGetSparseChildGraphNodeDataTables(DatadrawRoot), valuePtr, \ numSparseChildGraphNodeDataTable*sizeof(htSparseChildGraphNodeData))) #define htDatadrawRootSetiSparseChildGraphNodeDataTable(DatadrawRoot, x, value) ((htDatadrawRoots.SparseChildGraphNodeDataTable)[ \ htDatadrawRootGetSparseChildGraphNodeDataTableIndex(DatadrawRoot) + htDatadrawRootCheckSparseChildGraphNodeDataTableIndex(DatadrawRoot, (x))] = (value)) #define htDatadrawRootGetNumSparseChildGraphNodeData(_DatadrawRoot) (htDatadrawRoots.NumSparseChildGraphNodeData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetNumSparseChildGraphNodeData(_DatadrawRoot, value) ((htDatadrawRoots.NumSparseChildGraphNodeData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetFirstSparseNodeNameIndexData(_DatadrawRoot) (htDatadrawRoots.FirstSparseNodeNameIndexData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetFirstSparseNodeNameIndexData(_DatadrawRoot, value) ((htDatadrawRoots.FirstSparseNodeNameIndexData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetLastSparseNodeNameIndexData(_DatadrawRoot) (htDatadrawRoots.LastSparseNodeNameIndexData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetLastSparseNodeNameIndexData(_DatadrawRoot, value) ((htDatadrawRoots.LastSparseNodeNameIndexData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetSparseNodeNameIndexDataTableIndex(_DatadrawRoot) (htDatadrawRoots.SparseNodeNameIndexDataTableIndex[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetSparseNodeNameIndexDataTableIndex(_DatadrawRoot, value) ((htDatadrawRoots.SparseNodeNameIndexDataTableIndex)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetNumSparseNodeNameIndexDataTable(_DatadrawRoot) (htDatadrawRoots.NumSparseNodeNameIndexDataTable[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetNumSparseNodeNameIndexDataTable(_DatadrawRoot, value) ((htDatadrawRoots.NumSparseNodeNameIndexDataTable)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #if defined(DD_DEBUG) #define htDatadrawRootCheckSparseNodeNameIndexDataTableIndex(DatadrawRoot, x) ((uint32)(x) < htDatadrawRootGetNumSparseNodeNameIndexDataTable(DatadrawRoot)? (x) : \ (utAssert(false),(x))) #else #define htDatadrawRootCheckSparseNodeNameIndexDataTableIndex(DatadrawRoot, x) (x) #endif #define htDatadrawRootGetiSparseNodeNameIndexDataTable(_DatadrawRoot, x) ((htDatadrawRoots.SparseNodeNameIndexDataTable)[ \ htDatadrawRootGetSparseNodeNameIndexDataTableIndex(_DatadrawRoot) + htDatadrawRootCheckSparseNodeNameIndexDataTableIndex(_DatadrawRoot, (x))]) #define htDatadrawRootGetSparseNodeNameIndexDataTable(DatadrawRoot) (htDatadrawRoots.SparseNodeNameIndexDataTable + htDatadrawRootGetSparseNodeNameIndexDataTableIndex(DatadrawRoot)) #define htDatadrawRootGetSparseNodeNameIndexDataTables htDatadrawRootGetSparseNodeNameIndexDataTable #define htDatadrawRootSetSparseNodeNameIndexDataTable(DatadrawRoot, valuePtr, numSparseNodeNameIndexDataTable) (htDatadrawRootResizeSparseNodeNameIndexDataTables(DatadrawRoot, numSparseNodeNameIndexDataTable), memcpy(htDatadrawRootGetSparseNodeNameIndexDataTables(DatadrawRoot), valuePtr, \ numSparseNodeNameIndexDataTable*sizeof(htSparseNodeNameIndexData))) #define htDatadrawRootSetiSparseNodeNameIndexDataTable(DatadrawRoot, x, value) ((htDatadrawRoots.SparseNodeNameIndexDataTable)[ \ htDatadrawRootGetSparseNodeNameIndexDataTableIndex(DatadrawRoot) + htDatadrawRootCheckSparseNodeNameIndexDataTableIndex(DatadrawRoot, (x))] = (value)) #define htDatadrawRootGetNumSparseNodeNameIndexData(_DatadrawRoot) (htDatadrawRoots.NumSparseNodeNameIndexData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetNumSparseNodeNameIndexData(_DatadrawRoot, value) ((htDatadrawRoots.NumSparseNodeNameIndexData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetFirstSparseNodeNumNameData(_DatadrawRoot) (htDatadrawRoots.FirstSparseNodeNumNameData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetFirstSparseNodeNumNameData(_DatadrawRoot, value) ((htDatadrawRoots.FirstSparseNodeNumNameData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetLastSparseNodeNumNameData(_DatadrawRoot) (htDatadrawRoots.LastSparseNodeNumNameData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetLastSparseNodeNumNameData(_DatadrawRoot, value) ((htDatadrawRoots.LastSparseNodeNumNameData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetSparseNodeNumNameDataTableIndex(_DatadrawRoot) (htDatadrawRoots.SparseNodeNumNameDataTableIndex[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetSparseNodeNumNameDataTableIndex(_DatadrawRoot, value) ((htDatadrawRoots.SparseNodeNumNameDataTableIndex)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetNumSparseNodeNumNameDataTable(_DatadrawRoot) (htDatadrawRoots.NumSparseNodeNumNameDataTable[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetNumSparseNodeNumNameDataTable(_DatadrawRoot, value) ((htDatadrawRoots.NumSparseNodeNumNameDataTable)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #if defined(DD_DEBUG) #define htDatadrawRootCheckSparseNodeNumNameDataTableIndex(DatadrawRoot, x) ((uint32)(x) < htDatadrawRootGetNumSparseNodeNumNameDataTable(DatadrawRoot)? (x) : \ (utAssert(false),(x))) #else #define htDatadrawRootCheckSparseNodeNumNameDataTableIndex(DatadrawRoot, x) (x) #endif #define htDatadrawRootGetiSparseNodeNumNameDataTable(_DatadrawRoot, x) ((htDatadrawRoots.SparseNodeNumNameDataTable)[ \ htDatadrawRootGetSparseNodeNumNameDataTableIndex(_DatadrawRoot) + htDatadrawRootCheckSparseNodeNumNameDataTableIndex(_DatadrawRoot, (x))]) #define htDatadrawRootGetSparseNodeNumNameDataTable(DatadrawRoot) (htDatadrawRoots.SparseNodeNumNameDataTable + htDatadrawRootGetSparseNodeNumNameDataTableIndex(DatadrawRoot)) #define htDatadrawRootGetSparseNodeNumNameDataTables htDatadrawRootGetSparseNodeNumNameDataTable #define htDatadrawRootSetSparseNodeNumNameDataTable(DatadrawRoot, valuePtr, numSparseNodeNumNameDataTable) (htDatadrawRootResizeSparseNodeNumNameDataTables(DatadrawRoot, numSparseNodeNumNameDataTable), memcpy(htDatadrawRootGetSparseNodeNumNameDataTables(DatadrawRoot), valuePtr, \ numSparseNodeNumNameDataTable*sizeof(htSparseNodeNumNameData))) #define htDatadrawRootSetiSparseNodeNumNameDataTable(DatadrawRoot, x, value) ((htDatadrawRoots.SparseNodeNumNameDataTable)[ \ htDatadrawRootGetSparseNodeNumNameDataTableIndex(DatadrawRoot) + htDatadrawRootCheckSparseNodeNumNameDataTableIndex(DatadrawRoot, (x))] = (value)) #define htDatadrawRootGetNumSparseNodeNumNameData(_DatadrawRoot) (htDatadrawRoots.NumSparseNodeNumNameData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetNumSparseNodeNumNameData(_DatadrawRoot, value) ((htDatadrawRoots.NumSparseNodeNumNameData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetFirstSparseNodeXData(_DatadrawRoot) (htDatadrawRoots.FirstSparseNodeXData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetFirstSparseNodeXData(_DatadrawRoot, value) ((htDatadrawRoots.FirstSparseNodeXData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetLastSparseNodeXData(_DatadrawRoot) (htDatadrawRoots.LastSparseNodeXData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetLastSparseNodeXData(_DatadrawRoot, value) ((htDatadrawRoots.LastSparseNodeXData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetSparseNodeXDataTableIndex(_DatadrawRoot) (htDatadrawRoots.SparseNodeXDataTableIndex[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetSparseNodeXDataTableIndex(_DatadrawRoot, value) ((htDatadrawRoots.SparseNodeXDataTableIndex)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #define htDatadrawRootGetNumSparseNodeXDataTable(_DatadrawRoot) (htDatadrawRoots.NumSparseNodeXDataTable[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetNumSparseNodeXDataTable(_DatadrawRoot, value) ((htDatadrawRoots.NumSparseNodeXDataTable)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) #if defined(DD_DEBUG) #define htDatadrawRootCheckSparseNodeXDataTableIndex(DatadrawRoot, x) ((uint32)(x) < htDatadrawRootGetNumSparseNodeXDataTable(DatadrawRoot)? (x) : \ (utAssert(false),(x))) #else #define htDatadrawRootCheckSparseNodeXDataTableIndex(DatadrawRoot, x) (x) #endif #define htDatadrawRootGetiSparseNodeXDataTable(_DatadrawRoot, x) ((htDatadrawRoots.SparseNodeXDataTable)[ \ htDatadrawRootGetSparseNodeXDataTableIndex(_DatadrawRoot) + htDatadrawRootCheckSparseNodeXDataTableIndex(_DatadrawRoot, (x))]) #define htDatadrawRootGetSparseNodeXDataTable(DatadrawRoot) (htDatadrawRoots.SparseNodeXDataTable + htDatadrawRootGetSparseNodeXDataTableIndex(DatadrawRoot)) #define htDatadrawRootGetSparseNodeXDataTables htDatadrawRootGetSparseNodeXDataTable #define htDatadrawRootSetSparseNodeXDataTable(DatadrawRoot, valuePtr, numSparseNodeXDataTable) (htDatadrawRootResizeSparseNodeXDataTables(DatadrawRoot, numSparseNodeXDataTable), memcpy(htDatadrawRootGetSparseNodeXDataTables(DatadrawRoot), valuePtr, \ numSparseNodeXDataTable*sizeof(htSparseNodeXData))) #define htDatadrawRootSetiSparseNodeXDataTable(DatadrawRoot, x, value) ((htDatadrawRoots.SparseNodeXDataTable)[ \ htDatadrawRootGetSparseNodeXDataTableIndex(DatadrawRoot) + htDatadrawRootCheckSparseNodeXDataTableIndex(DatadrawRoot, (x))] = (value)) #define htDatadrawRootGetNumSparseNodeXData(_DatadrawRoot) (htDatadrawRoots.NumSparseNodeXData[htDatadrawRoot2ValidIndex(_DatadrawRoot)]) #define htDatadrawRootSetNumSparseNodeXData(_DatadrawRoot, value) ((htDatadrawRoots.NumSparseNodeXData)[htDatadrawRoot2ValidIndex(_DatadrawRoot)] = (value)) htSparseParentGraphNodeData htDatadrawRootFindSparseParentGraphNodeData(htDatadrawRoot DatadrawRoot, htGraph GraphKey); void htDatadrawRootRenameSparseParentGraphNodeData(htDatadrawRoot DatadrawRoot, htSparseParentGraphNodeData _SparseParentGraphNodeData, utSym sym); #define htForeachDatadrawRootSparseParentGraphNodeData(pVar, cVar) \ for(cVar = htDatadrawRootGetFirstSparseParentGraphNodeData(pVar); cVar != htSparseParentGraphNodeDataNull; \ cVar = htSparseParentGraphNodeDataGetNextDatadrawRootSparseParentGraphNodeData(cVar)) #define htEndDatadrawRootSparseParentGraphNodeData #define htSafeForeachDatadrawRootSparseParentGraphNodeData(pVar, cVar) { \ htSparseParentGraphNodeData _nextSparseParentGraphNodeData; \ for(cVar = htDatadrawRootGetFirstSparseParentGraphNodeData(pVar); cVar != htSparseParentGraphNodeDataNull; cVar = _nextSparseParentGraphNodeData) { \ _nextSparseParentGraphNodeData = htSparseParentGraphNodeDataGetNextDatadrawRootSparseParentGraphNodeData(cVar); #define htEndSafeDatadrawRootSparseParentGraphNodeData }} htSparseChildGraphNodeData htDatadrawRootFindSparseChildGraphNodeData(htDatadrawRoot DatadrawRoot, htNode NodeKey); void htDatadrawRootRenameSparseChildGraphNodeData(htDatadrawRoot DatadrawRoot, htSparseChildGraphNodeData _SparseChildGraphNodeData, utSym sym); #define htForeachDatadrawRootSparseChildGraphNodeData(pVar, cVar) \ for(cVar = htDatadrawRootGetFirstSparseChildGraphNodeData(pVar); cVar != htSparseChildGraphNodeDataNull; \ cVar = htSparseChildGraphNodeDataGetNextDatadrawRootSparseChildGraphNodeData(cVar)) #define htEndDatadrawRootSparseChildGraphNodeData #define htSafeForeachDatadrawRootSparseChildGraphNodeData(pVar, cVar) { \ htSparseChildGraphNodeData _nextSparseChildGraphNodeData; \ for(cVar = htDatadrawRootGetFirstSparseChildGraphNodeData(pVar); cVar != htSparseChildGraphNodeDataNull; cVar = _nextSparseChildGraphNodeData) { \ _nextSparseChildGraphNodeData = htSparseChildGraphNodeDataGetNextDatadrawRootSparseChildGraphNodeData(cVar); #define htEndSafeDatadrawRootSparseChildGraphNodeData }} htSparseNodeNameIndexData htDatadrawRootFindSparseNodeNameIndexData(htDatadrawRoot DatadrawRoot, htNode NodeKey); void htDatadrawRootRenameSparseNodeNameIndexData(htDatadrawRoot DatadrawRoot, htSparseNodeNameIndexData _SparseNodeNameIndexData, utSym sym); #define htForeachDatadrawRootSparseNodeNameIndexData(pVar, cVar) \ for(cVar = htDatadrawRootGetFirstSparseNodeNameIndexData(pVar); cVar != htSparseNodeNameIndexDataNull; \ cVar = htSparseNodeNameIndexDataGetNextDatadrawRootSparseNodeNameIndexData(cVar)) #define htEndDatadrawRootSparseNodeNameIndexData #define htSafeForeachDatadrawRootSparseNodeNameIndexData(pVar, cVar) { \ htSparseNodeNameIndexData _nextSparseNodeNameIndexData; \ for(cVar = htDatadrawRootGetFirstSparseNodeNameIndexData(pVar); cVar != htSparseNodeNameIndexDataNull; cVar = _nextSparseNodeNameIndexData) { \ _nextSparseNodeNameIndexData = htSparseNodeNameIndexDataGetNextDatadrawRootSparseNodeNameIndexData(cVar); #define htEndSafeDatadrawRootSparseNodeNameIndexData }} htSparseNodeNumNameData htDatadrawRootFindSparseNodeNumNameData(htDatadrawRoot DatadrawRoot, htNode NodeKey); void htDatadrawRootRenameSparseNodeNumNameData(htDatadrawRoot DatadrawRoot, htSparseNodeNumNameData _SparseNodeNumNameData, utSym sym); #define htForeachDatadrawRootSparseNodeNumNameData(pVar, cVar) \ for(cVar = htDatadrawRootGetFirstSparseNodeNumNameData(pVar); cVar != htSparseNodeNumNameDataNull; \ cVar = htSparseNodeNumNameDataGetNextDatadrawRootSparseNodeNumNameData(cVar)) #define htEndDatadrawRootSparseNodeNumNameData #define htSafeForeachDatadrawRootSparseNodeNumNameData(pVar, cVar) { \ htSparseNodeNumNameData _nextSparseNodeNumNameData; \ for(cVar = htDatadrawRootGetFirstSparseNodeNumNameData(pVar); cVar != htSparseNodeNumNameDataNull; cVar = _nextSparseNodeNumNameData) { \ _nextSparseNodeNumNameData = htSparseNodeNumNameDataGetNextDatadrawRootSparseNodeNumNameData(cVar); #define htEndSafeDatadrawRootSparseNodeNumNameData }} htSparseNodeXData htDatadrawRootFindSparseNodeXData(htDatadrawRoot DatadrawRoot, htNode NodeKey); void htDatadrawRootRenameSparseNodeXData(htDatadrawRoot DatadrawRoot, htSparseNodeXData _SparseNodeXData, utSym sym); #define htForeachDatadrawRootSparseNodeXData(pVar, cVar) \ for(cVar = htDatadrawRootGetFirstSparseNodeXData(pVar); cVar != htSparseNodeXDataNull; \ cVar = htSparseNodeXDataGetNextDatadrawRootSparseNodeXData(cVar)) #define htEndDatadrawRootSparseNodeXData #define htSafeForeachDatadrawRootSparseNodeXData(pVar, cVar) { \ htSparseNodeXData _nextSparseNodeXData; \ for(cVar = htDatadrawRootGetFirstSparseNodeXData(pVar); cVar != htSparseNodeXDataNull; cVar = _nextSparseNodeXData) { \ _nextSparseNodeXData = htSparseNodeXDataGetNextDatadrawRootSparseNodeXData(cVar); #define htEndSafeDatadrawRootSparseNodeXData }} #define htDatadrawRootSetConstructorCallback(func) (htDatadrawRootConstructorCallback = (func)) #define htDatadrawRootGetConstructorCallback() (htDatadrawRootConstructorCallback) #define htFirstDatadrawRoot() (htRootData.usedDatadrawRoot == 0? htDatadrawRootNull : htIndex2DatadrawRoot(0)) #define htLastDatadrawRoot() (htRootData.usedDatadrawRoot == 0? htDatadrawRootNull : \ htIndex2DatadrawRoot(htRootData.usedDatadrawRoot - 1)) #define htNextDatadrawRoot(DatadrawRoot) (htDatadrawRoot2ValidIndex(DatadrawRoot) + 1 == htRootData.usedDatadrawRoot? htDatadrawRootNull : \ (DatadrawRoot) + 1) #define htPrevDatadrawRoot(DatadrawRoot) (htDatadrawRoot2ValidIndex(DatadrawRoot) == 0? htDatadrawRootNull : (DatadrawRoot) - 1) #define htForeachDatadrawRoot(var) \ for(var = htIndex2DatadrawRoot(0); htDatadrawRoot2Index(var) != htRootData.usedDatadrawRoot; var++) #define htEndDatadrawRoot #define htDatadrawRootFreeAll() (htSetUsedDatadrawRoot(0), htSetUsedDatadrawRootSparseParentGraphNodeDataTable(0), htSetUsedDatadrawRootSparseChildGraphNodeDataTable(0), htSetUsedDatadrawRootSparseNodeNameIndexDataTable(0), htSetUsedDatadrawRootSparseNodeNumNameDataTable(0), htSetUsedDatadrawRootSparseNodeXDataTable(0)) #define htDatadrawRootAllocRaw() ( \ htRootData.usedDatadrawRoot == htRootData.allocatedDatadrawRoot && (htDatadrawRootAllocMore(), true), \ htTemp_.DatadrawRoot = htIndex2DatadrawRoot(htRootData.usedDatadrawRoot), \ htSetUsedDatadrawRoot(htUsedDatadrawRoot() + 1), \ htTemp_.DatadrawRoot) #define htDatadrawRootAlloc() ( \ htRootData.usedDatadrawRoot == htRootData.allocatedDatadrawRoot && (htDatadrawRootAllocMore(), true), \ htTemp_.DatadrawRoot = htIndex2DatadrawRoot(htRootData.usedDatadrawRoot), \ htSetUsedDatadrawRoot(htUsedDatadrawRoot() + 1), \ htDatadrawRootSetFirstSparseParentGraphNodeData(htTemp_.DatadrawRoot, htSparseParentGraphNodeDataNull), \ htDatadrawRootSetLastSparseParentGraphNodeData(htTemp_.DatadrawRoot, htSparseParentGraphNodeDataNull), \ htDatadrawRootSetSparseParentGraphNodeDataTableIndex(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseParentGraphNodeDataTable(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseParentGraphNodeDataTable(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseParentGraphNodeData(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetFirstSparseChildGraphNodeData(htTemp_.DatadrawRoot, htSparseChildGraphNodeDataNull), \ htDatadrawRootSetLastSparseChildGraphNodeData(htTemp_.DatadrawRoot, htSparseChildGraphNodeDataNull), \ htDatadrawRootSetSparseChildGraphNodeDataTableIndex(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseChildGraphNodeDataTable(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseChildGraphNodeDataTable(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseChildGraphNodeData(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetFirstSparseNodeNameIndexData(htTemp_.DatadrawRoot, htSparseNodeNameIndexDataNull), \ htDatadrawRootSetLastSparseNodeNameIndexData(htTemp_.DatadrawRoot, htSparseNodeNameIndexDataNull), \ htDatadrawRootSetSparseNodeNameIndexDataTableIndex(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseNodeNameIndexDataTable(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseNodeNameIndexDataTable(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseNodeNameIndexData(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetFirstSparseNodeNumNameData(htTemp_.DatadrawRoot, htSparseNodeNumNameDataNull), \ htDatadrawRootSetLastSparseNodeNumNameData(htTemp_.DatadrawRoot, htSparseNodeNumNameDataNull), \ htDatadrawRootSetSparseNodeNumNameDataTableIndex(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseNodeNumNameDataTable(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseNodeNumNameDataTable(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseNodeNumNameData(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetFirstSparseNodeXData(htTemp_.DatadrawRoot, htSparseNodeXDataNull), \ htDatadrawRootSetLastSparseNodeXData(htTemp_.DatadrawRoot, htSparseNodeXDataNull), \ htDatadrawRootSetSparseNodeXDataTableIndex(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseNodeXDataTable(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseNodeXDataTable(htTemp_.DatadrawRoot, 0), \ htDatadrawRootSetNumSparseNodeXData(htTemp_.DatadrawRoot, 0), \ htDatadrawRootConstructorCallback != NULL && (htDatadrawRootConstructorCallback(htTemp_.DatadrawRoot), true), \ htTemp_.DatadrawRoot) void htDatadrawRootAllocMore(void); void htDatadrawRootCopyProps(htDatadrawRoot htOldDatadrawRoot, htDatadrawRoot htNewDatadrawRoot); void htDatadrawRootAllocSparseParentGraphNodeDataTables(htDatadrawRoot DatadrawRoot, uint32 numSparseParentGraphNodeDataTables); void htDatadrawRootResizeSparseParentGraphNodeDataTables(htDatadrawRoot DatadrawRoot, uint32 numSparseParentGraphNodeDataTables); void htDatadrawRootFreeSparseParentGraphNodeDataTables(htDatadrawRoot DatadrawRoot); void htCompactDatadrawRootSparseParentGraphNodeDataTables(void); void htDatadrawRootAllocSparseChildGraphNodeDataTables(htDatadrawRoot DatadrawRoot, uint32 numSparseChildGraphNodeDataTables); void htDatadrawRootResizeSparseChildGraphNodeDataTables(htDatadrawRoot DatadrawRoot, uint32 numSparseChildGraphNodeDataTables); void htDatadrawRootFreeSparseChildGraphNodeDataTables(htDatadrawRoot DatadrawRoot); void htCompactDatadrawRootSparseChildGraphNodeDataTables(void); void htDatadrawRootAllocSparseNodeNameIndexDataTables(htDatadrawRoot DatadrawRoot, uint32 numSparseNodeNameIndexDataTables); void htDatadrawRootResizeSparseNodeNameIndexDataTables(htDatadrawRoot DatadrawRoot, uint32 numSparseNodeNameIndexDataTables); void htDatadrawRootFreeSparseNodeNameIndexDataTables(htDatadrawRoot DatadrawRoot); void htCompactDatadrawRootSparseNodeNameIndexDataTables(void); void htDatadrawRootAllocSparseNodeNumNameDataTables(htDatadrawRoot DatadrawRoot, uint32 numSparseNodeNumNameDataTables); void htDatadrawRootResizeSparseNodeNumNameDataTables(htDatadrawRoot DatadrawRoot, uint32 numSparseNodeNumNameDataTables); void htDatadrawRootFreeSparseNodeNumNameDataTables(htDatadrawRoot DatadrawRoot); void htCompactDatadrawRootSparseNodeNumNameDataTables(void); void htDatadrawRootAllocSparseNodeXDataTables(htDatadrawRoot DatadrawRoot, uint32 numSparseNodeXDataTables); void htDatadrawRootResizeSparseNodeXDataTables(htDatadrawRoot DatadrawRoot, uint32 numSparseNodeXDataTables); void htDatadrawRootFreeSparseNodeXDataTables(htDatadrawRoot DatadrawRoot); void htCompactDatadrawRootSparseNodeXDataTables(void); void htDatadrawRootInsertSparseParentGraphNodeData(htDatadrawRoot DatadrawRoot, htSparseParentGraphNodeData _SparseParentGraphNodeData); void htDatadrawRootRemoveSparseParentGraphNodeData(htDatadrawRoot DatadrawRoot, htSparseParentGraphNodeData _SparseParentGraphNodeData); void htDatadrawRootInsertAfterSparseParentGraphNodeData(htDatadrawRoot DatadrawRoot, htSparseParentGraphNodeData prevSparseParentGraphNodeData, htSparseParentGraphNodeData _SparseParentGraphNodeData); void htDatadrawRootAppendSparseParentGraphNodeData(htDatadrawRoot DatadrawRoot, htSparseParentGraphNodeData _SparseParentGraphNodeData); void htDatadrawRootInsertSparseChildGraphNodeData(htDatadrawRoot DatadrawRoot, htSparseChildGraphNodeData _SparseChildGraphNodeData); void htDatadrawRootRemoveSparseChildGraphNodeData(htDatadrawRoot DatadrawRoot, htSparseChildGraphNodeData _SparseChildGraphNodeData); void htDatadrawRootInsertAfterSparseChildGraphNodeData(htDatadrawRoot DatadrawRoot, htSparseChildGraphNodeData prevSparseChildGraphNodeData, htSparseChildGraphNodeData _SparseChildGraphNodeData); void htDatadrawRootAppendSparseChildGraphNodeData(htDatadrawRoot DatadrawRoot, htSparseChildGraphNodeData _SparseChildGraphNodeData); void htDatadrawRootInsertSparseNodeNameIndexData(htDatadrawRoot DatadrawRoot, htSparseNodeNameIndexData _SparseNodeNameIndexData); void htDatadrawRootRemoveSparseNodeNameIndexData(htDatadrawRoot DatadrawRoot, htSparseNodeNameIndexData _SparseNodeNameIndexData); void htDatadrawRootInsertAfterSparseNodeNameIndexData(htDatadrawRoot DatadrawRoot, htSparseNodeNameIndexData prevSparseNodeNameIndexData, htSparseNodeNameIndexData _SparseNodeNameIndexData); void htDatadrawRootAppendSparseNodeNameIndexData(htDatadrawRoot DatadrawRoot, htSparseNodeNameIndexData _SparseNodeNameIndexData); void htDatadrawRootInsertSparseNodeNumNameData(htDatadrawRoot DatadrawRoot, htSparseNodeNumNameData _SparseNodeNumNameData); void htDatadrawRootRemoveSparseNodeNumNameData(htDatadrawRoot DatadrawRoot, htSparseNodeNumNameData _SparseNodeNumNameData); void htDatadrawRootInsertAfterSparseNodeNumNameData(htDatadrawRoot DatadrawRoot, htSparseNodeNumNameData prevSparseNodeNumNameData, htSparseNodeNumNameData _SparseNodeNumNameData); void htDatadrawRootAppendSparseNodeNumNameData(htDatadrawRoot DatadrawRoot, htSparseNodeNumNameData _SparseNodeNumNameData); void htDatadrawRootInsertSparseNodeXData(htDatadrawRoot DatadrawRoot, htSparseNodeXData _SparseNodeXData); void htDatadrawRootRemoveSparseNodeXData(htDatadrawRoot DatadrawRoot, htSparseNodeXData _SparseNodeXData); void htDatadrawRootInsertAfterSparseNodeXData(htDatadrawRoot DatadrawRoot, htSparseNodeXData prevSparseNodeXData, htSparseNodeXData _SparseNodeXData); void htDatadrawRootAppendSparseNodeXData(htDatadrawRoot DatadrawRoot, htSparseNodeXData _SparseNodeXData); /*---------------------------------------------------------------------------------------- Fields for class SparseParentGraphNodeData. ----------------------------------------------------------------------------------------*/ struct htSparseParentGraphNodeDataFields { htGraph *GraphKey; htNode *FirstNode; htNode *LastNode; uint32 *NumNode; uint32 *NodeTableIndex; uint32 *NumNodeTable; htSparseParentGraphNodeData *NextDatadrawRootSparseParentGraphNodeData; htSparseParentGraphNodeData *PrevDatadrawRootSparseParentGraphNodeData; htSparseParentGraphNodeData *NextTableDatadrawRootSparseParentGraphNodeData; }; extern struct htSparseParentGraphNodeDataFields htSparseParentGraphNodeDatas; #define htSparseParentGraphNodeDataGetGraphKey(_SparseParentGraphNodeData) (htSparseParentGraphNodeDatas.GraphKey[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)]) #define htSparseParentGraphNodeDataSetGraphKey(_SparseParentGraphNodeData, value) ((htSparseParentGraphNodeDatas.GraphKey)[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)] = (value)) #define htSparseParentGraphNodeDataGetFirstNode(_SparseParentGraphNodeData) (htSparseParentGraphNodeDatas.FirstNode[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)]) #define htSparseParentGraphNodeDataSetFirstNode(_SparseParentGraphNodeData, value) ((htSparseParentGraphNodeDatas.FirstNode)[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)] = (value)) #define htSparseParentGraphNodeDataGetLastNode(_SparseParentGraphNodeData) (htSparseParentGraphNodeDatas.LastNode[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)]) #define htSparseParentGraphNodeDataSetLastNode(_SparseParentGraphNodeData, value) ((htSparseParentGraphNodeDatas.LastNode)[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)] = (value)) #define htSparseParentGraphNodeDataGetNumNode(_SparseParentGraphNodeData) (htSparseParentGraphNodeDatas.NumNode[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)]) #define htSparseParentGraphNodeDataSetNumNode(_SparseParentGraphNodeData, value) ((htSparseParentGraphNodeDatas.NumNode)[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)] = (value)) #define htSparseParentGraphNodeDataGetNodeTableIndex(_SparseParentGraphNodeData) (htSparseParentGraphNodeDatas.NodeTableIndex[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)]) #define htSparseParentGraphNodeDataSetNodeTableIndex(_SparseParentGraphNodeData, value) ((htSparseParentGraphNodeDatas.NodeTableIndex)[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)] = (value)) #define htSparseParentGraphNodeDataGetNumNodeTable(_SparseParentGraphNodeData) (htSparseParentGraphNodeDatas.NumNodeTable[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)]) #define htSparseParentGraphNodeDataSetNumNodeTable(_SparseParentGraphNodeData, value) ((htSparseParentGraphNodeDatas.NumNodeTable)[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)] = (value)) #define htSparseParentGraphNodeDataGetNextDatadrawRootSparseParentGraphNodeData(_SparseParentGraphNodeData) (htSparseParentGraphNodeDatas.NextDatadrawRootSparseParentGraphNodeData[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)]) #define htSparseParentGraphNodeDataSetNextDatadrawRootSparseParentGraphNodeData(_SparseParentGraphNodeData, value) ((htSparseParentGraphNodeDatas.NextDatadrawRootSparseParentGraphNodeData)[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)] = (value)) #define htSparseParentGraphNodeDataGetPrevDatadrawRootSparseParentGraphNodeData(_SparseParentGraphNodeData) (htSparseParentGraphNodeDatas.PrevDatadrawRootSparseParentGraphNodeData[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)]) #define htSparseParentGraphNodeDataSetPrevDatadrawRootSparseParentGraphNodeData(_SparseParentGraphNodeData, value) ((htSparseParentGraphNodeDatas.PrevDatadrawRootSparseParentGraphNodeData)[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)] = (value)) #define htSparseParentGraphNodeDataGetNextTableDatadrawRootSparseParentGraphNodeData(_SparseParentGraphNodeData) (htSparseParentGraphNodeDatas.NextTableDatadrawRootSparseParentGraphNodeData[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)]) #define htSparseParentGraphNodeDataSetNextTableDatadrawRootSparseParentGraphNodeData(_SparseParentGraphNodeData, value) ((htSparseParentGraphNodeDatas.NextTableDatadrawRootSparseParentGraphNodeData)[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)] = (value)) #define htSparseParentGraphNodeDataSetConstructorCallback(func) (htSparseParentGraphNodeDataConstructorCallback = (func)) #define htSparseParentGraphNodeDataGetConstructorCallback() (htSparseParentGraphNodeDataConstructorCallback) #define htSparseParentGraphNodeDataSetDestructorCallback(func) (htSparseParentGraphNodeDataDestructorCallback = (func)) #define htSparseParentGraphNodeDataGetDestructorCallback() (htSparseParentGraphNodeDataDestructorCallback) #define htSparseParentGraphNodeDataNextFree(_SparseParentGraphNodeData) (((htSparseParentGraphNodeData *)(void *)(htSparseParentGraphNodeDatas.GraphKey))[htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)]) #define htSparseParentGraphNodeDataSetNextFree(_SparseParentGraphNodeData, value) (((htSparseParentGraphNodeData *)(void *)(htSparseParentGraphNodeDatas.GraphKey)) \ [htSparseParentGraphNodeData2ValidIndex(_SparseParentGraphNodeData)] = (value)) #define htSparseParentGraphNodeDataAllocRaw() ( \ htRootData.firstFreeSparseParentGraphNodeData != htSparseParentGraphNodeDataNull? \ (htTemp_.SparseParentGraphNodeData = htRootData.firstFreeSparseParentGraphNodeData, \ htSetFirstFreeSparseParentGraphNodeData(htSparseParentGraphNodeDataNextFree(htTemp_.SparseParentGraphNodeData)), true) \ : (htRootData.usedSparseParentGraphNodeData == htRootData.allocatedSparseParentGraphNodeData && (htSparseParentGraphNodeDataAllocMore(), true), \ htTemp_.SparseParentGraphNodeData = htIndex2SparseParentGraphNodeData(htRootData.usedSparseParentGraphNodeData), \ htSetUsedSparseParentGraphNodeData(htUsedSparseParentGraphNodeData() + 1)), \ htTemp_.SparseParentGraphNodeData) #define htSparseParentGraphNodeDataAlloc() ( \ htRootData.firstFreeSparseParentGraphNodeData != htSparseParentGraphNodeDataNull? \ (htTemp_.SparseParentGraphNodeData = htRootData.firstFreeSparseParentGraphNodeData, \ htSetFirstFreeSparseParentGraphNodeData(htSparseParentGraphNodeDataNextFree(htTemp_.SparseParentGraphNodeData)), true) \ : (htRootData.usedSparseParentGraphNodeData == htRootData.allocatedSparseParentGraphNodeData && (htSparseParentGraphNodeDataAllocMore(), true), \ htTemp_.SparseParentGraphNodeData = htIndex2SparseParentGraphNodeData(htRootData.usedSparseParentGraphNodeData), \ htSetUsedSparseParentGraphNodeData(htUsedSparseParentGraphNodeData() + 1)), \ htSparseParentGraphNodeDataSetGraphKey(htTemp_.SparseParentGraphNodeData, htGraphNull), \ htSparseParentGraphNodeDataSetFirstNode(htTemp_.SparseParentGraphNodeData, htNodeNull), \ htSparseParentGraphNodeDataSetLastNode(htTemp_.SparseParentGraphNodeData, htNodeNull), \ htSparseParentGraphNodeDataSetNumNode(htTemp_.SparseParentGraphNodeData, 0), \ htSparseParentGraphNodeDataSetNodeTableIndex(htTemp_.SparseParentGraphNodeData, 0), \ htSparseParentGraphNodeDataSetNumNodeTable(htTemp_.SparseParentGraphNodeData, 0), \ htSparseParentGraphNodeDataSetNextDatadrawRootSparseParentGraphNodeData(htTemp_.SparseParentGraphNodeData, htSparseParentGraphNodeDataNull), \ htSparseParentGraphNodeDataSetPrevDatadrawRootSparseParentGraphNodeData(htTemp_.SparseParentGraphNodeData, htSparseParentGraphNodeDataNull), \ htSparseParentGraphNodeDataSetNextTableDatadrawRootSparseParentGraphNodeData(htTemp_.SparseParentGraphNodeData, htSparseParentGraphNodeDataNull), \ htSparseParentGraphNodeDataConstructorCallback != NULL && (htSparseParentGraphNodeDataConstructorCallback(htTemp_.SparseParentGraphNodeData), true), \ htTemp_.SparseParentGraphNodeData) #define htSparseParentGraphNodeDataFree(SparseParentGraphNodeData) (htSparseParentGraphNodeDataSetNextFree(SparseParentGraphNodeData, htRootData.firstFreeSparseParentGraphNodeData), \ htSetFirstFreeSparseParentGraphNodeData(SparseParentGraphNodeData)) void htSparseParentGraphNodeDataDestroy(htSparseParentGraphNodeData SparseParentGraphNodeData); void htSparseParentGraphNodeDataAllocMore(void); void htSparseParentGraphNodeDataCopyProps(htSparseParentGraphNodeData htOldSparseParentGraphNodeData, htSparseParentGraphNodeData htNewSparseParentGraphNodeData); /*---------------------------------------------------------------------------------------- Fields for class SparseChildGraphNodeData. ----------------------------------------------------------------------------------------*/ struct htSparseChildGraphNodeDataFields { htNode *NodeKey; htNode *NextGraphNode; htNode *PrevGraphNode; htNode *NextTableGraphNode; htSparseChildGraphNodeData *NextDatadrawRootSparseChildGraphNodeData; htSparseChildGraphNodeData *PrevDatadrawRootSparseChildGraphNodeData; htSparseChildGraphNodeData *NextTableDatadrawRootSparseChildGraphNodeData; }; extern struct htSparseChildGraphNodeDataFields htSparseChildGraphNodeDatas; #define htSparseChildGraphNodeDataGetNodeKey(_SparseChildGraphNodeData) (htSparseChildGraphNodeDatas.NodeKey[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)]) #define htSparseChildGraphNodeDataSetNodeKey(_SparseChildGraphNodeData, value) ((htSparseChildGraphNodeDatas.NodeKey)[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)] = (value)) #define htSparseChildGraphNodeDataGetNextGraphNode(_SparseChildGraphNodeData) (htSparseChildGraphNodeDatas.NextGraphNode[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)]) #define htSparseChildGraphNodeDataSetNextGraphNode(_SparseChildGraphNodeData, value) ((htSparseChildGraphNodeDatas.NextGraphNode)[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)] = (value)) #define htSparseChildGraphNodeDataGetPrevGraphNode(_SparseChildGraphNodeData) (htSparseChildGraphNodeDatas.PrevGraphNode[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)]) #define htSparseChildGraphNodeDataSetPrevGraphNode(_SparseChildGraphNodeData, value) ((htSparseChildGraphNodeDatas.PrevGraphNode)[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)] = (value)) #define htSparseChildGraphNodeDataGetNextTableGraphNode(_SparseChildGraphNodeData) (htSparseChildGraphNodeDatas.NextTableGraphNode[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)]) #define htSparseChildGraphNodeDataSetNextTableGraphNode(_SparseChildGraphNodeData, value) ((htSparseChildGraphNodeDatas.NextTableGraphNode)[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)] = (value)) #define htSparseChildGraphNodeDataGetNextDatadrawRootSparseChildGraphNodeData(_SparseChildGraphNodeData) (htSparseChildGraphNodeDatas.NextDatadrawRootSparseChildGraphNodeData[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)]) #define htSparseChildGraphNodeDataSetNextDatadrawRootSparseChildGraphNodeData(_SparseChildGraphNodeData, value) ((htSparseChildGraphNodeDatas.NextDatadrawRootSparseChildGraphNodeData)[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)] = (value)) #define htSparseChildGraphNodeDataGetPrevDatadrawRootSparseChildGraphNodeData(_SparseChildGraphNodeData) (htSparseChildGraphNodeDatas.PrevDatadrawRootSparseChildGraphNodeData[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)]) #define htSparseChildGraphNodeDataSetPrevDatadrawRootSparseChildGraphNodeData(_SparseChildGraphNodeData, value) ((htSparseChildGraphNodeDatas.PrevDatadrawRootSparseChildGraphNodeData)[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)] = (value)) #define htSparseChildGraphNodeDataGetNextTableDatadrawRootSparseChildGraphNodeData(_SparseChildGraphNodeData) (htSparseChildGraphNodeDatas.NextTableDatadrawRootSparseChildGraphNodeData[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)]) #define htSparseChildGraphNodeDataSetNextTableDatadrawRootSparseChildGraphNodeData(_SparseChildGraphNodeData, value) ((htSparseChildGraphNodeDatas.NextTableDatadrawRootSparseChildGraphNodeData)[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)] = (value)) #define htSparseChildGraphNodeDataSetConstructorCallback(func) (htSparseChildGraphNodeDataConstructorCallback = (func)) #define htSparseChildGraphNodeDataGetConstructorCallback() (htSparseChildGraphNodeDataConstructorCallback) #define htSparseChildGraphNodeDataSetDestructorCallback(func) (htSparseChildGraphNodeDataDestructorCallback = (func)) #define htSparseChildGraphNodeDataGetDestructorCallback() (htSparseChildGraphNodeDataDestructorCallback) #define htSparseChildGraphNodeDataNextFree(_SparseChildGraphNodeData) (((htSparseChildGraphNodeData *)(void *)(htSparseChildGraphNodeDatas.NodeKey))[htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)]) #define htSparseChildGraphNodeDataSetNextFree(_SparseChildGraphNodeData, value) (((htSparseChildGraphNodeData *)(void *)(htSparseChildGraphNodeDatas.NodeKey)) \ [htSparseChildGraphNodeData2ValidIndex(_SparseChildGraphNodeData)] = (value)) #define htSparseChildGraphNodeDataAllocRaw() ( \ htRootData.firstFreeSparseChildGraphNodeData != htSparseChildGraphNodeDataNull? \ (htTemp_.SparseChildGraphNodeData = htRootData.firstFreeSparseChildGraphNodeData, \ htSetFirstFreeSparseChildGraphNodeData(htSparseChildGraphNodeDataNextFree(htTemp_.SparseChildGraphNodeData)), true) \ : (htRootData.usedSparseChildGraphNodeData == htRootData.allocatedSparseChildGraphNodeData && (htSparseChildGraphNodeDataAllocMore(), true), \ htTemp_.SparseChildGraphNodeData = htIndex2SparseChildGraphNodeData(htRootData.usedSparseChildGraphNodeData), \ htSetUsedSparseChildGraphNodeData(htUsedSparseChildGraphNodeData() + 1)), \ htTemp_.SparseChildGraphNodeData) #define htSparseChildGraphNodeDataAlloc() ( \ htRootData.firstFreeSparseChildGraphNodeData != htSparseChildGraphNodeDataNull? \ (htTemp_.SparseChildGraphNodeData = htRootData.firstFreeSparseChildGraphNodeData, \ htSetFirstFreeSparseChildGraphNodeData(htSparseChildGraphNodeDataNextFree(htTemp_.SparseChildGraphNodeData)), true) \ : (htRootData.usedSparseChildGraphNodeData == htRootData.allocatedSparseChildGraphNodeData && (htSparseChildGraphNodeDataAllocMore(), true), \ htTemp_.SparseChildGraphNodeData = htIndex2SparseChildGraphNodeData(htRootData.usedSparseChildGraphNodeData), \ htSetUsedSparseChildGraphNodeData(htUsedSparseChildGraphNodeData() + 1)), \ htSparseChildGraphNodeDataSetNodeKey(htTemp_.SparseChildGraphNodeData, htNodeNull), \ htSparseChildGraphNodeDataSetNextGraphNode(htTemp_.SparseChildGraphNodeData, htNodeNull), \ htSparseChildGraphNodeDataSetPrevGraphNode(htTemp_.SparseChildGraphNodeData, htNodeNull), \ htSparseChildGraphNodeDataSetNextTableGraphNode(htTemp_.SparseChildGraphNodeData, htNodeNull), \ htSparseChildGraphNodeDataSetNextDatadrawRootSparseChildGraphNodeData(htTemp_.SparseChildGraphNodeData, htSparseChildGraphNodeDataNull), \ htSparseChildGraphNodeDataSetPrevDatadrawRootSparseChildGraphNodeData(htTemp_.SparseChildGraphNodeData, htSparseChildGraphNodeDataNull), \ htSparseChildGraphNodeDataSetNextTableDatadrawRootSparseChildGraphNodeData(htTemp_.SparseChildGraphNodeData, htSparseChildGraphNodeDataNull), \ htSparseChildGraphNodeDataConstructorCallback != NULL && (htSparseChildGraphNodeDataConstructorCallback(htTemp_.SparseChildGraphNodeData), true), \ htTemp_.SparseChildGraphNodeData) #define htSparseChildGraphNodeDataFree(SparseChildGraphNodeData) (htSparseChildGraphNodeDataSetNextFree(SparseChildGraphNodeData, htRootData.firstFreeSparseChildGraphNodeData), \ htSetFirstFreeSparseChildGraphNodeData(SparseChildGraphNodeData)) void htSparseChildGraphNodeDataDestroy(htSparseChildGraphNodeData SparseChildGraphNodeData); void htSparseChildGraphNodeDataAllocMore(void); void htSparseChildGraphNodeDataCopyProps(htSparseChildGraphNodeData htOldSparseChildGraphNodeData, htSparseChildGraphNodeData htNewSparseChildGraphNodeData); /*---------------------------------------------------------------------------------------- Fields for class SparseNodeNameIndexData. ----------------------------------------------------------------------------------------*/ struct htSparseNodeNameIndexDataFields { htNode *NodeKey; uint32 *NameIndex; htSparseNodeNameIndexData *NextDatadrawRootSparseNodeNameIndexData; htSparseNodeNameIndexData *PrevDatadrawRootSparseNodeNameIndexData; htSparseNodeNameIndexData *NextTableDatadrawRootSparseNodeNameIndexData; }; extern struct htSparseNodeNameIndexDataFields htSparseNodeNameIndexDatas; #define htSparseNodeNameIndexDataGetNodeKey(_SparseNodeNameIndexData) (htSparseNodeNameIndexDatas.NodeKey[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)]) #define htSparseNodeNameIndexDataSetNodeKey(_SparseNodeNameIndexData, value) ((htSparseNodeNameIndexDatas.NodeKey)[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)] = (value)) #define htSparseNodeNameIndexDataGetNameIndex(_SparseNodeNameIndexData) (htSparseNodeNameIndexDatas.NameIndex[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)]) #define htSparseNodeNameIndexDataSetNameIndex(_SparseNodeNameIndexData, value) ((htSparseNodeNameIndexDatas.NameIndex)[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)] = (value)) #define htSparseNodeNameIndexDataGetNextDatadrawRootSparseNodeNameIndexData(_SparseNodeNameIndexData) (htSparseNodeNameIndexDatas.NextDatadrawRootSparseNodeNameIndexData[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)]) #define htSparseNodeNameIndexDataSetNextDatadrawRootSparseNodeNameIndexData(_SparseNodeNameIndexData, value) ((htSparseNodeNameIndexDatas.NextDatadrawRootSparseNodeNameIndexData)[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)] = (value)) #define htSparseNodeNameIndexDataGetPrevDatadrawRootSparseNodeNameIndexData(_SparseNodeNameIndexData) (htSparseNodeNameIndexDatas.PrevDatadrawRootSparseNodeNameIndexData[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)]) #define htSparseNodeNameIndexDataSetPrevDatadrawRootSparseNodeNameIndexData(_SparseNodeNameIndexData, value) ((htSparseNodeNameIndexDatas.PrevDatadrawRootSparseNodeNameIndexData)[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)] = (value)) #define htSparseNodeNameIndexDataGetNextTableDatadrawRootSparseNodeNameIndexData(_SparseNodeNameIndexData) (htSparseNodeNameIndexDatas.NextTableDatadrawRootSparseNodeNameIndexData[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)]) #define htSparseNodeNameIndexDataSetNextTableDatadrawRootSparseNodeNameIndexData(_SparseNodeNameIndexData, value) ((htSparseNodeNameIndexDatas.NextTableDatadrawRootSparseNodeNameIndexData)[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)] = (value)) #define htSparseNodeNameIndexDataSetConstructorCallback(func) (htSparseNodeNameIndexDataConstructorCallback = (func)) #define htSparseNodeNameIndexDataGetConstructorCallback() (htSparseNodeNameIndexDataConstructorCallback) #define htSparseNodeNameIndexDataSetDestructorCallback(func) (htSparseNodeNameIndexDataDestructorCallback = (func)) #define htSparseNodeNameIndexDataGetDestructorCallback() (htSparseNodeNameIndexDataDestructorCallback) #define htSparseNodeNameIndexDataNextFree(_SparseNodeNameIndexData) (((htSparseNodeNameIndexData *)(void *)(htSparseNodeNameIndexDatas.NodeKey))[htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)]) #define htSparseNodeNameIndexDataSetNextFree(_SparseNodeNameIndexData, value) (((htSparseNodeNameIndexData *)(void *)(htSparseNodeNameIndexDatas.NodeKey)) \ [htSparseNodeNameIndexData2ValidIndex(_SparseNodeNameIndexData)] = (value)) #define htSparseNodeNameIndexDataAllocRaw() ( \ htRootData.firstFreeSparseNodeNameIndexData != htSparseNodeNameIndexDataNull? \ (htTemp_.SparseNodeNameIndexData = htRootData.firstFreeSparseNodeNameIndexData, \ htSetFirstFreeSparseNodeNameIndexData(htSparseNodeNameIndexDataNextFree(htTemp_.SparseNodeNameIndexData)), true) \ : (htRootData.usedSparseNodeNameIndexData == htRootData.allocatedSparseNodeNameIndexData && (htSparseNodeNameIndexDataAllocMore(), true), \ htTemp_.SparseNodeNameIndexData = htIndex2SparseNodeNameIndexData(htRootData.usedSparseNodeNameIndexData), \ htSetUsedSparseNodeNameIndexData(htUsedSparseNodeNameIndexData() + 1)), \ htTemp_.SparseNodeNameIndexData) #define htSparseNodeNameIndexDataAlloc() ( \ htRootData.firstFreeSparseNodeNameIndexData != htSparseNodeNameIndexDataNull? \ (htTemp_.SparseNodeNameIndexData = htRootData.firstFreeSparseNodeNameIndexData, \ htSetFirstFreeSparseNodeNameIndexData(htSparseNodeNameIndexDataNextFree(htTemp_.SparseNodeNameIndexData)), true) \ : (htRootData.usedSparseNodeNameIndexData == htRootData.allocatedSparseNodeNameIndexData && (htSparseNodeNameIndexDataAllocMore(), true), \ htTemp_.SparseNodeNameIndexData = htIndex2SparseNodeNameIndexData(htRootData.usedSparseNodeNameIndexData), \ htSetUsedSparseNodeNameIndexData(htUsedSparseNodeNameIndexData() + 1)), \ htSparseNodeNameIndexDataSetNodeKey(htTemp_.SparseNodeNameIndexData, htNodeNull), \ htSparseNodeNameIndexDataSetNameIndex(htTemp_.SparseNodeNameIndexData, 0), \ htSparseNodeNameIndexDataSetNextDatadrawRootSparseNodeNameIndexData(htTemp_.SparseNodeNameIndexData, htSparseNodeNameIndexDataNull), \ htSparseNodeNameIndexDataSetPrevDatadrawRootSparseNodeNameIndexData(htTemp_.SparseNodeNameIndexData, htSparseNodeNameIndexDataNull), \ htSparseNodeNameIndexDataSetNextTableDatadrawRootSparseNodeNameIndexData(htTemp_.SparseNodeNameIndexData, htSparseNodeNameIndexDataNull), \ htSparseNodeNameIndexDataConstructorCallback != NULL && (htSparseNodeNameIndexDataConstructorCallback(htTemp_.SparseNodeNameIndexData), true), \ htTemp_.SparseNodeNameIndexData) #define htSparseNodeNameIndexDataFree(SparseNodeNameIndexData) (htSparseNodeNameIndexDataSetNextFree(SparseNodeNameIndexData, htRootData.firstFreeSparseNodeNameIndexData), \ htSetFirstFreeSparseNodeNameIndexData(SparseNodeNameIndexData)) void htSparseNodeNameIndexDataDestroy(htSparseNodeNameIndexData SparseNodeNameIndexData); void htSparseNodeNameIndexDataAllocMore(void); void htSparseNodeNameIndexDataCopyProps(htSparseNodeNameIndexData htOldSparseNodeNameIndexData, htSparseNodeNameIndexData htNewSparseNodeNameIndexData); /*---------------------------------------------------------------------------------------- Fields for class SparseNodeNumNameData. ----------------------------------------------------------------------------------------*/ struct htSparseNodeNumNameDataFields { htNode *NodeKey; uint32 *NumName; htSparseNodeNumNameData *NextDatadrawRootSparseNodeNumNameData; htSparseNodeNumNameData *PrevDatadrawRootSparseNodeNumNameData; htSparseNodeNumNameData *NextTableDatadrawRootSparseNodeNumNameData; }; extern struct htSparseNodeNumNameDataFields htSparseNodeNumNameDatas; #define htSparseNodeNumNameDataGetNodeKey(_SparseNodeNumNameData) (htSparseNodeNumNameDatas.NodeKey[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)]) #define htSparseNodeNumNameDataSetNodeKey(_SparseNodeNumNameData, value) ((htSparseNodeNumNameDatas.NodeKey)[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)] = (value)) #define htSparseNodeNumNameDataGetNumName(_SparseNodeNumNameData) (htSparseNodeNumNameDatas.NumName[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)]) #define htSparseNodeNumNameDataSetNumName(_SparseNodeNumNameData, value) ((htSparseNodeNumNameDatas.NumName)[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)] = (value)) #define htSparseNodeNumNameDataGetNextDatadrawRootSparseNodeNumNameData(_SparseNodeNumNameData) (htSparseNodeNumNameDatas.NextDatadrawRootSparseNodeNumNameData[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)]) #define htSparseNodeNumNameDataSetNextDatadrawRootSparseNodeNumNameData(_SparseNodeNumNameData, value) ((htSparseNodeNumNameDatas.NextDatadrawRootSparseNodeNumNameData)[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)] = (value)) #define htSparseNodeNumNameDataGetPrevDatadrawRootSparseNodeNumNameData(_SparseNodeNumNameData) (htSparseNodeNumNameDatas.PrevDatadrawRootSparseNodeNumNameData[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)]) #define htSparseNodeNumNameDataSetPrevDatadrawRootSparseNodeNumNameData(_SparseNodeNumNameData, value) ((htSparseNodeNumNameDatas.PrevDatadrawRootSparseNodeNumNameData)[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)] = (value)) #define htSparseNodeNumNameDataGetNextTableDatadrawRootSparseNodeNumNameData(_SparseNodeNumNameData) (htSparseNodeNumNameDatas.NextTableDatadrawRootSparseNodeNumNameData[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)]) #define htSparseNodeNumNameDataSetNextTableDatadrawRootSparseNodeNumNameData(_SparseNodeNumNameData, value) ((htSparseNodeNumNameDatas.NextTableDatadrawRootSparseNodeNumNameData)[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)] = (value)) #define htSparseNodeNumNameDataSetConstructorCallback(func) (htSparseNodeNumNameDataConstructorCallback = (func)) #define htSparseNodeNumNameDataGetConstructorCallback() (htSparseNodeNumNameDataConstructorCallback) #define htSparseNodeNumNameDataSetDestructorCallback(func) (htSparseNodeNumNameDataDestructorCallback = (func)) #define htSparseNodeNumNameDataGetDestructorCallback() (htSparseNodeNumNameDataDestructorCallback) #define htSparseNodeNumNameDataNextFree(_SparseNodeNumNameData) (((htSparseNodeNumNameData *)(void *)(htSparseNodeNumNameDatas.NodeKey))[htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)]) #define htSparseNodeNumNameDataSetNextFree(_SparseNodeNumNameData, value) (((htSparseNodeNumNameData *)(void *)(htSparseNodeNumNameDatas.NodeKey)) \ [htSparseNodeNumNameData2ValidIndex(_SparseNodeNumNameData)] = (value)) #define htSparseNodeNumNameDataAllocRaw() ( \ htRootData.firstFreeSparseNodeNumNameData != htSparseNodeNumNameDataNull? \ (htTemp_.SparseNodeNumNameData = htRootData.firstFreeSparseNodeNumNameData, \ htSetFirstFreeSparseNodeNumNameData(htSparseNodeNumNameDataNextFree(htTemp_.SparseNodeNumNameData)), true) \ : (htRootData.usedSparseNodeNumNameData == htRootData.allocatedSparseNodeNumNameData && (htSparseNodeNumNameDataAllocMore(), true), \ htTemp_.SparseNodeNumNameData = htIndex2SparseNodeNumNameData(htRootData.usedSparseNodeNumNameData), \ htSetUsedSparseNodeNumNameData(htUsedSparseNodeNumNameData() + 1)), \ htTemp_.SparseNodeNumNameData) #define htSparseNodeNumNameDataAlloc() ( \ htRootData.firstFreeSparseNodeNumNameData != htSparseNodeNumNameDataNull? \ (htTemp_.SparseNodeNumNameData = htRootData.firstFreeSparseNodeNumNameData, \ htSetFirstFreeSparseNodeNumNameData(htSparseNodeNumNameDataNextFree(htTemp_.SparseNodeNumNameData)), true) \ : (htRootData.usedSparseNodeNumNameData == htRootData.allocatedSparseNodeNumNameData && (htSparseNodeNumNameDataAllocMore(), true), \ htTemp_.SparseNodeNumNameData = htIndex2SparseNodeNumNameData(htRootData.usedSparseNodeNumNameData), \ htSetUsedSparseNodeNumNameData(htUsedSparseNodeNumNameData() + 1)), \ htSparseNodeNumNameDataSetNodeKey(htTemp_.SparseNodeNumNameData, htNodeNull), \ htSparseNodeNumNameDataSetNumName(htTemp_.SparseNodeNumNameData, 0), \ htSparseNodeNumNameDataSetNextDatadrawRootSparseNodeNumNameData(htTemp_.SparseNodeNumNameData, htSparseNodeNumNameDataNull), \ htSparseNodeNumNameDataSetPrevDatadrawRootSparseNodeNumNameData(htTemp_.SparseNodeNumNameData, htSparseNodeNumNameDataNull), \ htSparseNodeNumNameDataSetNextTableDatadrawRootSparseNodeNumNameData(htTemp_.SparseNodeNumNameData, htSparseNodeNumNameDataNull), \ htSparseNodeNumNameDataConstructorCallback != NULL && (htSparseNodeNumNameDataConstructorCallback(htTemp_.SparseNodeNumNameData), true), \ htTemp_.SparseNodeNumNameData) #define htSparseNodeNumNameDataFree(SparseNodeNumNameData) (htSparseNodeNumNameDataSetNextFree(SparseNodeNumNameData, htRootData.firstFreeSparseNodeNumNameData), \ htSetFirstFreeSparseNodeNumNameData(SparseNodeNumNameData)) void htSparseNodeNumNameDataDestroy(htSparseNodeNumNameData SparseNodeNumNameData); void htSparseNodeNumNameDataAllocMore(void); void htSparseNodeNumNameDataCopyProps(htSparseNodeNumNameData htOldSparseNodeNumNameData, htSparseNodeNumNameData htNewSparseNodeNumNameData); /*---------------------------------------------------------------------------------------- Fields for class SparseNodeXData. ----------------------------------------------------------------------------------------*/ struct htSparseNodeXDataFields { htNode *NodeKey; int32 *X; htSparseNodeXData *NextDatadrawRootSparseNodeXData; htSparseNodeXData *PrevDatadrawRootSparseNodeXData; htSparseNodeXData *NextTableDatadrawRootSparseNodeXData; }; extern struct htSparseNodeXDataFields htSparseNodeXDatas; #define htSparseNodeXDataGetNodeKey(_SparseNodeXData) (htSparseNodeXDatas.NodeKey[htSparseNodeXData2ValidIndex(_SparseNodeXData)]) #define htSparseNodeXDataSetNodeKey(_SparseNodeXData, value) ((htSparseNodeXDatas.NodeKey)[htSparseNodeXData2ValidIndex(_SparseNodeXData)] = (value)) #define htSparseNodeXDataGetX(_SparseNodeXData) (htSparseNodeXDatas.X[htSparseNodeXData2ValidIndex(_SparseNodeXData)]) #define htSparseNodeXDataSetX(_SparseNodeXData, value) ((htSparseNodeXDatas.X)[htSparseNodeXData2ValidIndex(_SparseNodeXData)] = (value)) #define htSparseNodeXDataGetNextDatadrawRootSparseNodeXData(_SparseNodeXData) (htSparseNodeXDatas.NextDatadrawRootSparseNodeXData[htSparseNodeXData2ValidIndex(_SparseNodeXData)]) #define htSparseNodeXDataSetNextDatadrawRootSparseNodeXData(_SparseNodeXData, value) ((htSparseNodeXDatas.NextDatadrawRootSparseNodeXData)[htSparseNodeXData2ValidIndex(_SparseNodeXData)] = (value)) #define htSparseNodeXDataGetPrevDatadrawRootSparseNodeXData(_SparseNodeXData) (htSparseNodeXDatas.PrevDatadrawRootSparseNodeXData[htSparseNodeXData2ValidIndex(_SparseNodeXData)]) #define htSparseNodeXDataSetPrevDatadrawRootSparseNodeXData(_SparseNodeXData, value) ((htSparseNodeXDatas.PrevDatadrawRootSparseNodeXData)[htSparseNodeXData2ValidIndex(_SparseNodeXData)] = (value)) #define htSparseNodeXDataGetNextTableDatadrawRootSparseNodeXData(_SparseNodeXData) (htSparseNodeXDatas.NextTableDatadrawRootSparseNodeXData[htSparseNodeXData2ValidIndex(_SparseNodeXData)]) #define htSparseNodeXDataSetNextTableDatadrawRootSparseNodeXData(_SparseNodeXData, value) ((htSparseNodeXDatas.NextTableDatadrawRootSparseNodeXData)[htSparseNodeXData2ValidIndex(_SparseNodeXData)] = (value)) #define htSparseNodeXDataSetConstructorCallback(func) (htSparseNodeXDataConstructorCallback = (func)) #define htSparseNodeXDataGetConstructorCallback() (htSparseNodeXDataConstructorCallback) #define htSparseNodeXDataSetDestructorCallback(func) (htSparseNodeXDataDestructorCallback = (func)) #define htSparseNodeXDataGetDestructorCallback() (htSparseNodeXDataDestructorCallback) #define htSparseNodeXDataNextFree(_SparseNodeXData) (((htSparseNodeXData *)(void *)(htSparseNodeXDatas.NodeKey))[htSparseNodeXData2ValidIndex(_SparseNodeXData)]) #define htSparseNodeXDataSetNextFree(_SparseNodeXData, value) (((htSparseNodeXData *)(void *)(htSparseNodeXDatas.NodeKey)) \ [htSparseNodeXData2ValidIndex(_SparseNodeXData)] = (value)) #define htSparseNodeXDataAllocRaw() ( \ htRootData.firstFreeSparseNodeXData != htSparseNodeXDataNull? \ (htTemp_.SparseNodeXData = htRootData.firstFreeSparseNodeXData, \ htSetFirstFreeSparseNodeXData(htSparseNodeXDataNextFree(htTemp_.SparseNodeXData)), true) \ : (htRootData.usedSparseNodeXData == htRootData.allocatedSparseNodeXData && (htSparseNodeXDataAllocMore(), true), \ htTemp_.SparseNodeXData = htIndex2SparseNodeXData(htRootData.usedSparseNodeXData), \ htSetUsedSparseNodeXData(htUsedSparseNodeXData() + 1)), \ htTemp_.SparseNodeXData) #define htSparseNodeXDataAlloc() ( \ htRootData.firstFreeSparseNodeXData != htSparseNodeXDataNull? \ (htTemp_.SparseNodeXData = htRootData.firstFreeSparseNodeXData, \ htSetFirstFreeSparseNodeXData(htSparseNodeXDataNextFree(htTemp_.SparseNodeXData)), true) \ : (htRootData.usedSparseNodeXData == htRootData.allocatedSparseNodeXData && (htSparseNodeXDataAllocMore(), true), \ htTemp_.SparseNodeXData = htIndex2SparseNodeXData(htRootData.usedSparseNodeXData), \ htSetUsedSparseNodeXData(htUsedSparseNodeXData() + 1)), \ htSparseNodeXDataSetNodeKey(htTemp_.SparseNodeXData, htNodeNull), \ htSparseNodeXDataSetX(htTemp_.SparseNodeXData, 0), \ htSparseNodeXDataSetNextDatadrawRootSparseNodeXData(htTemp_.SparseNodeXData, htSparseNodeXDataNull), \ htSparseNodeXDataSetPrevDatadrawRootSparseNodeXData(htTemp_.SparseNodeXData, htSparseNodeXDataNull), \ htSparseNodeXDataSetNextTableDatadrawRootSparseNodeXData(htTemp_.SparseNodeXData, htSparseNodeXDataNull), \ htSparseNodeXDataConstructorCallback != NULL && (htSparseNodeXDataConstructorCallback(htTemp_.SparseNodeXData), true), \ htTemp_.SparseNodeXData) #define htSparseNodeXDataFree(SparseNodeXData) (htSparseNodeXDataSetNextFree(SparseNodeXData, htRootData.firstFreeSparseNodeXData), \ htSetFirstFreeSparseNodeXData(SparseNodeXData)) void htSparseNodeXDataDestroy(htSparseNodeXData SparseNodeXData); void htSparseNodeXDataAllocMore(void); void htSparseNodeXDataCopyProps(htSparseNodeXData htOldSparseNodeXData, htSparseNodeXData htNewSparseNodeXData); /*---------------------------------------------------------------------------------------- Temp Union structure - Macro temp variables, use only one ----------------------------------------------------------------------------------------*/ union htTempType_ { htGraph Graph; htNode Node; htDatadrawRoot DatadrawRoot; htSparseParentGraphNodeData SparseParentGraphNodeData; htSparseChildGraphNodeData SparseChildGraphNodeData; htSparseNodeNameIndexData SparseNodeNameIndexData; htSparseNodeNumNameData SparseNodeNumNameData; htSparseNodeXData SparseNodeXData; }; extern union htTempType_ htTemp_; /*---------------------------------------------------------------------------------------- Constructor/Destructor hooks. ----------------------------------------------------------------------------------------*/ extern void(*htGraphConstructorCallback)(htGraph); extern void(*htGraphDestructorCallback)(htGraph); extern void(*htNodeConstructorCallback)(htNode); extern void(*htNodeDestructorCallback)(htNode); extern void(*htDatadrawRootConstructorCallback)(htDatadrawRoot); extern void(*htSparseParentGraphNodeDataConstructorCallback)(htSparseParentGraphNodeData); extern void(*htSparseParentGraphNodeDataDestructorCallback)(htSparseParentGraphNodeData); extern void(*htSparseChildGraphNodeDataConstructorCallback)(htSparseChildGraphNodeData); extern void(*htSparseChildGraphNodeDataDestructorCallback)(htSparseChildGraphNodeData); extern void(*htSparseNodeNameIndexDataConstructorCallback)(htSparseNodeNameIndexData); extern void(*htSparseNodeNameIndexDataDestructorCallback)(htSparseNodeNameIndexData); extern void(*htSparseNodeNumNameDataConstructorCallback)(htSparseNodeNumNameData); extern void(*htSparseNodeNumNameDataDestructorCallback)(htSparseNodeNumNameData); extern void(*htSparseNodeXDataConstructorCallback)(htSparseNodeXData); extern void(*htSparseNodeXDataDestructorCallback)(htSparseNodeXData); /*---------------------------------------------------------------------------------------- Root structure ----------------------------------------------------------------------------------------*/ struct htRootType_ { uint32 hash; /* This depends only on the structure of the database */ htGraph firstFreeGraph; uint32 usedGraph, allocatedGraph; uint32 usedGraphNodeTable, allocatedGraphNodeTable, freeGraphNodeTable; htNode firstFreeNode; uint32 usedNode, allocatedNode; uint32 usedNodeName, allocatedNodeName, freeNodeName; uint32 usedDatadrawRoot, allocatedDatadrawRoot; uint32 usedDatadrawRootSparseParentGraphNodeDataTable, allocatedDatadrawRootSparseParentGraphNodeDataTable, freeDatadrawRootSparseParentGraphNodeDataTable; uint32 usedDatadrawRootSparseChildGraphNodeDataTable, allocatedDatadrawRootSparseChildGraphNodeDataTable, freeDatadrawRootSparseChildGraphNodeDataTable; uint32 usedDatadrawRootSparseNodeNameIndexDataTable, allocatedDatadrawRootSparseNodeNameIndexDataTable, freeDatadrawRootSparseNodeNameIndexDataTable; uint32 usedDatadrawRootSparseNodeNumNameDataTable, allocatedDatadrawRootSparseNodeNumNameDataTable, freeDatadrawRootSparseNodeNumNameDataTable; uint32 usedDatadrawRootSparseNodeXDataTable, allocatedDatadrawRootSparseNodeXDataTable, freeDatadrawRootSparseNodeXDataTable; htSparseParentGraphNodeData firstFreeSparseParentGraphNodeData; uint32 usedSparseParentGraphNodeData, allocatedSparseParentGraphNodeData; htSparseChildGraphNodeData firstFreeSparseChildGraphNodeData; uint32 usedSparseChildGraphNodeData, allocatedSparseChildGraphNodeData; htSparseNodeNameIndexData firstFreeSparseNodeNameIndexData; uint32 usedSparseNodeNameIndexData, allocatedSparseNodeNameIndexData; htSparseNodeNumNameData firstFreeSparseNodeNumNameData; uint32 usedSparseNodeNumNameData, allocatedSparseNodeNumNameData; htSparseNodeXData firstFreeSparseNodeXData; uint32 usedSparseNodeXData, allocatedSparseNodeXData; }; extern struct htRootType_ htRootData; #define htHash() (htRootData.hash) #define htFirstFreeGraph() htRootData.firstFreeGraph #define htSetFirstFreeGraph(value) (htRootData.firstFreeGraph = (value)) #define htUsedGraph() htRootData.usedGraph #define htAllocatedGraph() htRootData.allocatedGraph #define htSetUsedGraph(value) (htRootData.usedGraph = (value)) #define htSetAllocatedGraph(value) (htRootData.allocatedGraph = (value)) #define htUsedGraphNodeTable() htRootData.usedGraphNodeTable #define htAllocatedGraphNodeTable() htRootData.allocatedGraphNodeTable #define htFreeGraphNodeTable() htRootData.freeGraphNodeTable #define htSetUsedGraphNodeTable(value) (htRootData.usedGraphNodeTable = (value)) #define htSetAllocatedGraphNodeTable(value) (htRootData.allocatedGraphNodeTable = (value)) #define htSetFreeGraphNodeTable(value) (htRootData.freeGraphNodeTable = (value)) #define htFirstFreeNode() htRootData.firstFreeNode #define htSetFirstFreeNode(value) (htRootData.firstFreeNode = (value)) #define htUsedNode() htRootData.usedNode #define htAllocatedNode() htRootData.allocatedNode #define htSetUsedNode(value) (htRootData.usedNode = (value)) #define htSetAllocatedNode(value) (htRootData.allocatedNode = (value)) #define htUsedNodeName() htRootData.usedNodeName #define htAllocatedNodeName() htRootData.allocatedNodeName #define htFreeNodeName() htRootData.freeNodeName #define htSetUsedNodeName(value) (htRootData.usedNodeName = (value)) #define htSetAllocatedNodeName(value) (htRootData.allocatedNodeName = (value)) #define htSetFreeNodeName(value) (htRootData.freeNodeName = (value)) #define htUsedDatadrawRoot() htRootData.usedDatadrawRoot #define htAllocatedDatadrawRoot() htRootData.allocatedDatadrawRoot #define htSetUsedDatadrawRoot(value) (htRootData.usedDatadrawRoot = (value)) #define htSetAllocatedDatadrawRoot(value) (htRootData.allocatedDatadrawRoot = (value)) #define htUsedDatadrawRootSparseParentGraphNodeDataTable() htRootData.usedDatadrawRootSparseParentGraphNodeDataTable #define htAllocatedDatadrawRootSparseParentGraphNodeDataTable() htRootData.allocatedDatadrawRootSparseParentGraphNodeDataTable #define htFreeDatadrawRootSparseParentGraphNodeDataTable() htRootData.freeDatadrawRootSparseParentGraphNodeDataTable #define htSetUsedDatadrawRootSparseParentGraphNodeDataTable(value) (htRootData.usedDatadrawRootSparseParentGraphNodeDataTable = (value)) #define htSetAllocatedDatadrawRootSparseParentGraphNodeDataTable(value) (htRootData.allocatedDatadrawRootSparseParentGraphNodeDataTable = (value)) #define htSetFreeDatadrawRootSparseParentGraphNodeDataTable(value) (htRootData.freeDatadrawRootSparseParentGraphNodeDataTable = (value)) #define htUsedDatadrawRootSparseChildGraphNodeDataTable() htRootData.usedDatadrawRootSparseChildGraphNodeDataTable #define htAllocatedDatadrawRootSparseChildGraphNodeDataTable() htRootData.allocatedDatadrawRootSparseChildGraphNodeDataTable #define htFreeDatadrawRootSparseChildGraphNodeDataTable() htRootData.freeDatadrawRootSparseChildGraphNodeDataTable #define htSetUsedDatadrawRootSparseChildGraphNodeDataTable(value) (htRootData.usedDatadrawRootSparseChildGraphNodeDataTable = (value)) #define htSetAllocatedDatadrawRootSparseChildGraphNodeDataTable(value) (htRootData.allocatedDatadrawRootSparseChildGraphNodeDataTable = (value)) #define htSetFreeDatadrawRootSparseChildGraphNodeDataTable(value) (htRootData.freeDatadrawRootSparseChildGraphNodeDataTable = (value)) #define htUsedDatadrawRootSparseNodeNameIndexDataTable() htRootData.usedDatadrawRootSparseNodeNameIndexDataTable #define htAllocatedDatadrawRootSparseNodeNameIndexDataTable() htRootData.allocatedDatadrawRootSparseNodeNameIndexDataTable #define htFreeDatadrawRootSparseNodeNameIndexDataTable() htRootData.freeDatadrawRootSparseNodeNameIndexDataTable #define htSetUsedDatadrawRootSparseNodeNameIndexDataTable(value) (htRootData.usedDatadrawRootSparseNodeNameIndexDataTable = (value)) #define htSetAllocatedDatadrawRootSparseNodeNameIndexDataTable(value) (htRootData.allocatedDatadrawRootSparseNodeNameIndexDataTable = (value)) #define htSetFreeDatadrawRootSparseNodeNameIndexDataTable(value) (htRootData.freeDatadrawRootSparseNodeNameIndexDataTable = (value)) #define htUsedDatadrawRootSparseNodeNumNameDataTable() htRootData.usedDatadrawRootSparseNodeNumNameDataTable #define htAllocatedDatadrawRootSparseNodeNumNameDataTable() htRootData.allocatedDatadrawRootSparseNodeNumNameDataTable #define htFreeDatadrawRootSparseNodeNumNameDataTable() htRootData.freeDatadrawRootSparseNodeNumNameDataTable #define htSetUsedDatadrawRootSparseNodeNumNameDataTable(value) (htRootData.usedDatadrawRootSparseNodeNumNameDataTable = (value)) #define htSetAllocatedDatadrawRootSparseNodeNumNameDataTable(value) (htRootData.allocatedDatadrawRootSparseNodeNumNameDataTable = (value)) #define htSetFreeDatadrawRootSparseNodeNumNameDataTable(value) (htRootData.freeDatadrawRootSparseNodeNumNameDataTable = (value)) #define htUsedDatadrawRootSparseNodeXDataTable() htRootData.usedDatadrawRootSparseNodeXDataTable #define htAllocatedDatadrawRootSparseNodeXDataTable() htRootData.allocatedDatadrawRootSparseNodeXDataTable #define htFreeDatadrawRootSparseNodeXDataTable() htRootData.freeDatadrawRootSparseNodeXDataTable #define htSetUsedDatadrawRootSparseNodeXDataTable(value) (htRootData.usedDatadrawRootSparseNodeXDataTable = (value)) #define htSetAllocatedDatadrawRootSparseNodeXDataTable(value) (htRootData.allocatedDatadrawRootSparseNodeXDataTable = (value)) #define htSetFreeDatadrawRootSparseNodeXDataTable(value) (htRootData.freeDatadrawRootSparseNodeXDataTable = (value)) #define htFirstFreeSparseParentGraphNodeData() htRootData.firstFreeSparseParentGraphNodeData #define htSetFirstFreeSparseParentGraphNodeData(value) (htRootData.firstFreeSparseParentGraphNodeData = (value)) #define htUsedSparseParentGraphNodeData() htRootData.usedSparseParentGraphNodeData #define htAllocatedSparseParentGraphNodeData() htRootData.allocatedSparseParentGraphNodeData #define htSetUsedSparseParentGraphNodeData(value) (htRootData.usedSparseParentGraphNodeData = (value)) #define htSetAllocatedSparseParentGraphNodeData(value) (htRootData.allocatedSparseParentGraphNodeData = (value)) #define htFirstFreeSparseChildGraphNodeData() htRootData.firstFreeSparseChildGraphNodeData #define htSetFirstFreeSparseChildGraphNodeData(value) (htRootData.firstFreeSparseChildGraphNodeData = (value)) #define htUsedSparseChildGraphNodeData() htRootData.usedSparseChildGraphNodeData #define htAllocatedSparseChildGraphNodeData() htRootData.allocatedSparseChildGraphNodeData #define htSetUsedSparseChildGraphNodeData(value) (htRootData.usedSparseChildGraphNodeData = (value)) #define htSetAllocatedSparseChildGraphNodeData(value) (htRootData.allocatedSparseChildGraphNodeData = (value)) #define htFirstFreeSparseNodeNameIndexData() htRootData.firstFreeSparseNodeNameIndexData #define htSetFirstFreeSparseNodeNameIndexData(value) (htRootData.firstFreeSparseNodeNameIndexData = (value)) #define htUsedSparseNodeNameIndexData() htRootData.usedSparseNodeNameIndexData #define htAllocatedSparseNodeNameIndexData() htRootData.allocatedSparseNodeNameIndexData #define htSetUsedSparseNodeNameIndexData(value) (htRootData.usedSparseNodeNameIndexData = (value)) #define htSetAllocatedSparseNodeNameIndexData(value) (htRootData.allocatedSparseNodeNameIndexData = (value)) #define htFirstFreeSparseNodeNumNameData() htRootData.firstFreeSparseNodeNumNameData #define htSetFirstFreeSparseNodeNumNameData(value) (htRootData.firstFreeSparseNodeNumNameData = (value)) #define htUsedSparseNodeNumNameData() htRootData.usedSparseNodeNumNameData #define htAllocatedSparseNodeNumNameData() htRootData.allocatedSparseNodeNumNameData #define htSetUsedSparseNodeNumNameData(value) (htRootData.usedSparseNodeNumNameData = (value)) #define htSetAllocatedSparseNodeNumNameData(value) (htRootData.allocatedSparseNodeNumNameData = (value)) #define htFirstFreeSparseNodeXData() htRootData.firstFreeSparseNodeXData #define htSetFirstFreeSparseNodeXData(value) (htRootData.firstFreeSparseNodeXData = (value)) #define htUsedSparseNodeXData() htRootData.usedSparseNodeXData #define htAllocatedSparseNodeXData() htRootData.allocatedSparseNodeXData #define htSetUsedSparseNodeXData(value) (htRootData.usedSparseNodeXData = (value)) #define htSetAllocatedSparseNodeXData(value) (htRootData.allocatedSparseNodeXData = (value)) extern uint8 htModuleID; void htDatabaseStart(void); void htDatabaseStop(void); #if defined __cplusplus } #endif #endif