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,75 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 11/01/16 */
|
5
|
+
/* */
|
6
|
+
/* LOGICAL DEPENDENCIES HEADER FILE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Provide support routines for managing truth */
|
11
|
+
/* maintenance using the logical conditional element. */
|
12
|
+
/* */
|
13
|
+
/* Principal Programmer(s): */
|
14
|
+
/* Gary D. Riley */
|
15
|
+
/* */
|
16
|
+
/* Contributing Programmer(s): */
|
17
|
+
/* */
|
18
|
+
/* Revision History: */
|
19
|
+
/* */
|
20
|
+
/* 6.24: Removed LOGICAL_DEPENDENCIES compilation flag. */
|
21
|
+
/* */
|
22
|
+
/* Renamed BOOLEAN macro type to intBool. */
|
23
|
+
/* */
|
24
|
+
/* Rule with exists CE has incorrect activation. */
|
25
|
+
/* DR0867 */
|
26
|
+
/* */
|
27
|
+
/* 6.30: Added support for hashed memories. */
|
28
|
+
/* */
|
29
|
+
/* 6.40: Removed LOCALE definition. */
|
30
|
+
/* */
|
31
|
+
/* 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
|
+
/* UDF redesign. */
|
39
|
+
/* */
|
40
|
+
/*************************************************************/
|
41
|
+
|
42
|
+
#ifndef _H_lgcldpnd
|
43
|
+
|
44
|
+
#pragma once
|
45
|
+
|
46
|
+
#define _H_lgcldpnd
|
47
|
+
|
48
|
+
struct dependency
|
49
|
+
{
|
50
|
+
void *dPtr;
|
51
|
+
struct dependency *next;
|
52
|
+
};
|
53
|
+
|
54
|
+
#include "entities.h"
|
55
|
+
#include "match.h"
|
56
|
+
|
57
|
+
bool AddLogicalDependencies(Environment *,PatternEntity *,bool);
|
58
|
+
void RemoveEntityDependencies(Environment *,PatternEntity *);
|
59
|
+
void RemovePMDependencies(Environment *,PartialMatch *);
|
60
|
+
void DestroyPMDependencies(Environment *,PartialMatch *);
|
61
|
+
void RemoveLogicalSupport(Environment *,PartialMatch *);
|
62
|
+
void ForceLogicalRetractions(Environment *);
|
63
|
+
void Dependencies(Environment *,PatternEntity *);
|
64
|
+
void Dependents(Environment *,PatternEntity *);
|
65
|
+
void DependenciesCommand(Environment *,UDFContext *,UDFValue *);
|
66
|
+
void DependentsCommand(Environment *,UDFContext *,UDFValue *);
|
67
|
+
void ReturnEntityDependencies(Environment *,PatternEntity *);
|
68
|
+
PartialMatch *FindLogicalBind(struct joinNode *,PartialMatch *);
|
69
|
+
|
70
|
+
#endif /* _H_lgcldpnd */
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
@@ -0,0 +1,112 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 08/06/16 */
|
5
|
+
/* */
|
6
|
+
/* MAIN MODULE */
|
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.24: Moved UserFunctions and EnvUserFunctions to */
|
20
|
+
/* the new userfunctions.c file. */
|
21
|
+
/* */
|
22
|
+
/* 6.40: Removed use of void pointers for specific */
|
23
|
+
/* data structures. */
|
24
|
+
/* */
|
25
|
+
/* Moved CatchCtrlC to main.c. */
|
26
|
+
/* */
|
27
|
+
/*************************************************************/
|
28
|
+
|
29
|
+
/***************************************************************************/
|
30
|
+
/* */
|
31
|
+
/* Permission is hereby granted, free of charge, to any person obtaining */
|
32
|
+
/* a copy of this software and associated documentation files (the */
|
33
|
+
/* "Software"), to deal in the Software without restriction, including */
|
34
|
+
/* without limitation the rights to use, copy, modify, merge, publish, */
|
35
|
+
/* distribute, and/or sell copies of the Software, and to permit persons */
|
36
|
+
/* to whom the Software is furnished to do so. */
|
37
|
+
/* */
|
38
|
+
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS */
|
39
|
+
/* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
40
|
+
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT */
|
41
|
+
/* OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY */
|
42
|
+
/* CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES */
|
43
|
+
/* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN */
|
44
|
+
/* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF */
|
45
|
+
/* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
46
|
+
/* */
|
47
|
+
/***************************************************************************/
|
48
|
+
|
49
|
+
#include "clips.h"
|
50
|
+
|
51
|
+
#if UNIX_V || LINUX || DARWIN || UNIX_7 || WIN_GCC || WIN_MVC
|
52
|
+
#include <signal.h>
|
53
|
+
#endif
|
54
|
+
|
55
|
+
/***************************************/
|
56
|
+
/* LOCAL INTERNAL FUNCTION DEFINITIONS */
|
57
|
+
/***************************************/
|
58
|
+
|
59
|
+
#if UNIX_V || LINUX || DARWIN || UNIX_7 || WIN_GCC || WIN_MVC
|
60
|
+
static void CatchCtrlC(int);
|
61
|
+
#endif
|
62
|
+
|
63
|
+
/***************************************/
|
64
|
+
/* LOCAL INTERNAL VARIABLE DEFINITIONS */
|
65
|
+
/***************************************/
|
66
|
+
|
67
|
+
static Environment *mainEnv;
|
68
|
+
|
69
|
+
/****************************************/
|
70
|
+
/* main: Starts execution of the expert */
|
71
|
+
/* system development environment. */
|
72
|
+
/****************************************/
|
73
|
+
int main(
|
74
|
+
int argc,
|
75
|
+
char *argv[])
|
76
|
+
{
|
77
|
+
mainEnv = CreateEnvironment();
|
78
|
+
|
79
|
+
#if UNIX_V || LINUX || DARWIN || UNIX_7 || WIN_GCC || WIN_MVC
|
80
|
+
signal(SIGINT,CatchCtrlC);
|
81
|
+
#endif
|
82
|
+
|
83
|
+
RerouteStdin(mainEnv,argc,argv);
|
84
|
+
CommandLoop(mainEnv);
|
85
|
+
|
86
|
+
/*==================================================================*/
|
87
|
+
/* Control does not normally return from the CommandLoop function. */
|
88
|
+
/* However if you are embedding CLIPS, have replaced CommandLoop */
|
89
|
+
/* with your own embedded calls that will return to this point, and */
|
90
|
+
/* are running software that helps detect memory leaks, you need to */
|
91
|
+
/* add function calls here to deallocate memory still being used by */
|
92
|
+
/* CLIPS. If you have a multi-threaded application, no environments */
|
93
|
+
/* can be currently executing. */
|
94
|
+
/*==================================================================*/
|
95
|
+
|
96
|
+
DestroyEnvironment(mainEnv);
|
97
|
+
|
98
|
+
return -1;
|
99
|
+
}
|
100
|
+
|
101
|
+
#if UNIX_V || LINUX || DARWIN || UNIX_7 || WIN_GCC || WIN_MVC || DARWIN
|
102
|
+
/***************/
|
103
|
+
/* CatchCtrlC: */
|
104
|
+
/***************/
|
105
|
+
static void CatchCtrlC(
|
106
|
+
int sgnl)
|
107
|
+
{
|
108
|
+
SetHaltExecution(mainEnv,true);
|
109
|
+
CloseAllBatchSources(mainEnv);
|
110
|
+
signal(SIGINT,CatchCtrlC);
|
111
|
+
}
|
112
|
+
#endif
|
@@ -0,0 +1,142 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 08/28/17 */
|
5
|
+
/* */
|
6
|
+
/* MATCH 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: Added support for hashed memories. */
|
20
|
+
/* */
|
21
|
+
/* Added additional members to partialMatch to */
|
22
|
+
/* support changes to the matching algorithm. */
|
23
|
+
/* */
|
24
|
+
/* 6.31: Bug fix to prevent rule activations for */
|
25
|
+
/* partial matches being deleted. */
|
26
|
+
/* */
|
27
|
+
/* 6.40: Pragma once and other inclusion changes. */
|
28
|
+
/* */
|
29
|
+
/* Removed use of void pointers for specific */
|
30
|
+
/* data structures. */
|
31
|
+
/* */
|
32
|
+
/*************************************************************/
|
33
|
+
|
34
|
+
#ifndef _H_match
|
35
|
+
|
36
|
+
#pragma once
|
37
|
+
|
38
|
+
#define _H_match
|
39
|
+
|
40
|
+
typedef struct genericMatch GenericMatch;
|
41
|
+
typedef struct patternMatch PatternMatch;
|
42
|
+
typedef struct partialMatch PartialMatch;
|
43
|
+
typedef struct alphaMatch AlphaMatch;
|
44
|
+
typedef struct multifieldMarker MultifieldMarker;
|
45
|
+
|
46
|
+
#include "entities.h"
|
47
|
+
#include "network.h"
|
48
|
+
|
49
|
+
/****************/
|
50
|
+
/* patternMatch */
|
51
|
+
/****************/
|
52
|
+
struct patternMatch
|
53
|
+
{
|
54
|
+
PatternMatch *next;
|
55
|
+
PartialMatch *theMatch;
|
56
|
+
PatternNodeHeader *matchingPattern;
|
57
|
+
};
|
58
|
+
|
59
|
+
/****************/
|
60
|
+
/* genericMatch */
|
61
|
+
/****************/
|
62
|
+
struct genericMatch
|
63
|
+
{
|
64
|
+
union
|
65
|
+
{
|
66
|
+
void *theValue;
|
67
|
+
AlphaMatch *theMatch;
|
68
|
+
} gm;
|
69
|
+
};
|
70
|
+
|
71
|
+
/****************/
|
72
|
+
/* partialMatch */
|
73
|
+
/****************/
|
74
|
+
struct partialMatch
|
75
|
+
{
|
76
|
+
unsigned int betaMemory : 1;
|
77
|
+
unsigned int busy : 1;
|
78
|
+
unsigned int rhsMemory : 1;
|
79
|
+
unsigned int deleting : 1;
|
80
|
+
unsigned short bcount;
|
81
|
+
unsigned long hashValue;
|
82
|
+
void *owner;
|
83
|
+
void *marker;
|
84
|
+
void *dependents;
|
85
|
+
PartialMatch *nextInMemory;
|
86
|
+
PartialMatch *prevInMemory;
|
87
|
+
PartialMatch *children;
|
88
|
+
PartialMatch *rightParent;
|
89
|
+
PartialMatch *nextRightChild;
|
90
|
+
PartialMatch *prevRightChild;
|
91
|
+
PartialMatch *leftParent;
|
92
|
+
PartialMatch *nextLeftChild;
|
93
|
+
PartialMatch *prevLeftChild;
|
94
|
+
PartialMatch *blockList;
|
95
|
+
PartialMatch *nextBlocked;
|
96
|
+
PartialMatch *prevBlocked;
|
97
|
+
GenericMatch binds[1];
|
98
|
+
};
|
99
|
+
|
100
|
+
/**************/
|
101
|
+
/* alphaMatch */
|
102
|
+
/**************/
|
103
|
+
struct alphaMatch
|
104
|
+
{
|
105
|
+
PatternEntity *matchingItem;
|
106
|
+
MultifieldMarker *markers;
|
107
|
+
AlphaMatch *next;
|
108
|
+
unsigned long bucket;
|
109
|
+
};
|
110
|
+
|
111
|
+
/******************************************************/
|
112
|
+
/* multifieldMarker: Used in the pattern matching */
|
113
|
+
/* process to mark the range of fields that the $? */
|
114
|
+
/* and $?variables match because a single pattern */
|
115
|
+
/* restriction may span zero or more fields. */
|
116
|
+
/******************************************************/
|
117
|
+
struct multifieldMarker
|
118
|
+
{
|
119
|
+
unsigned short whichField;
|
120
|
+
union
|
121
|
+
{
|
122
|
+
void *whichSlot;
|
123
|
+
unsigned short whichSlotNumber;
|
124
|
+
} where;
|
125
|
+
size_t startPosition;
|
126
|
+
size_t range;
|
127
|
+
MultifieldMarker *next;
|
128
|
+
};
|
129
|
+
|
130
|
+
#define get_nth_pm_value(thePM,thePos) (thePM->binds[thePos].gm.theValue)
|
131
|
+
#define get_nth_pm_match(thePM,thePos) (thePM->binds[thePos].gm.theMatch)
|
132
|
+
|
133
|
+
#define set_nth_pm_value(thePM,thePos,theVal) (thePM->binds[thePos].gm.theValue = (void *) theVal)
|
134
|
+
#define set_nth_pm_match(thePM,thePos,theVal) (thePM->binds[thePos].gm.theMatch = theVal)
|
135
|
+
|
136
|
+
#endif /* _H_match */
|
137
|
+
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
|
142
|
+
|