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,345 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/30/16 */
5
+ /* */
6
+ /* */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Definstances Construct Compiler Code */
11
+ /* */
12
+ /* Principal Programmer(s): */
13
+ /* Brian L. Dantes */
14
+ /* */
15
+ /* Contributing Programmer(s): */
16
+ /* */
17
+ /* Revision History: */
18
+ /* */
19
+ /* 6.30: Added support for path name argument to */
20
+ /* constructs-to-c. */
21
+ /* */
22
+ /* Added const qualifiers to remove C++ */
23
+ /* deprecation warnings. */
24
+ /* */
25
+ /* 6.40: Pragma once and other inclusion changes. */
26
+ /* */
27
+ /* Added support for booleans with <stdbool.h>. */
28
+ /* */
29
+ /* Removed use of void pointers for specific */
30
+ /* data structures. */
31
+ /* */
32
+ /*************************************************************/
33
+
34
+ /* =========================================
35
+ *****************************************
36
+ EXTERNAL DEFINITIONS
37
+ =========================================
38
+ ***************************************** */
39
+ #include "setup.h"
40
+
41
+ #if DEFINSTANCES_CONSTRUCT && CONSTRUCT_COMPILER && (! RUN_TIME)
42
+
43
+ #include "conscomp.h"
44
+ #include "defins.h"
45
+ #include "envrnmnt.h"
46
+
47
+ #include "dfinscmp.h"
48
+
49
+ /***************************************/
50
+ /* LOCAL INTERNAL FUNCTION DEFINITIONS */
51
+ /***************************************/
52
+
53
+ static void ReadyDefinstancesForCode(Environment *);
54
+ static bool DefinstancesToCode(Environment *,const char *,const char *,char *,unsigned int,
55
+ FILE *,unsigned int,unsigned int);
56
+ static void CloseDefinstancesFiles(Environment *,FILE *,FILE *,unsigned int);
57
+ static void DefinstancesModuleToCode(Environment *,FILE *,Defmodule *,unsigned int,unsigned int);
58
+ static void SingleDefinstancesToCode(Environment*,FILE *,Definstances *,unsigned int,unsigned int,unsigned int);
59
+ static void InitDefinstancesCode(Environment *,FILE *,unsigned int,unsigned int);
60
+
61
+ /* =========================================
62
+ *****************************************
63
+ EXTERNALLY VISIBLE FUNCTIONS
64
+ =========================================
65
+ ***************************************** */
66
+
67
+ /***************************************************
68
+ NAME : SetupDefinstancesCompiler
69
+ DESCRIPTION : Initializes the construct compiler
70
+ item for definstances
71
+ INPUTS : None
72
+ RETURNS : Nothing useful
73
+ SIDE EFFECTS : Code generator item initialized
74
+ NOTES : None
75
+ ***************************************************/
76
+ void SetupDefinstancesCompiler(
77
+ Environment *theEnv)
78
+ {
79
+ DefinstancesData(theEnv)->DefinstancesCodeItem = AddCodeGeneratorItem(theEnv,"definstances",0,ReadyDefinstancesForCode,
80
+ InitDefinstancesCode,DefinstancesToCode,2);
81
+ }
82
+
83
+
84
+ /****************************************************
85
+ NAME : DefinstancesCModuleReference
86
+ DESCRIPTION : Prints out a reference to a
87
+ definstances module
88
+ INPUTS : 1) The output file
89
+ 2) The id of the module item
90
+ 3) The id of the image
91
+ 4) The maximum number of elements
92
+ allowed in an array
93
+ RETURNS : Nothing useful
94
+ SIDE EFFECTS : Definstances module reference printed
95
+ NOTES : None
96
+ ****************************************************/
97
+ void DefinstancesCModuleReference(
98
+ Environment *theEnv,
99
+ FILE *theFile,
100
+ unsigned long count,
101
+ unsigned int imageID,
102
+ unsigned int maxIndices)
103
+ {
104
+ fprintf(theFile,"MIHS &%s%u_%lu[%lu]",
105
+ ModulePrefix(DefinstancesData(theEnv)->DefinstancesCodeItem),
106
+ imageID,
107
+ (count / maxIndices) + 1,
108
+ (count % maxIndices));
109
+ }
110
+
111
+ /* =========================================
112
+ *****************************************
113
+ INTERNALLY VISIBLE FUNCTIONS
114
+ =========================================
115
+ ***************************************** */
116
+
117
+ /***************************************************
118
+ NAME : ReadyDefinstancesForCode
119
+ DESCRIPTION : Sets index of deffunctions
120
+ for use in compiled expressions
121
+ INPUTS : None
122
+ RETURNS : Nothing useful
123
+ SIDE EFFECTS : BsaveIndices set
124
+ NOTES : None
125
+ ***************************************************/
126
+ static void ReadyDefinstancesForCode(
127
+ Environment *theEnv)
128
+ {
129
+ MarkConstructBsaveIDs(theEnv,DefinstancesData(theEnv)->DefinstancesModuleIndex);
130
+ }
131
+
132
+ /***************************************************/
133
+ /* InitDefinstancesCode: Writes out initialization */
134
+ /* code for definstances for a run-time module. */
135
+ /***************************************************/
136
+ static void InitDefinstancesCode(
137
+ Environment *theEnv,
138
+ FILE *initFP,
139
+ unsigned int imageID,
140
+ unsigned int maxIndices)
141
+ {
142
+ #if MAC_XCD
143
+ #pragma unused(maxIndices)
144
+ #pragma unused(imageID)
145
+ #pragma unused(theEnv)
146
+ #endif
147
+ fprintf(initFP," DefinstancesRunTimeInitialize(theEnv);\n");
148
+ }
149
+
150
+ /*******************************************************
151
+ NAME : DefinstancesToCode
152
+ DESCRIPTION : Writes out static array code for
153
+ definstances
154
+ INPUTS : 1) The base name of the construct set
155
+ 2) The base id for this construct
156
+ 3) The file pointer for the header file
157
+ 4) The base id for the construct set
158
+ 5) The max number of indices allowed
159
+ in an array
160
+ RETURNS : False on errors,
161
+ True if definstances written
162
+ SIDE EFFECTS : Code written to files
163
+ NOTES : None
164
+ *******************************************************/
165
+ static bool DefinstancesToCode(
166
+ Environment *theEnv,
167
+ const char *fileName,
168
+ const char *pathName,
169
+ char *fileNameBuffer,
170
+ unsigned int fileID,
171
+ FILE *headerFP,
172
+ unsigned int imageID,
173
+ unsigned int maxIndices)
174
+ {
175
+ unsigned int fileCount = 1;
176
+ Defmodule *theModule;
177
+ Definstances *theDefinstances;
178
+ unsigned int moduleCount = 0, moduleArrayCount = 0, moduleArrayVersion = 1;
179
+ unsigned int definstancesArrayCount = 0, definstancesArrayVersion = 1;
180
+ FILE *moduleFile = NULL, *definstancesFile = NULL;
181
+
182
+ /* ================================================
183
+ Include the appropriate definstances header file
184
+ ================================================ */
185
+ fprintf(headerFP,"#include \"defins.h\"\n");
186
+
187
+ /* =============================================================
188
+ Loop through all the modules and all the definstances writing
189
+ their C code representation to the file as they are traversed
190
+ ============================================================= */
191
+ theModule = GetNextDefmodule(theEnv,NULL);
192
+
193
+ while (theModule != NULL)
194
+ {
195
+ SetCurrentModule(theEnv,theModule);
196
+
197
+ moduleFile = OpenFileIfNeeded(theEnv,moduleFile,fileName,pathName,fileNameBuffer,fileID,imageID,&fileCount,
198
+ moduleArrayVersion,headerFP,
199
+ "DEFINSTANCES_MODULE",ModulePrefix(DefinstancesData(theEnv)->DefinstancesCodeItem),
200
+ false,NULL);
201
+
202
+ if (moduleFile == NULL)
203
+ {
204
+ CloseDefinstancesFiles(theEnv,moduleFile,definstancesFile,maxIndices);
205
+ return false;
206
+ }
207
+
208
+ DefinstancesModuleToCode(theEnv,moduleFile,theModule,imageID,maxIndices);
209
+ moduleFile = CloseFileIfNeeded(theEnv,moduleFile,&moduleArrayCount,&moduleArrayVersion,
210
+ maxIndices,NULL,NULL);
211
+
212
+ theDefinstances = GetNextDefinstances(theEnv,NULL);
213
+
214
+ while (theDefinstances != NULL)
215
+ {
216
+ definstancesFile = OpenFileIfNeeded(theEnv,definstancesFile,fileName,pathName,fileNameBuffer,fileID,imageID,&fileCount,
217
+ definstancesArrayVersion,headerFP,
218
+ "Definstances",ConstructPrefix(DefinstancesData(theEnv)->DefinstancesCodeItem),
219
+ false,NULL);
220
+ if (definstancesFile == NULL)
221
+ {
222
+ CloseDefinstancesFiles(theEnv,moduleFile,definstancesFile,maxIndices);
223
+ return false;
224
+ }
225
+
226
+ SingleDefinstancesToCode(theEnv,definstancesFile,theDefinstances,imageID,
227
+ maxIndices,moduleCount);
228
+ definstancesArrayCount++;
229
+ definstancesFile = CloseFileIfNeeded(theEnv,definstancesFile,&definstancesArrayCount,
230
+ &definstancesArrayVersion,maxIndices,NULL,NULL);
231
+
232
+ theDefinstances = GetNextDefinstances(theEnv,theDefinstances);
233
+ }
234
+
235
+ theModule = GetNextDefmodule(theEnv,theModule);
236
+ moduleCount++;
237
+ moduleArrayCount++;
238
+ }
239
+
240
+ CloseDefinstancesFiles(theEnv,moduleFile,definstancesFile,maxIndices);
241
+
242
+ return true;
243
+ }
244
+
245
+ /***************************************************
246
+ NAME : CloseDefinstancesFiles
247
+ DESCRIPTION : Closes construct compiler files
248
+ for definstances structures
249
+ INPUTS : 1) The definstances module file
250
+ 2) The definstances structure file
251
+ 3) The maximum number of indices
252
+ allowed in an array
253
+ RETURNS : Nothing useful
254
+ SIDE EFFECTS : Files closed
255
+ NOTES : None
256
+ ***************************************************/
257
+ static void CloseDefinstancesFiles(
258
+ Environment *theEnv,
259
+ FILE *moduleFile,
260
+ FILE *definstancesFile,
261
+ unsigned int maxIndices)
262
+ {
263
+ unsigned int count = maxIndices;
264
+ unsigned int arrayVersion = 0;
265
+
266
+ if (definstancesFile != NULL)
267
+ {
268
+ count = maxIndices;
269
+ CloseFileIfNeeded(theEnv,definstancesFile,&count,&arrayVersion,
270
+ maxIndices,NULL,NULL);
271
+ }
272
+
273
+ if (moduleFile != NULL)
274
+ {
275
+ count = maxIndices;
276
+ CloseFileIfNeeded(theEnv,moduleFile,&count,&arrayVersion,maxIndices,NULL,NULL);
277
+ }
278
+ }
279
+
280
+ /***************************************************
281
+ NAME : DefinstancesModuleToCode
282
+ DESCRIPTION : Writes out the C values for a
283
+ definstances module item
284
+ INPUTS : 1) The output file
285
+ 2) The module for the definstances
286
+ 3) The compile image id
287
+ 4) The maximum number of elements
288
+ in an array
289
+ RETURNS : Nothing useful
290
+ SIDE EFFECTS : Definstances module item written
291
+ NOTES : None
292
+ ***************************************************/
293
+ static void DefinstancesModuleToCode(
294
+ Environment *theEnv,
295
+ FILE *theFile,
296
+ Defmodule *theModule,
297
+ unsigned int imageID,
298
+ unsigned int maxIndices)
299
+ {
300
+ fprintf(theFile,"{");
301
+ ConstructModuleToCode(theEnv,theFile,theModule,imageID,maxIndices,
302
+ DefinstancesData(theEnv)->DefinstancesModuleIndex,ConstructPrefix(DefinstancesData(theEnv)->DefinstancesCodeItem));
303
+ fprintf(theFile,"}");
304
+ }
305
+
306
+ /***************************************************
307
+ NAME : SingleDefinstancesToCode
308
+ DESCRIPTION : Writes out a single definstances'
309
+ data to the file
310
+ INPUTS : 1) The output file
311
+ 2) The definstances
312
+ 3) The compile image id
313
+ 4) The maximum number of
314
+ elements in an array
315
+ 5) The module index
316
+ RETURNS : Nothing useful
317
+ SIDE EFFECTS : Definstances data written
318
+ NOTES : None
319
+ ***************************************************/
320
+ static void SingleDefinstancesToCode(
321
+ Environment *theEnv,
322
+ FILE *theFile,
323
+ Definstances *theDefinstances,
324
+ unsigned int imageID,
325
+ unsigned int maxIndices,
326
+ unsigned int moduleCount)
327
+ {
328
+ /* ===================
329
+ Definstances Header
330
+ =================== */
331
+
332
+ fprintf(theFile,"{");
333
+ ConstructHeaderToCode(theEnv,theFile,&theDefinstances->header,imageID,maxIndices,moduleCount,
334
+ ModulePrefix(DefinstancesData(theEnv)->DefinstancesCodeItem),
335
+ ConstructPrefix(DefinstancesData(theEnv)->DefinstancesCodeItem));
336
+
337
+ /* ==========================
338
+ Definstances specific data
339
+ ========================== */
340
+ fprintf(theFile,",0,");
341
+ ExpressionToCode(theEnv,theFile,theDefinstances->mkinstance);
342
+ fprintf(theFile,"}");
343
+ }
344
+
345
+ #endif
@@ -0,0 +1,48 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/30/16 */
5
+ /* */
6
+ /* */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Definstances Construct Compiler Code */
11
+ /* */
12
+ /* Principal Programmer(s): */
13
+ /* Brian L. Dantes */
14
+ /* */
15
+ /* Contributing Programmer(s): */
16
+ /* */
17
+ /* Revision History: */
18
+ /* */
19
+ /* 6.30: Added support for path name argument to */
20
+ /* constructs-to-c. */
21
+ /* */
22
+ /* 6.40: Removed LOCALE definition. */
23
+ /* */
24
+ /* Pragma once and other inclusion changes. */
25
+ /* */
26
+ /* Removed use of void pointers for specific */
27
+ /* data structures. */
28
+ /* */
29
+ /*************************************************************/
30
+
31
+ #ifndef _H_dfinscmp
32
+
33
+ #pragma once
34
+
35
+ #define _H_dfinscmp
36
+
37
+ #if DEFINSTANCES_CONSTRUCT && CONSTRUCT_COMPILER && (! RUN_TIME)
38
+
39
+ #include <stdio.h>
40
+
41
+ void SetupDefinstancesCompiler(Environment *);
42
+ void DefinstancesCModuleReference(Environment *,FILE *,unsigned long,unsigned int,unsigned int);
43
+
44
+ #endif /* DEFINSTANCES_CONSTRUCT && CONSTRUCT_COMPILER && (! RUN_TIME) */
45
+
46
+ #endif /* _H_dfinscmp */
47
+
48
+