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,44 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/30/16 */
5
+ /* */
6
+ /* DEFFACTS CONSTRUCT COMPILER HEADER FILE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: */
11
+ /* */
12
+ /* Principal Programmer(s): */
13
+ /* Gary D. Riley */
14
+ /* */
15
+ /* Contributing Programmer(s): */
16
+ /* */
17
+ /* Revision History: */
18
+ /* */
19
+ /* 6.30: Added support for path name argument to */
20
+ /* constructs-to-c. */
21
+ /* */
22
+ /* Removed conditional code for unsupported */
23
+ /* compilers/operating systems (IBM_MCW, */
24
+ /* MAC_MCW, and IBM_TBC). */
25
+ /* */
26
+ /* 6.40: Removed LOCALE definition. */
27
+ /* */
28
+ /* Pragma once and other inclusion changes. */
29
+ /* */
30
+ /* Removed use of void pointers for specific */
31
+ /* data structures. */
32
+ /* */
33
+ /*************************************************************/
34
+
35
+ #ifndef _H_dffctcmp
36
+
37
+ #pragma once
38
+
39
+ #define _H_dffctcmp
40
+
41
+ void DeffactsCompilerSetup(Environment *);
42
+ void DeffactsCModuleReference(Environment *,FILE *,unsigned long,unsigned int,unsigned int);
43
+
44
+ #endif /* _H_dffctcmp */
@@ -0,0 +1,364 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 08/06/16 */
5
+ /* */
6
+ /* DEFFACTS DEFINITION MODULE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Defines basic deffacts primitive functions such */
11
+ /* as allocating and deallocating, traversing, and finding */
12
+ /* deffacts data structures. */
13
+ /* */
14
+ /* Principal Programmer(s): */
15
+ /* Gary D. Riley */
16
+ /* */
17
+ /* Contributing Programmer(s): */
18
+ /* Brian L. Dantes */
19
+ /* */
20
+ /* Revision History: */
21
+ /* */
22
+ /* 6.24: Renamed BOOLEAN macro type to intBool. */
23
+ /* */
24
+ /* Corrected code to remove run-time program */
25
+ /* compiler warning. */
26
+ /* */
27
+ /* 6.30: Removed conditional code for unsupported */
28
+ /* compilers/operating systems (IBM_MCW, */
29
+ /* MAC_MCW, and IBM_TBC). */
30
+ /* */
31
+ /* Added const qualifiers to remove C++ */
32
+ /* deprecation warnings. */
33
+ /* */
34
+ /* Converted API macros to function calls. */
35
+ /* */
36
+ /* Changed find construct functionality so that */
37
+ /* imported modules are search when locating a */
38
+ /* named construct. */
39
+ /* */
40
+ /* 6.40: Pragma once and other inclusion changes. */
41
+ /* */
42
+ /* Added support for booleans with <stdbool.h>. */
43
+ /* */
44
+ /* Removed use of void pointers for specific */
45
+ /* data structures. */
46
+ /* */
47
+ /* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
48
+ /* */
49
+ /*************************************************************/
50
+
51
+ #include "setup.h"
52
+
53
+ #if DEFFACTS_CONSTRUCT
54
+
55
+ #include <stdio.h>
56
+
57
+ #include "dffctbsc.h"
58
+ #include "dffctpsr.h"
59
+ #include "envrnmnt.h"
60
+ #include "memalloc.h"
61
+
62
+ #if BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE
63
+ #include "bload.h"
64
+ #include "dffctbin.h"
65
+ #endif
66
+
67
+ #if CONSTRUCT_COMPILER && (! RUN_TIME)
68
+ #include "dffctcmp.h"
69
+ #endif
70
+
71
+ #include "dffctdef.h"
72
+
73
+ /***************************************/
74
+ /* LOCAL INTERNAL FUNCTION DEFINITIONS */
75
+ /***************************************/
76
+
77
+ static void *AllocateModule(Environment *);
78
+ static void ReturnModule(Environment *,void *);
79
+ static void ReturnDeffacts(Environment *,Deffacts *);
80
+ static void InitializeDeffactsModules(Environment *);
81
+ static void DeallocateDeffactsData(Environment *);
82
+ #if ! RUN_TIME
83
+ static void DestroyDeffactsAction(Environment *,ConstructHeader *,void *);
84
+ #else
85
+ static void RuntimeDeffactsAction(Environment *,ConstructHeader *,void *);
86
+ #endif
87
+
88
+ /***********************************************************/
89
+ /* InitializeDeffacts: Initializes the deffacts construct. */
90
+ /***********************************************************/
91
+ void InitializeDeffacts(
92
+ Environment *theEnv)
93
+ {
94
+ AllocateEnvironmentData(theEnv,DEFFACTS_DATA,sizeof(struct deffactsData),DeallocateDeffactsData);
95
+
96
+ InitializeDeffactsModules(theEnv);
97
+
98
+ DeffactsBasicCommands(theEnv);
99
+
100
+ DeffactsData(theEnv)->DeffactsConstruct =
101
+ AddConstruct(theEnv,"deffacts","deffacts",ParseDeffacts,
102
+ (FindConstructFunction *) FindDeffacts,
103
+ GetConstructNamePointer,GetConstructPPForm,
104
+ GetConstructModuleItem,
105
+ (GetNextConstructFunction *) GetNextDeffacts,
106
+ SetNextConstruct,
107
+ (IsConstructDeletableFunction *) DeffactsIsDeletable,
108
+ (DeleteConstructFunction *) Undeffacts,
109
+ (FreeConstructFunction *) ReturnDeffacts);
110
+ }
111
+
112
+ /***************************************************/
113
+ /* DeallocateDeffactsData: Deallocates environment */
114
+ /* data for the deffacts construct. */
115
+ /***************************************************/
116
+ static void DeallocateDeffactsData(
117
+ Environment *theEnv)
118
+ {
119
+ #if ! RUN_TIME
120
+ struct deffactsModule *theModuleItem;
121
+ Defmodule *theModule;
122
+
123
+ #if BLOAD || BLOAD_AND_BSAVE
124
+ if (Bloaded(theEnv)) return;
125
+ #endif
126
+
127
+ DoForAllConstructs(theEnv,
128
+ DestroyDeffactsAction,
129
+ DeffactsData(theEnv)->DeffactsModuleIndex,
130
+ false,NULL);
131
+
132
+ for (theModule = GetNextDefmodule(theEnv,NULL);
133
+ theModule != NULL;
134
+ theModule = GetNextDefmodule(theEnv,theModule))
135
+ {
136
+ theModuleItem = (struct deffactsModule *)
137
+ GetModuleItem(theEnv,theModule,
138
+ DeffactsData(theEnv)->DeffactsModuleIndex);
139
+ rtn_struct(theEnv,deffactsModule,theModuleItem);
140
+ }
141
+ #else
142
+ #if MAC_XCD
143
+ #pragma unused(theEnv)
144
+ #endif
145
+ #endif
146
+ }
147
+
148
+ #if ! RUN_TIME
149
+ /*********************************************************/
150
+ /* DestroyDeffactsAction: Action used to remove deffacts */
151
+ /* as a result of DestroyEnvironment. */
152
+ /*********************************************************/
153
+ static void DestroyDeffactsAction(
154
+ Environment *theEnv,
155
+ ConstructHeader *theConstruct,
156
+ void *buffer)
157
+ {
158
+ #if MAC_XCD
159
+ #pragma unused(buffer)
160
+ #endif
161
+ #if (! BLOAD_ONLY) && (! RUN_TIME)
162
+ Deffacts *theDeffacts = (Deffacts *) theConstruct;
163
+
164
+ if (theDeffacts == NULL) return;
165
+
166
+ ReturnPackedExpression(theEnv,theDeffacts->assertList);
167
+
168
+ DestroyConstructHeader(theEnv,&theDeffacts->header);
169
+
170
+ rtn_struct(theEnv,deffacts,theDeffacts);
171
+ #else
172
+ #if MAC_XCD
173
+ #pragma unused(theEnv,theConstruct)
174
+ #endif
175
+ #endif
176
+ }
177
+ #endif
178
+
179
+ #if RUN_TIME
180
+
181
+ /***********************************************/
182
+ /* RuntimeDeffactsAction: Action to be applied */
183
+ /* to each deffacts construct when a runtime */
184
+ /* initialization occurs. */
185
+ /***********************************************/
186
+ static void RuntimeDeffactsAction(
187
+ Environment *theEnv,
188
+ ConstructHeader *theConstruct,
189
+ void *buffer)
190
+ {
191
+ #if MAC_XCD
192
+ #pragma unused(buffer)
193
+ #endif
194
+ Deffacts *theDeffacts = (Deffacts *) theConstruct;
195
+
196
+ theDeffacts->header.env = theEnv;
197
+ }
198
+
199
+ /******************************/
200
+ /* DeffactsRunTimeInitialize: */
201
+ /******************************/
202
+ void DeffactsRunTimeInitialize(
203
+ Environment *theEnv)
204
+ {
205
+ DoForAllConstructs(theEnv,RuntimeDeffactsAction,DeffactsData(theEnv)->DeffactsModuleIndex,true,NULL);
206
+ }
207
+
208
+ #endif
209
+
210
+ /*******************************************************/
211
+ /* InitializeDeffactsModules: Initializes the deffacts */
212
+ /* construct for use with the defmodule construct. */
213
+ /*******************************************************/
214
+ static void InitializeDeffactsModules(
215
+ Environment *theEnv)
216
+ {
217
+ DeffactsData(theEnv)->DeffactsModuleIndex =
218
+ RegisterModuleItem(theEnv,"deffacts",
219
+ AllocateModule,
220
+ ReturnModule,
221
+ #if BLOAD_AND_BSAVE || BLOAD || BLOAD_ONLY
222
+ BloadDeffactsModuleReference,
223
+ #else
224
+ NULL,
225
+ #endif
226
+ #if CONSTRUCT_COMPILER && (! RUN_TIME)
227
+ DeffactsCModuleReference,
228
+ #else
229
+ NULL,
230
+ #endif
231
+ (FindConstructFunction *) FindDeffactsInModule);
232
+ }
233
+
234
+ /************************************************/
235
+ /* AllocateModule: Allocates a deffacts module. */
236
+ /************************************************/
237
+ static void *AllocateModule(
238
+ Environment *theEnv)
239
+ {
240
+ return((void *) get_struct(theEnv,deffactsModule));
241
+ }
242
+
243
+ /************************************************/
244
+ /* ReturnModule: Deallocates a deffacts module. */
245
+ /************************************************/
246
+ static void ReturnModule(
247
+ Environment *theEnv,
248
+ void *theItem)
249
+ {
250
+ FreeConstructHeaderModule(theEnv,(struct defmoduleItemHeader *) theItem,DeffactsData(theEnv)->DeffactsConstruct);
251
+ rtn_struct(theEnv,deffactsModule,theItem);
252
+ }
253
+
254
+ /*************************************************************/
255
+ /* GetDeffactsModuleItem: Returns a pointer to the defmodule */
256
+ /* item for the specified deffacts or defmodule. */
257
+ /*************************************************************/
258
+ struct deffactsModule *GetDeffactsModuleItem(
259
+ Environment *theEnv,
260
+ Defmodule *theModule)
261
+ {
262
+ return((struct deffactsModule *) GetConstructModuleItemByIndex(theEnv,theModule,DeffactsData(theEnv)->DeffactsModuleIndex));
263
+ }
264
+
265
+ /************************************************/
266
+ /* FindDeffacts: Searches for a deffact in the */
267
+ /* list of deffacts. Returns a pointer to the */
268
+ /* deffact if found, otherwise NULL. */
269
+ /************************************************/
270
+ Deffacts *FindDeffacts(
271
+ Environment *theEnv,
272
+ const char *deffactsName)
273
+ {
274
+ return (Deffacts *) FindNamedConstructInModuleOrImports(theEnv,deffactsName,DeffactsData(theEnv)->DeffactsConstruct);
275
+ }
276
+
277
+ /************************************************/
278
+ /* FindDeffactsInModule: Searches for a deffact */
279
+ /* in the list of deffacts. Returns a pointer */
280
+ /* to the deffact if found, otherwise NULL. */
281
+ /************************************************/
282
+ Deffacts *FindDeffactsInModule(
283
+ Environment *theEnv,
284
+ const char *deffactsName)
285
+ {
286
+ return (Deffacts *) FindNamedConstructInModule(theEnv,deffactsName,DeffactsData(theEnv)->DeffactsConstruct);
287
+ }
288
+
289
+ /*********************************************************/
290
+ /* GetNextDeffacts: If passed a NULL pointer, returns */
291
+ /* the first deffacts in the ListOfDeffacts. Otherwise */
292
+ /* returns the next deffacts following the deffacts */
293
+ /* passed as an argument. */
294
+ /*********************************************************/
295
+ Deffacts *GetNextDeffacts(
296
+ Environment *theEnv,
297
+ Deffacts *deffactsPtr)
298
+ {
299
+ return (Deffacts *) GetNextConstructItem(theEnv,&deffactsPtr->header,DeffactsData(theEnv)->DeffactsModuleIndex);
300
+ }
301
+
302
+ /*******************************************************/
303
+ /* DeffactsIsDeletable: Returns true if a particular */
304
+ /* deffacts can be deleted, otherwise returns false. */
305
+ /*******************************************************/
306
+ bool DeffactsIsDeletable(
307
+ Deffacts *theDeffacts)
308
+ {
309
+ Environment *theEnv = theDeffacts->header.env;
310
+
311
+ if (! ConstructsDeletable(theEnv))
312
+ { return false; }
313
+
314
+ if (ConstructData(theEnv)->ResetInProgress) return false;
315
+
316
+ return true;
317
+ }
318
+
319
+ /***********************************************************/
320
+ /* ReturnDeffacts: Returns the data structures associated */
321
+ /* with a deffacts construct to the pool of free memory. */
322
+ /***********************************************************/
323
+ static void ReturnDeffacts(
324
+ Environment *theEnv,
325
+ Deffacts *theDeffacts)
326
+ {
327
+ #if (! BLOAD_ONLY) && (! RUN_TIME)
328
+ if (theDeffacts == NULL) return;
329
+
330
+ ExpressionDeinstall(theEnv,theDeffacts->assertList);
331
+ ReturnPackedExpression(theEnv,theDeffacts->assertList);
332
+
333
+ DeinstallConstructHeader(theEnv,&theDeffacts->header);
334
+
335
+ rtn_struct(theEnv,deffacts,theDeffacts);
336
+ #endif
337
+ }
338
+
339
+ /*##################################*/
340
+ /* Additional Environment Functions */
341
+ /*##################################*/
342
+
343
+ const char *DeffactsModule(
344
+ Deffacts *theDeffacts)
345
+ {
346
+ return GetConstructModuleName(&theDeffacts->header);
347
+ }
348
+
349
+ const char *DeffactsName(
350
+ Deffacts *theDeffacts)
351
+ {
352
+ return GetConstructNameString(&theDeffacts->header);
353
+ }
354
+
355
+ const char *DeffactsPPForm(
356
+ Deffacts *theDeffacts)
357
+ {
358
+ return GetConstructPPForm(&theDeffacts->header);
359
+ }
360
+
361
+
362
+ #endif /* DEFFACTS_CONSTRUCT */
363
+
364
+
@@ -0,0 +1,104 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 08/06/16 */
5
+ /* */
6
+ /* DEFFACTS 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.24: Renamed BOOLEAN macro type to intBool. */
21
+ /* */
22
+ /* 6.30: Removed conditional code for unsupported */
23
+ /* compilers/operating systems (IBM_MCW, */
24
+ /* MAC_MCW, and IBM_TBC). */
25
+ /* */
26
+ /* Added const qualifiers to remove C++ */
27
+ /* deprecation warnings. */
28
+ /* */
29
+ /* Converted API macros to function calls. */
30
+ /* */
31
+ /* Changed find construct functionality so that */
32
+ /* imported modules are search when locating a */
33
+ /* named construct. */
34
+ /* */
35
+ /* 6.40: Removed LOCALE definition. */
36
+ /* */
37
+ /* Pragma once and other inclusion changes. */
38
+ /* */
39
+ /* Added support for booleans with <stdbool.h>. */
40
+ /* */
41
+ /* Removed use of void pointers for specific */
42
+ /* data structures. */
43
+ /* */
44
+ /* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
45
+ /* */
46
+ /*************************************************************/
47
+
48
+ #ifndef _H_dffctdef
49
+
50
+ #pragma once
51
+
52
+ #define _H_dffctdef
53
+
54
+ typedef struct deffacts Deffacts;
55
+
56
+ #include "constrct.h"
57
+ #include "conscomp.h"
58
+ #include "cstrccom.h"
59
+ #include "evaluatn.h"
60
+ #include "expressn.h"
61
+ #include "moduldef.h"
62
+ #include "symbol.h"
63
+
64
+ #define DEFFACTS_DATA 0
65
+
66
+ struct deffactsData
67
+ {
68
+ Construct *DeffactsConstruct;
69
+ unsigned DeffactsModuleIndex;
70
+ #if CONSTRUCT_COMPILER && (! RUN_TIME)
71
+ struct CodeGeneratorItem *DeffactsCodeItem;
72
+ #endif
73
+ };
74
+
75
+ struct deffacts
76
+ {
77
+ ConstructHeader header;
78
+ struct expr *assertList;
79
+ };
80
+
81
+ struct deffactsModule
82
+ {
83
+ struct defmoduleItemHeader header;
84
+ };
85
+
86
+ #define DeffactsData(theEnv) ((struct deffactsData *) GetEnvironmentData(theEnv,DEFFACTS_DATA))
87
+
88
+ void InitializeDeffacts(Environment *);
89
+ Deffacts *FindDeffacts(Environment *,const char *);
90
+ Deffacts *FindDeffactsInModule(Environment *,const char *);
91
+ Deffacts *GetNextDeffacts(Environment *,Deffacts *);
92
+ void CreateInitialFactDeffacts(void);
93
+ bool DeffactsIsDeletable(Deffacts *);
94
+ struct deffactsModule *GetDeffactsModuleItem(Environment *,Defmodule *);
95
+ const char *DeffactsModule(Deffacts *);
96
+ const char *DeffactsName(Deffacts *);
97
+ const char *DeffactsPPForm(Deffacts *);
98
+ #if RUN_TIME
99
+ void DeffactsRunTimeInitialize(Environment *);
100
+ #endif
101
+
102
+ #endif /* _H_dffctdef */
103
+
104
+
@@ -0,0 +1,179 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/30/16 */
5
+ /* */
6
+ /* DEFFACTS PARSER MODULE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Parses a deffacts construct. */
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
+ /* Changed find construct functionality so that */
30
+ /* imported modules are search when locating a */
31
+ /* named construct. */
32
+ /* */
33
+ /* 6.40: Pragma once and other inclusion changes. */
34
+ /* */
35
+ /* Added support for booleans with <stdbool.h>. */
36
+ /* */
37
+ /* Removed use of void pointers for specific */
38
+ /* data structures. */
39
+ /* */
40
+ /*************************************************************/
41
+
42
+ #include "setup.h"
43
+
44
+ #if DEFFACTS_CONSTRUCT
45
+
46
+ #if BLOAD || BLOAD_AND_BSAVE
47
+ #include "bload.h"
48
+ #endif
49
+
50
+ #include "cstrcpsr.h"
51
+ #include "dffctbsc.h"
52
+ #include "dffctdef.h"
53
+ #include "envrnmnt.h"
54
+ #include "factrhs.h"
55
+ #include "memalloc.h"
56
+ #include "modulutl.h"
57
+ #include "pprint.h"
58
+ #include "prntutil.h"
59
+ #include "router.h"
60
+
61
+ #include "dffctpsr.h"
62
+
63
+ /************************************************************/
64
+ /* ParseDeffacts: Coordinates all actions necessary for the */
65
+ /* addition of a deffacts construct into the current */
66
+ /* environment. Called when parsing a construct after the */
67
+ /* deffacts keyword has been found. */
68
+ /************************************************************/
69
+ bool ParseDeffacts(
70
+ Environment *theEnv,
71
+ const char *readSource)
72
+ {
73
+ #if (! RUN_TIME) && (! BLOAD_ONLY)
74
+ CLIPSLexeme *deffactsName;
75
+ struct expr *temp;
76
+ Deffacts *newDeffacts;
77
+ bool deffactsError;
78
+ struct token inputToken;
79
+
80
+ /*=========================*/
81
+ /* Parsing initialization. */
82
+ /*=========================*/
83
+
84
+ deffactsError = false;
85
+ SetPPBufferStatus(theEnv,true);
86
+
87
+ FlushPPBuffer(theEnv);
88
+ SetIndentDepth(theEnv,3);
89
+ SavePPBuffer(theEnv,"(deffacts ");
90
+
91
+ /*==========================================================*/
92
+ /* Deffacts can not be added when a binary image is loaded. */
93
+ /*==========================================================*/
94
+
95
+ #if BLOAD || BLOAD_AND_BSAVE
96
+ if ((Bloaded(theEnv) == true) && (! ConstructData(theEnv)->CheckSyntaxMode))
97
+ {
98
+ CannotLoadWithBloadMessage(theEnv,"deffacts");
99
+ return true;
100
+ }
101
+ #endif
102
+
103
+ /*============================*/
104
+ /* Parse the deffacts header. */
105
+ /*============================*/
106
+
107
+ deffactsName = GetConstructNameAndComment(theEnv,readSource,&inputToken,"deffacts",
108
+ (FindConstructFunction *) FindDeffactsInModule,
109
+ (DeleteConstructFunction *) Undeffacts,"$",true,
110
+ true,true,false);
111
+ if (deffactsName == NULL) { return true; }
112
+
113
+ /*===============================================*/
114
+ /* Parse the list of facts in the deffacts body. */
115
+ /*===============================================*/
116
+
117
+ temp = BuildRHSAssert(theEnv,readSource,&inputToken,&deffactsError,false,false,"deffacts");
118
+
119
+ if (deffactsError == true) { return true; }
120
+
121
+ if (ExpressionContainsVariables(temp,false))
122
+ {
123
+ LocalVariableErrorMessage(theEnv,"a deffacts construct");
124
+ ReturnExpression(theEnv,temp);
125
+ return true;
126
+ }
127
+
128
+ SavePPBuffer(theEnv,"\n");
129
+
130
+ /*==============================================*/
131
+ /* If we're only checking syntax, don't add the */
132
+ /* successfully parsed deffacts to the KB. */
133
+ /*==============================================*/
134
+
135
+ if (ConstructData(theEnv)->CheckSyntaxMode)
136
+ {
137
+ ReturnExpression(theEnv,temp);
138
+ return false;
139
+ }
140
+
141
+ /*==========================*/
142
+ /* Create the new deffacts. */
143
+ /*==========================*/
144
+
145
+ ExpressionInstall(theEnv,temp);
146
+ newDeffacts = get_struct(theEnv,deffacts);
147
+ IncrementLexemeCount(deffactsName);
148
+ InitializeConstructHeader(theEnv,"deffacts",DEFFACTS,&newDeffacts->header,deffactsName);
149
+
150
+ newDeffacts->assertList = PackExpression(theEnv,temp);
151
+ ReturnExpression(theEnv,temp);
152
+
153
+ /*=======================================================*/
154
+ /* Save the pretty print representation of the deffacts. */
155
+ /*=======================================================*/
156
+
157
+ if (GetConserveMemory(theEnv) == true)
158
+ { newDeffacts->header.ppForm = NULL; }
159
+ else
160
+ { newDeffacts->header.ppForm = CopyPPBuffer(theEnv); }
161
+
162
+ /*=============================================*/
163
+ /* Add the deffacts to the appropriate module. */
164
+ /*=============================================*/
165
+
166
+ AddConstructToModule(&newDeffacts->header);
167
+
168
+ #endif /* (! RUN_TIME) && (! BLOAD_ONLY) */
169
+
170
+ /*================================================================*/
171
+ /* Return false to indicate the deffacts was successfully parsed. */
172
+ /*================================================================*/
173
+
174
+ return false;
175
+ }
176
+
177
+ #endif /* DEFFACTS_CONSTRUCT */
178
+
179
+