svf-tools 1.0.442 → 1.0.445

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
  8. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
  12. package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/BDDExpr_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/BitVector_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/BitVector_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +1 -1
  19. package/SVF-doxygen/html/html/CFGNormalizer_8cpp.html +86 -0
  20. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +104 -0
  21. package/SVF-doxygen/html/html/CFGNormalizer_8h.html +95 -0
  22. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +95 -0
  23. package/SVF-doxygen/html/html/CFLAlias_8h.html +100 -0
  24. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +136 -0
  25. package/SVF-doxygen/html/html/CFLGrammar_8cpp.html +81 -0
  26. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +90 -0
  27. package/SVF-doxygen/html/html/CFLGrammar_8h.html +97 -0
  28. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +114 -0
  29. package/SVF-doxygen/html/html/CFLGraph_8cpp.html +96 -0
  30. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +123 -0
  31. package/SVF-doxygen/html/html/CFLGraph_8h.html +124 -0
  32. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +114 -0
  33. package/SVF-doxygen/html/html/CFLSolver_8cpp.html +80 -0
  34. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +107 -0
  35. package/SVF-doxygen/html/html/CFLSolver_8h.html +6 -5
  36. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +27 -33
  37. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/CHG_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
  41. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/CSC_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  47. package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +1 -1
  50. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +6 -6
  51. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  52. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +2 -2
  55. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +1 -1
  57. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  59. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  60. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  61. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  62. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  64. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  65. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  66. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  68. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +2 -2
  69. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  75. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  76. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
  77. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  79. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  80. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  81. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  82. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  83. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  84. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  86. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  88. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +2 -2
  89. package/SVF-doxygen/html/html/GrammarBuilder_8cpp.html +94 -0
  90. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +92 -0
  91. package/SVF-doxygen/html/html/GrammarBuilder_8h.html +96 -0
  92. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +87 -0
  93. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  94. package/SVF-doxygen/html/html/Graph2Json_8h_source.html +1 -1
  95. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  96. package/SVF-doxygen/html/html/GraphReachSolver_8h.html +96 -0
  97. package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +113 -0
  98. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
  99. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  100. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  102. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  103. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  104. package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
  105. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  106. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  107. package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
  108. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  109. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +1 -1
  110. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  111. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  112. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  113. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  114. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
  115. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
  116. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  117. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  118. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  119. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  120. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  121. package/SVF-doxygen/html/html/MHP_8h_source.html +1 -1
  122. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  123. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  124. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  125. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  126. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  127. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  128. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  129. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  130. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  131. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  132. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  133. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  134. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  135. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
  136. package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -1
  137. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +1 -1
  138. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  139. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +1 -1
  140. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  141. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
  142. package/SVF-doxygen/html/html/Options_8cpp_source.html +7 -2
  143. package/SVF-doxygen/html/html/Options_8h_source.html +7 -2
  144. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  145. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  146. package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -1
  147. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  148. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  149. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  150. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +1 -1
  151. package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
  152. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  153. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
  154. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +1 -1
  155. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +1 -1
  156. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  157. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  158. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  159. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
  160. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  161. package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
  162. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  163. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
  164. package/SVF-doxygen/html/html/SCC_8h_source.html +1 -1
  165. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
  166. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
  167. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +1 -1
  168. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  169. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  170. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
  171. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  172. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
  173. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
  174. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  175. package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
  176. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
  177. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
  178. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +1 -1
  179. package/SVF-doxygen/html/html/SVFIR_8h_source.html +1 -1
  180. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  181. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  182. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  183. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
  184. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  185. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -1
  186. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  187. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +1 -1
  188. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  189. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
  190. package/SVF-doxygen/html/html/SaberCheckerAPI_8cpp_source.html +1 -1
  191. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  192. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  193. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
  194. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
  195. package/SVF-doxygen/html/html/SrcSnkDDA_8h.html +3 -3
  196. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +61 -61
  197. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +1 -1
  198. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  199. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  200. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -1
  201. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  202. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  203. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +1 -1
  204. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  205. package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
  206. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
  207. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
  208. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  209. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
  210. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  211. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
  212. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  213. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  214. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +1 -1
  215. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +1 -1
  216. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  217. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  218. package/SVF-doxygen/html/html/VFG_8h_source.html +2 -2
  219. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  220. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  221. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +1 -1
  222. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +1 -1
  223. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  224. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  225. package/SVF-doxygen/html/html/WPASolver_8h_source.html +1 -1
  226. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  227. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  228. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  229. package/SVF-doxygen/html/html/annotated.html +302 -288
  230. package/SVF-doxygen/html/html/cfl_8cpp.html +171 -0
  231. package/SVF-doxygen/html/html/cfl_8cpp_source.html +95 -0
  232. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +51 -51
  233. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +3 -3
  234. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +39 -39
  235. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  236. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +56 -56
  237. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +3 -3
  238. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +55 -55
  239. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +3 -3
  240. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +51 -51
  241. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -3
  242. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +52 -52
  243. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +3 -3
  244. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +59 -59
  245. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -3
  246. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +53 -53
  247. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
  248. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +33 -33
  249. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  250. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer-members.html +90 -0
  251. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +458 -0
  252. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +216 -0
  253. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +801 -0
  254. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
  255. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge-members.html +96 -0
  256. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +216 -0
  257. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.png +0 -0
  258. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +110 -0
  259. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +591 -0
  260. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.png +0 -0
  261. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +122 -0
  262. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +756 -0
  263. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.png +0 -0
  264. package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +118 -0
  265. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +257 -0
  266. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.png +0 -0
  267. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +17 -28
  268. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +181 -548
  269. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +36 -36
  270. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +3 -3
  271. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  272. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  273. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +57 -57
  274. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
  275. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +55 -55
  276. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +64 -64
  277. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.png +0 -0
  278. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +55 -55
  279. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -3
  280. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +57 -57
  281. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +66 -66
  282. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.png +0 -0
  283. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +48 -48
  284. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  285. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +47 -47
  286. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
  287. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +59 -59
  288. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +3 -3
  289. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +8 -24
  290. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
  291. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +10 -9
  292. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.png +0 -0
  293. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +21 -20
  294. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  295. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase-members.html +93 -0
  296. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +399 -0
  297. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.png +0 -0
  298. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder-members.html +85 -0
  299. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +226 -0
  300. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver-members.html +106 -0
  301. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +937 -0
  302. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.png +0 -0
  303. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +55 -55
  304. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +81 -81
  305. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.png +0 -0
  306. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +80 -75
  307. package/SVF-doxygen/html/html/classSVF_1_1Options.html +130 -0
  308. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +25 -25
  309. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +17 -16
  310. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  311. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +51 -51
  312. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +207 -207
  313. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.png +0 -0
  314. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +0 -12
  315. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +42 -42
  316. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +3 -3
  317. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +45 -45
  318. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
  319. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +61 -61
  320. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +5 -5
  321. package/SVF-doxygen/html/html/classes.html +103 -101
  322. package/SVF-doxygen/html/html/cuddInt_8c.html +6 -6
  323. package/SVF-doxygen/html/html/cuddInt_8c_source.html +2 -2
  324. package/SVF-doxygen/html/html/cudd_8h.html +4 -4
  325. package/SVF-doxygen/html/html/dda_8cpp.html +2 -46
  326. package/SVF-doxygen/html/html/dda_8cpp_source.html +4 -5
  327. package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -0
  328. package/SVF-doxygen/html/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html +2 -0
  329. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  330. package/SVF-doxygen/html/html/dir_97aefd0d527b934f1d99a682da8fe6a9.html +2 -0
  331. package/SVF-doxygen/html/html/dir_98f9a352f241e0e917d4efaa4086f6e8.html +89 -0
  332. package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +91 -0
  333. package/SVF-doxygen/html/html/dir_d44c64559bbebec7f509842c48db8b23.html +2 -0
  334. package/SVF-doxygen/html/html/dir_e6cca4e14eddbb730e0cbe3cab632ce5.html +83 -0
  335. package/SVF-doxygen/html/html/dir_fa02919a30fec2d2c2d591b4d920d648.html +2 -0
  336. package/SVF-doxygen/html/html/files.html +268 -252
  337. package/SVF-doxygen/html/html/functions.html +2 -1
  338. package/SVF-doxygen/html/html/functions_0x7e.html +18 -0
  339. package/SVF-doxygen/html/html/functions_a.html +16 -14
  340. package/SVF-doxygen/html/html/functions_b.html +16 -5
  341. package/SVF-doxygen/html/html/functions_c.html +69 -26
  342. package/SVF-doxygen/html/html/functions_d.html +3 -1
  343. package/SVF-doxygen/html/html/functions_e.html +19 -4
  344. package/SVF-doxygen/html/html/functions_eval.html +0 -6
  345. package/SVF-doxygen/html/html/functions_eval_c.html +9 -0
  346. package/SVF-doxygen/html/html/functions_eval_f.html +0 -3
  347. package/SVF-doxygen/html/html/functions_f.html +28 -21
  348. package/SVF-doxygen/html/html/functions_func.html +18 -10
  349. package/SVF-doxygen/html/html/functions_func_0x7e.html +18 -0
  350. package/SVF-doxygen/html/html/functions_func_b.html +19 -8
  351. package/SVF-doxygen/html/html/functions_func_c.html +42 -18
  352. package/SVF-doxygen/html/html/functions_func_d.html +4 -2
  353. package/SVF-doxygen/html/html/functions_func_e.html +10 -1
  354. package/SVF-doxygen/html/html/functions_func_f.html +6 -3
  355. package/SVF-doxygen/html/html/functions_func_g.html +56 -10
  356. package/SVF-doxygen/html/html/functions_func_h.html +12 -2
  357. package/SVF-doxygen/html/html/functions_func_i.html +19 -9
  358. package/SVF-doxygen/html/html/functions_func_n.html +7 -1
  359. package/SVF-doxygen/html/html/functions_func_p.html +8 -4
  360. package/SVF-doxygen/html/html/functions_func_s.html +20 -6
  361. package/SVF-doxygen/html/html/functions_func_v.html +3 -2
  362. package/SVF-doxygen/html/html/functions_g.html +86 -21
  363. package/SVF-doxygen/html/html/functions_h.html +15 -5
  364. package/SVF-doxygen/html/html/functions_i.html +27 -12
  365. package/SVF-doxygen/html/html/functions_l.html +5 -2
  366. package/SVF-doxygen/html/html/functions_n.html +22 -7
  367. package/SVF-doxygen/html/html/functions_o.html +6 -6
  368. package/SVF-doxygen/html/html/functions_p.html +23 -16
  369. package/SVF-doxygen/html/html/functions_r.html +11 -6
  370. package/SVF-doxygen/html/html/functions_s.html +53 -17
  371. package/SVF-doxygen/html/html/functions_t.html +11 -7
  372. package/SVF-doxygen/html/html/functions_type_c.html +5 -1
  373. package/SVF-doxygen/html/html/functions_type_g.html +6 -3
  374. package/SVF-doxygen/html/html/functions_type_i.html +4 -2
  375. package/SVF-doxygen/html/html/functions_type_n.html +6 -3
  376. package/SVF-doxygen/html/html/functions_type_p.html +9 -0
  377. package/SVF-doxygen/html/html/functions_type_s.html +6 -0
  378. package/SVF-doxygen/html/html/functions_type_w.html +3 -1
  379. package/SVF-doxygen/html/html/functions_v.html +2 -1
  380. package/SVF-doxygen/html/html/functions_vars.html +2 -1
  381. package/SVF-doxygen/html/html/functions_vars_c.html +6 -0
  382. package/SVF-doxygen/html/html/functions_vars_e.html +6 -0
  383. package/SVF-doxygen/html/html/functions_vars_f.html +9 -0
  384. package/SVF-doxygen/html/html/functions_vars_g.html +17 -1
  385. package/SVF-doxygen/html/html/functions_vars_i.html +3 -0
  386. package/SVF-doxygen/html/html/functions_vars_l.html +3 -0
  387. package/SVF-doxygen/html/html/functions_vars_n.html +6 -0
  388. package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
  389. package/SVF-doxygen/html/html/functions_vars_s.html +16 -0
  390. package/SVF-doxygen/html/html/functions_vars_t.html +6 -0
  391. package/SVF-doxygen/html/html/functions_vars_w.html +3 -1
  392. package/SVF-doxygen/html/html/functions_w.html +15 -1
  393. package/SVF-doxygen/html/html/globals_func_i.html +3 -10
  394. package/SVF-doxygen/html/html/globals_func_m.html +12 -11
  395. package/SVF-doxygen/html/html/globals_func_s.html +1 -0
  396. package/SVF-doxygen/html/html/globals_i.html +3 -10
  397. package/SVF-doxygen/html/html/globals_m.html +14 -13
  398. package/SVF-doxygen/html/html/globals_s.html +8 -7
  399. package/SVF-doxygen/html/html/hierarchy.html +433 -417
  400. package/SVF-doxygen/html/html/mta_8cpp.html +2 -46
  401. package/SVF-doxygen/html/html/mta_8cpp_source.html +3 -4
  402. package/SVF-doxygen/html/html/namespaceSVF.html +83 -6
  403. package/SVF-doxygen/html/html/namespacellvm.html +9 -0
  404. package/SVF-doxygen/html/html/namespacemembers_c.html +1 -1
  405. package/SVF-doxygen/html/html/namespacemembers_g.html +11 -2
  406. package/SVF-doxygen/html/html/namespacemembers_type.html +10 -1
  407. package/SVF-doxygen/html/html/saber_8cpp.html +2 -46
  408. package/SVF-doxygen/html/html/saber_8cpp_source.html +4 -5
  409. package/SVF-doxygen/html/html/search/all_0.js +1 -1
  410. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  411. package/SVF-doxygen/html/html/search/all_10.js +8 -6
  412. package/SVF-doxygen/html/html/search/all_12.js +2 -1
  413. package/SVF-doxygen/html/html/search/all_13.js +20 -11
  414. package/SVF-doxygen/html/html/search/all_14.js +5 -3
  415. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  416. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  417. package/SVF-doxygen/html/html/search/all_1b.js +6 -0
  418. package/SVF-doxygen/html/html/search/all_2.js +6 -4
  419. package/SVF-doxygen/html/html/search/all_3.js +27 -4
  420. package/SVF-doxygen/html/html/search/all_4.js +3 -2
  421. package/SVF-doxygen/html/html/search/all_5.js +5 -0
  422. package/SVF-doxygen/html/html/search/all_6.js +8 -5
  423. package/SVF-doxygen/html/html/search/all_7.js +40 -13
  424. package/SVF-doxygen/html/html/search/all_8.js +4 -1
  425. package/SVF-doxygen/html/html/search/all_9.js +9 -7
  426. package/SVF-doxygen/html/html/search/all_c.js +2 -1
  427. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  428. package/SVF-doxygen/html/html/search/all_e.js +9 -5
  429. package/SVF-doxygen/html/html/search/all_f.js +4 -4
  430. package/SVF-doxygen/html/html/search/classes_2.js +7 -0
  431. package/SVF-doxygen/html/html/search/classes_3.js +1 -0
  432. package/SVF-doxygen/html/html/search/classes_5.js +1 -0
  433. package/SVF-doxygen/html/html/search/classes_6.js +7 -0
  434. package/SVF-doxygen/html/html/search/enumvalues_0.js +0 -2
  435. package/SVF-doxygen/html/html/search/enumvalues_2.js +3 -0
  436. package/SVF-doxygen/html/html/search/enumvalues_5.js +0 -1
  437. package/SVF-doxygen/html/html/search/files_2.js +11 -1
  438. package/SVF-doxygen/html/html/search/files_6.js +4 -1
  439. package/SVF-doxygen/html/html/search/functions_0.js +4 -2
  440. package/SVF-doxygen/html/html/search/functions_1.js +6 -4
  441. package/SVF-doxygen/html/html/search/functions_10.js +7 -3
  442. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  443. package/SVF-doxygen/html/html/search/functions_16.js +6 -0
  444. package/SVF-doxygen/html/html/search/functions_2.js +8 -0
  445. package/SVF-doxygen/html/html/search/functions_3.js +2 -2
  446. package/SVF-doxygen/html/html/search/functions_4.js +3 -0
  447. package/SVF-doxygen/html/html/search/functions_5.js +3 -3
  448. package/SVF-doxygen/html/html/search/functions_6.js +22 -10
  449. package/SVF-doxygen/html/html/search/functions_7.js +4 -1
  450. package/SVF-doxygen/html/html/search/functions_8.js +5 -4
  451. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  452. package/SVF-doxygen/html/html/search/functions_c.js +2 -0
  453. package/SVF-doxygen/html/html/search/functions_e.js +2 -2
  454. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -0
  455. package/SVF-doxygen/html/html/search/typedefs_15.js +1 -1
  456. package/SVF-doxygen/html/html/search/typedefs_2.js +3 -2
  457. package/SVF-doxygen/html/html/search/typedefs_6.js +6 -3
  458. package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
  459. package/SVF-doxygen/html/html/search/typedefs_d.js +3 -3
  460. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -0
  461. package/SVF-doxygen/html/html/search/variables_0.js +1 -1
  462. package/SVF-doxygen/html/html/search/variables_12.js +1 -0
  463. package/SVF-doxygen/html/html/search/variables_13.js +5 -0
  464. package/SVF-doxygen/html/html/search/variables_14.js +3 -1
  465. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  466. package/SVF-doxygen/html/html/search/variables_3.js +2 -0
  467. package/SVF-doxygen/html/html/search/variables_5.js +3 -1
  468. package/SVF-doxygen/html/html/search/variables_6.js +3 -0
  469. package/SVF-doxygen/html/html/search/variables_7.js +5 -1
  470. package/SVF-doxygen/html/html/search/variables_9.js +1 -0
  471. package/SVF-doxygen/html/html/search/variables_c.js +1 -0
  472. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  473. package/SVF-doxygen/html/html/search/variables_e.js +2 -0
  474. package/SVF-doxygen/html/html/st_8c.html +4 -4
  475. package/SVF-doxygen/html/html/st_8c_source.html +2 -2
  476. package/SVF-doxygen/html/html/st_8h.html +4 -4
  477. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +87 -0
  478. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +381 -0
  479. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
  480. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +100 -0
  481. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
  482. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4-members.html +81 -0
  483. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +122 -0
  484. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
  485. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +96 -0
  486. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
  487. package/SVF-doxygen/html/html/svf-ex_8cpp.html +10 -54
  488. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +8 -9
  489. package/SVF-doxygen/html/html/tools_2CFL_2CMakeLists_8txt.html +102 -0
  490. package/SVF-doxygen/html/html/wpa_8cpp.html +2 -46
  491. package/SVF-doxygen/html/html/wpa_8cpp_source.html +3 -4
  492. package/include/CFL/CFGNormalizer.h +70 -0
  493. package/include/CFL/CFLAlias.h +124 -0
  494. package/include/CFL/CFLGrammar.h +127 -0
  495. package/include/CFL/CFLSolver.h +94 -0
  496. package/include/CFL/GrammarBuilder.h +65 -0
  497. package/include/Graphs/CFLGraph.h +175 -0
  498. package/include/Graphs/IRGraph.h +1 -1
  499. package/include/MemoryModel/PointerAnalysis.h +3 -3
  500. package/include/SABER/SrcSnkDDA.h +3 -2
  501. package/include/Util/GraphReachSolver.h +186 -0
  502. package/include/Util/Options.h +6 -0
  503. package/lib/CFL/CFGNormalizer.cpp +329 -0
  504. package/lib/CFL/CFLGrammar.cpp +101 -0
  505. package/lib/CFL/CFLSolver.cpp +106 -0
  506. package/lib/CFL/GrammarBuilder.cpp +155 -0
  507. package/lib/CMakeLists.txt +1 -0
  508. package/lib/Graphs/CFLGraph.cpp +225 -0
  509. package/lib/Util/Options.cpp +31 -0
  510. package/package.json +1 -1
  511. package/tools/CFL/CMakeLists.txt +12 -0
  512. package/tools/CFL/cfl.cpp +80 -0
  513. package/tools/CMakeLists.txt +1 -0
  514. package/tools/DDA/dda.cpp +0 -3
  515. package/tools/Example/svf-ex.cpp +0 -3
  516. package/tools/MTA/mta.cpp +0 -4
  517. package/tools/SABER/saber.cpp +0 -3
  518. package/tools/WPA/wpa.cpp +0 -4
@@ -66,13 +66,14 @@ $(function() {
66
66
  <div class="title">st.c</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="st_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="util_8h.html">CUDD/util.h</a>&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="st_8h.html">CUDD/st.h</a>&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/* Constant declarations */</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">/* Stucture declarations */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">/* Type declarations */</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">/* Variable declarations */</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#ifndef lint</span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="st_8c.html#a8abfa313efd8b3a3a1ac1c4055e034e1"> 40</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> rcsid[] <a class="code" href="st_8c.html#a8abfa313efd8b3a3a1ac1c4055e034e1">UTIL_UNUSED</a> = <span class="stringliteral">&quot; $Id: st.c,v 1.12 2010/04/22 19:00:55 fabio Exp fabio $&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">/* Macro declarations */</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="st_8c.html#a2796b8bc2a5f15834d61a3519ad149d5"> 47</a></span>&#160;<span class="preprocessor">#define ST_NUMCMP(x,y) ((x) != (y))</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="st_8c.html#a76573cced143d429f99bfb5e286c621e"> 49</a></span>&#160;<span class="preprocessor">#define ST_NUMHASH(x,size) ((unsigned long)(x)%(size))</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#if SIZEOF_VOID_P == 8</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#define st_shift 3</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="st_8c.html#ab2920f4cebe075a6fda8b299fce9f762"> 54</a></span>&#160;<span class="preprocessor">#define st_shift 2</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="st_8c.html#a524a1efaf5df2432aa5bf96e35546164"> 57</a></span>&#160;<span class="preprocessor">#define ST_PTRHASH(x,size) ((unsigned int)((unsigned long)(x)&gt;&gt;st_shift)%size)</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="st_8c.html#adf137c378b35c2dbab9579eeb5c03150"> 59</a></span>&#160;<span class="preprocessor">#define EQUAL(func, x, y) \</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor"> ((((func) == st_numcmp) || ((func) == st_ptrcmp)) ?\</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor"> (ST_NUMCMP((x),(y)) == 0) : ((*func)((x), (y)) == 0))</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c"> 63</a></span>&#160;<span class="preprocessor">#define do_hash(key, table)\</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"> ((int)((table-&gt;hash == st_ptrhash) ? ST_PTRHASH((char *)(key),(table)-&gt;num_bins) :\</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"> (table-&gt;hash == st_numhash) ? ST_NUMHASH((char *)(key), (table)-&gt;num_bins) :\</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"> (*table-&gt;hash)((char *)(key), (table)-&gt;num_bins)))</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="st_8c.html#adc63a1b1f02f0b457c85154dc513d626"> 68</a></span>&#160;<span class="preprocessor">#define PTR_NOT_EQUAL(table, ptr, user_key)\</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">(ptr != NIL(st_table_entry) &amp;&amp; !EQUAL(table-&gt;compare, (char *)user_key, (ptr)-&gt;key))</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731"> 71</a></span>&#160;<span class="preprocessor">#define FIND_ENTRY(table, hash_val, key, ptr, last) \</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"> (last) = &amp;(table)-&gt;bins[hash_val];\</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor"> (ptr) = *(last);\</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor"> while (PTR_NOT_EQUAL((table), (ptr), (key))) {\</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"> (last) = &amp;(ptr)-&gt;next; (ptr) = *(last);\</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor"> }\</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor"> if ((ptr) != NIL(st_table_entry) &amp;&amp; (table)-&gt;reorder_flag) {\</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor"> *(last) = (ptr)-&gt;next;\</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"> (ptr)-&gt;next = (table)-&gt;bins[hash_val];\</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"> (table)-&gt;bins[hash_val] = (ptr);\</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"> }</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">/* This macro does not check if memory allocation fails. Use at you own risk */</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment">/* Static function prototypes */</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="st_8c.html#aa935648640f20c4160b61b68edcd313d">rehash</a> (<a class="code" href="structst__table.html">st_table</a> *);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">/* Definition of exported functions */</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<a class="code" href="structst__table.html">st_table</a> *</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="st_8c.html#a24ffe70dd1bb859ac2f650ccf1ba1eda"> 148</a></span>&#160;<a class="code" href="st_8c.html#a24ffe70dd1bb859ac2f650ccf1ba1eda">st_init_table</a>(<a class="code" href="st_8h.html#afb91ce58b9010645ed1cdf1ed2b76b03">ST_PFICPCP</a> compare, <a class="code" href="st_8h.html#a4689d232930698db6d2432922e094539">ST_PFICPI</a> hash)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8c.html#a88896d7ce4715597cba13ff35952e0b5">st_init_table_with_params</a>(compare, hash, <a class="code" href="st_8h.html#a311df13f4d458054df7d87ca22782ab2">ST_DEFAULT_INIT_TABLE_SIZE</a>,</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="st_8h.html#a4f884be75490db2c92e409a0209fdbcb">ST_DEFAULT_MAX_DENSITY</a>,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="st_8h.html#a05bb01984da349eeeb8eed0ce43c38a5">ST_DEFAULT_GROW_FACTOR</a>,</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="st_8h.html#a933aaa48b6a156a000befde073a24e4c">ST_DEFAULT_REORDER_FLAG</a>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;} <span class="comment">/* st_init_table */</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<a class="code" href="structst__table.html">st_table</a> *</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="st_8c.html#a88896d7ce4715597cba13ff35952e0b5"> 184</a></span>&#160;<a class="code" href="st_8c.html#a88896d7ce4715597cba13ff35952e0b5">st_init_table_with_params</a>(</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="st_8h.html#afb91ce58b9010645ed1cdf1ed2b76b03">ST_PFICPCP</a> compare,</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="st_8h.html#a4689d232930698db6d2432922e094539">ST_PFICPI</a> hash,</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordtype">int</span> size,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">int</span> density,</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordtype">double</span> grow_factor,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">int</span> reorder_flag)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="structst__table.html">st_table</a> *newt;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; newt = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__table.html">st_table</a>, 1);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span> (newt == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table.html">st_table</a>)) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table.html">st_table</a>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a7c3c545f36a953ff2d8668c394f4fcb5">compare</a> = compare;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a70df318ebef482661599de3bcc536cc3">hash</a> = hash;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a> = 0;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a0f854eb16ba72f1a8cd89a3974ceac6d">max_density</a> = density;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a33a7ea1dabc05f109a41d076fc835b02">grow_factor</a> = grow_factor;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a0b4d6444e7e22ff9a68f75f6cccb75cd">reorder_flag</a> = reorder_flag;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (size &lt;= 0) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; size = 1;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> = size;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a> = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a> *, size);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (newt-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a> *)) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(newt);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table.html">st_table</a>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">for</span>(i = 0; i &lt; size; i++) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i] = 0;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> newt;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;} <span class="comment">/* st_init_table_with_params */</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="st_8c.html#a93394fd99c5fa4fbcce2be9717abee45"> 237</a></span>&#160;<a class="code" href="st_8c.html#a93394fd99c5fa4fbcce2be9717abee45">st_free_table</a>(<a class="code" href="structst__table.html">st_table</a> *table)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;{</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, *next;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">for</span>(i = 0; i &lt; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> ; i++) {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; ptr = table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i];</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">while</span> (ptr != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; next = ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(ptr);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; ptr = next;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(table);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;} <span class="comment">/* st_free_table */</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="st_8c.html#a0664208425f99d5c88fe2a79c425756c"> 271</a></span>&#160;<a class="code" href="st_8c.html#a0664208425f99d5c88fe2a79c425756c">st_lookup</a>(<a class="code" href="structst__table.html">st_table</a> *table, <span class="keywordtype">void</span> *key, <span class="keywordtype">void</span> *value)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">int</span> hash_val;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, **last;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731">FIND_ENTRY</a>(table, hash_val, key, ptr, last);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (ptr == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (value != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<span class="keywordtype">void</span>)) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; *(<span class="keywordtype">char</span> **)value = ptr-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;} <span class="comment">/* st_lookup */</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="st_8c.html#a958c280b8f24c847ca511eaffd410f04"> 307</a></span>&#160;<a class="code" href="st_8c.html#a958c280b8f24c847ca511eaffd410f04">st_lookup_int</a>(<a class="code" href="structst__table.html">st_table</a> *table, <span class="keywordtype">void</span> *key, <span class="keywordtype">int</span> *value)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;{</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordtype">int</span> hash_val;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, **last;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731">FIND_ENTRY</a>(table, hash_val, key, ptr, last);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span> (ptr == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (value != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<span class="keywordtype">int</span>)) {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; *value = (int) (<span class="keywordtype">long</span>) ptr-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;} <span class="comment">/* st_lookup_int */</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="st_8c.html#ac9bc9aaa7675eadf766a0a7eb5de7890"> 343</a></span>&#160;<a class="code" href="st_8c.html#ac9bc9aaa7675eadf766a0a7eb5de7890">st_insert</a>(<a class="code" href="structst__table.html">st_table</a> *table, <span class="keywordtype">void</span> *key, <span class="keywordtype">void</span> *value)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;{</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">int</span> hash_val;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *newt;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, **last;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731">FIND_ENTRY</a>(table, hash_val, key, ptr, last);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span> (ptr == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>/table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> &gt;= table-&gt;<a class="code" href="structst__table.html#a0f854eb16ba72f1a8cd89a3974ceac6d">max_density</a>) {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="st_8c.html#aa935648640f20c4160b61b68edcd313d">rehash</a>(table) == <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; newt = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>, 1);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (newt == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a> = (<span class="keywordtype">char</span> *)key;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a> = (<span class="keywordtype">char</span> *)value;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a> = table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val];</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val] = newt;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>++;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; ptr-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a> = (<span class="keywordtype">char</span> *)value;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;} <span class="comment">/* st_insert */</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="st_8c.html#a18fa2f1785eb7a89b8cf437499521f73"> 395</a></span>&#160;<a class="code" href="st_8c.html#a18fa2f1785eb7a89b8cf437499521f73">st_add_direct</a>(<a class="code" href="structst__table.html">st_table</a> *table, <span class="keywordtype">void</span> *key, <span class="keywordtype">void</span> *value)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;{</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordtype">int</span> hash_val;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *newt;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a> / table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> &gt;= table-&gt;<a class="code" href="structst__table.html#a0f854eb16ba72f1a8cd89a3974ceac6d">max_density</a>) {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="st_8c.html#aa935648640f20c4160b61b68edcd313d">rehash</a>(table) == <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>) {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; newt = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>, 1);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (newt == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a> = (<span class="keywordtype">char</span> *)key;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a> = (<span class="keywordtype">char</span> *)value;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a> = table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val];</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val] = newt;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>++;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;} <span class="comment">/* st_add_direct */</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="st_8c.html#a2d8405879414ed73f3ff6a935f3fc269"> 437</a></span>&#160;<a class="code" href="st_8c.html#a2d8405879414ed73f3ff6a935f3fc269">st_delete</a>(<a class="code" href="structst__table.html">st_table</a> *table, <span class="keywordtype">void</span> *keyp, <span class="keywordtype">void</span> *value)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;{</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordtype">int</span> hash_val;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordtype">char</span> *key = *(<span class="keywordtype">char</span> **)keyp;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, **last;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731">FIND_ENTRY</a>(table, hash_val, key, ptr ,last);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span> (ptr == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; *last = ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span> (value != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<span class="keywordtype">void</span>)) *(<span class="keywordtype">char</span> **)value = ptr-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; *(<span class="keywordtype">char</span> **)keyp = ptr-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(ptr);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>--;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;} <span class="comment">/* st_delete */</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00487"></a><span class="lineno"><a class="line" href="st_8c.html#a4d18e5a6949c772c9ff8c3c70ec00b57"> 487</a></span>&#160;<a class="code" href="st_8c.html#a4d18e5a6949c772c9ff8c3c70ec00b57">st_foreach</a>(<a class="code" href="structst__table.html">st_table</a> *table, <a class="code" href="st_8h.html#afcc2f06d7b3802b2710eec97355f968d">ST_PFSR</a> func, <span class="keywordtype">char</span> *arg)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;{</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, **last;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">enum</span> <a class="code" href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1f">st_retval</a> retval;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">for</span>(i = 0; i &lt; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a>; i++) {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; last = &amp;table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i]; ptr = *last;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">while</span> (ptr != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; retval = (*func)(ptr-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a>, ptr-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>, arg);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">switch</span> (retval) {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">case</span> <a class="code" href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1fac99fc55c7f355bf9071739a4bc2ea139">ST_CONTINUE</a>:</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; last = &amp;ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>; ptr = *last;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">case</span> <a class="code" href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1fa04b939c166d4baa471909eb224d5fed3">ST_STOP</a>:</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">case</span> <a class="code" href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1fa64ab176f8e8b9719bcd9b5297ccda9c7">ST_DELETE</a>:</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; *last = ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>--; <span class="comment">/* cstevens@ic */</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(ptr);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; ptr = *last;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;} <span class="comment">/* st_foreach */</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00528"></a><span class="lineno"><a class="line" href="st_8c.html#aede320ef4713f295a335b4da6e1d8358"> 528</a></span>&#160;<a class="code" href="st_8c.html#aede320ef4713f295a335b4da6e1d8358">st_numhash</a>(<span class="keywordtype">char</span> *x, <span class="keywordtype">int</span> size)</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;{</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8c.html#a76573cced143d429f99bfb5e286c621e">ST_NUMHASH</a>(x, size);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;} <span class="comment">/* st_numhash */</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00547"></a><span class="lineno"><a class="line" href="st_8c.html#ada6e90b4df1ca291977c89a6d4fdea06"> 547</a></span>&#160;<a class="code" href="st_8c.html#ada6e90b4df1ca291977c89a6d4fdea06">st_ptrhash</a>(<span class="keywordtype">char</span> *x, <span class="keywordtype">int</span> size)</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;{</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8c.html#a524a1efaf5df2432aa5bf96e35546164">ST_PTRHASH</a>(x, size);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;} <span class="comment">/* st_ptrhash */</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="st_8c.html#a0ba60ae98aae8e6dd21bbe3b485bcfbe"> 566</a></span>&#160;<a class="code" href="st_8c.html#a0ba60ae98aae8e6dd21bbe3b485bcfbe">st_numcmp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *x, <span class="keyword">const</span> <span class="keywordtype">char</span> *y)</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;{</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8c.html#a2796b8bc2a5f15834d61a3519ad149d5">ST_NUMCMP</a>(x, y);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;} <span class="comment">/* st_numcmp */</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="st_8c.html#a52bf6e577a2a87b2cdedb1c3d0e25075"> 585</a></span>&#160;<a class="code" href="st_8c.html#a52bf6e577a2a87b2cdedb1c3d0e25075">st_ptrcmp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *x, <span class="keyword">const</span> <span class="keywordtype">char</span> *y)</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;{</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8c.html#a2796b8bc2a5f15834d61a3519ad149d5">ST_NUMCMP</a>(x, y);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;} <span class="comment">/* st_ptrcmp */</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<a class="code" href="structst__generator.html">st_generator</a> *</div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="st_8c.html#a2fb7a7c51faa5ae0f14d0520804253d4"> 606</a></span>&#160;<a class="code" href="st_8c.html#a2fb7a7c51faa5ae0f14d0520804253d4">st_init_gen</a>(<a class="code" href="structst__table.html">st_table</a> *table)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;{</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="structst__generator.html">st_generator</a> *gen;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; gen = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__generator.html">st_generator</a>, 1);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span> (gen == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__generator.html">st_generator</a>)) {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">return</span> <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__generator.html">st_generator</a>);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#ae75565c5656c86f95323740684912519">table</a> = table;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> = <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#af2fe4c02d62ac650ad39cc28a424b798">index</a> = 0;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">return</span> gen;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;} <span class="comment">/* st_init_gen */</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00644"></a><span class="lineno"><a class="line" href="st_8c.html#a5864dab6ffcbd5d7a8891b394b76a59c"> 644</a></span>&#160;<a class="code" href="st_8c.html#a5864dab6ffcbd5d7a8891b394b76a59c">st_gen</a>(<a class="code" href="structst__generator.html">st_generator</a> *gen, <span class="keywordtype">void</span> *key_p, <span class="keywordtype">void</span> *value_p)</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;{</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">/* try to find next entry */</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">for</span>(i = gen-&gt;<a class="code" href="structst__generator.html#af2fe4c02d62ac650ad39cc28a424b798">index</a>; i &lt; gen-&gt;table-&gt;num_bins; i++) {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#ae75565c5656c86f95323740684912519">table</a>-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i] != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#af2fe4c02d62ac650ad39cc28a424b798">index</a> = i+1;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> = gen-&gt;<a class="code" href="structst__generator.html#ae75565c5656c86f95323740684912519">table</a>-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i];</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; }</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; }</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">/* that&#39;s all folks ! */</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; }</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; *(<span class="keywordtype">char</span> **)key_p = gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="tools_2DDA_2CMakeLists_8txt.html#a7686df215f6da6fdcfa2c20950c96939">if</a> (value_p != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<span class="keywordtype">void</span>)) {</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; *(<span class="keywordtype">char</span> **)value_p = gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> = gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;} <span class="comment">/* st_gen */</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="keywordtype">int</span> </div><div class="line"><a name="l00689"></a><span class="lineno"><a class="line" href="st_8c.html#afaadb541f4e5bbd7ec7834b46631a27b"> 689</a></span>&#160;<a class="code" href="st_8c.html#afaadb541f4e5bbd7ec7834b46631a27b">st_gen_int</a>(<a class="code" href="structst__generator.html">st_generator</a> *gen, <span class="keywordtype">void</span> *key_p, <span class="keywordtype">int</span> *value_p)</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;{</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="comment">/* try to find next entry */</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">for</span>(i = gen-&gt;<a class="code" href="structst__generator.html#af2fe4c02d62ac650ad39cc28a424b798">index</a>; i &lt; gen-&gt;table-&gt;num_bins; i++) {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#ae75565c5656c86f95323740684912519">table</a>-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i] != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#af2fe4c02d62ac650ad39cc28a424b798">index</a> = i+1;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> = gen-&gt;<a class="code" href="structst__generator.html#ae75565c5656c86f95323740684912519">table</a>-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i];</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">/* that&#39;s all folks ! */</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; *(<span class="keywordtype">char</span> **)key_p = gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a>;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="tools_2DDA_2CMakeLists_8txt.html#a7686df215f6da6fdcfa2c20950c96939">if</a> (value_p != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<span class="keywordtype">int</span>)) {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; *value_p = (int) (<span class="keywordtype">long</span>) gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> = gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;} <span class="comment">/* st_gen_int */</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="st_8c.html#ad41b7ddada4e857c815181e0da79c8e1"> 730</a></span>&#160;<a class="code" href="st_8c.html#ad41b7ddada4e857c815181e0da79c8e1">st_free_gen</a>(<a class="code" href="structst__generator.html">st_generator</a> *gen)</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;{</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(gen);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;} <span class="comment">/* st_free_gen */</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;<span class="comment">/* Definition of internal functions */</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="comment">/* Definition of static functions */</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00757"></a><span class="lineno"><a class="line" href="st_8c.html#aa935648640f20c4160b61b68edcd313d"> 757</a></span>&#160;<a class="code" href="st_8c.html#aa935648640f20c4160b61b68edcd313d">rehash</a>(<a class="code" href="structst__table.html">st_table</a> *table)</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;{</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, *next, **old_bins;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordtype">int</span> i, old_num_bins, hash_val, old_num_entries;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="comment">/* save old values */</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; old_bins = table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; old_num_bins = table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a>;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; old_num_entries = table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="comment">/* rehash */</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> = (int) (table-&gt;<a class="code" href="structst__table.html#a33a7ea1dabc05f109a41d076fc835b02">grow_factor</a> * old_num_bins);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">if</span> (table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> % 2 == 0) {</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> += 1;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a> = 0;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a> = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a> *, table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a>);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a> *)) {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a> = old_bins;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> = old_num_bins;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a> = old_num_entries;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; }</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="comment">/* initialize */</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a>; i++) {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i] = 0;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="comment">/* copy data over */</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; old_num_bins; i++) {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; ptr = old_bins[i];</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">while</span> (ptr != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; next = ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(ptr-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a>, table);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a> = table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val];</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val] = ptr;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>++;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; ptr = next;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; }</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(old_bins);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;} <span class="comment">/* rehash */</span></div><div class="ttc" id="st_8h_html_a933aaa48b6a156a000befde073a24e4c"><div class="ttname"><a href="st_8h.html#a933aaa48b6a156a000befde073a24e4c">ST_DEFAULT_REORDER_FLAG</a></div><div class="ttdeci">#define ST_DEFAULT_REORDER_FLAG</div><div class="ttdef"><b>Definition:</b> <a href="st_8h_source.html#l00040">st.h:40</a></div></div>
69
+ <a href="st_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="util_8h.html">CUDD/util.h</a>&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="st_8h.html">CUDD/st.h</a>&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/* Constant declarations */</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">/* Stucture declarations */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">/* Type declarations */</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">/* Variable declarations */</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#ifndef lint</span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="st_8c.html#a8abfa313efd8b3a3a1ac1c4055e034e1"> 40</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> rcsid[] <a class="code" href="st_8c.html#a8abfa313efd8b3a3a1ac1c4055e034e1">UTIL_UNUSED</a> = <span class="stringliteral">&quot; $Id: st.c,v 1.12 2010/04/22 19:00:55 fabio Exp fabio $&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">/* Macro declarations */</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="st_8c.html#a2796b8bc2a5f15834d61a3519ad149d5"> 47</a></span>&#160;<span class="preprocessor">#define ST_NUMCMP(x,y) ((x) != (y))</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="st_8c.html#a76573cced143d429f99bfb5e286c621e"> 49</a></span>&#160;<span class="preprocessor">#define ST_NUMHASH(x,size) ((unsigned long)(x)%(size))</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#if SIZEOF_VOID_P == 8</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#define st_shift 3</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="st_8c.html#ab2920f4cebe075a6fda8b299fce9f762"> 54</a></span>&#160;<span class="preprocessor">#define st_shift 2</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="st_8c.html#a524a1efaf5df2432aa5bf96e35546164"> 57</a></span>&#160;<span class="preprocessor">#define ST_PTRHASH(x,size) ((unsigned int)((unsigned long)(x)&gt;&gt;st_shift)%size)</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="st_8c.html#adf137c378b35c2dbab9579eeb5c03150"> 59</a></span>&#160;<span class="preprocessor">#define EQUAL(func, x, y) \</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor"> ((((func) == st_numcmp) || ((func) == st_ptrcmp)) ?\</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor"> (ST_NUMCMP((x),(y)) == 0) : ((*func)((x), (y)) == 0))</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c"> 63</a></span>&#160;<span class="preprocessor">#define do_hash(key, table)\</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"> ((int)((table-&gt;hash == st_ptrhash) ? ST_PTRHASH((char *)(key),(table)-&gt;num_bins) :\</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"> (table-&gt;hash == st_numhash) ? ST_NUMHASH((char *)(key), (table)-&gt;num_bins) :\</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"> (*table-&gt;hash)((char *)(key), (table)-&gt;num_bins)))</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="st_8c.html#adc63a1b1f02f0b457c85154dc513d626"> 68</a></span>&#160;<span class="preprocessor">#define PTR_NOT_EQUAL(table, ptr, user_key)\</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">(ptr != NIL(st_table_entry) &amp;&amp; !EQUAL(table-&gt;compare, (char *)user_key, (ptr)-&gt;key))</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731"> 71</a></span>&#160;<span class="preprocessor">#define FIND_ENTRY(table, hash_val, key, ptr, last) \</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"> (last) = &amp;(table)-&gt;bins[hash_val];\</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor"> (ptr) = *(last);\</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor"> while (PTR_NOT_EQUAL((table), (ptr), (key))) {\</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"> (last) = &amp;(ptr)-&gt;next; (ptr) = *(last);\</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor"> }\</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor"> if ((ptr) != NIL(st_table_entry) &amp;&amp; (table)-&gt;reorder_flag) {\</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor"> *(last) = (ptr)-&gt;next;\</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"> (ptr)-&gt;next = (table)-&gt;bins[hash_val];\</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"> (table)-&gt;bins[hash_val] = (ptr);\</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"> }</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">/* This macro does not check if memory allocation fails. Use at you own risk */</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment">/* Static function prototypes */</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="st_8c.html#aa935648640f20c4160b61b68edcd313d">rehash</a> (<a class="code" href="structst__table.html">st_table</a> *);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">/* Definition of exported functions */</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<a class="code" href="structst__table.html">st_table</a> *</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="st_8c.html#a24ffe70dd1bb859ac2f650ccf1ba1eda"> 148</a></span>&#160;<a class="code" href="st_8c.html#a24ffe70dd1bb859ac2f650ccf1ba1eda">st_init_table</a>(<a class="code" href="st_8h.html#afb91ce58b9010645ed1cdf1ed2b76b03">ST_PFICPCP</a> compare, <a class="code" href="st_8h.html#a4689d232930698db6d2432922e094539">ST_PFICPI</a> hash)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8c.html#a88896d7ce4715597cba13ff35952e0b5">st_init_table_with_params</a>(compare, hash, <a class="code" href="st_8h.html#a311df13f4d458054df7d87ca22782ab2">ST_DEFAULT_INIT_TABLE_SIZE</a>,</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="st_8h.html#a4f884be75490db2c92e409a0209fdbcb">ST_DEFAULT_MAX_DENSITY</a>,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="st_8h.html#a05bb01984da349eeeb8eed0ce43c38a5">ST_DEFAULT_GROW_FACTOR</a>,</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="st_8h.html#a933aaa48b6a156a000befde073a24e4c">ST_DEFAULT_REORDER_FLAG</a>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;} <span class="comment">/* st_init_table */</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<a class="code" href="structst__table.html">st_table</a> *</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="st_8c.html#a88896d7ce4715597cba13ff35952e0b5"> 184</a></span>&#160;<a class="code" href="st_8c.html#a88896d7ce4715597cba13ff35952e0b5">st_init_table_with_params</a>(</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="st_8h.html#afb91ce58b9010645ed1cdf1ed2b76b03">ST_PFICPCP</a> compare,</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="st_8h.html#a4689d232930698db6d2432922e094539">ST_PFICPI</a> hash,</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordtype">int</span> size,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">int</span> density,</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordtype">double</span> grow_factor,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">int</span> reorder_flag)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="structst__table.html">st_table</a> *newt;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; newt = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__table.html">st_table</a>, 1);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span> (newt == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table.html">st_table</a>)) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table.html">st_table</a>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a7c3c545f36a953ff2d8668c394f4fcb5">compare</a> = compare;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a70df318ebef482661599de3bcc536cc3">hash</a> = hash;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a> = 0;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a0f854eb16ba72f1a8cd89a3974ceac6d">max_density</a> = density;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a33a7ea1dabc05f109a41d076fc835b02">grow_factor</a> = grow_factor;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a0b4d6444e7e22ff9a68f75f6cccb75cd">reorder_flag</a> = reorder_flag;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (size &lt;= 0) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; size = 1;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> = size;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a> = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a> *, size);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (newt-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a> *)) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(newt);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table.html">st_table</a>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">for</span>(i = 0; i &lt; size; i++) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; newt-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i] = 0;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> newt;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;} <span class="comment">/* st_init_table_with_params */</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="st_8c.html#a93394fd99c5fa4fbcce2be9717abee45"> 237</a></span>&#160;<a class="code" href="st_8c.html#a93394fd99c5fa4fbcce2be9717abee45">st_free_table</a>(<a class="code" href="structst__table.html">st_table</a> *table)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;{</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, *next;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">for</span>(i = 0; i &lt; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> ; i++) {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; ptr = table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i];</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">while</span> (ptr != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; next = ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(ptr);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; ptr = next;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(table);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;} <span class="comment">/* st_free_table */</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="st_8c.html#a0664208425f99d5c88fe2a79c425756c"> 271</a></span>&#160;<a class="code" href="st_8c.html#a0664208425f99d5c88fe2a79c425756c">st_lookup</a>(<a class="code" href="structst__table.html">st_table</a> *table, <span class="keywordtype">void</span> *key, <span class="keywordtype">void</span> *value)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">int</span> hash_val;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, **last;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731">FIND_ENTRY</a>(table, hash_val, key, ptr, last);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (ptr == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (value != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<span class="keywordtype">void</span>)) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; *(<span class="keywordtype">char</span> **)value = ptr-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;} <span class="comment">/* st_lookup */</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="st_8c.html#a958c280b8f24c847ca511eaffd410f04"> 307</a></span>&#160;<a class="code" href="st_8c.html#a958c280b8f24c847ca511eaffd410f04">st_lookup_int</a>(<a class="code" href="structst__table.html">st_table</a> *table, <span class="keywordtype">void</span> *key, <span class="keywordtype">int</span> *value)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;{</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordtype">int</span> hash_val;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, **last;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731">FIND_ENTRY</a>(table, hash_val, key, ptr, last);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span> (ptr == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (value != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<span class="keywordtype">int</span>)) {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; *value = (int) (<span class="keywordtype">long</span>) ptr-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;} <span class="comment">/* st_lookup_int */</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="st_8c.html#ac9bc9aaa7675eadf766a0a7eb5de7890"> 343</a></span>&#160;<a class="code" href="st_8c.html#ac9bc9aaa7675eadf766a0a7eb5de7890">st_insert</a>(<a class="code" href="structst__table.html">st_table</a> *table, <span class="keywordtype">void</span> *key, <span class="keywordtype">void</span> *value)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;{</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">int</span> hash_val;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *newt;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, **last;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731">FIND_ENTRY</a>(table, hash_val, key, ptr, last);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span> (ptr == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>/table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> &gt;= table-&gt;<a class="code" href="structst__table.html#a0f854eb16ba72f1a8cd89a3974ceac6d">max_density</a>) {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="st_8c.html#aa935648640f20c4160b61b68edcd313d">rehash</a>(table) == <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; newt = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>, 1);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (newt == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a> = (<span class="keywordtype">char</span> *)key;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a> = (<span class="keywordtype">char</span> *)value;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a> = table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val];</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val] = newt;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>++;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; ptr-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a> = (<span class="keywordtype">char</span> *)value;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;} <span class="comment">/* st_insert */</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="st_8c.html#a18fa2f1785eb7a89b8cf437499521f73"> 395</a></span>&#160;<a class="code" href="st_8c.html#a18fa2f1785eb7a89b8cf437499521f73">st_add_direct</a>(<a class="code" href="structst__table.html">st_table</a> *table, <span class="keywordtype">void</span> *key, <span class="keywordtype">void</span> *value)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;{</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordtype">int</span> hash_val;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *newt;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a> / table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> &gt;= table-&gt;<a class="code" href="structst__table.html#a0f854eb16ba72f1a8cd89a3974ceac6d">max_density</a>) {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="st_8c.html#aa935648640f20c4160b61b68edcd313d">rehash</a>(table) == <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>) {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; newt = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>, 1);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (newt == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a> = (<span class="keywordtype">char</span> *)key;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a> = (<span class="keywordtype">char</span> *)value;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; newt-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a> = table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val];</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val] = newt;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>++;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;} <span class="comment">/* st_add_direct */</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="st_8c.html#a2d8405879414ed73f3ff6a935f3fc269"> 437</a></span>&#160;<a class="code" href="st_8c.html#a2d8405879414ed73f3ff6a935f3fc269">st_delete</a>(<a class="code" href="structst__table.html">st_table</a> *table, <span class="keywordtype">void</span> *keyp, <span class="keywordtype">void</span> *value)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;{</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordtype">int</span> hash_val;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordtype">char</span> *key = *(<span class="keywordtype">char</span> **)keyp;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, **last;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(key, table);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731">FIND_ENTRY</a>(table, hash_val, key, ptr ,last);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span> (ptr == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; *last = ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span> (value != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<span class="keywordtype">void</span>)) *(<span class="keywordtype">char</span> **)value = ptr-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; *(<span class="keywordtype">char</span> **)keyp = ptr-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(ptr);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>--;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;} <span class="comment">/* st_delete */</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00487"></a><span class="lineno"><a class="line" href="st_8c.html#a4d18e5a6949c772c9ff8c3c70ec00b57"> 487</a></span>&#160;<a class="code" href="st_8c.html#a4d18e5a6949c772c9ff8c3c70ec00b57">st_foreach</a>(<a class="code" href="structst__table.html">st_table</a> *table, <a class="code" href="st_8h.html#afcc2f06d7b3802b2710eec97355f968d">ST_PFSR</a> func, <span class="keywordtype">char</span> *arg)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;{</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, **last;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">enum</span> <a class="code" href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1f">st_retval</a> retval;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">for</span>(i = 0; i &lt; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a>; i++) {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; last = &amp;table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i]; ptr = *last;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">while</span> (ptr != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; retval = (*func)(ptr-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a>, ptr-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>, arg);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">switch</span> (retval) {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">case</span> <a class="code" href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1fac99fc55c7f355bf9071739a4bc2ea139">ST_CONTINUE</a>:</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; last = &amp;ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>; ptr = *last;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">case</span> <a class="code" href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1fa04b939c166d4baa471909eb224d5fed3">ST_STOP</a>:</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">case</span> <a class="code" href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1fa64ab176f8e8b9719bcd9b5297ccda9c7">ST_DELETE</a>:</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; *last = ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>--; <span class="comment">/* cstevens@ic */</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(ptr);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; ptr = *last;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;} <span class="comment">/* st_foreach */</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00528"></a><span class="lineno"><a class="line" href="st_8c.html#aede320ef4713f295a335b4da6e1d8358"> 528</a></span>&#160;<a class="code" href="st_8c.html#aede320ef4713f295a335b4da6e1d8358">st_numhash</a>(<span class="keywordtype">char</span> *x, <span class="keywordtype">int</span> size)</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;{</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8c.html#a76573cced143d429f99bfb5e286c621e">ST_NUMHASH</a>(x, size);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;} <span class="comment">/* st_numhash */</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00547"></a><span class="lineno"><a class="line" href="st_8c.html#ada6e90b4df1ca291977c89a6d4fdea06"> 547</a></span>&#160;<a class="code" href="st_8c.html#ada6e90b4df1ca291977c89a6d4fdea06">st_ptrhash</a>(<span class="keywordtype">char</span> *x, <span class="keywordtype">int</span> size)</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;{</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8c.html#a524a1efaf5df2432aa5bf96e35546164">ST_PTRHASH</a>(x, size);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;} <span class="comment">/* st_ptrhash */</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="st_8c.html#a0ba60ae98aae8e6dd21bbe3b485bcfbe"> 566</a></span>&#160;<a class="code" href="st_8c.html#a0ba60ae98aae8e6dd21bbe3b485bcfbe">st_numcmp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *x, <span class="keyword">const</span> <span class="keywordtype">char</span> *y)</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;{</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8c.html#a2796b8bc2a5f15834d61a3519ad149d5">ST_NUMCMP</a>(x, y);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;} <span class="comment">/* st_numcmp */</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="st_8c.html#a52bf6e577a2a87b2cdedb1c3d0e25075"> 585</a></span>&#160;<a class="code" href="st_8c.html#a52bf6e577a2a87b2cdedb1c3d0e25075">st_ptrcmp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *x, <span class="keyword">const</span> <span class="keywordtype">char</span> *y)</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;{</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8c.html#a2796b8bc2a5f15834d61a3519ad149d5">ST_NUMCMP</a>(x, y);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;} <span class="comment">/* st_ptrcmp */</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<a class="code" href="structst__generator.html">st_generator</a> *</div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="st_8c.html#a2fb7a7c51faa5ae0f14d0520804253d4"> 606</a></span>&#160;<a class="code" href="st_8c.html#a2fb7a7c51faa5ae0f14d0520804253d4">st_init_gen</a>(<a class="code" href="structst__table.html">st_table</a> *table)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;{</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="structst__generator.html">st_generator</a> *gen;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; gen = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__generator.html">st_generator</a>, 1);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span> (gen == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__generator.html">st_generator</a>)) {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">return</span> <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__generator.html">st_generator</a>);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#ae75565c5656c86f95323740684912519">table</a> = table;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> = <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#af2fe4c02d62ac650ad39cc28a424b798">index</a> = 0;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">return</span> gen;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;} <span class="comment">/* st_init_gen */</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00644"></a><span class="lineno"><a class="line" href="st_8c.html#a5864dab6ffcbd5d7a8891b394b76a59c"> 644</a></span>&#160;<a class="code" href="st_8c.html#a5864dab6ffcbd5d7a8891b394b76a59c">st_gen</a>(<a class="code" href="structst__generator.html">st_generator</a> *gen, <span class="keywordtype">void</span> *key_p, <span class="keywordtype">void</span> *value_p)</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;{</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">/* try to find next entry */</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">for</span>(i = gen-&gt;<a class="code" href="structst__generator.html#af2fe4c02d62ac650ad39cc28a424b798">index</a>; i &lt; gen-&gt;table-&gt;num_bins; i++) {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#ae75565c5656c86f95323740684912519">table</a>-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i] != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#af2fe4c02d62ac650ad39cc28a424b798">index</a> = i+1;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> = gen-&gt;<a class="code" href="structst__generator.html#ae75565c5656c86f95323740684912519">table</a>-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i];</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; }</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; }</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">/* that&#39;s all folks ! */</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; }</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; *(<span class="keywordtype">char</span> **)key_p = gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="tools_2CFL_2CMakeLists_8txt.html#aff8b1edecee3d7c397afcfe02e05d0c7">if</a> (value_p != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<span class="keywordtype">void</span>)) {</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; *(<span class="keywordtype">char</span> **)value_p = gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> = gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;} <span class="comment">/* st_gen */</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="keywordtype">int</span> </div><div class="line"><a name="l00689"></a><span class="lineno"><a class="line" href="st_8c.html#afaadb541f4e5bbd7ec7834b46631a27b"> 689</a></span>&#160;<a class="code" href="st_8c.html#afaadb541f4e5bbd7ec7834b46631a27b">st_gen_int</a>(<a class="code" href="structst__generator.html">st_generator</a> *gen, <span class="keywordtype">void</span> *key_p, <span class="keywordtype">int</span> *value_p)</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;{</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="comment">/* try to find next entry */</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">for</span>(i = gen-&gt;<a class="code" href="structst__generator.html#af2fe4c02d62ac650ad39cc28a424b798">index</a>; i &lt; gen-&gt;table-&gt;num_bins; i++) {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#ae75565c5656c86f95323740684912519">table</a>-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i] != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#af2fe4c02d62ac650ad39cc28a424b798">index</a> = i+1;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> = gen-&gt;<a class="code" href="structst__generator.html#ae75565c5656c86f95323740684912519">table</a>-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i];</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">if</span> (gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">return</span> 0; <span class="comment">/* that&#39;s all folks ! */</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; *(<span class="keywordtype">char</span> **)key_p = gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a>;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="tools_2CFL_2CMakeLists_8txt.html#aff8b1edecee3d7c397afcfe02e05d0c7">if</a> (value_p != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<span class="keywordtype">int</span>)) {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; *value_p = (int) (<span class="keywordtype">long</span>) gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#abebe2de41d7c13a541ffb1220ca69943">record</a>;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a> = gen-&gt;<a class="code" href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">entry</a>-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;} <span class="comment">/* st_gen_int */</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="st_8c.html#ad41b7ddada4e857c815181e0da79c8e1"> 730</a></span>&#160;<a class="code" href="st_8c.html#ad41b7ddada4e857c815181e0da79c8e1">st_free_gen</a>(<a class="code" href="structst__generator.html">st_generator</a> *gen)</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;{</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(gen);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;} <span class="comment">/* st_free_gen */</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;<span class="comment">/* Definition of internal functions */</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="comment">/* Definition of static functions */</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;<span class="comment">/*---------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00757"></a><span class="lineno"><a class="line" href="st_8c.html#aa935648640f20c4160b61b68edcd313d"> 757</a></span>&#160;<a class="code" href="st_8c.html#aa935648640f20c4160b61b68edcd313d">rehash</a>(<a class="code" href="structst__table.html">st_table</a> *table)</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;{</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="structst__table__entry.html">st_table_entry</a> *ptr, *next, **old_bins;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordtype">int</span> i, old_num_bins, hash_val, old_num_entries;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="comment">/* save old values */</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; old_bins = table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; old_num_bins = table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a>;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; old_num_entries = table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="comment">/* rehash */</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> = (int) (table-&gt;<a class="code" href="structst__table.html#a33a7ea1dabc05f109a41d076fc835b02">grow_factor</a> * old_num_bins);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">if</span> (table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> % 2 == 0) {</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> += 1;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a> = 0;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a> = <a class="code" href="util_8h.html#a21755cdb11c76954a33c653579810f3a">ALLOC</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a> *, table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a>);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a> == <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a> *)) {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a> = old_bins;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a> = old_num_bins;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a> = old_num_entries;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span> <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; }</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="comment">/* initialize */</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; table-&gt;<a class="code" href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">num_bins</a>; i++) {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[i] = 0;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="comment">/* copy data over */</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; old_num_bins; i++) {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; ptr = old_bins[i];</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">while</span> (ptr != <a class="code" href="util_8h.html#a31bfee01545b78af63301bf9e857218b">NIL</a>(<a class="code" href="structst__table__entry.html">st_table_entry</a>)) {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; next = ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; hash_val = <a class="code" href="st_8c.html#a8719b25fa2e849ad268f0bb382bae21c">do_hash</a>(ptr-&gt;<a class="code" href="structst__table__entry.html#acc9640c0f32ceb25ca51446d93fc4495">key</a>, table);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; ptr-&gt;<a class="code" href="structst__table__entry.html#a8c7fef89f13d76633cd71d595d39181d">next</a> = table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val];</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; table-&gt;<a class="code" href="structst__table.html#a8924d9633a796c5e6c03925c5344c1ad">bins</a>[hash_val] = ptr;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; table-&gt;<a class="code" href="structst__table.html#a4f720b56253518cde537ade35a3b591a">num_entries</a>++;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; ptr = next;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; }</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a>(old_bins);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;} <span class="comment">/* rehash */</span></div><div class="ttc" id="st_8h_html_a933aaa48b6a156a000befde073a24e4c"><div class="ttname"><a href="st_8h.html#a933aaa48b6a156a000befde073a24e4c">ST_DEFAULT_REORDER_FLAG</a></div><div class="ttdeci">#define ST_DEFAULT_REORDER_FLAG</div><div class="ttdef"><b>Definition:</b> <a href="st_8h_source.html#l00040">st.h:40</a></div></div>
70
70
  <div class="ttc" id="st_8h_html_a0c6a172fd99de7928916e65034ed8b1fa64ab176f8e8b9719bcd9b5297ccda9c7"><div class="ttname"><a href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1fa64ab176f8e8b9719bcd9b5297ccda9c7">ST_DELETE</a></div><div class="ttdef"><b>Definition:</b> <a href="st_8h_source.html#l00078">st.h:78</a></div></div>
71
71
  <div class="ttc" id="structst__table_html_a82a6c5cde11a832171b4c3e8fec57c36"><div class="ttname"><a href="structst__table.html#a82a6c5cde11a832171b4c3e8fec57c36">st_table::num_bins</a></div><div class="ttdeci">int num_bins</div><div class="ttdef"><b>Definition:</b> <a href="st_8h_source.html#l00063">st.h:63</a></div></div>
72
72
  <div class="ttc" id="structst__table_html"><div class="ttname"><a href="structst__table.html">st_table</a></div><div class="ttdef"><b>Definition:</b> <a href="st_8h_source.html#l00060">st.h:60</a></div></div>
73
73
  <div class="ttc" id="st_8h_html_a0c6a172fd99de7928916e65034ed8b1fa04b939c166d4baa471909eb224d5fed3"><div class="ttname"><a href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1fa04b939c166d4baa471909eb224d5fed3">ST_STOP</a></div><div class="ttdef"><b>Definition:</b> <a href="st_8h_source.html#l00078">st.h:78</a></div></div>
74
74
  <div class="ttc" id="st_8c_html_a88896d7ce4715597cba13ff35952e0b5"><div class="ttname"><a href="st_8c.html#a88896d7ce4715597cba13ff35952e0b5">st_init_table_with_params</a></div><div class="ttdeci">st_table * st_init_table_with_params(ST_PFICPCP compare, ST_PFICPI hash, int size, int density, double grow_factor, int reorder_flag)</div><div class="ttdef"><b>Definition:</b> <a href="st_8c_source.html#l00184">st.c:184</a></div></div>
75
75
  <div class="ttc" id="util_8h_html_aa279a8302d25fa9dfeb3e00161aee784"><div class="ttname"><a href="util_8h.html#aa279a8302d25fa9dfeb3e00161aee784">FREE</a></div><div class="ttdeci">#define FREE(obj)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00080">util.h:80</a></div></div>
76
+ <div class="ttc" id="tools_2CFL_2CMakeLists_8txt_html_aff8b1edecee3d7c397afcfe02e05d0c7"><div class="ttname"><a href="tools_2CFL_2CMakeLists_8txt.html#aff8b1edecee3d7c397afcfe02e05d0c7">if</a></div><div class="ttdeci">if(DEFINED IN_SOURCE_BUILD) set(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(cfl cfl.cpp) else() add_executable(cfl cfl.cpp) target_link_libraries(cfl Svf Cudd $</div><div class="ttdef"><b>Definition:</b> <a href="tools_2CFL_2CMakeLists_8txt_source.html#l00002">CMakeLists.txt:2</a></div></div>
76
77
  <div class="ttc" id="st_8c_html_ada6e90b4df1ca291977c89a6d4fdea06"><div class="ttname"><a href="st_8c.html#ada6e90b4df1ca291977c89a6d4fdea06">st_ptrhash</a></div><div class="ttdeci">int st_ptrhash(char *x, int size)</div><div class="ttdef"><b>Definition:</b> <a href="st_8c_source.html#l00547">st.c:547</a></div></div>
77
78
  <div class="ttc" id="st_8h_html_a0c6a172fd99de7928916e65034ed8b1fac99fc55c7f355bf9071739a4bc2ea139"><div class="ttname"><a href="st_8h.html#a0c6a172fd99de7928916e65034ed8b1fac99fc55c7f355bf9071739a4bc2ea139">ST_CONTINUE</a></div><div class="ttdef"><b>Definition:</b> <a href="st_8h_source.html#l00078">st.h:78</a></div></div>
78
79
  <div class="ttc" id="st_8c_html_a9fc5c02ec598b362bd1fd5ddb6442731"><div class="ttname"><a href="st_8c.html#a9fc5c02ec598b362bd1fd5ddb6442731">FIND_ENTRY</a></div><div class="ttdeci">#define FIND_ENTRY(table, hash_val, key, ptr, last)</div><div class="ttdef"><b>Definition:</b> <a href="st_8c_source.html#l00071">st.c:71</a></div></div>
@@ -124,7 +125,6 @@ $(function() {
124
125
  <div class="ttc" id="structst__generator_html_a950d044c22c5ee51f1dc00fbc82f7e35"><div class="ttname"><a href="structst__generator.html#a950d044c22c5ee51f1dc00fbc82f7e35">st_generator::entry</a></div><div class="ttdeci">st_table_entry * entry</div><div class="ttdef"><b>Definition:</b> <a href="st_8h_source.html#l00074">st.h:74</a></div></div>
125
126
  <div class="ttc" id="st_8c_html_aa935648640f20c4160b61b68edcd313d"><div class="ttname"><a href="st_8c.html#aa935648640f20c4160b61b68edcd313d">rehash</a></div><div class="ttdeci">static int rehash(st_table *)</div><div class="ttdef"><b>Definition:</b> <a href="st_8c_source.html#l00757">st.c:757</a></div></div>
126
127
  <div class="ttc" id="st_8c_html_a18fa2f1785eb7a89b8cf437499521f73"><div class="ttname"><a href="st_8c.html#a18fa2f1785eb7a89b8cf437499521f73">st_add_direct</a></div><div class="ttdeci">int st_add_direct(st_table *table, void *key, void *value)</div><div class="ttdef"><b>Definition:</b> <a href="st_8c_source.html#l00395">st.c:395</a></div></div>
127
- <div class="ttc" id="tools_2DDA_2CMakeLists_8txt_html_a7686df215f6da6fdcfa2c20950c96939"><div class="ttname"><a href="tools_2DDA_2CMakeLists_8txt.html#a7686df215f6da6fdcfa2c20950c96939">if</a></div><div class="ttdeci">if(DEFINED IN_SOURCE_BUILD) set(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(dvf dda.cpp) else() add_executable(dvf dda.cpp) target_link_libraries(dvf Svf Cudd $</div><div class="ttdef"><b>Definition:</b> <a href="tools_2DDA_2CMakeLists_8txt_source.html#l00002">CMakeLists.txt:2</a></div></div>
128
128
  </div><!-- fragment --></div><!-- contents -->
129
129
  <!-- start footer part -->
130
130
  <hr class="footer"/><address class="footer"><small>