clipsruby 0.0.2

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 (346) hide show
  1. checksums.yaml +7 -0
  2. data/ext/clipsruby/agenda.c +1373 -0
  3. data/ext/clipsruby/agenda.h +169 -0
  4. data/ext/clipsruby/analysis.c +1142 -0
  5. data/ext/clipsruby/analysis.h +61 -0
  6. data/ext/clipsruby/argacces.c +526 -0
  7. data/ext/clipsruby/argacces.h +77 -0
  8. data/ext/clipsruby/bload.c +884 -0
  9. data/ext/clipsruby/bload.h +94 -0
  10. data/ext/clipsruby/bmathfun.c +557 -0
  11. data/ext/clipsruby/bmathfun.h +66 -0
  12. data/ext/clipsruby/bsave.c +634 -0
  13. data/ext/clipsruby/bsave.h +130 -0
  14. data/ext/clipsruby/classcom.c +976 -0
  15. data/ext/clipsruby/classcom.h +115 -0
  16. data/ext/clipsruby/classexm.c +1376 -0
  17. data/ext/clipsruby/classexm.h +97 -0
  18. data/ext/clipsruby/classfun.c +1392 -0
  19. data/ext/clipsruby/classfun.h +164 -0
  20. data/ext/clipsruby/classinf.c +1245 -0
  21. data/ext/clipsruby/classinf.h +94 -0
  22. data/ext/clipsruby/classini.c +843 -0
  23. data/ext/clipsruby/classini.h +75 -0
  24. data/ext/clipsruby/classpsr.c +957 -0
  25. data/ext/clipsruby/classpsr.h +73 -0
  26. data/ext/clipsruby/clips.h +133 -0
  27. data/ext/clipsruby/clipsruby.c +619 -0
  28. data/ext/clipsruby/clsltpsr.c +931 -0
  29. data/ext/clipsruby/clsltpsr.h +72 -0
  30. data/ext/clipsruby/commline.c +1217 -0
  31. data/ext/clipsruby/commline.h +131 -0
  32. data/ext/clipsruby/conscomp.c +1593 -0
  33. data/ext/clipsruby/conscomp.h +150 -0
  34. data/ext/clipsruby/constant.h +264 -0
  35. data/ext/clipsruby/constrct.c +1090 -0
  36. data/ext/clipsruby/constrct.h +216 -0
  37. data/ext/clipsruby/constrnt.c +554 -0
  38. data/ext/clipsruby/constrnt.h +132 -0
  39. data/ext/clipsruby/crstrtgy.c +1088 -0
  40. data/ext/clipsruby/crstrtgy.h +85 -0
  41. data/ext/clipsruby/cstrcbin.c +185 -0
  42. data/ext/clipsruby/cstrcbin.h +61 -0
  43. data/ext/clipsruby/cstrccmp.h +43 -0
  44. data/ext/clipsruby/cstrccom.c +1791 -0
  45. data/ext/clipsruby/cstrccom.h +115 -0
  46. data/ext/clipsruby/cstrcpsr.c +835 -0
  47. data/ext/clipsruby/cstrcpsr.h +97 -0
  48. data/ext/clipsruby/cstrnbin.c +282 -0
  49. data/ext/clipsruby/cstrnbin.h +55 -0
  50. data/ext/clipsruby/cstrnchk.c +826 -0
  51. data/ext/clipsruby/cstrnchk.h +91 -0
  52. data/ext/clipsruby/cstrncmp.c +238 -0
  53. data/ext/clipsruby/cstrncmp.h +57 -0
  54. data/ext/clipsruby/cstrnops.c +1176 -0
  55. data/ext/clipsruby/cstrnops.h +47 -0
  56. data/ext/clipsruby/cstrnpsr.c +1394 -0
  57. data/ext/clipsruby/cstrnpsr.h +88 -0
  58. data/ext/clipsruby/cstrnutl.c +564 -0
  59. data/ext/clipsruby/cstrnutl.h +54 -0
  60. data/ext/clipsruby/default.c +454 -0
  61. data/ext/clipsruby/default.h +57 -0
  62. data/ext/clipsruby/defins.c +971 -0
  63. data/ext/clipsruby/defins.h +127 -0
  64. data/ext/clipsruby/developr.c +677 -0
  65. data/ext/clipsruby/developr.h +69 -0
  66. data/ext/clipsruby/dffctbin.c +477 -0
  67. data/ext/clipsruby/dffctbin.h +76 -0
  68. data/ext/clipsruby/dffctbsc.c +308 -0
  69. data/ext/clipsruby/dffctbsc.h +72 -0
  70. data/ext/clipsruby/dffctcmp.c +297 -0
  71. data/ext/clipsruby/dffctcmp.h +44 -0
  72. data/ext/clipsruby/dffctdef.c +364 -0
  73. data/ext/clipsruby/dffctdef.h +104 -0
  74. data/ext/clipsruby/dffctpsr.c +179 -0
  75. data/ext/clipsruby/dffctpsr.h +49 -0
  76. data/ext/clipsruby/dffnxbin.c +520 -0
  77. data/ext/clipsruby/dffnxbin.h +67 -0
  78. data/ext/clipsruby/dffnxcmp.c +378 -0
  79. data/ext/clipsruby/dffnxcmp.h +54 -0
  80. data/ext/clipsruby/dffnxexe.c +241 -0
  81. data/ext/clipsruby/dffnxexe.h +58 -0
  82. data/ext/clipsruby/dffnxfun.c +1192 -0
  83. data/ext/clipsruby/dffnxfun.h +155 -0
  84. data/ext/clipsruby/dffnxpsr.c +514 -0
  85. data/ext/clipsruby/dffnxpsr.h +57 -0
  86. data/ext/clipsruby/dfinsbin.c +509 -0
  87. data/ext/clipsruby/dfinsbin.h +66 -0
  88. data/ext/clipsruby/dfinscmp.c +345 -0
  89. data/ext/clipsruby/dfinscmp.h +48 -0
  90. data/ext/clipsruby/drive.c +1191 -0
  91. data/ext/clipsruby/drive.h +65 -0
  92. data/ext/clipsruby/emathfun.c +1213 -0
  93. data/ext/clipsruby/emathfun.h +99 -0
  94. data/ext/clipsruby/engine.c +1568 -0
  95. data/ext/clipsruby/engine.h +203 -0
  96. data/ext/clipsruby/entities.h +276 -0
  97. data/ext/clipsruby/envrnbld.c +514 -0
  98. data/ext/clipsruby/envrnbld.h +40 -0
  99. data/ext/clipsruby/envrnmnt.c +257 -0
  100. data/ext/clipsruby/envrnmnt.h +112 -0
  101. data/ext/clipsruby/evaluatn.c +1736 -0
  102. data/ext/clipsruby/evaluatn.h +211 -0
  103. data/ext/clipsruby/expressn.c +494 -0
  104. data/ext/clipsruby/expressn.h +154 -0
  105. data/ext/clipsruby/exprnbin.c +538 -0
  106. data/ext/clipsruby/exprnbin.h +60 -0
  107. data/ext/clipsruby/exprnops.c +564 -0
  108. data/ext/clipsruby/exprnops.h +67 -0
  109. data/ext/clipsruby/exprnpsr.c +1112 -0
  110. data/ext/clipsruby/exprnpsr.h +98 -0
  111. data/ext/clipsruby/extconf.rb +2 -0
  112. data/ext/clipsruby/extnfunc.c +1015 -0
  113. data/ext/clipsruby/extnfunc.h +157 -0
  114. data/ext/clipsruby/factbin.c +447 -0
  115. data/ext/clipsruby/factbin.h +56 -0
  116. data/ext/clipsruby/factbld.c +1035 -0
  117. data/ext/clipsruby/factbld.h +63 -0
  118. data/ext/clipsruby/factcmp.c +386 -0
  119. data/ext/clipsruby/factcmp.h +46 -0
  120. data/ext/clipsruby/factcom.c +759 -0
  121. data/ext/clipsruby/factcom.h +80 -0
  122. data/ext/clipsruby/factfile.c +1761 -0
  123. data/ext/clipsruby/factfile.h +54 -0
  124. data/ext/clipsruby/factfun.c +682 -0
  125. data/ext/clipsruby/factfun.h +77 -0
  126. data/ext/clipsruby/factgen.c +1305 -0
  127. data/ext/clipsruby/factgen.h +229 -0
  128. data/ext/clipsruby/facthsh.c +438 -0
  129. data/ext/clipsruby/facthsh.h +81 -0
  130. data/ext/clipsruby/factlhs.c +250 -0
  131. data/ext/clipsruby/factlhs.h +54 -0
  132. data/ext/clipsruby/factmch.c +905 -0
  133. data/ext/clipsruby/factmch.h +68 -0
  134. data/ext/clipsruby/factmngr.c +3373 -0
  135. data/ext/clipsruby/factmngr.h +325 -0
  136. data/ext/clipsruby/factprt.c +498 -0
  137. data/ext/clipsruby/factprt.h +60 -0
  138. data/ext/clipsruby/factqpsr.c +796 -0
  139. data/ext/clipsruby/factqpsr.h +61 -0
  140. data/ext/clipsruby/factqury.c +1267 -0
  141. data/ext/clipsruby/factqury.h +112 -0
  142. data/ext/clipsruby/factrete.c +978 -0
  143. data/ext/clipsruby/factrete.h +70 -0
  144. data/ext/clipsruby/factrhs.c +667 -0
  145. data/ext/clipsruby/factrhs.h +55 -0
  146. data/ext/clipsruby/filecom.c +353 -0
  147. data/ext/clipsruby/filecom.h +137 -0
  148. data/ext/clipsruby/filertr.c +481 -0
  149. data/ext/clipsruby/filertr.h +94 -0
  150. data/ext/clipsruby/fileutil.c +1020 -0
  151. data/ext/clipsruby/fileutil.h +50 -0
  152. data/ext/clipsruby/generate.c +1079 -0
  153. data/ext/clipsruby/generate.h +57 -0
  154. data/ext/clipsruby/genrcbin.c +902 -0
  155. data/ext/clipsruby/genrcbin.h +69 -0
  156. data/ext/clipsruby/genrccmp.c +640 -0
  157. data/ext/clipsruby/genrccmp.h +59 -0
  158. data/ext/clipsruby/genrccom.c +2017 -0
  159. data/ext/clipsruby/genrccom.h +119 -0
  160. data/ext/clipsruby/genrcexe.c +737 -0
  161. data/ext/clipsruby/genrcexe.h +73 -0
  162. data/ext/clipsruby/genrcfun.c +890 -0
  163. data/ext/clipsruby/genrcfun.h +185 -0
  164. data/ext/clipsruby/genrcpsr.c +1618 -0
  165. data/ext/clipsruby/genrcpsr.h +80 -0
  166. data/ext/clipsruby/globlbin.c +458 -0
  167. data/ext/clipsruby/globlbin.h +71 -0
  168. data/ext/clipsruby/globlbsc.c +361 -0
  169. data/ext/clipsruby/globlbsc.h +83 -0
  170. data/ext/clipsruby/globlcmp.c +330 -0
  171. data/ext/clipsruby/globlcmp.h +52 -0
  172. data/ext/clipsruby/globlcom.c +289 -0
  173. data/ext/clipsruby/globlcom.h +63 -0
  174. data/ext/clipsruby/globldef.c +1087 -0
  175. data/ext/clipsruby/globldef.h +151 -0
  176. data/ext/clipsruby/globlpsr.c +530 -0
  177. data/ext/clipsruby/globlpsr.h +59 -0
  178. data/ext/clipsruby/immthpsr.c +431 -0
  179. data/ext/clipsruby/immthpsr.h +55 -0
  180. data/ext/clipsruby/incrrset.c +530 -0
  181. data/ext/clipsruby/incrrset.h +73 -0
  182. data/ext/clipsruby/inherpsr.c +850 -0
  183. data/ext/clipsruby/inherpsr.h +52 -0
  184. data/ext/clipsruby/inscom.c +2076 -0
  185. data/ext/clipsruby/inscom.h +182 -0
  186. data/ext/clipsruby/insfile.c +1764 -0
  187. data/ext/clipsruby/insfile.h +96 -0
  188. data/ext/clipsruby/insfun.c +1451 -0
  189. data/ext/clipsruby/insfun.h +134 -0
  190. data/ext/clipsruby/insmngr.c +2550 -0
  191. data/ext/clipsruby/insmngr.h +125 -0
  192. data/ext/clipsruby/insmoddp.c +1041 -0
  193. data/ext/clipsruby/insmoddp.h +91 -0
  194. data/ext/clipsruby/insmult.c +804 -0
  195. data/ext/clipsruby/insmult.h +62 -0
  196. data/ext/clipsruby/inspsr.c +602 -0
  197. data/ext/clipsruby/inspsr.h +60 -0
  198. data/ext/clipsruby/insquery.c +1278 -0
  199. data/ext/clipsruby/insquery.h +115 -0
  200. data/ext/clipsruby/insqypsr.c +729 -0
  201. data/ext/clipsruby/insqypsr.h +63 -0
  202. data/ext/clipsruby/iofun.c +2045 -0
  203. data/ext/clipsruby/iofun.h +116 -0
  204. data/ext/clipsruby/lgcldpnd.c +644 -0
  205. data/ext/clipsruby/lgcldpnd.h +75 -0
  206. data/ext/clipsruby/main.c +112 -0
  207. data/ext/clipsruby/match.h +142 -0
  208. data/ext/clipsruby/memalloc.c +481 -0
  209. data/ext/clipsruby/memalloc.h +197 -0
  210. data/ext/clipsruby/miscfun.c +1801 -0
  211. data/ext/clipsruby/miscfun.h +132 -0
  212. data/ext/clipsruby/modulbin.c +607 -0
  213. data/ext/clipsruby/modulbin.h +84 -0
  214. data/ext/clipsruby/modulbsc.c +347 -0
  215. data/ext/clipsruby/modulbsc.h +67 -0
  216. data/ext/clipsruby/modulcmp.c +499 -0
  217. data/ext/clipsruby/modulcmp.h +54 -0
  218. data/ext/clipsruby/moduldef.c +817 -0
  219. data/ext/clipsruby/moduldef.h +271 -0
  220. data/ext/clipsruby/modulpsr.c +1150 -0
  221. data/ext/clipsruby/modulpsr.h +69 -0
  222. data/ext/clipsruby/modulutl.c +1036 -0
  223. data/ext/clipsruby/modulutl.h +84 -0
  224. data/ext/clipsruby/msgcom.c +1221 -0
  225. data/ext/clipsruby/msgcom.h +125 -0
  226. data/ext/clipsruby/msgfun.c +1076 -0
  227. data/ext/clipsruby/msgfun.h +118 -0
  228. data/ext/clipsruby/msgpass.c +1441 -0
  229. data/ext/clipsruby/msgpass.h +103 -0
  230. data/ext/clipsruby/msgpsr.c +698 -0
  231. data/ext/clipsruby/msgpsr.h +73 -0
  232. data/ext/clipsruby/multifld.c +1404 -0
  233. data/ext/clipsruby/multifld.h +130 -0
  234. data/ext/clipsruby/multifun.c +2182 -0
  235. data/ext/clipsruby/multifun.h +102 -0
  236. data/ext/clipsruby/network.h +142 -0
  237. data/ext/clipsruby/objbin.c +1522 -0
  238. data/ext/clipsruby/objbin.h +79 -0
  239. data/ext/clipsruby/objcmp.c +1507 -0
  240. data/ext/clipsruby/objcmp.h +71 -0
  241. data/ext/clipsruby/object.h +260 -0
  242. data/ext/clipsruby/objrtbin.c +701 -0
  243. data/ext/clipsruby/objrtbin.h +79 -0
  244. data/ext/clipsruby/objrtbld.c +2393 -0
  245. data/ext/clipsruby/objrtbld.h +66 -0
  246. data/ext/clipsruby/objrtcmp.c +734 -0
  247. data/ext/clipsruby/objrtcmp.h +66 -0
  248. data/ext/clipsruby/objrtfnx.c +1330 -0
  249. data/ext/clipsruby/objrtfnx.h +222 -0
  250. data/ext/clipsruby/objrtgen.c +736 -0
  251. data/ext/clipsruby/objrtgen.h +63 -0
  252. data/ext/clipsruby/objrtmch.c +1524 -0
  253. data/ext/clipsruby/objrtmch.h +160 -0
  254. data/ext/clipsruby/parsefun.c +415 -0
  255. data/ext/clipsruby/parsefun.h +67 -0
  256. data/ext/clipsruby/pattern.c +1265 -0
  257. data/ext/clipsruby/pattern.h +163 -0
  258. data/ext/clipsruby/pprint.c +328 -0
  259. data/ext/clipsruby/pprint.h +79 -0
  260. data/ext/clipsruby/prccode.c +1478 -0
  261. data/ext/clipsruby/prccode.h +145 -0
  262. data/ext/clipsruby/prcdrfun.c +640 -0
  263. data/ext/clipsruby/prcdrfun.h +95 -0
  264. data/ext/clipsruby/prcdrpsr.c +1068 -0
  265. data/ext/clipsruby/prcdrpsr.h +79 -0
  266. data/ext/clipsruby/prdctfun.c +869 -0
  267. data/ext/clipsruby/prdctfun.h +77 -0
  268. data/ext/clipsruby/prntutil.c +878 -0
  269. data/ext/clipsruby/prntutil.h +125 -0
  270. data/ext/clipsruby/proflfun.c +827 -0
  271. data/ext/clipsruby/proflfun.h +118 -0
  272. data/ext/clipsruby/reorder.c +2082 -0
  273. data/ext/clipsruby/reorder.h +172 -0
  274. data/ext/clipsruby/reteutil.c +1732 -0
  275. data/ext/clipsruby/reteutil.h +111 -0
  276. data/ext/clipsruby/retract.c +710 -0
  277. data/ext/clipsruby/retract.h +74 -0
  278. data/ext/clipsruby/router.c +737 -0
  279. data/ext/clipsruby/router.h +147 -0
  280. data/ext/clipsruby/rulebin.c +1136 -0
  281. data/ext/clipsruby/rulebin.h +153 -0
  282. data/ext/clipsruby/rulebld.c +1328 -0
  283. data/ext/clipsruby/rulebld.h +62 -0
  284. data/ext/clipsruby/rulebsc.c +517 -0
  285. data/ext/clipsruby/rulebsc.h +91 -0
  286. data/ext/clipsruby/rulecmp.c +733 -0
  287. data/ext/clipsruby/rulecmp.h +63 -0
  288. data/ext/clipsruby/rulecom.c +1583 -0
  289. data/ext/clipsruby/rulecom.h +116 -0
  290. data/ext/clipsruby/rulecstr.c +892 -0
  291. data/ext/clipsruby/rulecstr.h +53 -0
  292. data/ext/clipsruby/ruledef.c +559 -0
  293. data/ext/clipsruby/ruledef.h +179 -0
  294. data/ext/clipsruby/ruledlt.c +599 -0
  295. data/ext/clipsruby/ruledlt.h +58 -0
  296. data/ext/clipsruby/rulelhs.c +1216 -0
  297. data/ext/clipsruby/rulelhs.h +52 -0
  298. data/ext/clipsruby/rulepsr.c +1073 -0
  299. data/ext/clipsruby/rulepsr.h +61 -0
  300. data/ext/clipsruby/scanner.c +856 -0
  301. data/ext/clipsruby/scanner.h +112 -0
  302. data/ext/clipsruby/setup.h +488 -0
  303. data/ext/clipsruby/sortfun.c +433 -0
  304. data/ext/clipsruby/sortfun.h +55 -0
  305. data/ext/clipsruby/strngfun.c +1173 -0
  306. data/ext/clipsruby/strngfun.h +96 -0
  307. data/ext/clipsruby/strngrtr.c +523 -0
  308. data/ext/clipsruby/strngrtr.h +97 -0
  309. data/ext/clipsruby/symblbin.c +648 -0
  310. data/ext/clipsruby/symblbin.h +64 -0
  311. data/ext/clipsruby/symblcmp.c +893 -0
  312. data/ext/clipsruby/symblcmp.h +61 -0
  313. data/ext/clipsruby/symbol.c +1961 -0
  314. data/ext/clipsruby/symbol.h +243 -0
  315. data/ext/clipsruby/sysdep.c +894 -0
  316. data/ext/clipsruby/sysdep.h +164 -0
  317. data/ext/clipsruby/textpro.c +1388 -0
  318. data/ext/clipsruby/textpro.h +77 -0
  319. data/ext/clipsruby/tmpltbin.c +609 -0
  320. data/ext/clipsruby/tmpltbin.h +108 -0
  321. data/ext/clipsruby/tmpltbsc.c +327 -0
  322. data/ext/clipsruby/tmpltbsc.h +87 -0
  323. data/ext/clipsruby/tmpltcmp.c +450 -0
  324. data/ext/clipsruby/tmpltcmp.h +57 -0
  325. data/ext/clipsruby/tmpltdef.c +584 -0
  326. data/ext/clipsruby/tmpltdef.h +155 -0
  327. data/ext/clipsruby/tmpltfun.c +2477 -0
  328. data/ext/clipsruby/tmpltfun.h +122 -0
  329. data/ext/clipsruby/tmpltlhs.c +379 -0
  330. data/ext/clipsruby/tmpltlhs.h +50 -0
  331. data/ext/clipsruby/tmpltpsr.c +819 -0
  332. data/ext/clipsruby/tmpltpsr.h +59 -0
  333. data/ext/clipsruby/tmpltrhs.c +595 -0
  334. data/ext/clipsruby/tmpltrhs.h +55 -0
  335. data/ext/clipsruby/tmpltutl.c +637 -0
  336. data/ext/clipsruby/tmpltutl.h +82 -0
  337. data/ext/clipsruby/userdata.c +156 -0
  338. data/ext/clipsruby/userdata.h +72 -0
  339. data/ext/clipsruby/userfunctions.c +70 -0
  340. data/ext/clipsruby/usrsetup.h +7 -0
  341. data/ext/clipsruby/utility.c +1594 -0
  342. data/ext/clipsruby/utility.h +250 -0
  343. data/ext/clipsruby/watch.c +865 -0
  344. data/ext/clipsruby/watch.h +124 -0
  345. data/lib/clipsruby.rb +1 -0
  346. metadata +388 -0
@@ -0,0 +1,49 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/30/16 */
5
+ /* */
6
+ /* DEFFACTS PARSER HEADER FILE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: */
11
+ /* */
12
+ /* Principal Programmer(s): */
13
+ /* Gary D. Riley */
14
+ /* */
15
+ /* Contributing Programmer(s): */
16
+ /* Brian L. Dantes */
17
+ /* */
18
+ /* Revision History: */
19
+ /* */
20
+ /* 6.30: Removed conditional code for unsupported */
21
+ /* compilers/operating systems (IBM_MCW and */
22
+ /* MAC_MCW). */
23
+ /* */
24
+ /* GetConstructNameAndComment API change. */
25
+ /* */
26
+ /* Added const qualifiers to remove C++ */
27
+ /* deprecation warnings. */
28
+ /* */
29
+ /* 6.40: Removed LOCALE definition. */
30
+ /* */
31
+ /* Pragma once and other inclusion changes. */
32
+ /* */
33
+ /* Added support for booleans with <stdbool.h>. */
34
+ /* */
35
+ /* Removed use of void pointers for specific */
36
+ /* data structures. */
37
+ /* */
38
+ /*************************************************************/
39
+
40
+ #ifndef _H_dffctpsr
41
+
42
+ #pragma once
43
+
44
+ #define _H_dffctpsr
45
+
46
+ bool ParseDeffacts(Environment *,const char *);
47
+
48
+ #endif /* _H_dffctpsr */
49
+
@@ -0,0 +1,520 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 11/01/16 */
5
+ /* */
6
+ /* */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Binary Load/Save Functions for Deffunctions */
11
+ /* */
12
+ /* Principal Programmer(s): */
13
+ /* Brian L. Dantes */
14
+ /* */
15
+ /* Contributing Programmer(s): */
16
+ /* */
17
+ /* Revision History: */
18
+ /* */
19
+ /* 6.30: Removed conditional code for unsupported */
20
+ /* compilers/operating systems (IBM_MCW, */
21
+ /* MAC_MCW, and IBM_TBC). */
22
+ /* */
23
+ /* Changed integer type/precision. */
24
+ /* */
25
+ /* 6.40: Pragma once and other inclusion changes. */
26
+ /* */
27
+ /* Added support for booleans with <stdbool.h>. */
28
+ /* */
29
+ /* Removed use of void pointers for specific */
30
+ /* data structures. */
31
+ /* */
32
+ /*************************************************************/
33
+
34
+ /* =========================================
35
+ *****************************************
36
+ EXTERNAL DEFINITIONS
37
+ =========================================
38
+ ***************************************** */
39
+ #include "setup.h"
40
+
41
+ #if DEFFUNCTION_CONSTRUCT && (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE)
42
+
43
+ #include "bload.h"
44
+ #include "bsave.h"
45
+ #include "cstrcbin.h"
46
+ #include "cstrccom.h"
47
+ #include "envrnmnt.h"
48
+ #include "memalloc.h"
49
+ #include "modulbin.h"
50
+
51
+ #include "dffnxbin.h"
52
+
53
+ /* =========================================
54
+ *****************************************
55
+ CONSTANTS
56
+ =========================================
57
+ ***************************************** */
58
+
59
+ /* =========================================
60
+ *****************************************
61
+ MACROS AND TYPES
62
+ =========================================
63
+ ***************************************** */
64
+ typedef struct bsaveDeffunctionModule
65
+ {
66
+ struct bsaveDefmoduleItemHeader header;
67
+ } BSAVE_DEFFUNCTION_MODULE;
68
+
69
+ typedef struct bsaveDeffunctionStruct
70
+ {
71
+ struct bsaveConstructHeader header;
72
+ unsigned short minNumberOfParameters;
73
+ unsigned short maxNumberOfParameters;
74
+ unsigned short numberOfLocalVars;
75
+ unsigned long name;
76
+ unsigned long code;
77
+ } BSAVE_DEFFUNCTION;
78
+
79
+ /****************************************/
80
+ /* LOCAL INTERNAL FUNCTION DEFINITIONS */
81
+ /****************************************/
82
+
83
+ #if BLOAD_AND_BSAVE
84
+ static void BsaveDeffunctionFind(Environment *);
85
+ static void MarkDeffunctionItems(Environment *,ConstructHeader *,void *);
86
+ static void BsaveDeffunctionExpressions(Environment *,FILE *);
87
+ static void BsaveDeffunctionExpression(Environment *,ConstructHeader *,void *);
88
+ static void BsaveStorageDeffunctions(Environment *,FILE *);
89
+ static void BsaveDeffunctions(Environment *,FILE *);
90
+ static void BsaveDeffunction(Environment *,ConstructHeader *,void *);
91
+ #endif
92
+
93
+ static void BloadStorageDeffunctions(Environment *);
94
+ static void BloadDeffunctions(Environment *);
95
+ static void UpdateDeffunctionModule(Environment *,void *,unsigned long);
96
+ static void UpdateDeffunction(Environment *,void *,unsigned long);
97
+ static void ClearDeffunctionBload(Environment *);
98
+ static void DeallocateDeffunctionBloadData(Environment *);
99
+
100
+ /* =========================================
101
+ *****************************************
102
+ EXTERNALLY VISIBLE FUNCTIONS
103
+ =========================================
104
+ ***************************************** */
105
+
106
+ /***********************************************************
107
+ NAME : SetupDeffunctionsBload
108
+ DESCRIPTION : Initializes data structures and
109
+ routines for binary loads of deffunctions
110
+ INPUTS : None
111
+ RETURNS : Nothing useful
112
+ SIDE EFFECTS : Routines defined and structures initialized
113
+ NOTES : None
114
+ ***********************************************************/
115
+ void SetupDeffunctionsBload(
116
+ Environment *theEnv)
117
+ {
118
+ AllocateEnvironmentData(theEnv,DFFNXBIN_DATA,sizeof(struct deffunctionBinaryData),DeallocateDeffunctionBloadData);
119
+ #if BLOAD_AND_BSAVE
120
+ AddBinaryItem(theEnv,"deffunctions",0,BsaveDeffunctionFind,BsaveDeffunctionExpressions,
121
+ BsaveStorageDeffunctions,BsaveDeffunctions,
122
+ BloadStorageDeffunctions,BloadDeffunctions,
123
+ ClearDeffunctionBload);
124
+ #else
125
+ AddBinaryItem(theEnv,"deffunctions",0,NULL,NULL,NULL,NULL,
126
+ BloadStorageDeffunctions,BloadDeffunctions,
127
+ ClearDeffunctionBload);
128
+ #endif
129
+ }
130
+
131
+ /***********************************************************/
132
+ /* DeallocateDeffunctionBloadData: Deallocates environment */
133
+ /* data for the deffunction bsave functionality. */
134
+ /***********************************************************/
135
+ static void DeallocateDeffunctionBloadData(
136
+ Environment *theEnv)
137
+ {
138
+ size_t space;
139
+
140
+ #if (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE) && (! RUN_TIME)
141
+ space = DeffunctionBinaryData(theEnv)->DeffunctionCount * sizeof(Deffunction);
142
+ if (space != 0) genfree(theEnv,DeffunctionBinaryData(theEnv)->DeffunctionArray,space);
143
+
144
+ space = DeffunctionBinaryData(theEnv)->ModuleCount * sizeof(struct deffunctionModuleData);
145
+ if (space != 0) genfree(theEnv,DeffunctionBinaryData(theEnv)->ModuleArray,space);
146
+ #endif
147
+ }
148
+
149
+ /***************************************************
150
+ NAME : BloadDeffunctionModuleReference
151
+ DESCRIPTION : Returns a pointer to the
152
+ appropriate deffunction module
153
+ INPUTS : The index of the module
154
+ RETURNS : A pointer to the module
155
+ SIDE EFFECTS : None
156
+ NOTES : None
157
+ ***************************************************/
158
+ void *BloadDeffunctionModuleReference(
159
+ Environment *theEnv,
160
+ unsigned long theIndex)
161
+ {
162
+ return (void *) &DeffunctionBinaryData(theEnv)->ModuleArray[theIndex];
163
+ }
164
+
165
+ /* =========================================
166
+ *****************************************
167
+ INTERNALLY VISIBLE FUNCTIONS
168
+ =========================================
169
+ ***************************************** */
170
+
171
+ #if BLOAD_AND_BSAVE
172
+
173
+ /***************************************************************************
174
+ NAME : BsaveDeffunctionFind
175
+ DESCRIPTION : For all deffunctions, this routine marks all
176
+ the needed symbols.
177
+ Also, it also counts the number of
178
+ expression structures needed.
179
+ Also, counts total number of deffunctions.
180
+ INPUTS : None
181
+ RETURNS : Nothing useful
182
+ SIDE EFFECTS : ExpressionCount (a global from BSAVE.C) is incremented
183
+ for every expression needed
184
+ Symbols are marked in their structures
185
+ NOTES : Also sets bsaveIndex for each deffunction (assumes
186
+ deffunctions will be bsaved in order of binary list)
187
+ ***************************************************************************/
188
+ static void BsaveDeffunctionFind(
189
+ Environment *theEnv)
190
+ {
191
+ SaveBloadCount(theEnv,DeffunctionBinaryData(theEnv)->ModuleCount);
192
+ SaveBloadCount(theEnv,DeffunctionBinaryData(theEnv)->DeffunctionCount);
193
+ DeffunctionBinaryData(theEnv)->DeffunctionCount = 0L;
194
+
195
+ DeffunctionBinaryData(theEnv)->ModuleCount = GetNumberOfDefmodules(theEnv);
196
+
197
+ DoForAllConstructs(theEnv,MarkDeffunctionItems,
198
+ DeffunctionData(theEnv)->DeffunctionModuleIndex,
199
+ false,NULL);
200
+ }
201
+
202
+ /***************************************************
203
+ NAME : MarkDeffunctionItems
204
+ DESCRIPTION : Marks the needed items for
205
+ a deffunction bsave
206
+ INPUTS : 1) The deffunction
207
+ 2) User data buffer (ignored)
208
+ RETURNS : Nothing useful
209
+ SIDE EFFECTS : Needed items marked
210
+ NOTES : None
211
+ ***************************************************/
212
+ static void MarkDeffunctionItems(
213
+ Environment *theEnv,
214
+ ConstructHeader *theDeffunction,
215
+ void *userBuffer)
216
+ {
217
+ #if MAC_XCD
218
+ #pragma unused(userBuffer)
219
+ #endif
220
+
221
+ MarkConstructHeaderNeededItems(theDeffunction,DeffunctionBinaryData(theEnv)->DeffunctionCount++);
222
+ ExpressionData(theEnv)->ExpressionCount += ExpressionSize(((Deffunction *) theDeffunction)->code);
223
+ MarkNeededItems(theEnv,((Deffunction *) theDeffunction)->code);
224
+ }
225
+
226
+ /***************************************************
227
+ NAME : BsaveDeffunctionExpressions
228
+ DESCRIPTION : Writes out all expressions needed
229
+ by deffunctyions
230
+ INPUTS : The file pointer of the binary file
231
+ RETURNS : Nothing useful
232
+ SIDE EFFECTS : File updated
233
+ NOTES : None
234
+ ***************************************************/
235
+ static void BsaveDeffunctionExpressions(
236
+ Environment *theEnv,
237
+ FILE *fp)
238
+ {
239
+ DoForAllConstructs(theEnv,BsaveDeffunctionExpression,DeffunctionData(theEnv)->DeffunctionModuleIndex,
240
+ false,fp);
241
+ }
242
+
243
+ /***************************************************
244
+ NAME : BsaveDeffunctionExpression
245
+ DESCRIPTION : Saves the needed expressions for
246
+ a deffunction bsave
247
+ INPUTS : 1) The deffunction
248
+ 2) Output data file pointer
249
+ RETURNS : Nothing useful
250
+ SIDE EFFECTS : Expressions saved
251
+ NOTES : None
252
+ ***************************************************/
253
+ static void BsaveDeffunctionExpression(
254
+ Environment *theEnv,
255
+ ConstructHeader *theDeffunction,
256
+ void *userBuffer)
257
+ {
258
+ BsaveExpression(theEnv,((Deffunction *) theDeffunction)->code,(FILE *) userBuffer);
259
+ }
260
+
261
+ /***********************************************************
262
+ NAME : BsaveStorageDeffunctions
263
+ DESCRIPTION : Writes out number of each type of structure
264
+ required for deffunctions
265
+ Space required for counts (unsigned long)
266
+ INPUTS : File pointer of binary file
267
+ RETURNS : Nothing useful
268
+ SIDE EFFECTS : Binary file adjusted
269
+ NOTES : None
270
+ ***********************************************************/
271
+ static void BsaveStorageDeffunctions(
272
+ Environment *theEnv,
273
+ FILE *fp)
274
+ {
275
+ size_t space;
276
+
277
+ space = sizeof(unsigned long) * 2;
278
+ GenWrite(&space,sizeof(size_t),fp);
279
+ GenWrite(&DeffunctionBinaryData(theEnv)->ModuleCount,sizeof(unsigned long),fp);
280
+ GenWrite(&DeffunctionBinaryData(theEnv)->DeffunctionCount,sizeof(unsigned long),fp);
281
+ }
282
+
283
+ /*************************************************************************************
284
+ NAME : BsaveDeffunctions
285
+ DESCRIPTION : Writes out deffunction in binary format
286
+ Space required (unsigned long)
287
+ All deffunctions (sizeof(Deffunction) * Number of deffunctions)
288
+ INPUTS : File pointer of binary file
289
+ RETURNS : Nothing useful
290
+ SIDE EFFECTS : Binary file adjusted
291
+ NOTES : None
292
+ *************************************************************************************/
293
+ static void BsaveDeffunctions(
294
+ Environment *theEnv,
295
+ FILE *fp)
296
+ {
297
+ size_t space;
298
+ Defmodule *theModule;
299
+ DeffunctionModuleData *theModuleItem;
300
+ BSAVE_DEFFUNCTION_MODULE dummy_mitem;
301
+
302
+ space = ((sizeof(BSAVE_DEFFUNCTION_MODULE) * DeffunctionBinaryData(theEnv)->ModuleCount) +
303
+ (sizeof(BSAVE_DEFFUNCTION) * DeffunctionBinaryData(theEnv)->DeffunctionCount));
304
+ GenWrite(&space,sizeof(size_t),fp);
305
+
306
+ /* =================================
307
+ Write out each deffunction module
308
+ ================================= */
309
+ DeffunctionBinaryData(theEnv)->DeffunctionCount = 0L;
310
+ theModule = GetNextDefmodule(theEnv,NULL);
311
+ while (theModule != NULL)
312
+ {
313
+ theModuleItem = (DeffunctionModuleData *)
314
+ GetModuleItem(theEnv,theModule,FindModuleItem(theEnv,"deffunction")->moduleIndex);
315
+ AssignBsaveDefmdlItemHdrVals(&dummy_mitem.header,&theModuleItem->header);
316
+ GenWrite(&dummy_mitem,sizeof(BSAVE_DEFFUNCTION_MODULE),fp);
317
+ theModule = GetNextDefmodule(theEnv,theModule);
318
+ }
319
+
320
+ /* ==========================
321
+ Write out each deffunction
322
+ ========================== */
323
+ DoForAllConstructs(theEnv,BsaveDeffunction,DeffunctionData(theEnv)->DeffunctionModuleIndex,
324
+ false,fp);
325
+
326
+ RestoreBloadCount(theEnv,&DeffunctionBinaryData(theEnv)->ModuleCount);
327
+ RestoreBloadCount(theEnv,&DeffunctionBinaryData(theEnv)->DeffunctionCount);
328
+ }
329
+
330
+ /***************************************************
331
+ NAME : BsaveDeffunction
332
+ DESCRIPTION : Bsaves a deffunction
333
+ INPUTS : 1) The deffunction
334
+ 2) Output data file pointer
335
+ RETURNS : Nothing useful
336
+ SIDE EFFECTS : Deffunction saved
337
+ NOTES : None
338
+ ***************************************************/
339
+ static void BsaveDeffunction(
340
+ Environment *theEnv,
341
+ ConstructHeader *theDeffunction,
342
+ void *userBuffer)
343
+ {
344
+ Deffunction *dptr = (Deffunction *) theDeffunction;
345
+ BSAVE_DEFFUNCTION dummy_df;
346
+
347
+ AssignBsaveConstructHeaderVals(&dummy_df.header,&dptr->header);
348
+ dummy_df.minNumberOfParameters = dptr->minNumberOfParameters;
349
+ dummy_df.maxNumberOfParameters = dptr->maxNumberOfParameters;
350
+ dummy_df.numberOfLocalVars = dptr->numberOfLocalVars;
351
+ if (dptr->code != NULL)
352
+ {
353
+ dummy_df.code = ExpressionData(theEnv)->ExpressionCount;
354
+ ExpressionData(theEnv)->ExpressionCount += ExpressionSize(dptr->code);
355
+ }
356
+ else
357
+ dummy_df.code = ULONG_MAX;
358
+ GenWrite(&dummy_df,sizeof(BSAVE_DEFFUNCTION),(FILE *) userBuffer);
359
+ }
360
+
361
+ #endif
362
+
363
+ /***********************************************************************
364
+ NAME : BloadStorageDeffunctions
365
+ DESCRIPTION : This routine space required for deffunction
366
+ structures and allocates space for them
367
+ INPUTS : Nothing
368
+ RETURNS : Nothing useful
369
+ SIDE EFFECTS : Arrays allocated and set
370
+ NOTES : This routine makes no attempt to reset any pointers
371
+ within the structures
372
+ ***********************************************************************/
373
+ static void BloadStorageDeffunctions(
374
+ Environment *theEnv)
375
+ {
376
+ size_t space;
377
+
378
+ GenReadBinary(theEnv,&space,sizeof(size_t));
379
+ if (space == 0L)
380
+ return;
381
+ GenReadBinary(theEnv,&DeffunctionBinaryData(theEnv)->ModuleCount,sizeof(unsigned long));
382
+ GenReadBinary(theEnv,&DeffunctionBinaryData(theEnv)->DeffunctionCount,sizeof(unsigned long));
383
+ if (DeffunctionBinaryData(theEnv)->ModuleCount == 0L)
384
+ {
385
+ DeffunctionBinaryData(theEnv)->ModuleArray = NULL;
386
+ DeffunctionBinaryData(theEnv)->DeffunctionArray = NULL;
387
+ return;
388
+ }
389
+
390
+ space = (DeffunctionBinaryData(theEnv)->ModuleCount * sizeof(DeffunctionModuleData));
391
+ DeffunctionBinaryData(theEnv)->ModuleArray = (DeffunctionModuleData *) genalloc(theEnv,space);
392
+
393
+ if (DeffunctionBinaryData(theEnv)->DeffunctionCount == 0L)
394
+ {
395
+ DeffunctionBinaryData(theEnv)->DeffunctionArray = NULL;
396
+ return;
397
+ }
398
+
399
+ space = (DeffunctionBinaryData(theEnv)->DeffunctionCount * sizeof(Deffunction));
400
+ DeffunctionBinaryData(theEnv)->DeffunctionArray = (Deffunction *) genalloc(theEnv,space);
401
+ }
402
+
403
+ /*********************************************************************
404
+ NAME : BloadDeffunctions
405
+ DESCRIPTION : This routine reads deffunction information from
406
+ a binary file
407
+ This routine moves through the deffunction
408
+ binary array updating pointers
409
+ INPUTS : None
410
+ RETURNS : Nothing useful
411
+ SIDE EFFECTS : Pointers reset from array indices
412
+ NOTES : Assumes all loading is finished
413
+ ********************************************************************/
414
+ static void BloadDeffunctions(
415
+ Environment *theEnv)
416
+ {
417
+ size_t space;
418
+
419
+ GenReadBinary(theEnv,&space,sizeof(size_t));
420
+ BloadandRefresh(theEnv,DeffunctionBinaryData(theEnv)->ModuleCount,sizeof(BSAVE_DEFFUNCTION_MODULE),UpdateDeffunctionModule);
421
+ BloadandRefresh(theEnv,DeffunctionBinaryData(theEnv)->DeffunctionCount,sizeof(BSAVE_DEFFUNCTION),UpdateDeffunction);
422
+ }
423
+
424
+ /*******************************************************
425
+ NAME : UpdateDeffunctionModule
426
+ DESCRIPTION : Updates deffunction module with binary
427
+ load data - sets pointers from
428
+ offset information
429
+ INPUTS : 1) A pointer to the bloaded data
430
+ 2) The index of the binary array
431
+ element to update
432
+ RETURNS : Nothing useful
433
+ SIDE EFFECTS : Deffunction moudle pointers updated
434
+ NOTES : None
435
+ *******************************************************/
436
+ static void UpdateDeffunctionModule(
437
+ Environment *theEnv,
438
+ void *buf,
439
+ unsigned long obji)
440
+ {
441
+ BSAVE_DEFFUNCTION_MODULE *bdptr;
442
+
443
+ bdptr = (BSAVE_DEFFUNCTION_MODULE *) buf;
444
+ UpdateDefmoduleItemHeader(theEnv,&bdptr->header,&DeffunctionBinaryData(theEnv)->ModuleArray[obji].header,
445
+ sizeof(Deffunction),DeffunctionBinaryData(theEnv)->DeffunctionArray);
446
+ }
447
+
448
+ /***************************************************
449
+ NAME : UpdateDeffunction
450
+ DESCRIPTION : Updates deffunction with binary
451
+ load data - sets pointers from
452
+ offset information
453
+ INPUTS : 1) A pointer to the bloaded data
454
+ 2) The index of the binary array
455
+ element to update
456
+ RETURNS : Nothing useful
457
+ SIDE EFFECTS : Deffunction pointers upadted
458
+ NOTES : None
459
+ ***************************************************/
460
+ static void UpdateDeffunction(
461
+ Environment *theEnv,
462
+ void *buf,
463
+ unsigned long obji)
464
+ {
465
+ BSAVE_DEFFUNCTION *bdptr;
466
+ Deffunction *dptr;
467
+
468
+ bdptr = (BSAVE_DEFFUNCTION *) buf;
469
+ dptr = &DeffunctionBinaryData(theEnv)->DeffunctionArray[obji];
470
+
471
+ UpdateConstructHeader(theEnv,&bdptr->header,&dptr->header,DEFFUNCTION,
472
+ sizeof(DeffunctionModuleData),DeffunctionBinaryData(theEnv)->ModuleArray,
473
+ sizeof(Deffunction),DeffunctionBinaryData(theEnv)->DeffunctionArray);
474
+
475
+ dptr->code = ExpressionPointer(bdptr->code);
476
+ dptr->busy = 0;
477
+ dptr->executing = 0;
478
+ #if DEBUGGING_FUNCTIONS
479
+ dptr->trace = DeffunctionData(theEnv)->WatchDeffunctions;
480
+ #endif
481
+ dptr->minNumberOfParameters = bdptr->minNumberOfParameters;
482
+ dptr->maxNumberOfParameters = bdptr->maxNumberOfParameters;
483
+ dptr->numberOfLocalVars = bdptr->numberOfLocalVars;
484
+ }
485
+
486
+ /***************************************************************
487
+ NAME : ClearDeffunctionBload
488
+ DESCRIPTION : Release all binary-loaded deffunction
489
+ structure arrays
490
+ Resets deffunction list to NULL
491
+ INPUTS : None
492
+ RETURNS : Nothing useful
493
+ SIDE EFFECTS : Memory cleared
494
+ NOTES : Deffunction name symbol counts decremented
495
+ ***************************************************************/
496
+ static void ClearDeffunctionBload(
497
+ Environment *theEnv)
498
+ {
499
+ unsigned long i;
500
+ size_t space;
501
+
502
+ space = (sizeof(DeffunctionModuleData) * DeffunctionBinaryData(theEnv)->ModuleCount);
503
+ if (space == 0L)
504
+ return;
505
+ genfree(theEnv,DeffunctionBinaryData(theEnv)->ModuleArray,space);
506
+ DeffunctionBinaryData(theEnv)->ModuleArray = NULL;
507
+ DeffunctionBinaryData(theEnv)->ModuleCount = 0L;
508
+
509
+ for (i = 0 ; i < DeffunctionBinaryData(theEnv)->DeffunctionCount ; i++)
510
+ UnmarkConstructHeader(theEnv,&DeffunctionBinaryData(theEnv)->DeffunctionArray[i].header);
511
+ space = (sizeof(Deffunction) * DeffunctionBinaryData(theEnv)->DeffunctionCount);
512
+ if (space == 0)
513
+ return;
514
+ genfree(theEnv,DeffunctionBinaryData(theEnv)->DeffunctionArray,space);
515
+ DeffunctionBinaryData(theEnv)->DeffunctionArray = NULL;
516
+ DeffunctionBinaryData(theEnv)->DeffunctionCount = 0L;
517
+ }
518
+
519
+ #endif
520
+
@@ -0,0 +1,67 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/30/16 */
5
+ /* */
6
+ /* */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: */
11
+ /* */
12
+ /* Principal Programmer(s): */
13
+ /* Brian L. Dantes */
14
+ /* */
15
+ /* Contributing Programmer(s): */
16
+ /* */
17
+ /* Revision History: */
18
+ /* */
19
+ /* 6.30: Removed conditional code for unsupported */
20
+ /* compilers/operating systems (IBM_MCW, */
21
+ /* MAC_MCW, and IBM_TBC). */
22
+ /* */
23
+ /* Changed integer type/precision. */
24
+ /* */
25
+ /* 6.40: Removed LOCALE definition. */
26
+ /* */
27
+ /* Pragma once and other inclusion changes. */
28
+ /* */
29
+ /* Removed use of void pointers for specific */
30
+ /* data structures. */
31
+ /* */
32
+ /*************************************************************/
33
+
34
+ #ifndef _H_dffnxbin
35
+
36
+ #pragma once
37
+
38
+ #define _H_dffnxbin
39
+
40
+ #if DEFFUNCTION_CONSTRUCT && (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE)
41
+
42
+ #include "dffnxfun.h"
43
+
44
+ void SetupDeffunctionsBload(Environment *);
45
+ void *BloadDeffunctionModuleReference(Environment *,unsigned long);
46
+
47
+ #define DFFNXBIN_DATA 24
48
+
49
+ struct deffunctionBinaryData
50
+ {
51
+ Deffunction *DeffunctionArray;
52
+ unsigned long DeffunctionCount;
53
+ unsigned long ModuleCount;
54
+ DeffunctionModuleData *ModuleArray;
55
+ };
56
+
57
+ #define DeffunctionBinaryData(theEnv) ((struct deffunctionBinaryData *) GetEnvironmentData(theEnv,DFFNXBIN_DATA))
58
+
59
+ #define DeffunctionPointer(i) (((i) == ULONG_MAX) ? NULL : &DeffunctionBinaryData(theEnv)->DeffunctionArray[i])
60
+
61
+ #endif /* DEFFUNCTION_CONSTRUCT && (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE) */
62
+
63
+ #endif /* _H_dffnxbin */
64
+
65
+
66
+
67
+