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,514 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 04/20/20 */
5
+ /* */
6
+ /* ENVIRONMENT BUILD MODULE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Routines for supporting multiple environments. */
11
+ /* */
12
+ /* Principal Programmer(s): */
13
+ /* Gary D. Riley */
14
+ /* */
15
+ /* Revision History: */
16
+ /* */
17
+ /* 6.40: Added to separate environment creation and */
18
+ /* deletion code. */
19
+ /* */
20
+ /*************************************************************/
21
+
22
+ #include <stdlib.h>
23
+ #include <stdio.h>
24
+ #include <string.h>
25
+
26
+ #include "setup.h"
27
+
28
+ #include "bmathfun.h"
29
+ #include "commline.h"
30
+ #include "emathfun.h"
31
+ #include "envrnmnt.h"
32
+ #include "engine.h"
33
+ #include "filecom.h"
34
+ #include "iofun.h"
35
+ #include "memalloc.h"
36
+ #include "miscfun.h"
37
+ #include "multifun.h"
38
+ #include "parsefun.h"
39
+ #include "pprint.h"
40
+ #include "prccode.h"
41
+ #include "prcdrfun.h"
42
+ #include "prdctfun.h"
43
+ #include "prntutil.h"
44
+ #include "proflfun.h"
45
+ #include "router.h"
46
+ #include "sortfun.h"
47
+ #include "strngfun.h"
48
+ #include "sysdep.h"
49
+ #include "textpro.h"
50
+ #include "utility.h"
51
+ #include "watch.h"
52
+
53
+ #if DEFFACTS_CONSTRUCT
54
+ #include "dffctdef.h"
55
+ #endif
56
+
57
+ #if DEFRULE_CONSTRUCT
58
+ #include "ruledef.h"
59
+ #endif
60
+
61
+ #if DEFGENERIC_CONSTRUCT
62
+ #include "genrccom.h"
63
+ #endif
64
+
65
+ #if DEFFUNCTION_CONSTRUCT
66
+ #include "dffnxfun.h"
67
+ #endif
68
+
69
+ #if DEFGLOBAL_CONSTRUCT
70
+ #include "globldef.h"
71
+ #endif
72
+
73
+ #if DEFTEMPLATE_CONSTRUCT
74
+ #include "tmpltdef.h"
75
+ #endif
76
+
77
+ #if OBJECT_SYSTEM
78
+ #include "classini.h"
79
+ #endif
80
+
81
+ #if DEVELOPER
82
+ #include "developr.h"
83
+ #endif
84
+
85
+ #include "envrnbld.h"
86
+
87
+ /****************************************/
88
+ /* GLOBAL EXTERNAL FUNCTION DEFINITIONS */
89
+ /****************************************/
90
+
91
+ extern void UserFunctions(Environment *);
92
+
93
+ /***************************************/
94
+ /* LOCAL INTERNAL FUNCTION DEFINITIONS */
95
+ /***************************************/
96
+
97
+ static void RemoveEnvironmentCleanupFunctions(struct environmentData *);
98
+ static Environment *CreateEnvironmentDriver(CLIPSLexeme **,CLIPSFloat **,
99
+ CLIPSInteger **,CLIPSBitMap **,
100
+ CLIPSExternalAddress **,
101
+ struct functionDefinition *);
102
+ static void SystemFunctionDefinitions(Environment *);
103
+ static void InitializeEnvironment(Environment *,CLIPSLexeme **,CLIPSFloat **,
104
+ CLIPSInteger **,CLIPSBitMap **,
105
+ CLIPSExternalAddress **,
106
+ struct functionDefinition *);
107
+
108
+ /************************************************************/
109
+ /* CreateEnvironment: Creates an environment data structure */
110
+ /* and initializes its content to zero/null. */
111
+ /************************************************************/
112
+ Environment *CreateEnvironment()
113
+ {
114
+ return CreateEnvironmentDriver(NULL,NULL,NULL,NULL,NULL,NULL);
115
+ }
116
+
117
+ /**********************************************************/
118
+ /* CreateRuntimeEnvironment: Creates an environment data */
119
+ /* structure and initializes its content to zero/null. */
120
+ /**********************************************************/
121
+ Environment *CreateRuntimeEnvironment(
122
+ CLIPSLexeme **symbolTable,
123
+ CLIPSFloat **floatTable,
124
+ CLIPSInteger **integerTable,
125
+ CLIPSBitMap **bitmapTable,
126
+ struct functionDefinition *functions)
127
+ {
128
+ return CreateEnvironmentDriver(symbolTable,floatTable,integerTable,bitmapTable,NULL,functions);
129
+ }
130
+
131
+ /*********************************************************/
132
+ /* CreateEnvironmentDriver: Creates an environment data */
133
+ /* structure and initializes its content to zero/null. */
134
+ /*********************************************************/
135
+ Environment *CreateEnvironmentDriver(
136
+ CLIPSLexeme **symbolTable,
137
+ CLIPSFloat **floatTable,
138
+ CLIPSInteger **integerTable,
139
+ CLIPSBitMap **bitmapTable,
140
+ CLIPSExternalAddress **externalAddressTable,
141
+ struct functionDefinition *functions)
142
+ {
143
+ struct environmentData *theEnvironment;
144
+ void *theData;
145
+
146
+ theEnvironment = (struct environmentData *) malloc(sizeof(struct environmentData));
147
+
148
+ if (theEnvironment == NULL)
149
+ {
150
+ printf("\n[ENVRNMNT5] Unable to create new environment.\n");
151
+ return NULL;
152
+ }
153
+
154
+ theData = malloc(sizeof(void *) * MAXIMUM_ENVIRONMENT_POSITIONS);
155
+
156
+ if (theData == NULL)
157
+ {
158
+ free(theEnvironment);
159
+ printf("\n[ENVRNMNT6] Unable to create environment data.\n");
160
+ return NULL;
161
+ }
162
+
163
+ memset(theData,0,sizeof(void *) * MAXIMUM_ENVIRONMENT_POSITIONS);
164
+
165
+ theEnvironment->initialized = false;
166
+ theEnvironment->theData = (void **) theData;
167
+ theEnvironment->next = NULL;
168
+ theEnvironment->listOfCleanupEnvironmentFunctions = NULL;
169
+ theEnvironment->context = NULL;
170
+
171
+ /*=============================================*/
172
+ /* Allocate storage for the cleanup functions. */
173
+ /*=============================================*/
174
+
175
+ theData = malloc(sizeof(void (*)(struct environmentData *)) * MAXIMUM_ENVIRONMENT_POSITIONS);
176
+
177
+ if (theData == NULL)
178
+ {
179
+ free(theEnvironment->theData);
180
+ free(theEnvironment);
181
+ printf("\n[ENVRNMNT7] Unable to create environment data.\n");
182
+ return NULL;
183
+ }
184
+
185
+ memset(theData,0,sizeof(void (*)(struct environmentData *)) * MAXIMUM_ENVIRONMENT_POSITIONS);
186
+ theEnvironment->cleanupFunctions = (void (**)(Environment *))theData;
187
+
188
+ InitializeEnvironment(theEnvironment,symbolTable,floatTable,integerTable,
189
+ bitmapTable,externalAddressTable,functions);
190
+
191
+ CleanCurrentGarbageFrame(theEnvironment,NULL);
192
+
193
+ return theEnvironment;
194
+ }
195
+
196
+ /**********************************************/
197
+ /* DestroyEnvironment: Destroys the specified */
198
+ /* environment returning all of its memory. */
199
+ /**********************************************/
200
+ bool DestroyEnvironment(
201
+ Environment *theEnvironment)
202
+ {
203
+ struct environmentCleanupFunction *cleanupPtr;
204
+ int i;
205
+ struct memoryData *theMemData;
206
+ bool rv = true;
207
+
208
+ theMemData = MemoryData(theEnvironment);
209
+
210
+ ReleaseMem(theEnvironment,-1);
211
+
212
+ for (i = 0; i < MAXIMUM_ENVIRONMENT_POSITIONS; i++)
213
+ {
214
+ if (theEnvironment->cleanupFunctions[i] != NULL)
215
+ { (*theEnvironment->cleanupFunctions[i])(theEnvironment); }
216
+ }
217
+
218
+ free(theEnvironment->cleanupFunctions);
219
+
220
+ for (cleanupPtr = theEnvironment->listOfCleanupEnvironmentFunctions;
221
+ cleanupPtr != NULL;
222
+ cleanupPtr = cleanupPtr->next)
223
+ { (*cleanupPtr->func)(theEnvironment); }
224
+
225
+ RemoveEnvironmentCleanupFunctions(theEnvironment);
226
+
227
+ ReleaseMem(theEnvironment,-1);
228
+
229
+ if ((theMemData->MemoryAmount != 0) || (theMemData->MemoryCalls != 0))
230
+ {
231
+ printf("\n[ENVRNMNT8] Environment data not fully deallocated.\n");
232
+ printf("\n[ENVRNMNT8] MemoryAmount = %lld.\n",theMemData->MemoryAmount);
233
+ printf("\n[ENVRNMNT8] MemoryCalls = %lld.\n",theMemData->MemoryCalls);
234
+ rv = false;
235
+ }
236
+
237
+ #if (MEM_TABLE_SIZE > 0)
238
+ free(theMemData->MemoryTable);
239
+ #endif
240
+
241
+ for (i = 0; i < MAXIMUM_ENVIRONMENT_POSITIONS; i++)
242
+ {
243
+ if (theEnvironment->theData[i] != NULL)
244
+ {
245
+ free(theEnvironment->theData[i]);
246
+ theEnvironment->theData[i] = NULL;
247
+ }
248
+ }
249
+
250
+ free(theEnvironment->theData);
251
+
252
+ free(theEnvironment);
253
+
254
+ return rv;
255
+ }
256
+
257
+ /**************************************************/
258
+ /* RemoveEnvironmentCleanupFunctions: Removes the */
259
+ /* list of environment cleanup functions. */
260
+ /**************************************************/
261
+ static void RemoveEnvironmentCleanupFunctions(
262
+ struct environmentData *theEnv)
263
+ {
264
+ struct environmentCleanupFunction *nextPtr;
265
+
266
+ while (theEnv->listOfCleanupEnvironmentFunctions != NULL)
267
+ {
268
+ nextPtr = theEnv->listOfCleanupEnvironmentFunctions->next;
269
+ free(theEnv->listOfCleanupEnvironmentFunctions);
270
+ theEnv->listOfCleanupEnvironmentFunctions = nextPtr;
271
+ }
272
+ }
273
+
274
+ /**************************************************/
275
+ /* InitializeEnvironment: Performs initialization */
276
+ /* of the KB environment. */
277
+ /**************************************************/
278
+ static void InitializeEnvironment(
279
+ Environment *theEnvironment,
280
+ CLIPSLexeme **symbolTable,
281
+ CLIPSFloat **floatTable,
282
+ CLIPSInteger **integerTable,
283
+ CLIPSBitMap **bitmapTable,
284
+ CLIPSExternalAddress **externalAddressTable,
285
+ struct functionDefinition *functions)
286
+ {
287
+ /*================================================*/
288
+ /* Don't allow the initialization to occur twice. */
289
+ /*================================================*/
290
+
291
+ if (theEnvironment->initialized) return;
292
+
293
+ /*================================*/
294
+ /* Initialize the memory manager. */
295
+ /*================================*/
296
+
297
+ InitializeMemory(theEnvironment);
298
+
299
+ /*===================================================*/
300
+ /* Initialize environment data for various features. */
301
+ /*===================================================*/
302
+
303
+ InitializeCommandLineData(theEnvironment);
304
+ #if CONSTRUCT_COMPILER && (! RUN_TIME)
305
+ InitializeConstructCompilerData(theEnvironment);
306
+ #endif
307
+ InitializeConstructData(theEnvironment);
308
+ InitializeEvaluationData(theEnvironment);
309
+ InitializeExternalFunctionData(theEnvironment);
310
+ InitializePrettyPrintData(theEnvironment);
311
+ InitializePrintUtilityData(theEnvironment);
312
+ InitializeScannerData(theEnvironment);
313
+ InitializeSystemDependentData(theEnvironment);
314
+ InitializeUserDataData(theEnvironment);
315
+ InitializeUtilityData(theEnvironment);
316
+ #if DEBUGGING_FUNCTIONS
317
+ InitializeWatchData(theEnvironment);
318
+ #endif
319
+
320
+ /*===============================================*/
321
+ /* Initialize the hash tables for atomic values. */
322
+ /*===============================================*/
323
+
324
+ InitializeAtomTables(theEnvironment,symbolTable,floatTable,integerTable,bitmapTable,externalAddressTable);
325
+
326
+ /*=========================================*/
327
+ /* Initialize file and string I/O routers. */
328
+ /*=========================================*/
329
+
330
+ InitializeDefaultRouters(theEnvironment);
331
+
332
+ /*=========================================================*/
333
+ /* Initialize some system dependent features such as time. */
334
+ /*=========================================================*/
335
+
336
+ InitializeNonportableFeatures(theEnvironment);
337
+
338
+ /*=============================================*/
339
+ /* Register system and user defined functions. */
340
+ /*=============================================*/
341
+
342
+ if (functions != NULL)
343
+ { InstallFunctionList(theEnvironment,functions); }
344
+
345
+ SystemFunctionDefinitions(theEnvironment);
346
+ UserFunctions(theEnvironment);
347
+
348
+ /*====================================*/
349
+ /* Initialize the constraint manager. */
350
+ /*====================================*/
351
+
352
+ InitializeConstraints(theEnvironment);
353
+
354
+ /*==========================================*/
355
+ /* Initialize the expression hash table and */
356
+ /* pointers to specific functions. */
357
+ /*==========================================*/
358
+
359
+ InitExpressionData(theEnvironment);
360
+
361
+ /*===================================*/
362
+ /* Initialize the construct manager. */
363
+ /*===================================*/
364
+
365
+ #if ! RUN_TIME
366
+ InitializeConstructs(theEnvironment);
367
+ #endif
368
+
369
+ /*=====================================*/
370
+ /* Initialize the defmodule construct. */
371
+ /*=====================================*/
372
+
373
+ AllocateDefmoduleGlobals(theEnvironment);
374
+
375
+ /*===================================*/
376
+ /* Initialize the defrule construct. */
377
+ /*===================================*/
378
+
379
+ #if DEFRULE_CONSTRUCT
380
+ InitializeDefrules(theEnvironment);
381
+ #endif
382
+
383
+ /*====================================*/
384
+ /* Initialize the deffacts construct. */
385
+ /*====================================*/
386
+
387
+ #if DEFFACTS_CONSTRUCT
388
+ InitializeDeffacts(theEnvironment);
389
+ #endif
390
+
391
+ /*=====================================================*/
392
+ /* Initialize the defgeneric and defmethod constructs. */
393
+ /*=====================================================*/
394
+
395
+ #if DEFGENERIC_CONSTRUCT
396
+ SetupGenericFunctions(theEnvironment);
397
+ #endif
398
+
399
+ /*=======================================*/
400
+ /* Initialize the deffunction construct. */
401
+ /*=======================================*/
402
+
403
+ #if DEFFUNCTION_CONSTRUCT
404
+ SetupDeffunctions(theEnvironment);
405
+ #endif
406
+
407
+ /*=====================================*/
408
+ /* Initialize the defglobal construct. */
409
+ /*=====================================*/
410
+
411
+ #if DEFGLOBAL_CONSTRUCT
412
+ InitializeDefglobals(theEnvironment);
413
+ #endif
414
+
415
+ /*=======================================*/
416
+ /* Initialize the deftemplate construct. */
417
+ /*=======================================*/
418
+
419
+ #if DEFTEMPLATE_CONSTRUCT
420
+ InitializeDeftemplates(theEnvironment);
421
+ #endif
422
+
423
+ /*=============================*/
424
+ /* Initialize COOL constructs. */
425
+ /*=============================*/
426
+
427
+ #if OBJECT_SYSTEM
428
+ SetupObjectSystem(theEnvironment);
429
+ #endif
430
+
431
+ /*=====================================*/
432
+ /* Initialize the defmodule construct. */
433
+ /*=====================================*/
434
+
435
+ InitializeDefmodules(theEnvironment);
436
+
437
+ /*======================================================*/
438
+ /* Register commands and functions for development use. */
439
+ /*======================================================*/
440
+
441
+ #if DEVELOPER
442
+ DeveloperCommands(theEnvironment);
443
+ #endif
444
+
445
+ /*=========================================*/
446
+ /* Install the special function primitives */
447
+ /* used by procedural code in constructs. */
448
+ /*=========================================*/
449
+
450
+ InstallProcedurePrimitives(theEnvironment);
451
+
452
+ /*========================*/
453
+ /* Issue a clear command. */
454
+ /*========================*/
455
+
456
+ Clear(theEnvironment);
457
+
458
+ /*=============================*/
459
+ /* Initialization is complete. */
460
+ /*=============================*/
461
+
462
+ theEnvironment->initialized = true;
463
+ }
464
+
465
+ /**************************************************/
466
+ /* SystemFunctionDefinitions: Sets up definitions */
467
+ /* of system defined functions. */
468
+ /**************************************************/
469
+ static void SystemFunctionDefinitions(
470
+ Environment *theEnv)
471
+ {
472
+ ProceduralFunctionDefinitions(theEnv);
473
+ MiscFunctionDefinitions(theEnv);
474
+
475
+ #if IO_FUNCTIONS
476
+ IOFunctionDefinitions(theEnv);
477
+ #endif
478
+
479
+ PredicateFunctionDefinitions(theEnv);
480
+ BasicMathFunctionDefinitions(theEnv);
481
+ FileCommandDefinitions(theEnv);
482
+ SortFunctionDefinitions(theEnv);
483
+
484
+ #if DEBUGGING_FUNCTIONS
485
+ WatchFunctionDefinitions(theEnv);
486
+ #endif
487
+
488
+ #if MULTIFIELD_FUNCTIONS
489
+ MultifieldFunctionDefinitions(theEnv);
490
+ #endif
491
+
492
+ #if STRING_FUNCTIONS
493
+ StringFunctionDefinitions(theEnv);
494
+ #endif
495
+
496
+ #if EXTENDED_MATH_FUNCTIONS
497
+ ExtendedMathFunctionDefinitions(theEnv);
498
+ #endif
499
+
500
+ #if TEXTPRO_FUNCTIONS
501
+ HelpFunctionDefinitions(theEnv);
502
+ #endif
503
+
504
+ #if CONSTRUCT_COMPILER && (! RUN_TIME)
505
+ ConstructsToCCommandDefinition(theEnv);
506
+ #endif
507
+
508
+ #if PROFILING_FUNCTIONS
509
+ ConstructProfilingFunctionDefinitions(theEnv);
510
+ #endif
511
+
512
+ ParseFunctionDefinitions(theEnv);
513
+ }
514
+
@@ -0,0 +1,40 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 10/18/16 */
5
+ /* */
6
+ /* ENVRNMNT BUILD HEADER FILE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Routines for supporting multiple environments. */
11
+ /* */
12
+ /* Principal Programmer(s): */
13
+ /* Gary D. Riley */
14
+ /* */
15
+ /* Revision History: */
16
+ /* */
17
+ /* 6.40: Added to separate environment creation and */
18
+ /* deletion code. */
19
+ /* */
20
+ /*************************************************************/
21
+
22
+ #ifndef _H_envrnbld
23
+
24
+ #pragma once
25
+
26
+ #define _H_envrnbld
27
+
28
+ #include <stdbool.h>
29
+
30
+ #include "envrnmnt.h"
31
+ #include "extnfunc.h"
32
+
33
+ Environment *CreateEnvironment(void);
34
+ Environment *CreateRuntimeEnvironment(CLIPSLexeme **,CLIPSFloat **,
35
+ CLIPSInteger **,CLIPSBitMap **,
36
+ struct functionDefinition *);
37
+ bool DestroyEnvironment(Environment *);
38
+
39
+ #endif /* _H_envrnbld */
40
+