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,55 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/30/16 */
5
+ /* */
6
+ /* FACT RHS PATTERN PARSER HEADER MODULE */
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 const qualifiers to remove C++ */
20
+ /* deprecation warnings. */
21
+ /* */
22
+ /* Added code to prevent a clear command from */
23
+ /* being executed during fact assertions via */
24
+ /* Increment/DecrementClearReadyLocks API. */
25
+ /* */
26
+ /* 6.40: Removed LOCALE definition. */
27
+ /* */
28
+ /* Pragma once and other inclusion changes. */
29
+ /* */
30
+ /* Added support for booleans with <stdbool.h>. */
31
+ /* */
32
+ /* Removed use of void pointers for specific */
33
+ /* data structures. */
34
+ /* */
35
+ /*************************************************************/
36
+
37
+ #ifndef _H_factrhs
38
+
39
+ #pragma once
40
+
41
+ #define _H_factrhs
42
+
43
+ #include "expressn.h"
44
+ #include "factmngr.h"
45
+ #include "scanner.h"
46
+ #include "symbol.h"
47
+
48
+ struct expr *BuildRHSAssert(Environment *,const char *,struct token *,bool *,bool,bool,const char *);
49
+ struct expr *GetAssertArgument(Environment *,const char *,struct token *,bool *,TokenType,bool,bool *);
50
+ struct expr *GetRHSPattern(Environment*,const char *,struct token *,bool *,bool,
51
+ bool,bool,TokenType);
52
+ Fact *StringToFact(Environment *,const char *);
53
+
54
+ #endif /* _H_factrhs */
55
+
@@ -0,0 +1,353 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 02/03/21 */
5
+ /* */
6
+ /* FILE COMMANDS MODULE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Contains the code for file commands including */
11
+ /* batch, dribble-on, dribble-off, save, load, bsave, and */
12
+ /* bload. */
13
+ /* */
14
+ /* Principal Programmer(s): */
15
+ /* Gary D. Riley */
16
+ /* Brian L. Dantes */
17
+ /* */
18
+ /* Contributing Programmer(s): */
19
+ /* Bebe Ly */
20
+ /* */
21
+ /* Revision History: */
22
+ /* */
23
+ /* 6.24: Added environment parameter to GenClose. */
24
+ /* Added environment parameter to GenOpen. */
25
+ /* */
26
+ /* Renamed BOOLEAN macro type to intBool. */
27
+ /* */
28
+ /* 6.30: Removed conditional code for unsupported */
29
+ /* compilers/operating systems (IBM_MCW, */
30
+ /* MAC_MCW, and IBM_TBC). */
31
+ /* */
32
+ /* Added code for capturing errors/warnings. */
33
+ /* */
34
+ /* Added AwaitingInput flag. */
35
+ /* */
36
+ /* Added const qualifiers to remove C++ */
37
+ /* deprecation warnings. */
38
+ /* */
39
+ /* Converted API macros to function calls. */
40
+ /* */
41
+ /* Fixed linkage issue when BLOAD_ONLY compiler */
42
+ /* flag is set to 1. */
43
+ /* */
44
+ /* Added STDOUT and STDIN logical name */
45
+ /* definitions. */
46
+ /* */
47
+ /* 6.31: Unprocessed batch files did not deallocate */
48
+ /* all memory on exit. */
49
+ /* */
50
+ /* 6.40: Split inputSource to fileSource and */
51
+ /* logicalSource. */
52
+ /* */
53
+ /* Added Env prefix to GetEvaluationError and */
54
+ /* SetEvaluationError functions. */
55
+ /* */
56
+ /* Added Env prefix to GetHaltExecution and */
57
+ /* SetHaltExecution functions. */
58
+ /* */
59
+ /* Pragma once and other inclusion changes. */
60
+ /* */
61
+ /* Added support for booleans with <stdbool.h>. */
62
+ /* */
63
+ /* Changed return values for router functions. */
64
+ /* */
65
+ /* Removed use of void pointers for specific */
66
+ /* data structures. */
67
+ /* */
68
+ /* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
69
+ /* */
70
+ /* UDF redesign. */
71
+ /* */
72
+ /*************************************************************/
73
+
74
+ #include <stdio.h>
75
+ #include <string.h>
76
+
77
+ #include "setup.h"
78
+
79
+ #include "argacces.h"
80
+ #if BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE
81
+ #include "bload.h"
82
+ #include "bsave.h"
83
+ #endif
84
+ #include "commline.h"
85
+ #include "cstrcpsr.h"
86
+ #include "envrnmnt.h"
87
+ #include "extnfunc.h"
88
+ #include "fileutil.h"
89
+ #include "memalloc.h"
90
+ #include "router.h"
91
+ #include "sysdep.h"
92
+ #include "utility.h"
93
+
94
+ #include "filecom.h"
95
+
96
+ /***************************************/
97
+ /* LOCAL INTERNAL FUNCTION DEFINITIONS */
98
+ /***************************************/
99
+
100
+ static void DeallocateFileCommandData(Environment *);
101
+
102
+ /***************************************/
103
+ /* FileCommandDefinitions: Initializes */
104
+ /* file commands. */
105
+ /***************************************/
106
+ void FileCommandDefinitions(
107
+ Environment *theEnv)
108
+ {
109
+ AllocateEnvironmentData(theEnv,FILECOM_DATA,sizeof(struct fileCommandData),DeallocateFileCommandData);
110
+
111
+ #if ! RUN_TIME
112
+ #if DEBUGGING_FUNCTIONS
113
+ AddUDF(theEnv,"batch","b",1,1,"sy",BatchCommand,"BatchCommand",NULL);
114
+ AddUDF(theEnv,"batch*","b",1,1,"sy",BatchStarCommand,"BatchStarCommand",NULL);
115
+ AddUDF(theEnv,"dribble-on","b",1,1,"sy",DribbleOnCommand,"DribbleOnCommand",NULL);
116
+ AddUDF(theEnv,"dribble-off","b",0,0,NULL,DribbleOffCommand,"DribbleOffCommand",NULL);
117
+ AddUDF(theEnv,"save","b",1,1,"sy",SaveCommand,"SaveCommand",NULL);
118
+ #endif
119
+ AddUDF(theEnv,"load","b",1,1,"sy",LoadCommand,"LoadCommand",NULL);
120
+ AddUDF(theEnv,"load*","b",1,1,"sy",LoadStarCommand,"LoadStarCommand",NULL);
121
+ #if BLOAD_AND_BSAVE
122
+ AddUDF(theEnv,"bsave","b",1,1,"sy",BsaveCommand,"BsaveCommand",NULL);
123
+ #endif
124
+ #if BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE
125
+ InitializeBsaveData(theEnv);
126
+ InitializeBloadData(theEnv);
127
+ AddUDF(theEnv,"bload","b",1,1,"sy",BloadCommand,"BloadCommand",NULL);
128
+ #endif
129
+ #endif
130
+ }
131
+
132
+ /******************************************************/
133
+ /* DeallocateFileCommandData: Deallocates environment */
134
+ /* data for file commands. */
135
+ /******************************************************/
136
+ static void DeallocateFileCommandData(
137
+ Environment *theEnv)
138
+ {
139
+ struct batchEntry *theEntry, *nextEntry;
140
+
141
+ theEntry = FileCommandData(theEnv)->TopOfBatchList;
142
+ while (theEntry != NULL)
143
+ {
144
+ nextEntry = theEntry->next;
145
+
146
+ if (theEntry->batchType == FILE_BATCH)
147
+ { GenClose(theEnv,FileCommandData(theEnv)->TopOfBatchList->fileSource); }
148
+ else
149
+ { rm(theEnv,(void *) theEntry->theString,strlen(theEntry->theString) + 1); }
150
+
151
+ DeleteString(theEnv,theEntry->fileName);
152
+ DeleteString(theEnv,theEntry->logicalSource);
153
+ rtn_struct(theEnv,batchEntry,theEntry);
154
+
155
+ theEntry = nextEntry;
156
+ }
157
+
158
+ if (FileCommandData(theEnv)->BatchBuffer != NULL)
159
+ { rm(theEnv,FileCommandData(theEnv)->BatchBuffer,FileCommandData(theEnv)->BatchMaximumPosition); }
160
+
161
+ DeleteString(theEnv,FileCommandData(theEnv)->batchPriorParsingFile);
162
+ FileCommandData(theEnv)->batchPriorParsingFile = NULL;
163
+
164
+ #if DEBUGGING_FUNCTIONS
165
+ if (FileCommandData(theEnv)->DribbleBuffer != NULL)
166
+ { rm(theEnv,FileCommandData(theEnv)->DribbleBuffer,FileCommandData(theEnv)->DribbleMaximumPosition); }
167
+
168
+ if (FileCommandData(theEnv)->DribbleFP != NULL)
169
+ { GenClose(theEnv,FileCommandData(theEnv)->DribbleFP); }
170
+ #endif
171
+ }
172
+
173
+ #if DEBUGGING_FUNCTIONS
174
+
175
+ /******************************************/
176
+ /* DribbleOnCommand: H/L access routine */
177
+ /* for the dribble-on command. */
178
+ /******************************************/
179
+ void DribbleOnCommand(
180
+ Environment *theEnv,
181
+ UDFContext *context,
182
+ UDFValue *returnValue)
183
+ {
184
+ const char *fileName;
185
+
186
+ if ((fileName = GetFileName(context)) == NULL)
187
+ {
188
+ returnValue->lexemeValue = FalseSymbol(theEnv);
189
+ return;
190
+ }
191
+
192
+ returnValue->lexemeValue = CreateBoolean(theEnv,DribbleOn(theEnv,fileName));
193
+ }
194
+
195
+ /*******************************************/
196
+ /* DribbleOffCommand: H/L access routine */
197
+ /* for the dribble-off command. */
198
+ /*******************************************/
199
+ void DribbleOffCommand(
200
+ Environment *theEnv,
201
+ UDFContext *context,
202
+ UDFValue *returnValue)
203
+ {
204
+ returnValue->lexemeValue = CreateBoolean(theEnv,DribbleOff(theEnv));
205
+ }
206
+
207
+ #endif /* DEBUGGING_FUNCTIONS */
208
+
209
+ /**************************************/
210
+ /* BatchCommand: H/L access routine */
211
+ /* for the batch command. */
212
+ /**************************************/
213
+ void BatchCommand(
214
+ Environment *theEnv,
215
+ UDFContext *context,
216
+ UDFValue *returnValue)
217
+ {
218
+ const char *fileName;
219
+
220
+ if ((fileName = GetFileName(context)) == NULL)
221
+ {
222
+ returnValue->lexemeValue = FalseSymbol(theEnv);
223
+ return;
224
+ }
225
+
226
+ returnValue->lexemeValue = CreateBoolean(theEnv,OpenBatch(theEnv,fileName,false));
227
+ }
228
+
229
+ /******************************************/
230
+ /* BatchStarCommand: H/L access routine */
231
+ /* for the batch* command. */
232
+ /******************************************/
233
+ void BatchStarCommand(
234
+ Environment *theEnv,
235
+ UDFContext *context,
236
+ UDFValue *returnValue)
237
+ {
238
+ const char *fileName;
239
+
240
+ if ((fileName = GetFileName(context)) == NULL)
241
+ {
242
+ returnValue->lexemeValue = FalseSymbol(theEnv);
243
+ return;
244
+ }
245
+
246
+ returnValue->lexemeValue = CreateBoolean(theEnv,BatchStar(theEnv,fileName));
247
+ }
248
+
249
+ /***********************************************************/
250
+ /* LoadCommand: H/L access routine for the load command. */
251
+ /***********************************************************/
252
+ void LoadCommand(
253
+ Environment *theEnv,
254
+ UDFContext *context,
255
+ UDFValue *returnValue)
256
+ {
257
+ #if (! BLOAD_ONLY) && (! RUN_TIME)
258
+ const char *theFileName;
259
+ LoadError rv;
260
+
261
+ if ((theFileName = GetFileName(context)) == NULL)
262
+ {
263
+ returnValue->lexemeValue = FalseSymbol(theEnv);
264
+ return;
265
+ }
266
+
267
+ if (CommandLineData(theEnv)->EvaluatingTopLevelCommand)
268
+ { SetPrintWhileLoading(theEnv,true); }
269
+
270
+ if ((rv = Load(theEnv,theFileName)) == LE_OPEN_FILE_ERROR)
271
+ {
272
+ SetPrintWhileLoading(theEnv,false);
273
+ OpenErrorMessage(theEnv,"load",theFileName);
274
+ returnValue->lexemeValue = FalseSymbol(theEnv);
275
+ return;
276
+ }
277
+
278
+ if (CommandLineData(theEnv)->EvaluatingTopLevelCommand)
279
+ { SetPrintWhileLoading(theEnv,false); }
280
+
281
+ if (rv == LE_PARSING_ERROR) returnValue->lexemeValue = FalseSymbol(theEnv);
282
+ else returnValue->lexemeValue = TrueSymbol(theEnv);
283
+ #else
284
+ WriteString(theEnv,STDOUT,"Load is not available in this environment\n");
285
+ returnValue->lexemeValue = FalseSymbol(theEnv);
286
+ #endif
287
+ }
288
+
289
+ /****************************************************************/
290
+ /* LoadStarCommand: H/L access routine for the load* command. */
291
+ /****************************************************************/
292
+ void LoadStarCommand(
293
+ Environment *theEnv,
294
+ UDFContext *context,
295
+ UDFValue *returnValue)
296
+ {
297
+ #if (! BLOAD_ONLY) && (! RUN_TIME)
298
+ const char *theFileName;
299
+ LoadError rv;
300
+
301
+ if ((theFileName = GetFileName(context)) == NULL)
302
+ {
303
+ returnValue->lexemeValue = FalseSymbol(theEnv);
304
+ return;
305
+ }
306
+
307
+ if ((rv = Load(theEnv,theFileName)) == LE_OPEN_FILE_ERROR)
308
+ {
309
+ OpenErrorMessage(theEnv,"load*",theFileName);
310
+ returnValue->lexemeValue = FalseSymbol(theEnv);
311
+ return;
312
+ }
313
+
314
+ if (rv == LE_PARSING_ERROR) returnValue->lexemeValue = FalseSymbol(theEnv);
315
+ else returnValue->lexemeValue = TrueSymbol(theEnv);
316
+ #else
317
+ WriteString(theEnv,STDOUT,"Load* is not available in this environment\n");
318
+ returnValue->lexemeValue = FalseSymbol(theEnv);
319
+ #endif
320
+ }
321
+
322
+ #if DEBUGGING_FUNCTIONS
323
+ /*********************************************************/
324
+ /* SaveCommand: H/L access routine for the save command. */
325
+ /*********************************************************/
326
+ void SaveCommand(
327
+ Environment *theEnv,
328
+ UDFContext *context,
329
+ UDFValue *returnValue)
330
+ {
331
+ #if (! BLOAD_ONLY) && (! RUN_TIME)
332
+ const char *theFileName;
333
+
334
+ if ((theFileName = GetFileName(context)) == NULL)
335
+ {
336
+ returnValue->lexemeValue = FalseSymbol(theEnv);
337
+ return;
338
+ }
339
+
340
+ if (Save(theEnv,theFileName) == false)
341
+ {
342
+ OpenErrorMessage(theEnv,"save",theFileName);
343
+ returnValue->lexemeValue = FalseSymbol(theEnv);
344
+ return;
345
+ }
346
+
347
+ returnValue->lexemeValue = TrueSymbol(theEnv);
348
+ #else
349
+ WriteString(theEnv,STDOUT,"Save is not available in this environment\n");
350
+ returnValue->lexemeValue = FalseSymbol(theEnv);
351
+ #endif
352
+ }
353
+ #endif
@@ -0,0 +1,137 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 04/04/19 */
5
+ /* */
6
+ /* FILE COMMANDS HEADER FILE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Contains the code for file commands including */
11
+ /* batch, dribble-on, dribble-off, save, load, bsave, and */
12
+ /* bload. */
13
+ /* */
14
+ /* Principal Programmer(s): */
15
+ /* Gary D. Riley */
16
+ /* */
17
+ /* Contributing Programmer(s): */
18
+ /* */
19
+ /* Revision History: */
20
+ /* */
21
+ /* 6.24: Added environment parameter to GenClose. */
22
+ /* Added environment parameter to GenOpen. */
23
+ /* */
24
+ /* Renamed BOOLEAN macro type to intBool. */
25
+ /* */
26
+ /* 6.30: Removed conditional code for unsupported */
27
+ /* compilers/operating systems (IBM_MCW, */
28
+ /* MAC_MCW, and IBM_TBC). */
29
+ /* */
30
+ /* Added code for capturing errors/warnings. */
31
+ /* */
32
+ /* Added AwaitingInput flag. */
33
+ /* */
34
+ /* Added const qualifiers to remove C++ */
35
+ /* deprecation warnings. */
36
+ /* */
37
+ /* Converted API macros to function calls. */
38
+ /* */
39
+ /* Fixed linkage issue when BLOAD_ONLY compiler */
40
+ /* flag is set to 1. */
41
+ /* */
42
+ /* 6.31: Fixed error in AppendDribble for older */
43
+ /* compilers not allowing variable definition */
44
+ /* within for statement. */
45
+ /* */
46
+ /* 6.40: Removed LOCALE definition. */
47
+ /* */
48
+ /* Pragma once and other inclusion changes. */
49
+ /* */
50
+ /* Added support for booleans with <stdbool.h>. */
51
+ /* */
52
+ /* Removed use of void pointers for specific */
53
+ /* data structures. */
54
+ /* */
55
+ /* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
56
+ /* */
57
+ /* UDF redesign. */
58
+ /* */
59
+ /*************************************************************/
60
+
61
+ #ifndef _H_filecom
62
+
63
+ #pragma once
64
+
65
+ #define _H_filecom
66
+
67
+ #include <stdio.h>
68
+ #include <stdlib.h>
69
+
70
+ #include "entities.h"
71
+
72
+ typedef struct batchEntry BatchEntry;
73
+
74
+ /***************/
75
+ /* STRUCTURES */
76
+ /***************/
77
+
78
+ struct batchEntry
79
+ {
80
+ int batchType;
81
+ FILE *fileSource;
82
+ const char *logicalSource;
83
+ const char *theString;
84
+ const char *fileName;
85
+ long lineNumber;
86
+ BatchEntry *next;
87
+ };
88
+
89
+ /***************/
90
+ /* DEFINITIONS */
91
+ /***************/
92
+
93
+ #define FILE_BATCH 0
94
+ #define STRING_BATCH 1
95
+
96
+ #define BUFFER_SIZE 120
97
+
98
+ #define FILECOM_DATA 14
99
+
100
+ struct fileCommandData
101
+ {
102
+ #if DEBUGGING_FUNCTIONS
103
+ FILE *DribbleFP;
104
+ char *DribbleBuffer;
105
+ size_t DribbleCurrentPosition;
106
+ size_t DribbleMaximumPosition;
107
+ int (*DribbleStatusFunction)(Environment *,bool);
108
+ #endif
109
+ int BatchType;
110
+ FILE *BatchFileSource;
111
+ const char *BatchLogicalSource;
112
+ char *BatchBuffer;
113
+ size_t BatchCurrentPosition;
114
+ size_t BatchMaximumPosition;
115
+ BatchEntry *TopOfBatchList;
116
+ BatchEntry *BottomOfBatchList;
117
+ char *batchPriorParsingFile;
118
+ };
119
+
120
+ #define FileCommandData(theEnv) ((struct fileCommandData *) GetEnvironmentData(theEnv,FILECOM_DATA))
121
+
122
+ void FileCommandDefinitions(Environment *);
123
+ void BatchCommand(Environment *,UDFContext *,UDFValue *);
124
+ void BatchStarCommand(Environment *,UDFContext *,UDFValue *);
125
+ void LoadCommand(Environment *,UDFContext *,UDFValue *);
126
+ void LoadStarCommand(Environment *,UDFContext *,UDFValue *);
127
+ void SaveCommand(Environment *,UDFContext *,UDFValue *);
128
+ void DribbleOnCommand(Environment *,UDFContext *,UDFValue *);
129
+ void DribbleOffCommand(Environment *,UDFContext *,UDFValue *);
130
+
131
+ #endif /* _H_filecom */
132
+
133
+
134
+
135
+
136
+
137
+