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.
- checksums.yaml +7 -0
- data/ext/clipsruby/agenda.c +1373 -0
- data/ext/clipsruby/agenda.h +169 -0
- data/ext/clipsruby/analysis.c +1142 -0
- data/ext/clipsruby/analysis.h +61 -0
- data/ext/clipsruby/argacces.c +526 -0
- data/ext/clipsruby/argacces.h +77 -0
- data/ext/clipsruby/bload.c +884 -0
- data/ext/clipsruby/bload.h +94 -0
- data/ext/clipsruby/bmathfun.c +557 -0
- data/ext/clipsruby/bmathfun.h +66 -0
- data/ext/clipsruby/bsave.c +634 -0
- data/ext/clipsruby/bsave.h +130 -0
- data/ext/clipsruby/classcom.c +976 -0
- data/ext/clipsruby/classcom.h +115 -0
- data/ext/clipsruby/classexm.c +1376 -0
- data/ext/clipsruby/classexm.h +97 -0
- data/ext/clipsruby/classfun.c +1392 -0
- data/ext/clipsruby/classfun.h +164 -0
- data/ext/clipsruby/classinf.c +1245 -0
- data/ext/clipsruby/classinf.h +94 -0
- data/ext/clipsruby/classini.c +843 -0
- data/ext/clipsruby/classini.h +75 -0
- data/ext/clipsruby/classpsr.c +957 -0
- data/ext/clipsruby/classpsr.h +73 -0
- data/ext/clipsruby/clips.h +133 -0
- data/ext/clipsruby/clipsruby.c +619 -0
- data/ext/clipsruby/clsltpsr.c +931 -0
- data/ext/clipsruby/clsltpsr.h +72 -0
- data/ext/clipsruby/commline.c +1217 -0
- data/ext/clipsruby/commline.h +131 -0
- data/ext/clipsruby/conscomp.c +1593 -0
- data/ext/clipsruby/conscomp.h +150 -0
- data/ext/clipsruby/constant.h +264 -0
- data/ext/clipsruby/constrct.c +1090 -0
- data/ext/clipsruby/constrct.h +216 -0
- data/ext/clipsruby/constrnt.c +554 -0
- data/ext/clipsruby/constrnt.h +132 -0
- data/ext/clipsruby/crstrtgy.c +1088 -0
- data/ext/clipsruby/crstrtgy.h +85 -0
- data/ext/clipsruby/cstrcbin.c +185 -0
- data/ext/clipsruby/cstrcbin.h +61 -0
- data/ext/clipsruby/cstrccmp.h +43 -0
- data/ext/clipsruby/cstrccom.c +1791 -0
- data/ext/clipsruby/cstrccom.h +115 -0
- data/ext/clipsruby/cstrcpsr.c +835 -0
- data/ext/clipsruby/cstrcpsr.h +97 -0
- data/ext/clipsruby/cstrnbin.c +282 -0
- data/ext/clipsruby/cstrnbin.h +55 -0
- data/ext/clipsruby/cstrnchk.c +826 -0
- data/ext/clipsruby/cstrnchk.h +91 -0
- data/ext/clipsruby/cstrncmp.c +238 -0
- data/ext/clipsruby/cstrncmp.h +57 -0
- data/ext/clipsruby/cstrnops.c +1176 -0
- data/ext/clipsruby/cstrnops.h +47 -0
- data/ext/clipsruby/cstrnpsr.c +1394 -0
- data/ext/clipsruby/cstrnpsr.h +88 -0
- data/ext/clipsruby/cstrnutl.c +564 -0
- data/ext/clipsruby/cstrnutl.h +54 -0
- data/ext/clipsruby/default.c +454 -0
- data/ext/clipsruby/default.h +57 -0
- data/ext/clipsruby/defins.c +971 -0
- data/ext/clipsruby/defins.h +127 -0
- data/ext/clipsruby/developr.c +677 -0
- data/ext/clipsruby/developr.h +69 -0
- data/ext/clipsruby/dffctbin.c +477 -0
- data/ext/clipsruby/dffctbin.h +76 -0
- data/ext/clipsruby/dffctbsc.c +308 -0
- data/ext/clipsruby/dffctbsc.h +72 -0
- data/ext/clipsruby/dffctcmp.c +297 -0
- data/ext/clipsruby/dffctcmp.h +44 -0
- data/ext/clipsruby/dffctdef.c +364 -0
- data/ext/clipsruby/dffctdef.h +104 -0
- data/ext/clipsruby/dffctpsr.c +179 -0
- data/ext/clipsruby/dffctpsr.h +49 -0
- data/ext/clipsruby/dffnxbin.c +520 -0
- data/ext/clipsruby/dffnxbin.h +67 -0
- data/ext/clipsruby/dffnxcmp.c +378 -0
- data/ext/clipsruby/dffnxcmp.h +54 -0
- data/ext/clipsruby/dffnxexe.c +241 -0
- data/ext/clipsruby/dffnxexe.h +58 -0
- data/ext/clipsruby/dffnxfun.c +1192 -0
- data/ext/clipsruby/dffnxfun.h +155 -0
- data/ext/clipsruby/dffnxpsr.c +514 -0
- data/ext/clipsruby/dffnxpsr.h +57 -0
- data/ext/clipsruby/dfinsbin.c +509 -0
- data/ext/clipsruby/dfinsbin.h +66 -0
- data/ext/clipsruby/dfinscmp.c +345 -0
- data/ext/clipsruby/dfinscmp.h +48 -0
- data/ext/clipsruby/drive.c +1191 -0
- data/ext/clipsruby/drive.h +65 -0
- data/ext/clipsruby/emathfun.c +1213 -0
- data/ext/clipsruby/emathfun.h +99 -0
- data/ext/clipsruby/engine.c +1568 -0
- data/ext/clipsruby/engine.h +203 -0
- data/ext/clipsruby/entities.h +276 -0
- data/ext/clipsruby/envrnbld.c +514 -0
- data/ext/clipsruby/envrnbld.h +40 -0
- data/ext/clipsruby/envrnmnt.c +257 -0
- data/ext/clipsruby/envrnmnt.h +112 -0
- data/ext/clipsruby/evaluatn.c +1736 -0
- data/ext/clipsruby/evaluatn.h +211 -0
- data/ext/clipsruby/expressn.c +494 -0
- data/ext/clipsruby/expressn.h +154 -0
- data/ext/clipsruby/exprnbin.c +538 -0
- data/ext/clipsruby/exprnbin.h +60 -0
- data/ext/clipsruby/exprnops.c +564 -0
- data/ext/clipsruby/exprnops.h +67 -0
- data/ext/clipsruby/exprnpsr.c +1112 -0
- data/ext/clipsruby/exprnpsr.h +98 -0
- data/ext/clipsruby/extconf.rb +2 -0
- data/ext/clipsruby/extnfunc.c +1015 -0
- data/ext/clipsruby/extnfunc.h +157 -0
- data/ext/clipsruby/factbin.c +447 -0
- data/ext/clipsruby/factbin.h +56 -0
- data/ext/clipsruby/factbld.c +1035 -0
- data/ext/clipsruby/factbld.h +63 -0
- data/ext/clipsruby/factcmp.c +386 -0
- data/ext/clipsruby/factcmp.h +46 -0
- data/ext/clipsruby/factcom.c +759 -0
- data/ext/clipsruby/factcom.h +80 -0
- data/ext/clipsruby/factfile.c +1761 -0
- data/ext/clipsruby/factfile.h +54 -0
- data/ext/clipsruby/factfun.c +682 -0
- data/ext/clipsruby/factfun.h +77 -0
- data/ext/clipsruby/factgen.c +1305 -0
- data/ext/clipsruby/factgen.h +229 -0
- data/ext/clipsruby/facthsh.c +438 -0
- data/ext/clipsruby/facthsh.h +81 -0
- data/ext/clipsruby/factlhs.c +250 -0
- data/ext/clipsruby/factlhs.h +54 -0
- data/ext/clipsruby/factmch.c +905 -0
- data/ext/clipsruby/factmch.h +68 -0
- data/ext/clipsruby/factmngr.c +3373 -0
- data/ext/clipsruby/factmngr.h +325 -0
- data/ext/clipsruby/factprt.c +498 -0
- data/ext/clipsruby/factprt.h +60 -0
- data/ext/clipsruby/factqpsr.c +796 -0
- data/ext/clipsruby/factqpsr.h +61 -0
- data/ext/clipsruby/factqury.c +1267 -0
- data/ext/clipsruby/factqury.h +112 -0
- data/ext/clipsruby/factrete.c +978 -0
- data/ext/clipsruby/factrete.h +70 -0
- data/ext/clipsruby/factrhs.c +667 -0
- data/ext/clipsruby/factrhs.h +55 -0
- data/ext/clipsruby/filecom.c +353 -0
- data/ext/clipsruby/filecom.h +137 -0
- data/ext/clipsruby/filertr.c +481 -0
- data/ext/clipsruby/filertr.h +94 -0
- data/ext/clipsruby/fileutil.c +1020 -0
- data/ext/clipsruby/fileutil.h +50 -0
- data/ext/clipsruby/generate.c +1079 -0
- data/ext/clipsruby/generate.h +57 -0
- data/ext/clipsruby/genrcbin.c +902 -0
- data/ext/clipsruby/genrcbin.h +69 -0
- data/ext/clipsruby/genrccmp.c +640 -0
- data/ext/clipsruby/genrccmp.h +59 -0
- data/ext/clipsruby/genrccom.c +2017 -0
- data/ext/clipsruby/genrccom.h +119 -0
- data/ext/clipsruby/genrcexe.c +737 -0
- data/ext/clipsruby/genrcexe.h +73 -0
- data/ext/clipsruby/genrcfun.c +890 -0
- data/ext/clipsruby/genrcfun.h +185 -0
- data/ext/clipsruby/genrcpsr.c +1618 -0
- data/ext/clipsruby/genrcpsr.h +80 -0
- data/ext/clipsruby/globlbin.c +458 -0
- data/ext/clipsruby/globlbin.h +71 -0
- data/ext/clipsruby/globlbsc.c +361 -0
- data/ext/clipsruby/globlbsc.h +83 -0
- data/ext/clipsruby/globlcmp.c +330 -0
- data/ext/clipsruby/globlcmp.h +52 -0
- data/ext/clipsruby/globlcom.c +289 -0
- data/ext/clipsruby/globlcom.h +63 -0
- data/ext/clipsruby/globldef.c +1087 -0
- data/ext/clipsruby/globldef.h +151 -0
- data/ext/clipsruby/globlpsr.c +530 -0
- data/ext/clipsruby/globlpsr.h +59 -0
- data/ext/clipsruby/immthpsr.c +431 -0
- data/ext/clipsruby/immthpsr.h +55 -0
- data/ext/clipsruby/incrrset.c +530 -0
- data/ext/clipsruby/incrrset.h +73 -0
- data/ext/clipsruby/inherpsr.c +850 -0
- data/ext/clipsruby/inherpsr.h +52 -0
- data/ext/clipsruby/inscom.c +2076 -0
- data/ext/clipsruby/inscom.h +182 -0
- data/ext/clipsruby/insfile.c +1764 -0
- data/ext/clipsruby/insfile.h +96 -0
- data/ext/clipsruby/insfun.c +1451 -0
- data/ext/clipsruby/insfun.h +134 -0
- data/ext/clipsruby/insmngr.c +2550 -0
- data/ext/clipsruby/insmngr.h +125 -0
- data/ext/clipsruby/insmoddp.c +1041 -0
- data/ext/clipsruby/insmoddp.h +91 -0
- data/ext/clipsruby/insmult.c +804 -0
- data/ext/clipsruby/insmult.h +62 -0
- data/ext/clipsruby/inspsr.c +602 -0
- data/ext/clipsruby/inspsr.h +60 -0
- data/ext/clipsruby/insquery.c +1278 -0
- data/ext/clipsruby/insquery.h +115 -0
- data/ext/clipsruby/insqypsr.c +729 -0
- data/ext/clipsruby/insqypsr.h +63 -0
- data/ext/clipsruby/iofun.c +2045 -0
- data/ext/clipsruby/iofun.h +116 -0
- data/ext/clipsruby/lgcldpnd.c +644 -0
- data/ext/clipsruby/lgcldpnd.h +75 -0
- data/ext/clipsruby/main.c +112 -0
- data/ext/clipsruby/match.h +142 -0
- data/ext/clipsruby/memalloc.c +481 -0
- data/ext/clipsruby/memalloc.h +197 -0
- data/ext/clipsruby/miscfun.c +1801 -0
- data/ext/clipsruby/miscfun.h +132 -0
- data/ext/clipsruby/modulbin.c +607 -0
- data/ext/clipsruby/modulbin.h +84 -0
- data/ext/clipsruby/modulbsc.c +347 -0
- data/ext/clipsruby/modulbsc.h +67 -0
- data/ext/clipsruby/modulcmp.c +499 -0
- data/ext/clipsruby/modulcmp.h +54 -0
- data/ext/clipsruby/moduldef.c +817 -0
- data/ext/clipsruby/moduldef.h +271 -0
- data/ext/clipsruby/modulpsr.c +1150 -0
- data/ext/clipsruby/modulpsr.h +69 -0
- data/ext/clipsruby/modulutl.c +1036 -0
- data/ext/clipsruby/modulutl.h +84 -0
- data/ext/clipsruby/msgcom.c +1221 -0
- data/ext/clipsruby/msgcom.h +125 -0
- data/ext/clipsruby/msgfun.c +1076 -0
- data/ext/clipsruby/msgfun.h +118 -0
- data/ext/clipsruby/msgpass.c +1441 -0
- data/ext/clipsruby/msgpass.h +103 -0
- data/ext/clipsruby/msgpsr.c +698 -0
- data/ext/clipsruby/msgpsr.h +73 -0
- data/ext/clipsruby/multifld.c +1404 -0
- data/ext/clipsruby/multifld.h +130 -0
- data/ext/clipsruby/multifun.c +2182 -0
- data/ext/clipsruby/multifun.h +102 -0
- data/ext/clipsruby/network.h +142 -0
- data/ext/clipsruby/objbin.c +1522 -0
- data/ext/clipsruby/objbin.h +79 -0
- data/ext/clipsruby/objcmp.c +1507 -0
- data/ext/clipsruby/objcmp.h +71 -0
- data/ext/clipsruby/object.h +260 -0
- data/ext/clipsruby/objrtbin.c +701 -0
- data/ext/clipsruby/objrtbin.h +79 -0
- data/ext/clipsruby/objrtbld.c +2393 -0
- data/ext/clipsruby/objrtbld.h +66 -0
- data/ext/clipsruby/objrtcmp.c +734 -0
- data/ext/clipsruby/objrtcmp.h +66 -0
- data/ext/clipsruby/objrtfnx.c +1330 -0
- data/ext/clipsruby/objrtfnx.h +222 -0
- data/ext/clipsruby/objrtgen.c +736 -0
- data/ext/clipsruby/objrtgen.h +63 -0
- data/ext/clipsruby/objrtmch.c +1524 -0
- data/ext/clipsruby/objrtmch.h +160 -0
- data/ext/clipsruby/parsefun.c +415 -0
- data/ext/clipsruby/parsefun.h +67 -0
- data/ext/clipsruby/pattern.c +1265 -0
- data/ext/clipsruby/pattern.h +163 -0
- data/ext/clipsruby/pprint.c +328 -0
- data/ext/clipsruby/pprint.h +79 -0
- data/ext/clipsruby/prccode.c +1478 -0
- data/ext/clipsruby/prccode.h +145 -0
- data/ext/clipsruby/prcdrfun.c +640 -0
- data/ext/clipsruby/prcdrfun.h +95 -0
- data/ext/clipsruby/prcdrpsr.c +1068 -0
- data/ext/clipsruby/prcdrpsr.h +79 -0
- data/ext/clipsruby/prdctfun.c +869 -0
- data/ext/clipsruby/prdctfun.h +77 -0
- data/ext/clipsruby/prntutil.c +878 -0
- data/ext/clipsruby/prntutil.h +125 -0
- data/ext/clipsruby/proflfun.c +827 -0
- data/ext/clipsruby/proflfun.h +118 -0
- data/ext/clipsruby/reorder.c +2082 -0
- data/ext/clipsruby/reorder.h +172 -0
- data/ext/clipsruby/reteutil.c +1732 -0
- data/ext/clipsruby/reteutil.h +111 -0
- data/ext/clipsruby/retract.c +710 -0
- data/ext/clipsruby/retract.h +74 -0
- data/ext/clipsruby/router.c +737 -0
- data/ext/clipsruby/router.h +147 -0
- data/ext/clipsruby/rulebin.c +1136 -0
- data/ext/clipsruby/rulebin.h +153 -0
- data/ext/clipsruby/rulebld.c +1328 -0
- data/ext/clipsruby/rulebld.h +62 -0
- data/ext/clipsruby/rulebsc.c +517 -0
- data/ext/clipsruby/rulebsc.h +91 -0
- data/ext/clipsruby/rulecmp.c +733 -0
- data/ext/clipsruby/rulecmp.h +63 -0
- data/ext/clipsruby/rulecom.c +1583 -0
- data/ext/clipsruby/rulecom.h +116 -0
- data/ext/clipsruby/rulecstr.c +892 -0
- data/ext/clipsruby/rulecstr.h +53 -0
- data/ext/clipsruby/ruledef.c +559 -0
- data/ext/clipsruby/ruledef.h +179 -0
- data/ext/clipsruby/ruledlt.c +599 -0
- data/ext/clipsruby/ruledlt.h +58 -0
- data/ext/clipsruby/rulelhs.c +1216 -0
- data/ext/clipsruby/rulelhs.h +52 -0
- data/ext/clipsruby/rulepsr.c +1073 -0
- data/ext/clipsruby/rulepsr.h +61 -0
- data/ext/clipsruby/scanner.c +856 -0
- data/ext/clipsruby/scanner.h +112 -0
- data/ext/clipsruby/setup.h +488 -0
- data/ext/clipsruby/sortfun.c +433 -0
- data/ext/clipsruby/sortfun.h +55 -0
- data/ext/clipsruby/strngfun.c +1173 -0
- data/ext/clipsruby/strngfun.h +96 -0
- data/ext/clipsruby/strngrtr.c +523 -0
- data/ext/clipsruby/strngrtr.h +97 -0
- data/ext/clipsruby/symblbin.c +648 -0
- data/ext/clipsruby/symblbin.h +64 -0
- data/ext/clipsruby/symblcmp.c +893 -0
- data/ext/clipsruby/symblcmp.h +61 -0
- data/ext/clipsruby/symbol.c +1961 -0
- data/ext/clipsruby/symbol.h +243 -0
- data/ext/clipsruby/sysdep.c +894 -0
- data/ext/clipsruby/sysdep.h +164 -0
- data/ext/clipsruby/textpro.c +1388 -0
- data/ext/clipsruby/textpro.h +77 -0
- data/ext/clipsruby/tmpltbin.c +609 -0
- data/ext/clipsruby/tmpltbin.h +108 -0
- data/ext/clipsruby/tmpltbsc.c +327 -0
- data/ext/clipsruby/tmpltbsc.h +87 -0
- data/ext/clipsruby/tmpltcmp.c +450 -0
- data/ext/clipsruby/tmpltcmp.h +57 -0
- data/ext/clipsruby/tmpltdef.c +584 -0
- data/ext/clipsruby/tmpltdef.h +155 -0
- data/ext/clipsruby/tmpltfun.c +2477 -0
- data/ext/clipsruby/tmpltfun.h +122 -0
- data/ext/clipsruby/tmpltlhs.c +379 -0
- data/ext/clipsruby/tmpltlhs.h +50 -0
- data/ext/clipsruby/tmpltpsr.c +819 -0
- data/ext/clipsruby/tmpltpsr.h +59 -0
- data/ext/clipsruby/tmpltrhs.c +595 -0
- data/ext/clipsruby/tmpltrhs.h +55 -0
- data/ext/clipsruby/tmpltutl.c +637 -0
- data/ext/clipsruby/tmpltutl.h +82 -0
- data/ext/clipsruby/userdata.c +156 -0
- data/ext/clipsruby/userdata.h +72 -0
- data/ext/clipsruby/userfunctions.c +70 -0
- data/ext/clipsruby/usrsetup.h +7 -0
- data/ext/clipsruby/utility.c +1594 -0
- data/ext/clipsruby/utility.h +250 -0
- data/ext/clipsruby/watch.c +865 -0
- data/ext/clipsruby/watch.h +124 -0
- data/lib/clipsruby.rb +1 -0
- metadata +388 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 11/13/17 */
|
5
|
+
/* */
|
6
|
+
/* CONSTRUCT PARSER MODULE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Parsing routines and utilities for parsing */
|
11
|
+
/* constructs. */
|
12
|
+
/* */
|
13
|
+
/* Principal Programmer(s): */
|
14
|
+
/* Gary D. Riley */
|
15
|
+
/* */
|
16
|
+
/* Contributing Programmer(s): */
|
17
|
+
/* */
|
18
|
+
/* Revision History: */
|
19
|
+
/* */
|
20
|
+
/* 6.24: Added environment parameter to GenClose. */
|
21
|
+
/* Added environment parameter to GenOpen. */
|
22
|
+
/* */
|
23
|
+
/* Made the construct redefinition message more */
|
24
|
+
/* prominent. */
|
25
|
+
/* */
|
26
|
+
/* Added pragmas to remove compilation warnings. */
|
27
|
+
/* */
|
28
|
+
/* 6.30: Added code for capturing errors/warnings. */
|
29
|
+
/* */
|
30
|
+
/* Removed conditional code for unsupported */
|
31
|
+
/* compilers/operating systems (IBM_MCW, MAC_MCW, */
|
32
|
+
/* and IBM_TBC). */
|
33
|
+
/* */
|
34
|
+
/* Changed garbage collection algorithm. */
|
35
|
+
/* */
|
36
|
+
/* GetConstructNameAndComment API change. */
|
37
|
+
/* */
|
38
|
+
/* Added const qualifiers to remove C++ */
|
39
|
+
/* deprecation warnings. */
|
40
|
+
/* */
|
41
|
+
/* Fixed linkage issue when BLOAD_ONLY compiler */
|
42
|
+
/* flag is set to 1. */
|
43
|
+
/* */
|
44
|
+
/* 6.40: Removed LOCALE definition. */
|
45
|
+
/* */
|
46
|
+
/* Pragma once and other inclusion changes. */
|
47
|
+
/* */
|
48
|
+
/* Added support for booleans with <stdbool.h>. */
|
49
|
+
/* */
|
50
|
+
/* Removed use of void pointers for specific */
|
51
|
+
/* data structures. */
|
52
|
+
/* */
|
53
|
+
/* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
|
54
|
+
/* */
|
55
|
+
/*************************************************************/
|
56
|
+
|
57
|
+
#ifndef _H_cstrcpsr
|
58
|
+
|
59
|
+
#pragma once
|
60
|
+
|
61
|
+
#define _H_cstrcpsr
|
62
|
+
|
63
|
+
#include "strngfun.h"
|
64
|
+
|
65
|
+
typedef enum
|
66
|
+
{
|
67
|
+
LE_NO_ERROR = 0,
|
68
|
+
LE_OPEN_FILE_ERROR,
|
69
|
+
LE_PARSING_ERROR,
|
70
|
+
} LoadError;
|
71
|
+
|
72
|
+
#if (! RUN_TIME) && (! BLOAD_ONLY)
|
73
|
+
LoadError Load(Environment *,const char *);
|
74
|
+
bool LoadConstructsFromLogicalName(Environment *,const char *);
|
75
|
+
bool LoadFromString(Environment *,const char *,size_t);
|
76
|
+
BuildError ParseConstruct(Environment *,const char *,const char *);
|
77
|
+
void ImportExportConflictMessage(Environment *,const char *,const char *,
|
78
|
+
const char *,const char *);
|
79
|
+
void FlushParsingMessages(Environment *);
|
80
|
+
char *GetParsingFileName(Environment *);
|
81
|
+
void SetParsingFileName(Environment *,const char *);
|
82
|
+
char *GetErrorFileName(Environment *);
|
83
|
+
void SetErrorFileName(Environment *,const char *);
|
84
|
+
char *GetWarningFileName(Environment *);
|
85
|
+
void SetWarningFileName(Environment *,const char *);
|
86
|
+
void CreateErrorCaptureRouter(Environment *);
|
87
|
+
void DeleteErrorCaptureRouter(Environment *);
|
88
|
+
#endif
|
89
|
+
|
90
|
+
#endif
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
@@ -0,0 +1,282 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 12/02/19 */
|
5
|
+
/* */
|
6
|
+
/* CONSTRAINT BLOAD/BSAVE MODULE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Implements the binary save/load 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
|
+
/* 6.30: Changed integer type/precision. */
|
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
|
+
#include "setup.h"
|
35
|
+
|
36
|
+
#if (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE) && (! RUN_TIME)
|
37
|
+
|
38
|
+
#include "constant.h"
|
39
|
+
#include "envrnmnt.h"
|
40
|
+
#include "memalloc.h"
|
41
|
+
#include "prntutil.h"
|
42
|
+
#include "router.h"
|
43
|
+
#include "bload.h"
|
44
|
+
|
45
|
+
#if BLOAD_AND_BSAVE
|
46
|
+
#include "bsave.h"
|
47
|
+
#endif
|
48
|
+
|
49
|
+
#include "cstrnbin.h"
|
50
|
+
|
51
|
+
/*******************/
|
52
|
+
/* DATA STRUCTURES */
|
53
|
+
/*******************/
|
54
|
+
|
55
|
+
struct bsaveConstraintRecord
|
56
|
+
{
|
57
|
+
unsigned int anyAllowed : 1;
|
58
|
+
unsigned int symbolsAllowed : 1;
|
59
|
+
unsigned int stringsAllowed : 1;
|
60
|
+
unsigned int floatsAllowed : 1;
|
61
|
+
unsigned int integersAllowed : 1;
|
62
|
+
unsigned int instanceNamesAllowed : 1;
|
63
|
+
unsigned int instanceAddressesAllowed : 1;
|
64
|
+
unsigned int externalAddressesAllowed : 1;
|
65
|
+
unsigned int factAddressesAllowed : 1;
|
66
|
+
unsigned int anyRestriction : 1;
|
67
|
+
unsigned int symbolRestriction : 1;
|
68
|
+
unsigned int stringRestriction : 1;
|
69
|
+
unsigned int numberRestriction : 1;
|
70
|
+
unsigned int floatRestriction : 1;
|
71
|
+
unsigned int integerRestriction : 1;
|
72
|
+
unsigned int classRestriction : 1;
|
73
|
+
unsigned int instanceNameRestriction : 1;
|
74
|
+
unsigned int multifieldsAllowed : 1;
|
75
|
+
unsigned int singlefieldsAllowed : 1;
|
76
|
+
unsigned long classList;
|
77
|
+
unsigned long restrictionList;
|
78
|
+
unsigned long minValue;
|
79
|
+
unsigned long maxValue;
|
80
|
+
unsigned long minFields;
|
81
|
+
unsigned long maxFields;
|
82
|
+
};
|
83
|
+
|
84
|
+
typedef struct bsaveConstraintRecord BSAVE_CONSTRAINT_RECORD;
|
85
|
+
|
86
|
+
/***************************************/
|
87
|
+
/* LOCAL INTERNAL FUNCTION DEFINITIONS */
|
88
|
+
/***************************************/
|
89
|
+
|
90
|
+
#if BLOAD_AND_BSAVE
|
91
|
+
static void CopyToBsaveConstraintRecord(Environment *,CONSTRAINT_RECORD *,BSAVE_CONSTRAINT_RECORD *);
|
92
|
+
#endif
|
93
|
+
static void CopyFromBsaveConstraintRecord(Environment *,void *,unsigned long);
|
94
|
+
|
95
|
+
#if BLOAD_AND_BSAVE
|
96
|
+
|
97
|
+
/**************************************************/
|
98
|
+
/* WriteNeededConstraints: Writes the constraints */
|
99
|
+
/* in the constraint table to the binary image */
|
100
|
+
/* currently being saved. */
|
101
|
+
/**************************************************/
|
102
|
+
void WriteNeededConstraints(
|
103
|
+
Environment *theEnv,
|
104
|
+
FILE *fp)
|
105
|
+
{
|
106
|
+
int i;
|
107
|
+
unsigned long theIndex = 0;
|
108
|
+
unsigned long numberOfUsedConstraints = 0;
|
109
|
+
CONSTRAINT_RECORD *tmpPtr;
|
110
|
+
BSAVE_CONSTRAINT_RECORD bsaveConstraints;
|
111
|
+
|
112
|
+
/*================================*/
|
113
|
+
/* Get the number of constraints. */
|
114
|
+
/*================================*/
|
115
|
+
|
116
|
+
for (i = 0; i < SIZE_CONSTRAINT_HASH; i++)
|
117
|
+
{
|
118
|
+
for (tmpPtr = ConstraintData(theEnv)->ConstraintHashtable[i];
|
119
|
+
tmpPtr != NULL;
|
120
|
+
tmpPtr = tmpPtr->next)
|
121
|
+
{
|
122
|
+
tmpPtr->bsaveID = theIndex++;
|
123
|
+
numberOfUsedConstraints++;
|
124
|
+
}
|
125
|
+
}
|
126
|
+
|
127
|
+
/*=============================================*/
|
128
|
+
/* If dynamic constraint checking is disabled, */
|
129
|
+
/* then no constraints are saved. */
|
130
|
+
/*=============================================*/
|
131
|
+
|
132
|
+
if ((! GetDynamicConstraintChecking(theEnv)) && (numberOfUsedConstraints != 0))
|
133
|
+
{
|
134
|
+
numberOfUsedConstraints = 0;
|
135
|
+
PrintWarningID(theEnv,"CSTRNBIN",1,false);
|
136
|
+
WriteString(theEnv,STDWRN,"Constraints are not saved with a binary image\n");
|
137
|
+
WriteString(theEnv,STDWRN," when dynamic constraint checking is disabled.\n");
|
138
|
+
}
|
139
|
+
|
140
|
+
/*============================================*/
|
141
|
+
/* Write out the number of constraints in the */
|
142
|
+
/* constraint table followed by each of the */
|
143
|
+
/* constraints in the constraint table. */
|
144
|
+
/*============================================*/
|
145
|
+
|
146
|
+
GenWrite(&numberOfUsedConstraints,sizeof(unsigned long),fp);
|
147
|
+
if (numberOfUsedConstraints == 0) return;
|
148
|
+
|
149
|
+
for (i = 0 ; i < SIZE_CONSTRAINT_HASH; i++)
|
150
|
+
{
|
151
|
+
for (tmpPtr = ConstraintData(theEnv)->ConstraintHashtable[i];
|
152
|
+
tmpPtr != NULL;
|
153
|
+
tmpPtr = tmpPtr->next)
|
154
|
+
{
|
155
|
+
CopyToBsaveConstraintRecord(theEnv,tmpPtr,&bsaveConstraints);
|
156
|
+
GenWrite(&bsaveConstraints,sizeof(BSAVE_CONSTRAINT_RECORD),fp);
|
157
|
+
}
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
/****************************************************/
|
162
|
+
/* CopyToBsaveConstraintRecord: Copies a constraint */
|
163
|
+
/* record to the data structure used for storing */
|
164
|
+
/* constraints in a binary image. */
|
165
|
+
/****************************************************/
|
166
|
+
static void CopyToBsaveConstraintRecord(
|
167
|
+
Environment *theEnv,
|
168
|
+
CONSTRAINT_RECORD *constraints,
|
169
|
+
BSAVE_CONSTRAINT_RECORD *bsaveConstraints)
|
170
|
+
{
|
171
|
+
bsaveConstraints->anyAllowed = constraints->anyAllowed;
|
172
|
+
bsaveConstraints->symbolsAllowed = constraints->symbolsAllowed;
|
173
|
+
bsaveConstraints->stringsAllowed = constraints->stringsAllowed;
|
174
|
+
bsaveConstraints->floatsAllowed = constraints->floatsAllowed;
|
175
|
+
bsaveConstraints->integersAllowed = constraints->integersAllowed;
|
176
|
+
bsaveConstraints->instanceNamesAllowed = constraints->instanceNamesAllowed;
|
177
|
+
bsaveConstraints->instanceAddressesAllowed = constraints->instanceAddressesAllowed;
|
178
|
+
bsaveConstraints->externalAddressesAllowed = constraints->externalAddressesAllowed;
|
179
|
+
bsaveConstraints->multifieldsAllowed = constraints->multifieldsAllowed;
|
180
|
+
bsaveConstraints->singlefieldsAllowed = constraints->singlefieldsAllowed;
|
181
|
+
bsaveConstraints->factAddressesAllowed = constraints->factAddressesAllowed;
|
182
|
+
bsaveConstraints->anyRestriction = constraints->anyRestriction;
|
183
|
+
bsaveConstraints->symbolRestriction = constraints->symbolRestriction;
|
184
|
+
bsaveConstraints->stringRestriction = constraints->stringRestriction;
|
185
|
+
bsaveConstraints->floatRestriction = constraints->floatRestriction;
|
186
|
+
bsaveConstraints->integerRestriction = constraints->integerRestriction;
|
187
|
+
bsaveConstraints->classRestriction = constraints->classRestriction;
|
188
|
+
bsaveConstraints->instanceNameRestriction = constraints->instanceNameRestriction;
|
189
|
+
|
190
|
+
bsaveConstraints->restrictionList = HashedExpressionIndex(theEnv,constraints->restrictionList);
|
191
|
+
bsaveConstraints->classList = HashedExpressionIndex(theEnv,constraints->classList);
|
192
|
+
bsaveConstraints->minValue = HashedExpressionIndex(theEnv,constraints->minValue);
|
193
|
+
bsaveConstraints->maxValue = HashedExpressionIndex(theEnv,constraints->maxValue);
|
194
|
+
bsaveConstraints->minFields = HashedExpressionIndex(theEnv,constraints->minFields);
|
195
|
+
bsaveConstraints->maxFields = HashedExpressionIndex(theEnv,constraints->maxFields);
|
196
|
+
}
|
197
|
+
|
198
|
+
#endif /* BLOAD_AND_BSAVE */
|
199
|
+
|
200
|
+
/********************************************************/
|
201
|
+
/* ReadNeededConstraints: Reads in the constraints used */
|
202
|
+
/* by the binary image currently being loaded. */
|
203
|
+
/********************************************************/
|
204
|
+
void ReadNeededConstraints(
|
205
|
+
Environment *theEnv)
|
206
|
+
{
|
207
|
+
GenReadBinary(theEnv,&ConstraintData(theEnv)->NumberOfConstraints,sizeof(unsigned long));
|
208
|
+
if (ConstraintData(theEnv)->NumberOfConstraints == 0) return;
|
209
|
+
|
210
|
+
ConstraintData(theEnv)->ConstraintArray = (CONSTRAINT_RECORD *)
|
211
|
+
genalloc(theEnv,(sizeof(CONSTRAINT_RECORD) * ConstraintData(theEnv)->NumberOfConstraints));
|
212
|
+
|
213
|
+
BloadandRefresh(theEnv,ConstraintData(theEnv)->NumberOfConstraints,sizeof(BSAVE_CONSTRAINT_RECORD),
|
214
|
+
CopyFromBsaveConstraintRecord);
|
215
|
+
}
|
216
|
+
|
217
|
+
/*****************************************************/
|
218
|
+
/* CopyFromBsaveConstraintRecord: Copies values to a */
|
219
|
+
/* constraint record from the data structure used */
|
220
|
+
/* for storing constraints in a binary image. */
|
221
|
+
/*****************************************************/
|
222
|
+
static void CopyFromBsaveConstraintRecord(
|
223
|
+
Environment *theEnv,
|
224
|
+
void *buf,
|
225
|
+
unsigned long theIndex)
|
226
|
+
{
|
227
|
+
BSAVE_CONSTRAINT_RECORD *bsaveConstraints;
|
228
|
+
CONSTRAINT_RECORD *constraints;
|
229
|
+
|
230
|
+
bsaveConstraints = (BSAVE_CONSTRAINT_RECORD *) buf;
|
231
|
+
constraints = (CONSTRAINT_RECORD *) &ConstraintData(theEnv)->ConstraintArray[theIndex];
|
232
|
+
|
233
|
+
constraints->anyAllowed = bsaveConstraints->anyAllowed;
|
234
|
+
constraints->symbolsAllowed = bsaveConstraints->symbolsAllowed;
|
235
|
+
constraints->stringsAllowed = bsaveConstraints->stringsAllowed;
|
236
|
+
constraints->floatsAllowed = bsaveConstraints->floatsAllowed;
|
237
|
+
constraints->integersAllowed = bsaveConstraints->integersAllowed;
|
238
|
+
constraints->instanceNamesAllowed = bsaveConstraints->instanceNamesAllowed;
|
239
|
+
constraints->instanceAddressesAllowed = bsaveConstraints->instanceAddressesAllowed;
|
240
|
+
constraints->externalAddressesAllowed = bsaveConstraints->externalAddressesAllowed;
|
241
|
+
constraints->voidAllowed = false;
|
242
|
+
constraints->multifieldsAllowed = bsaveConstraints->multifieldsAllowed;
|
243
|
+
constraints->singlefieldsAllowed = bsaveConstraints->singlefieldsAllowed;
|
244
|
+
constraints->factAddressesAllowed = bsaveConstraints->factAddressesAllowed;
|
245
|
+
constraints->anyRestriction = bsaveConstraints->anyRestriction;
|
246
|
+
constraints->symbolRestriction = bsaveConstraints->symbolRestriction;
|
247
|
+
constraints->stringRestriction = bsaveConstraints->stringRestriction;
|
248
|
+
constraints->floatRestriction = bsaveConstraints->floatRestriction;
|
249
|
+
constraints->integerRestriction = bsaveConstraints->integerRestriction;
|
250
|
+
constraints->classRestriction = bsaveConstraints->classRestriction;
|
251
|
+
constraints->instanceNameRestriction = bsaveConstraints->instanceNameRestriction;
|
252
|
+
|
253
|
+
constraints->restrictionList = HashedExpressionPointer(bsaveConstraints->restrictionList);
|
254
|
+
constraints->classList = HashedExpressionPointer(bsaveConstraints->classList);
|
255
|
+
constraints->minValue = HashedExpressionPointer(bsaveConstraints->minValue);
|
256
|
+
constraints->maxValue = HashedExpressionPointer(bsaveConstraints->maxValue);
|
257
|
+
constraints->minFields = HashedExpressionPointer(bsaveConstraints->minFields);
|
258
|
+
constraints->maxFields = HashedExpressionPointer(bsaveConstraints->maxFields);
|
259
|
+
constraints->multifield = NULL;
|
260
|
+
}
|
261
|
+
|
262
|
+
/********************************************************/
|
263
|
+
/* ClearBloadedConstraints: Releases memory associated */
|
264
|
+
/* with constraints loaded from binary image */
|
265
|
+
/********************************************************/
|
266
|
+
void ClearBloadedConstraints(
|
267
|
+
Environment *theEnv)
|
268
|
+
{
|
269
|
+
if (ConstraintData(theEnv)->NumberOfConstraints != 0)
|
270
|
+
{
|
271
|
+
genfree(theEnv,ConstraintData(theEnv)->ConstraintArray,
|
272
|
+
(sizeof(CONSTRAINT_RECORD) * ConstraintData(theEnv)->NumberOfConstraints));
|
273
|
+
ConstraintData(theEnv)->NumberOfConstraints = 0;
|
274
|
+
}
|
275
|
+
}
|
276
|
+
|
277
|
+
#endif /* (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE) && (! RUN_TIME) */
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 12/02/19 */
|
5
|
+
/* */
|
6
|
+
/* CONSTRAINT BLOAD/BSAVE/CONSTRUCTS-TO-C HEADER */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Implements the binary save/load 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
|
+
/* 6.30: Changed integer type/precision. */
|
23
|
+
/* */
|
24
|
+
/* 6.40: Removed LOCALE definition. */
|
25
|
+
/* */
|
26
|
+
/* Pragma once and other inclusion changes. */
|
27
|
+
/* */
|
28
|
+
/* Removed use of void pointers for specific */
|
29
|
+
/* data structures. */
|
30
|
+
/* */
|
31
|
+
/*************************************************************/
|
32
|
+
|
33
|
+
#ifndef _H_cstrnbin
|
34
|
+
|
35
|
+
#pragma once
|
36
|
+
|
37
|
+
#define _H_cstrnbin
|
38
|
+
|
39
|
+
#include <stdio.h>
|
40
|
+
|
41
|
+
#include "evaluatn.h"
|
42
|
+
#include "constrnt.h"
|
43
|
+
|
44
|
+
#define ConstraintIndex(theConstraint) (((! GetDynamicConstraintChecking(theEnv)) || (theConstraint == NULL)) ? ULONG_MAX : (theConstraint->bsaveID))
|
45
|
+
#define ConstraintPointer(i) (((i) == ULONG_MAX) ? NULL : (CONSTRAINT_RECORD *) &ConstraintData(theEnv)->ConstraintArray[i])
|
46
|
+
|
47
|
+
#if BLOAD_AND_BSAVE
|
48
|
+
void WriteNeededConstraints(Environment *,FILE *);
|
49
|
+
#endif
|
50
|
+
void ReadNeededConstraints(Environment *);
|
51
|
+
void ClearBloadedConstraints(Environment *);
|
52
|
+
|
53
|
+
#endif /* _H_cstrnbin */
|
54
|
+
|
55
|
+
|