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,91 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 10/03/19 */
5
+ /* */
6
+ /* CONSTRAINT CHECKING HEADER FILE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Provides functions for constraint checking of */
11
+ /* data types. */
12
+ /* */
13
+ /* Principal Programmer(s): */
14
+ /* Gary D. Riley */
15
+ /* */
16
+ /* Contributing Programmer(s): */
17
+ /* */
18
+ /* Revision History: */
19
+ /* */
20
+ /* 6.24: Added allowed-classes slot facet. */
21
+ /* */
22
+ /* 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
+ /* Support for long long integers. */
29
+ /* */
30
+ /* Added const qualifiers to remove C++ */
31
+ /* deprecation warnings. */
32
+ /* */
33
+ /* Dynamic constraint checking for the */
34
+ /* allowed-classes constraint now searches */
35
+ /* imported modules. */
36
+ /* */
37
+ /* 6.40: Removed LOCALE definition. */
38
+ /* */
39
+ /* Pragma once and other inclusion changes. */
40
+ /* */
41
+ /* Added support for booleans with <stdbool.h>. */
42
+ /* */
43
+ /* Removed use of void pointers for specific */
44
+ /* data structures. */
45
+ /* */
46
+ /* UDF redesign. */
47
+ /* */
48
+ /* Eval support for run time and bload only. */
49
+ /* */
50
+ /*************************************************************/
51
+
52
+ #ifndef _H_cstrnchk
53
+
54
+ #pragma once
55
+
56
+ #define _H_cstrnchk
57
+
58
+ #include "constrnt.h"
59
+ #include "evaluatn.h"
60
+
61
+ typedef enum
62
+ {
63
+ NO_VIOLATION,
64
+ TYPE_VIOLATION,
65
+ RANGE_VIOLATION,
66
+ ALLOWED_VALUES_VIOLATION,
67
+ FUNCTION_RETURN_TYPE_VIOLATION,
68
+ CARDINALITY_VIOLATION,
69
+ ALLOWED_CLASSES_VIOLATION
70
+ } ConstraintViolationType;
71
+
72
+ bool CheckCardinalityConstraint(Environment *,size_t,CONSTRAINT_RECORD *);
73
+ bool CheckAllowedValuesConstraint(int,void *,CONSTRAINT_RECORD *);
74
+ bool CheckAllowedClassesConstraint(Environment *,int,void *,CONSTRAINT_RECORD *);
75
+ ConstraintViolationType ConstraintCheckExpressionChain(Environment *,struct expr *,
76
+ CONSTRAINT_RECORD *);
77
+ void ConstraintViolationErrorMessage(Environment *,const char *,const char *,bool,
78
+ unsigned short,CLIPSLexeme *,unsigned short,
79
+ ConstraintViolationType,CONSTRAINT_RECORD *,bool);
80
+ ConstraintViolationType ConstraintCheckValue(Environment *,int,void *,CONSTRAINT_RECORD *);
81
+ ConstraintViolationType ConstraintCheckDataObject(Environment *,UDFValue *,CONSTRAINT_RECORD *);
82
+ #if (! BLOAD_ONLY) && (! RUN_TIME)
83
+ ConstraintViolationType ConstraintCheckExpression(Environment *,struct expr *,
84
+ CONSTRAINT_RECORD *);
85
+ #endif
86
+ bool UnmatchableConstraint(struct constraintRecord *);
87
+
88
+ #endif /* _H_cstrnchk */
89
+
90
+
91
+
@@ -0,0 +1,238 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 12/02/19 */
5
+ /* */
6
+ /* CONSTRAINT CONSTRUCTS-TO-C MODULE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Implements the constructs-to-c feature for */
11
+ /* constraint records. */
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.24: Added allowed-classes slot facet. */
22
+ /* */
23
+ /* Added environment parameter to GenClose. */
24
+ /* */
25
+ /* 6.30: 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 CONSTRUCT_COMPILER && (! RUN_TIME)
43
+
44
+ #include "constant.h"
45
+
46
+ #include "conscomp.h"
47
+ #include "envrnmnt.h"
48
+ #include "memalloc.h"
49
+ #include "prntutil.h"
50
+ #include "router.h"
51
+ #include "sysdep.h"
52
+
53
+ #include "cstrncmp.h"
54
+
55
+ /***********************************************/
56
+ /* ConstraintsToCode: Produces the constraint */
57
+ /* record code for a run-time module created */
58
+ /* using the constructs-to-c function. */
59
+ /***********************************************/
60
+ void ConstraintsToCode(
61
+ Environment *theEnv,
62
+ const char *fileName,
63
+ const char *pathName,
64
+ char *fileNameBuffer,
65
+ unsigned fileID,
66
+ FILE *headerFP,
67
+ unsigned imageID,
68
+ unsigned maxIndices)
69
+ {
70
+ unsigned int i, j;
71
+ unsigned long count;
72
+ bool newHeader = true;
73
+ FILE *fp;
74
+ unsigned int version = 1;
75
+ int arrayVersion = 1;
76
+ unsigned long numberOfConstraints = 0;
77
+ CONSTRAINT_RECORD *tmpPtr;
78
+
79
+ /*===============================================*/
80
+ /* Count the total number of constraint records. */
81
+ /*===============================================*/
82
+
83
+ for (i = 0 ; i < SIZE_CONSTRAINT_HASH; i++)
84
+ {
85
+ for (tmpPtr = ConstraintData(theEnv)->ConstraintHashtable[i];
86
+ tmpPtr != NULL;
87
+ tmpPtr = tmpPtr->next)
88
+ { tmpPtr->bsaveID = numberOfConstraints++; }
89
+ }
90
+
91
+ /*=====================================================*/
92
+ /* If dynamic constraint checking is disabled, then */
93
+ /* contraints won't be saved. If there are constraints */
94
+ /* which could be saved, then issue a warning message. */
95
+ /*=====================================================*/
96
+
97
+ if ((! GetDynamicConstraintChecking(theEnv)) && (numberOfConstraints != 0))
98
+ {
99
+ numberOfConstraints = 0;
100
+ PrintWarningID(theEnv,"CSTRNCMP",1,false);
101
+ WriteString(theEnv,STDWRN,"Constraints are not saved with a constructs-to-c image\n");
102
+ WriteString(theEnv,STDWRN," when dynamic constraint checking is disabled.\n");
103
+ }
104
+
105
+ if (numberOfConstraints == 0)
106
+ { return; }
107
+
108
+ /*=================================================*/
109
+ /* Print the extern definition in the header file. */
110
+ /*=================================================*/
111
+
112
+ for (i = 1; i <= (numberOfConstraints / maxIndices) + 1 ; i++)
113
+ { fprintf(headerFP,"extern CONSTRAINT_RECORD C%d_%d[];\n",imageID,i); }
114
+
115
+ /*==================*/
116
+ /* Create the file. */
117
+ /*==================*/
118
+
119
+ if ((fp = NewCFile(theEnv,fileName,pathName,fileNameBuffer,fileID,version,false)) == NULL) return;
120
+
121
+ /*===================*/
122
+ /* List the entries. */
123
+ /*===================*/
124
+
125
+ j = 0;
126
+ count = 0;
127
+
128
+ for (i = 0; i < SIZE_CONSTRAINT_HASH; i++)
129
+ {
130
+ for (tmpPtr = ConstraintData(theEnv)->ConstraintHashtable[i];
131
+ tmpPtr != NULL;
132
+ tmpPtr = tmpPtr->next)
133
+ {
134
+ if (newHeader)
135
+ {
136
+ fprintf(fp,"CONSTRAINT_RECORD C%d_%d[] = {\n",imageID,arrayVersion);
137
+ newHeader = false;
138
+ }
139
+
140
+ fprintf(fp,"{%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
141
+ tmpPtr->anyAllowed,
142
+ tmpPtr->symbolsAllowed,
143
+ tmpPtr->stringsAllowed,
144
+ tmpPtr->floatsAllowed,
145
+ tmpPtr->integersAllowed,
146
+ tmpPtr->instanceNamesAllowed,
147
+ tmpPtr->instanceAddressesAllowed,
148
+ tmpPtr->externalAddressesAllowed,
149
+ tmpPtr->factAddressesAllowed,
150
+ 0, /* void allowed */
151
+ tmpPtr->anyRestriction,
152
+ tmpPtr->symbolRestriction,
153
+ tmpPtr->stringRestriction,
154
+ tmpPtr->floatRestriction,
155
+ tmpPtr->integerRestriction,
156
+ tmpPtr->classRestriction,
157
+ tmpPtr->instanceNameRestriction,
158
+ tmpPtr->multifieldsAllowed,
159
+ tmpPtr->singlefieldsAllowed,
160
+ tmpPtr->installed);
161
+
162
+ fprintf(fp,",0,"); /* bsaveIndex */
163
+
164
+ PrintHashedExpressionReference(theEnv,fp,tmpPtr->classList,imageID,maxIndices);
165
+ fprintf(fp,",");
166
+ PrintHashedExpressionReference(theEnv,fp,tmpPtr->restrictionList,imageID,maxIndices);
167
+ fprintf(fp,",");
168
+ PrintHashedExpressionReference(theEnv,fp,tmpPtr->minValue,imageID,maxIndices);
169
+ fprintf(fp,",");
170
+ PrintHashedExpressionReference(theEnv,fp,tmpPtr->maxValue,imageID,maxIndices);
171
+ fprintf(fp,",");
172
+ PrintHashedExpressionReference(theEnv,fp,tmpPtr->minFields,imageID,maxIndices);
173
+ fprintf(fp,",");
174
+ PrintHashedExpressionReference(theEnv,fp,tmpPtr->maxFields,imageID,maxIndices);
175
+
176
+ /* multifield slot */
177
+
178
+ fprintf(fp,",NULL");
179
+
180
+ /* next slot */
181
+
182
+ if (tmpPtr->next == NULL)
183
+ { fprintf(fp,",NULL,"); }
184
+ else
185
+ {
186
+ if ((j + 1) >= maxIndices)
187
+ { fprintf(fp,",&C%d_%d[%d],",imageID,arrayVersion + 1,0); }
188
+ else
189
+ { fprintf(fp,",&C%d_%d[%d],",imageID,arrayVersion,j + 1); }
190
+ }
191
+
192
+ fprintf(fp,"%u,%u",tmpPtr->bucket,tmpPtr->count + 1);
193
+
194
+ count++;
195
+ j++;
196
+
197
+ if ((count == numberOfConstraints) || (j >= maxIndices))
198
+ {
199
+ fprintf(fp,"}};\n");
200
+ GenClose(theEnv,fp);
201
+ j = 0;
202
+ version++;
203
+ arrayVersion++;
204
+ if (count < numberOfConstraints)
205
+ {
206
+ if ((fp = NewCFile(theEnv,fileName,pathName,fileNameBuffer,1,version,false)) == NULL)
207
+ { return; }
208
+ newHeader = true;
209
+ }
210
+ }
211
+ else
212
+ { fprintf(fp,"},\n"); }
213
+ }
214
+ }
215
+ }
216
+
217
+ /**********************************************************/
218
+ /* PrintConstraintReference: Prints C code representation */
219
+ /* of a constraint record data structure reference. */
220
+ /**********************************************************/
221
+ void PrintConstraintReference(
222
+ Environment *theEnv,
223
+ FILE *fp,
224
+ CONSTRAINT_RECORD *cPtr,
225
+ unsigned int imageID,
226
+ unsigned int maxIndices)
227
+ {
228
+ if ((cPtr == NULL) || (! GetDynamicConstraintChecking(theEnv)))
229
+ { fprintf(fp,"NULL"); }
230
+ else fprintf(fp,"&C%u_%ld[%ld]",imageID,
231
+ (cPtr->bsaveID / maxIndices) + 1,
232
+ cPtr->bsaveID % maxIndices);
233
+ }
234
+
235
+ #endif /* CONSTRUCT_COMPILER && (! RUN_TIME) */
236
+
237
+
238
+
@@ -0,0 +1,57 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 07/30/16 */
5
+ /* */
6
+ /* CONSTRAINT CONSTRUCTS-TO-C HEADER */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Implements the constructs-to-c feature for */
11
+ /* constraint records. */
12
+ /* */
13
+ /* Principal Programmer(s): */
14
+ /* Gary D. Riley */
15
+ /* */
16
+ /* Contributing Programmer(s): */
17
+ /* */
18
+ /* Revision History: */
19
+ /* */
20
+ /* 6.24: Added allowed-classes slot facet. */
21
+ /* */
22
+ /* Added environment parameter to GenClose. */
23
+ /* */
24
+ /* 6.30: Added support for path name argument to */
25
+ /* constructs-to-c. */
26
+ /* */
27
+ /* Added const qualifiers to remove C++ */
28
+ /* deprecation warnings. */
29
+ /* */
30
+ /* 6.40: Removed LOCALE definition. */
31
+ /* */
32
+ /* Pragma once and other inclusion changes. */
33
+ /* */
34
+ /* Removed use of void pointers for specific */
35
+ /* data structures. */
36
+ /* */
37
+ /*************************************************************/
38
+
39
+ #ifndef _H_cstrncmp
40
+
41
+ #pragma once
42
+
43
+ #define _H_cstrncmp
44
+
45
+ #include "evaluatn.h"
46
+ #include "constrnt.h"
47
+
48
+ #include <stdio.h>
49
+
50
+ void PrintConstraintReference(Environment *,FILE *,CONSTRAINT_RECORD *,
51
+ unsigned int,unsigned int);
52
+ void ConstraintRecordToCode(FILE *,CONSTRAINT_RECORD *);
53
+ void ConstraintsToCode(Environment *,const char *,const char *,char *,
54
+ unsigned int,FILE *,unsigned int,unsigned int);
55
+
56
+ #endif /* _H_cstrncmp */
57
+