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,330 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/30/16 */
5
+ /* */
6
+ /* DEFGLOBAL CONSTRUCTS-TO-C MODULE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Implements the constructs-to-c feature for the */
11
+ /* defglobal construct. */
12
+ /* */
13
+ /* Principal Programmer(s): */
14
+ /* Gary D. Riley */
15
+ /* */
16
+ /* Contributing Programmer(s): */
17
+ /* Brian L. Dantes */
18
+ /* */
19
+ /* Revision History: */
20
+ /* */
21
+ /* 6.30: Removed conditional code for unsupported */
22
+ /* compilers/operating systems (IBM_MCW, */
23
+ /* MAC_MCW, and IBM_TBC). */
24
+ /* */
25
+ /* Added support for path name argument to */
26
+ /* constructs-to-c. */
27
+ /* */
28
+ /* Added const qualifiers to remove C++ */
29
+ /* deprecation warnings. */
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
+ /*************************************************************/
39
+
40
+ #include "setup.h"
41
+
42
+ #if DEFGLOBAL_CONSTRUCT && CONSTRUCT_COMPILER && (! RUN_TIME)
43
+
44
+ #include <stdio.h>
45
+
46
+ #include "conscomp.h"
47
+ #include "envrnmnt.h"
48
+ #include "globldef.h"
49
+
50
+ #include "globlcmp.h"
51
+
52
+ /***************************************/
53
+ /* LOCAL INTERNAL FUNCTION DEFINITIONS */
54
+ /***************************************/
55
+
56
+ static bool ConstructToCode(Environment *,const char *,const char *,char *,unsigned int,
57
+ FILE *,unsigned int,unsigned int);
58
+ static void DefglobalToCode(Environment *,FILE *,Defglobal *,
59
+ unsigned int,unsigned int,unsigned int);
60
+ static void DefglobalModuleToCode(Environment *,FILE *,Defmodule *,unsigned int,unsigned int,unsigned int);
61
+ static void CloseDefglobalFiles(Environment *,FILE *,FILE *,unsigned int);
62
+ static void BeforeDefglobalsToCode(Environment *);
63
+ static void InitDefglobalsCode(Environment *,FILE *,unsigned,unsigned);
64
+
65
+ /***************************************************************/
66
+ /* DefglobalCompilerSetup: Initializes the defglobal construct */
67
+ /* for use with the constructs-to-c command. */
68
+ /***************************************************************/
69
+ void DefglobalCompilerSetup(
70
+ Environment *theEnv)
71
+ {
72
+ DefglobalData(theEnv)->DefglobalCodeItem =
73
+ AddCodeGeneratorItem(theEnv,"defglobal",0,BeforeDefglobalsToCode,
74
+ InitDefglobalsCode,ConstructToCode,2);
75
+ }
76
+
77
+ /**************************************************************/
78
+ /* BeforeDefglobalsToCode: Assigns each defglobal a unique ID */
79
+ /* which will be used for pointer references when the data */
80
+ /* structures are written to a file as C code */
81
+ /**************************************************************/
82
+ static void BeforeDefglobalsToCode(
83
+ Environment *theEnv)
84
+ {
85
+ MarkConstructBsaveIDs(theEnv,DefglobalData(theEnv)->DefglobalModuleIndex);
86
+ }
87
+
88
+ /*************************************************/
89
+ /* InitDefglobalsCode: Writes out initialization */
90
+ /* code for defglobals for a run-time module. */
91
+ /*************************************************/
92
+ static void InitDefglobalsCode(
93
+ Environment *theEnv,
94
+ FILE *initFP,
95
+ unsigned imageID,
96
+ unsigned maxIndices)
97
+ {
98
+ #if MAC_XCD
99
+ #pragma unused(maxIndices)
100
+ #pragma unused(imageID)
101
+ #pragma unused(theEnv)
102
+ #endif
103
+ fprintf(initFP," DefglobalRunTimeInitialize(theEnv);\n");
104
+ fprintf(initFP," ResetDefglobals(theEnv,NULL);\n");
105
+ }
106
+
107
+ /***********************************************************/
108
+ /* ConstructToCode: Produces defglobal code for a run-time */
109
+ /* module created using the constructs-to-c function. */
110
+ /***********************************************************/
111
+ static bool ConstructToCode(
112
+ Environment *theEnv,
113
+ const char *fileName,
114
+ const char *pathName,
115
+ char *fileNameBuffer,
116
+ unsigned int fileID,
117
+ FILE *headerFP,
118
+ unsigned int imageID,
119
+ unsigned int maxIndices)
120
+ {
121
+ unsigned int fileCount = 1;
122
+ Defmodule *theModule;
123
+ Defglobal *theDefglobal;
124
+ unsigned int moduleCount = 0, moduleArrayCount = 0, moduleArrayVersion = 1;
125
+ unsigned int defglobalArrayCount = 0, defglobalArrayVersion = 1;
126
+ FILE *moduleFile = NULL, *defglobalFile = NULL;
127
+
128
+ /*================================================*/
129
+ /* Include the appropriate defglobal header file. */
130
+ /*================================================*/
131
+
132
+ fprintf(headerFP,"#include \"globldef.h\"\n");
133
+
134
+ /*===================================================================*/
135
+ /* Loop through all the modules and all the defglobals writing their */
136
+ /* C code representation to the file as they are traversed. */
137
+ /*===================================================================*/
138
+
139
+ for (theModule = GetNextDefmodule(theEnv,NULL);
140
+ theModule != NULL;
141
+ theModule = GetNextDefmodule(theEnv,theModule))
142
+ {
143
+ SetCurrentModule(theEnv,theModule);
144
+
145
+ moduleFile = OpenFileIfNeeded(theEnv,moduleFile,fileName,pathName,fileNameBuffer,fileID,imageID,&fileCount,
146
+ moduleArrayVersion,headerFP,
147
+ "struct defglobalModule",ModulePrefix(DefglobalData(theEnv)->DefglobalCodeItem),
148
+ false,NULL);
149
+
150
+ if (moduleFile == NULL)
151
+ {
152
+ CloseDefglobalFiles(theEnv,moduleFile,defglobalFile,maxIndices);
153
+ return false;
154
+ }
155
+
156
+ DefglobalModuleToCode(theEnv,moduleFile,theModule,imageID,maxIndices,moduleCount);
157
+ moduleFile = CloseFileIfNeeded(theEnv,moduleFile,&moduleArrayCount,&moduleArrayVersion,
158
+ maxIndices,NULL,NULL);
159
+
160
+ for (theDefglobal = GetNextDefglobal(theEnv,NULL);
161
+ theDefglobal != NULL;
162
+ theDefglobal = GetNextDefglobal(theEnv,theDefglobal))
163
+ {
164
+ defglobalFile = OpenFileIfNeeded(theEnv,defglobalFile,fileName,pathName,fileNameBuffer,fileID,imageID,&fileCount,
165
+ defglobalArrayVersion,headerFP,
166
+ "Defglobal",ConstructPrefix(DefglobalData(theEnv)->DefglobalCodeItem),
167
+ false,NULL);
168
+ if (defglobalFile == NULL)
169
+ {
170
+ CloseDefglobalFiles(theEnv,moduleFile,defglobalFile,maxIndices);
171
+ return false;
172
+ }
173
+
174
+ DefglobalToCode(theEnv,defglobalFile,theDefglobal,imageID,maxIndices,moduleCount);
175
+ defglobalArrayCount++;
176
+ defglobalFile = CloseFileIfNeeded(theEnv,defglobalFile,&defglobalArrayCount,
177
+ &defglobalArrayVersion,maxIndices,NULL,NULL);
178
+ }
179
+
180
+ moduleCount++;
181
+ moduleArrayCount++;
182
+ }
183
+
184
+ CloseDefglobalFiles(theEnv,moduleFile,defglobalFile,maxIndices);
185
+
186
+ return true;
187
+ }
188
+
189
+ /**********************************************************/
190
+ /* CloseDefglobalFiles: Closes all of the C files created */
191
+ /* for defglobals. Called when an error occurs or when */
192
+ /* the defglobals have all been written to the files. */
193
+ /**********************************************************/
194
+ static void CloseDefglobalFiles(
195
+ Environment *theEnv,
196
+ FILE *moduleFile,
197
+ FILE *defglobalFile,
198
+ unsigned int maxIndices)
199
+ {
200
+ unsigned int count = maxIndices;
201
+ unsigned int arrayVersion = 0;
202
+
203
+ if (defglobalFile != NULL)
204
+ {
205
+ count = maxIndices;
206
+ CloseFileIfNeeded(theEnv,defglobalFile,&count,&arrayVersion,maxIndices,NULL,NULL);
207
+ }
208
+
209
+ if (moduleFile != NULL)
210
+ {
211
+ count = maxIndices;
212
+ CloseFileIfNeeded(theEnv,moduleFile,&count,&arrayVersion,maxIndices,NULL,NULL);
213
+ }
214
+ }
215
+
216
+ /***********************************************************/
217
+ /* DefglobalModuleToCode: Writes the C code representation */
218
+ /* of a single defglobal module to the specified file. */
219
+ /***********************************************************/
220
+ static void DefglobalModuleToCode(
221
+ Environment *theEnv,
222
+ FILE *theFile,
223
+ Defmodule *theModule,
224
+ unsigned int imageID,
225
+ unsigned int maxIndices,
226
+ unsigned int moduleCount)
227
+ {
228
+ #if MAC_XCD
229
+ #pragma unused(moduleCount)
230
+ #endif
231
+
232
+ fprintf(theFile,"{");
233
+
234
+ ConstructModuleToCode(theEnv,theFile,theModule,imageID,maxIndices,
235
+ DefglobalData(theEnv)->DefglobalModuleIndex,ConstructPrefix(DefglobalData(theEnv)->DefglobalCodeItem));
236
+
237
+ fprintf(theFile,"}");
238
+ }
239
+
240
+ /**********************************************************/
241
+ /* DefglobalToCode: Writes the C code representation of a */
242
+ /* single defglobal construct to the specified file. */
243
+ /**********************************************************/
244
+ static void DefglobalToCode(
245
+ Environment *theEnv,
246
+ FILE *theFile,
247
+ Defglobal *theDefglobal,
248
+ unsigned int imageID,
249
+ unsigned int maxIndices,
250
+ unsigned int moduleCount)
251
+ {
252
+ /*==================*/
253
+ /* Defglobal Header */
254
+ /*==================*/
255
+
256
+ fprintf(theFile,"{");
257
+
258
+ ConstructHeaderToCode(theEnv,theFile,&theDefglobal->header,imageID,maxIndices,
259
+ moduleCount,ModulePrefix(DefglobalData(theEnv)->DefglobalCodeItem),
260
+ ConstructPrefix(DefglobalData(theEnv)->DefglobalCodeItem));
261
+
262
+ fprintf(theFile,",");
263
+
264
+ /*============================================*/
265
+ /* Watch Flag, In Scope Flag, and Busy Count. */
266
+ /*============================================*/
267
+
268
+ fprintf(theFile,"0,0,%ld,",theDefglobal->busyCount);
269
+
270
+ /*================*/
271
+ /* Current Value. */
272
+ /*================*/
273
+
274
+ fprintf(theFile,"{ { NULL } }");
275
+
276
+ /*=====================*/
277
+ /* Initial Expression. */
278
+ /*=====================*/
279
+
280
+ fprintf(theFile,",");
281
+ PrintHashedExpressionReference(theEnv,theFile,theDefglobal->initial,imageID,maxIndices);
282
+
283
+ fprintf(theFile,"}");
284
+ }
285
+
286
+ /***************************************************************/
287
+ /* DefglobalCModuleReference: Writes the C code representation */
288
+ /* of a reference to a defglobal module data structure. */
289
+ /***************************************************************/
290
+ void DefglobalCModuleReference(
291
+ Environment *theEnv,
292
+ FILE *theFile,
293
+ unsigned long count,
294
+ unsigned int imageID,
295
+ unsigned int maxIndices)
296
+ {
297
+ fprintf(theFile,"MIHS &%s%u_%lu[%lu]",
298
+ ModulePrefix(DefglobalData(theEnv)->DefglobalCodeItem),
299
+ imageID,
300
+ (count / maxIndices) + 1,
301
+ (count % maxIndices));
302
+ }
303
+
304
+ /******************************************************************/
305
+ /* DefglobalCConstructReference: Writes the C code representation */
306
+ /* of a reference to a defglobal data structure. */
307
+ /******************************************************************/
308
+ void DefglobalCConstructReference(
309
+ Environment *theEnv,
310
+ FILE *theFile,
311
+ Defglobal *theGlobal,
312
+ unsigned int imageID,
313
+ unsigned int maxIndices)
314
+ {
315
+
316
+ if (theGlobal == NULL)
317
+ { fprintf(theFile,"NULL"); }
318
+ else
319
+ {
320
+ fprintf(theFile,"&%s%u_%lu[%lu]",ConstructPrefix(DefglobalData(theEnv)->DefglobalCodeItem),
321
+ imageID,
322
+ (theGlobal->header.bsaveID / maxIndices) + 1,
323
+ theGlobal->header.bsaveID % maxIndices);
324
+ }
325
+
326
+ }
327
+
328
+ #endif /* DEFGLOBAL_CONSTRUCT && CONSTRUCT_COMPILER && (! RUN_TIME) */
329
+
330
+
@@ -0,0 +1,52 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/30/16 */
5
+ /* */
6
+ /* DEFGLOBAL 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: Removed conditional code for unsupported */
20
+ /* compilers/operating systems (IBM_MCW, */
21
+ /* MAC_MCW, and IBM_TBC). */
22
+ /* */
23
+ /* Added support for path name argument to */
24
+ /* constructs-to-c. */
25
+ /* */
26
+ /* Added const qualifiers to remove C++ */
27
+ /* deprecation warnings. */
28
+ /* */
29
+ /* 6.40: Removed LOCALE definition. */
30
+ /* */
31
+ /* Pragma once and other inclusion changes. */
32
+ /* */
33
+ /* Removed use of void pointers for specific */
34
+ /* data structures. */
35
+ /* */
36
+ /*************************************************************/
37
+
38
+ #ifndef _H_globlcmp
39
+
40
+ #pragma once
41
+
42
+ #define _H_globlcmp
43
+
44
+ #include "globldef.h"
45
+
46
+ void DefglobalCompilerSetup(Environment *);
47
+ void DefglobalCModuleReference(Environment *,FILE *,unsigned long,unsigned int,unsigned int);
48
+ void DefglobalCConstructReference(Environment *,FILE *,Defglobal *,
49
+ unsigned int,unsigned int);
50
+
51
+ #endif /* _H_globlcmp */
52
+
@@ -0,0 +1,289 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 10/28/20 */
5
+ /* */
6
+ /* DEFGLOBAL COMMANDS MODULE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Provides the show-defglobals, set-reset-globals, */
11
+ /* and get-reset-globals commands. */
12
+ /* */
13
+ /* Principal Programmer(s): */
14
+ /* Gary D. Riley */
15
+ /* */
16
+ /* Contributing Programmer(s): */
17
+ /* */
18
+ /* Revision History: */
19
+ /* */
20
+ /* 6.23: Correction for FalseSymbol/TrueSymbol. DR0859 */
21
+ /* */
22
+ /* 6.24: Renamed BOOLEAN macro type to intBool. */
23
+ /* */
24
+ /* 6.30: Removed conditional code for unsupported */
25
+ /* compilers/operating systems (IBM_MCW and */
26
+ /* MAC_MCW). */
27
+ /* */
28
+ /* Added const qualifiers to remove C++ */
29
+ /* deprecation warnings. */
30
+ /* */
31
+ /* Converted API macros to function calls. */
32
+ /* */
33
+ /* 6.32: Fixed embedded reset of error flags. */
34
+ /* */
35
+ /* 6.40: Pragma once and other inclusion changes. */
36
+ /* */
37
+ /* Added support for booleans with <stdbool.h>. */
38
+ /* */
39
+ /* Removed use of void pointers for specific */
40
+ /* data structures. */
41
+ /* */
42
+ /* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
43
+ /* */
44
+ /* UDF redesign. */
45
+ /* */
46
+ /*************************************************************/
47
+
48
+ #include "setup.h"
49
+
50
+ #if DEFGLOBAL_CONSTRUCT
51
+
52
+ #include "argacces.h"
53
+ #include "envrnmnt.h"
54
+ #include "extnfunc.h"
55
+ #include "globldef.h"
56
+ #include "prntutil.h"
57
+ #include "router.h"
58
+
59
+ #include "globlcom.h"
60
+
61
+ /***************************************/
62
+ /* LOCAL INTERNAL FUNCTION DEFINITIONS */
63
+ /***************************************/
64
+
65
+ #if DEBUGGING_FUNCTIONS
66
+ static void PrintDefglobalValueForm(Environment *,const char *,Defglobal *);
67
+ #endif
68
+
69
+ /************************************************************/
70
+ /* DefglobalCommandDefinitions: Defines defglobal commands. */
71
+ /************************************************************/
72
+ void DefglobalCommandDefinitions(
73
+ Environment *theEnv)
74
+ {
75
+ #if ! RUN_TIME
76
+ AddUDF(theEnv,"set-reset-globals","b",1,1,NULL,SetResetGlobalsCommand,"SetResetGlobalsCommand",NULL);
77
+ AddUDF(theEnv,"get-reset-globals","b",0,0,NULL,GetResetGlobalsCommand,"GetResetGlobalsCommand",NULL);
78
+
79
+ #if DEBUGGING_FUNCTIONS
80
+ AddUDF(theEnv,"show-defglobals","v",0,1,"y",ShowDefglobalsCommand,"ShowDefglobalsCommand",NULL);
81
+ #endif
82
+
83
+ #else
84
+ #if MAC_XCD
85
+ #pragma unused(theEnv)
86
+ #endif
87
+ #endif
88
+ }
89
+
90
+ /************************************************/
91
+ /* SetResetGlobalsCommand: H/L access routine */
92
+ /* for the get-reset-globals command. */
93
+ /************************************************/
94
+ void SetResetGlobalsCommand(
95
+ Environment *theEnv,
96
+ UDFContext *context,
97
+ UDFValue *returnValue)
98
+ {
99
+ bool oldValue;
100
+ UDFValue theArg;
101
+
102
+ /*===========================================*/
103
+ /* Remember the old value of this attribute. */
104
+ /*===========================================*/
105
+
106
+ oldValue = GetResetGlobals(theEnv);
107
+
108
+ /*===========================================*/
109
+ /* Determine the new value of the attribute. */
110
+ /*===========================================*/
111
+
112
+ if (! UDFFirstArgument(context,ANY_TYPE_BITS,&theArg))
113
+ { return; }
114
+
115
+ if (theArg.value == FalseSymbol(theEnv))
116
+ { SetResetGlobals(theEnv,false); }
117
+ else
118
+ { SetResetGlobals(theEnv,true); }
119
+
120
+ /*========================================*/
121
+ /* Return the old value of the attribute. */
122
+ /*========================================*/
123
+
124
+ returnValue->lexemeValue = CreateBoolean(theEnv,oldValue);
125
+ }
126
+
127
+ /****************************************/
128
+ /* SetResetGlobals: C access routine */
129
+ /* for the set-reset-globals command. */
130
+ /****************************************/
131
+ bool SetResetGlobals(
132
+ Environment *theEnv,
133
+ bool value)
134
+ {
135
+ bool ov;
136
+
137
+ ov = DefglobalData(theEnv)->ResetGlobals;
138
+ DefglobalData(theEnv)->ResetGlobals = value;
139
+ return(ov);
140
+ }
141
+
142
+ /************************************************/
143
+ /* GetResetGlobalsCommand: H/L access routine */
144
+ /* for the get-reset-globals command. */
145
+ /************************************************/
146
+ void GetResetGlobalsCommand(
147
+ Environment *theEnv,
148
+ UDFContext *context,
149
+ UDFValue *returnValue)
150
+ {
151
+ returnValue->lexemeValue = CreateBoolean(theEnv,GetResetGlobals(theEnv));
152
+ }
153
+
154
+ /****************************************/
155
+ /* GetResetGlobals: C access routine */
156
+ /* for the get-reset-globals command. */
157
+ /****************************************/
158
+ bool GetResetGlobals(
159
+ Environment *theEnv)
160
+ {
161
+ return(DefglobalData(theEnv)->ResetGlobals);
162
+ }
163
+
164
+ #if DEBUGGING_FUNCTIONS
165
+
166
+ /***********************************************/
167
+ /* ShowDefglobalsCommand: H/L access routine */
168
+ /* for the show-defglobals command. */
169
+ /***********************************************/
170
+ void ShowDefglobalsCommand(
171
+ Environment *theEnv,
172
+ UDFContext *context,
173
+ UDFValue *returnValue)
174
+ {
175
+ Defmodule *theModule;
176
+ unsigned int numArgs;
177
+ bool error;
178
+
179
+ numArgs = UDFArgumentCount(context);
180
+
181
+ if (numArgs == 1)
182
+ {
183
+ theModule = GetModuleName(context,1,&error);
184
+ if (error) return;
185
+ }
186
+ else
187
+ { theModule = GetCurrentModule(theEnv); }
188
+
189
+ ShowDefglobals(theEnv,STDOUT,theModule);
190
+ }
191
+
192
+ /**************************************/
193
+ /* ShowDefglobals: C access routine */
194
+ /* for the show-defglobals command. */
195
+ /**************************************/
196
+ void ShowDefglobals(
197
+ Environment *theEnv,
198
+ const char *logicalName,
199
+ Defmodule *theModule)
200
+ {
201
+ ConstructHeader *constructPtr;
202
+ bool allModules = false;
203
+ struct defmoduleItemHeader *theModuleItem;
204
+
205
+ /*=====================================*/
206
+ /* If embedded, clear the error flags. */
207
+ /*=====================================*/
208
+
209
+ if (EvaluationData(theEnv)->CurrentExpression == NULL)
210
+ { ResetErrorFlags(theEnv); }
211
+
212
+ /*=======================================*/
213
+ /* If the module specified is NULL, then */
214
+ /* list all constructs in all modules. */
215
+ /*=======================================*/
216
+
217
+ if (theModule == NULL)
218
+ {
219
+ theModule = GetNextDefmodule(theEnv,NULL);
220
+ allModules = true;
221
+ }
222
+
223
+ /*======================================================*/
224
+ /* Print out the constructs in the specified module(s). */
225
+ /*======================================================*/
226
+
227
+ for (;
228
+ theModule != NULL;
229
+ theModule = GetNextDefmodule(theEnv,theModule))
230
+ {
231
+ /*===========================================*/
232
+ /* Print the module name before every group */
233
+ /* of defglobals listed if we're listing the */
234
+ /* defglobals from every module. */
235
+ /*===========================================*/
236
+
237
+ if (allModules)
238
+ {
239
+ WriteString(theEnv,logicalName,DefmoduleName(theModule));
240
+ WriteString(theEnv,logicalName,":\n");
241
+ }
242
+
243
+ /*=====================================*/
244
+ /* Print every defglobal in the module */
245
+ /* currently being examined. */
246
+ /*=====================================*/
247
+
248
+ theModuleItem = (struct defmoduleItemHeader *) GetModuleItem(theEnv,theModule,DefglobalData(theEnv)->DefglobalModuleIndex);
249
+
250
+ for (constructPtr = theModuleItem->firstItem;
251
+ constructPtr != NULL;
252
+ constructPtr = constructPtr->next)
253
+ {
254
+ if (EvaluationData(theEnv)->HaltExecution == true) return;
255
+
256
+ if (allModules) WriteString(theEnv,logicalName," ");
257
+ PrintDefglobalValueForm(theEnv,logicalName,(Defglobal *) constructPtr);
258
+ WriteString(theEnv,logicalName,"\n");
259
+ }
260
+
261
+ /*===================================*/
262
+ /* If we're only listing the globals */
263
+ /* for one module, then return. */
264
+ /*===================================*/
265
+
266
+ if (! allModules) return;
267
+ }
268
+ }
269
+
270
+ /*****************************************************/
271
+ /* PrintDefglobalValueForm: Prints the value form of */
272
+ /* a defglobal (the current value). For example, */
273
+ /* ?*x* = 3 */
274
+ /*****************************************************/
275
+ static void PrintDefglobalValueForm(
276
+ Environment *theEnv,
277
+ const char *logicalName,
278
+ Defglobal *theGlobal)
279
+ {
280
+ WriteString(theEnv,logicalName,"?*");
281
+ WriteString(theEnv,logicalName,theGlobal->header.name->contents);
282
+ WriteString(theEnv,logicalName,"* = ");
283
+ WriteCLIPSValue(theEnv,logicalName,&theGlobal->current);
284
+ }
285
+
286
+ #endif /* DEBUGGING_FUNCTIONS */
287
+
288
+ #endif /* DEFGLOBAL_CONSTRUCT */
289
+