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,347 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 02/09/21 */
5
+ /* */
6
+ /* DEFMODULE BASIC COMMANDS HEADER FILE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Implements core commands for the defmodule */
11
+ /* construct such as clear, reset, save, ppdefmodule */
12
+ /* list-defmodules, and get-defmodule-list. */
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.30: Removed conditional code for unsupported */
23
+ /* compilers/operating systems (IBM_MCW and */
24
+ /* MAC_MCW). */
25
+ /* */
26
+ /* Added const qualifiers to remove C++ */
27
+ /* deprecation warnings. */
28
+ /* */
29
+ /* Converted API macros to function calls. */
30
+ /* */
31
+ /* 6.40: Pragma once and other inclusion changes. */
32
+ /* */
33
+ /* Added support for booleans with <stdbool.h>. */
34
+ /* */
35
+ /* Removed use of void pointers for specific */
36
+ /* data structures. */
37
+ /* */
38
+ /* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
39
+ /* */
40
+ /* UDF redesign. */
41
+ /* */
42
+ /* Pretty print functions accept optional logical */
43
+ /* name argument. */
44
+ /* */
45
+ /*************************************************************/
46
+
47
+ #include "setup.h"
48
+
49
+ #include <stdio.h>
50
+ #include <string.h>
51
+
52
+ #include "argacces.h"
53
+ #include "bload.h"
54
+ #include "constrct.h"
55
+ #include "envrnmnt.h"
56
+ #include "extnfunc.h"
57
+ #if BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE
58
+ #include "modulbin.h"
59
+ #endif
60
+ #include "modulcmp.h"
61
+ #include "multifld.h"
62
+ #include "prntutil.h"
63
+ #include "router.h"
64
+
65
+ #include "modulbsc.h"
66
+
67
+ /***************************************/
68
+ /* LOCAL INTERNAL FUNCTION DEFINITIONS */
69
+ /***************************************/
70
+
71
+ static void ClearDefmodules(Environment *,void *);
72
+ #if DEFMODULE_CONSTRUCT
73
+ static void SaveDefmodules(Environment *,Defmodule *,const char *,void *);
74
+ #endif
75
+
76
+ /*****************************************************************/
77
+ /* DefmoduleBasicCommands: Initializes basic defmodule commands. */
78
+ /*****************************************************************/
79
+ void DefmoduleBasicCommands(
80
+ Environment *theEnv)
81
+ {
82
+ AddClearFunction(theEnv,"defmodule",ClearDefmodules,2000,NULL);
83
+
84
+ #if DEFMODULE_CONSTRUCT
85
+ AddSaveFunction(theEnv,"defmodule",SaveDefmodules,1100,NULL);
86
+
87
+ #if ! RUN_TIME
88
+ AddUDF(theEnv,"get-defmodule-list","m",0,0,NULL,GetDefmoduleListFunction,"GetDefmoduleListFunction",NULL);
89
+
90
+ #if DEBUGGING_FUNCTIONS
91
+ AddUDF(theEnv,"list-defmodules","v",0,0,NULL,ListDefmodulesCommand,"ListDefmodulesCommand",NULL);
92
+ AddUDF(theEnv,"ppdefmodule","v",1,2,";y;ldsyn",PPDefmoduleCommand,"PPDefmoduleCommand",NULL);
93
+ #endif
94
+ #endif
95
+ #endif
96
+
97
+ #if (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE)
98
+ DefmoduleBinarySetup(theEnv);
99
+ #endif
100
+
101
+ #if CONSTRUCT_COMPILER && (! RUN_TIME)
102
+ DefmoduleCompilerSetup(theEnv);
103
+ #endif
104
+ }
105
+
106
+ /*********************************************************/
107
+ /* ClearDefmodules: Defmodule clear routine for use with */
108
+ /* the clear command. Creates the MAIN module. */
109
+ /*********************************************************/
110
+ static void ClearDefmodules(
111
+ Environment *theEnv,
112
+ void *context)
113
+ {
114
+ #if (BLOAD || BLOAD_AND_BSAVE || BLOAD_ONLY) && (! RUN_TIME)
115
+ if (Bloaded(theEnv) == true) return;
116
+ #endif
117
+ #if (! RUN_TIME)
118
+ RemoveAllDefmodules(theEnv,NULL);
119
+
120
+ CreateMainModule(theEnv,NULL);
121
+ DefmoduleData(theEnv)->MainModuleRedefinable = true;
122
+ #else
123
+ #if MAC_XCD
124
+ #pragma unused(theEnv)
125
+ #endif
126
+ #endif
127
+ }
128
+
129
+ #if DEFMODULE_CONSTRUCT
130
+
131
+ /******************************************/
132
+ /* SaveDefmodules: Defmodule save routine */
133
+ /* for use with the save command. */
134
+ /******************************************/
135
+ static void SaveDefmodules(
136
+ Environment *theEnv,
137
+ Defmodule *theModule,
138
+ const char *logicalName,
139
+ void *context)
140
+ {
141
+ const char *ppform;
142
+
143
+ ppform = DefmodulePPForm(theModule);
144
+ if (ppform != NULL)
145
+ {
146
+ WriteString(theEnv,logicalName,ppform);
147
+ WriteString(theEnv,logicalName,"\n");
148
+ }
149
+ }
150
+
151
+ /************************************************/
152
+ /* GetDefmoduleListFunction: H/L access routine */
153
+ /* for the get-defmodule-list function. */
154
+ /************************************************/
155
+ void GetDefmoduleListFunction(
156
+ Environment *theEnv,
157
+ UDFContext *context,
158
+ UDFValue *returnValue)
159
+ {
160
+ CLIPSValue result;
161
+
162
+ GetDefmoduleList(theEnv,&result);
163
+ CLIPSToUDFValue(&result,returnValue);
164
+ }
165
+
166
+ /******************************************/
167
+ /* GetDefmoduleList: C access routine */
168
+ /* for the get-defmodule-list function. */
169
+ /******************************************/
170
+ void GetDefmoduleList(
171
+ Environment *theEnv,
172
+ CLIPSValue *returnValue)
173
+ {
174
+ Defmodule *theConstruct;
175
+ unsigned long count = 0;
176
+ Multifield *theList;
177
+
178
+ /*====================================*/
179
+ /* Determine the number of constructs */
180
+ /* of the specified type. */
181
+ /*====================================*/
182
+
183
+ for (theConstruct = GetNextDefmodule(theEnv,NULL);
184
+ theConstruct != NULL;
185
+ theConstruct = GetNextDefmodule(theEnv,theConstruct))
186
+ { count++; }
187
+
188
+ /*===========================*/
189
+ /* Create a multifield large */
190
+ /* enough to store the list. */
191
+ /*===========================*/
192
+
193
+ theList = CreateMultifield(theEnv,count);
194
+ returnValue->value = theList;
195
+
196
+ /*====================================*/
197
+ /* Store the names in the multifield. */
198
+ /*====================================*/
199
+
200
+ for (theConstruct = GetNextDefmodule(theEnv,NULL), count = 0;
201
+ theConstruct != NULL;
202
+ theConstruct = GetNextDefmodule(theEnv,theConstruct), count++)
203
+ {
204
+ if (EvaluationData(theEnv)->HaltExecution == true)
205
+ {
206
+ returnValue->multifieldValue = CreateMultifield(theEnv,0L);
207
+ return;
208
+ }
209
+ theList->contents[count].lexemeValue = CreateSymbol(theEnv,DefmoduleName(theConstruct));
210
+ }
211
+ }
212
+
213
+ #if DEBUGGING_FUNCTIONS
214
+
215
+ /********************************************/
216
+ /* PPDefmoduleCommand: H/L access routine */
217
+ /* for the ppdefmodule command. */
218
+ /********************************************/
219
+ void PPDefmoduleCommand(
220
+ Environment *theEnv,
221
+ UDFContext *context,
222
+ UDFValue *returnValue)
223
+ {
224
+ const char *defmoduleName;
225
+ const char *logicalName;
226
+ const char *ppForm;
227
+
228
+ defmoduleName = GetConstructName(context,"ppdefmodule","defmodule name");
229
+ if (defmoduleName == NULL) return;
230
+
231
+ if (UDFHasNextArgument(context))
232
+ {
233
+ logicalName = GetLogicalName(context,STDOUT);
234
+ if (logicalName == NULL)
235
+ {
236
+ IllegalLogicalNameMessage(theEnv,"ppdefmodule");
237
+ SetHaltExecution(theEnv,true);
238
+ SetEvaluationError(theEnv,true);
239
+ return;
240
+ }
241
+ }
242
+ else
243
+ { logicalName = STDOUT; }
244
+
245
+ if (strcmp(logicalName,"nil") == 0)
246
+ {
247
+ ppForm = PPDefmoduleNil(theEnv,defmoduleName);
248
+
249
+ if (ppForm == NULL)
250
+ { CantFindItemErrorMessage(theEnv,"defmodule",defmoduleName,true); }
251
+
252
+ returnValue->lexemeValue = CreateString(theEnv,ppForm);
253
+
254
+ return;
255
+ }
256
+
257
+ PPDefmodule(theEnv,defmoduleName,logicalName);
258
+
259
+ return;
260
+ }
261
+
262
+ /****************************************/
263
+ /* PPDefmoduleNil: C access routine for */
264
+ /* the ppdefmodule command. */
265
+ /****************************************/
266
+ const char *PPDefmoduleNil(
267
+ Environment *theEnv,
268
+ const char *defmoduleName)
269
+ {
270
+ Defmodule *defmodulePtr;
271
+
272
+ defmodulePtr = FindDefmodule(theEnv,defmoduleName);
273
+ if (defmodulePtr == NULL)
274
+ {
275
+ CantFindItemErrorMessage(theEnv,"defmodule",defmoduleName,true);
276
+ return NULL;
277
+ }
278
+
279
+ if (DefmodulePPForm(defmodulePtr) == NULL) return "";
280
+
281
+ return DefmodulePPForm(defmodulePtr);
282
+ }
283
+
284
+ /*************************************/
285
+ /* PPDefmodule: C access routine for */
286
+ /* the ppdefmodule command. */
287
+ /*************************************/
288
+ bool PPDefmodule(
289
+ Environment *theEnv,
290
+ const char *defmoduleName,
291
+ const char *logicalName)
292
+ {
293
+ Defmodule *defmodulePtr;
294
+
295
+ defmodulePtr = FindDefmodule(theEnv,defmoduleName);
296
+ if (defmodulePtr == NULL)
297
+ {
298
+ CantFindItemErrorMessage(theEnv,"defmodule",defmoduleName,true);
299
+ return false;
300
+ }
301
+
302
+ if (DefmodulePPForm(defmodulePtr) == NULL) return true;
303
+ WriteString(theEnv,logicalName,DefmodulePPForm(defmodulePtr));
304
+
305
+ return true;
306
+ }
307
+
308
+ /***********************************************/
309
+ /* ListDefmodulesCommand: H/L access routine */
310
+ /* for the list-defmodules command. */
311
+ /***********************************************/
312
+ void ListDefmodulesCommand(
313
+ Environment *theEnv,
314
+ UDFContext *context,
315
+ UDFValue *returnValue)
316
+ {
317
+ ListDefmodules(theEnv,STDOUT);
318
+ }
319
+
320
+ /**************************************/
321
+ /* ListDefmodules: C access routine */
322
+ /* for the list-defmodules command. */
323
+ /**************************************/
324
+ void ListDefmodules(
325
+ Environment *theEnv,
326
+ const char *logicalName)
327
+ {
328
+ Defmodule *theModule;
329
+ unsigned int count = 0;
330
+
331
+ for (theModule = GetNextDefmodule(theEnv,NULL);
332
+ theModule != NULL;
333
+ theModule = GetNextDefmodule(theEnv,theModule))
334
+ {
335
+ WriteString(theEnv,logicalName,DefmoduleName(theModule));
336
+ WriteString(theEnv,logicalName,"\n");
337
+ count++;
338
+ }
339
+
340
+ PrintTally(theEnv,logicalName,count,"defmodule","defmodules");
341
+ }
342
+
343
+ #endif /* DEBUGGING_FUNCTIONS */
344
+
345
+ #endif /* DEFMODULE_CONSTRUCT */
346
+
347
+
@@ -0,0 +1,67 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/02/18 */
5
+ /* */
6
+ /* DEFMODULE BASIC COMMANDS HEADER FILE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Implements core commands for the deffacts */
11
+ /* construct such as clear, reset, save, undeffacts, */
12
+ /* ppdeffacts, list-deffacts, and get-deffacts-list. */
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.30: Removed conditional code for unsupported */
23
+ /* compilers/operating systems (IBM_MCW and */
24
+ /* MAC_MCW). */
25
+ /* */
26
+ /* Added const qualifiers to remove C++ */
27
+ /* deprecation warnings. */
28
+ /* */
29
+ /* Converted API macros to function calls. */
30
+ /* */
31
+ /* 6.40: Removed LOCALE definition. */
32
+ /* */
33
+ /* 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
+ /* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
41
+ /* */
42
+ /* UDF redesign. */
43
+ /* */
44
+ /* Pretty print functions accept optional logical */
45
+ /* name argument. */
46
+ /* */
47
+ /*************************************************************/
48
+
49
+ #ifndef _H_modulbsc
50
+
51
+ #pragma once
52
+
53
+ #define _H_modulbsc
54
+
55
+ #include "evaluatn.h"
56
+
57
+ void DefmoduleBasicCommands(Environment *);
58
+ void GetDefmoduleListFunction(Environment *,UDFContext *,UDFValue *);
59
+ void GetDefmoduleList(Environment *,CLIPSValue *);
60
+ void PPDefmoduleCommand(Environment *,UDFContext *,UDFValue *);
61
+ bool PPDefmodule(Environment *,const char *,const char *);
62
+ const char *PPDefmoduleNil(Environment *,const char *);
63
+ void ListDefmodulesCommand(Environment *,UDFContext *,UDFValue *);
64
+ void ListDefmodules(Environment *,const char *);
65
+
66
+ #endif /* _H_modulbsc */
67
+