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,243 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 10/01/16 */
|
5
|
+
/* */
|
6
|
+
/* SYMBOL HEADER FILE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Manages the atomic data value hash tables for */
|
11
|
+
/* storing symbols, integers, floats, and bit maps. */
|
12
|
+
/* Contains routines for adding entries, examining the */
|
13
|
+
/* hash tables, and performing garbage collection to */
|
14
|
+
/* remove entries no longer in use. */
|
15
|
+
/* */
|
16
|
+
/* Principal Programmer(s): */
|
17
|
+
/* Gary D. Riley */
|
18
|
+
/* */
|
19
|
+
/* Contributing Programmer(s): */
|
20
|
+
/* */
|
21
|
+
/* Revision History: */
|
22
|
+
/* */
|
23
|
+
/* 6.23: Correction for FalseSymbol/TrueSymbol. DR0859 */
|
24
|
+
/* */
|
25
|
+
/* 6.24: CLIPS crashing on AMD64 processor in the */
|
26
|
+
/* function used to generate a hash value for */
|
27
|
+
/* integers. DR0871 */
|
28
|
+
/* */
|
29
|
+
/* Support for run-time programs directly passing */
|
30
|
+
/* the hash tables for initialization. */
|
31
|
+
/* */
|
32
|
+
/* Corrected code generating compilation */
|
33
|
+
/* warnings. */
|
34
|
+
/* */
|
35
|
+
/* 6.30: Changed integer type/precision. */
|
36
|
+
/* */
|
37
|
+
/* Removed conditional code for unsupported */
|
38
|
+
/* compilers/operating systems (IBM_MCW, */
|
39
|
+
/* MAC_MCW, and IBM_TBC). */
|
40
|
+
/* */
|
41
|
+
/* Support for hashing EXTERNAL_ADDRESS_TYPE */
|
42
|
+
/* data type. */
|
43
|
+
/* */
|
44
|
+
/* Support for long long integers. */
|
45
|
+
/* */
|
46
|
+
/* Changed garbage collection algorithm. */
|
47
|
+
/* */
|
48
|
+
/* Used genstrcpy instead of strcpy. */
|
49
|
+
/* */
|
50
|
+
/* Added support for external address hash table */
|
51
|
+
/* and subtyping. */
|
52
|
+
/* */
|
53
|
+
/* Added const qualifiers to remove C++ */
|
54
|
+
/* deprecation warnings. */
|
55
|
+
/* */
|
56
|
+
/* Converted API macros to function calls. */
|
57
|
+
/* */
|
58
|
+
/* Added ValueToPointer and EnvValueToPointer */
|
59
|
+
/* macros. */
|
60
|
+
/* */
|
61
|
+
/* 6.40: Refactored code to reduce header dependencies */
|
62
|
+
/* in sysdep.c. */
|
63
|
+
/* */
|
64
|
+
/* Removed LOCALE definition. */
|
65
|
+
/* */
|
66
|
+
/* Pragma once and other inclusion changes. */
|
67
|
+
/* */
|
68
|
+
/* Added support for booleans with <stdbool.h>. */
|
69
|
+
/* */
|
70
|
+
/* Removed use of void pointers for specific */
|
71
|
+
/* data structures. */
|
72
|
+
/* */
|
73
|
+
/* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
|
74
|
+
/* */
|
75
|
+
/* UDF redesign. */
|
76
|
+
/* */
|
77
|
+
/*************************************************************/
|
78
|
+
|
79
|
+
#ifndef _H_symbol
|
80
|
+
|
81
|
+
#pragma once
|
82
|
+
|
83
|
+
#define _H_symbol
|
84
|
+
|
85
|
+
#include <stdlib.h>
|
86
|
+
|
87
|
+
#include "entities.h"
|
88
|
+
|
89
|
+
typedef struct genericHashNode GENERIC_HN;
|
90
|
+
|
91
|
+
#ifndef SYMBOL_HASH_SIZE
|
92
|
+
#define SYMBOL_HASH_SIZE 63559L
|
93
|
+
#endif
|
94
|
+
|
95
|
+
#ifndef FLOAT_HASH_SIZE
|
96
|
+
#define FLOAT_HASH_SIZE 8191
|
97
|
+
#endif
|
98
|
+
|
99
|
+
#ifndef INTEGER_HASH_SIZE
|
100
|
+
#define INTEGER_HASH_SIZE 8191
|
101
|
+
#endif
|
102
|
+
|
103
|
+
#ifndef BITMAP_HASH_SIZE
|
104
|
+
#define BITMAP_HASH_SIZE 8191
|
105
|
+
#endif
|
106
|
+
|
107
|
+
#ifndef EXTERNAL_ADDRESS_HASH_SIZE
|
108
|
+
#define EXTERNAL_ADDRESS_HASH_SIZE 8191
|
109
|
+
#endif
|
110
|
+
|
111
|
+
/******************************/
|
112
|
+
/* genericHashNode STRUCTURE: */
|
113
|
+
/******************************/
|
114
|
+
struct genericHashNode
|
115
|
+
{
|
116
|
+
TypeHeader header;
|
117
|
+
struct genericHashNode *next;
|
118
|
+
long count;
|
119
|
+
unsigned int permanent : 1;
|
120
|
+
unsigned int markedEphemeral : 1;
|
121
|
+
unsigned int needed : 1;
|
122
|
+
unsigned int bucket : 29;
|
123
|
+
};
|
124
|
+
|
125
|
+
/**********************************************************/
|
126
|
+
/* EPHEMERON STRUCTURE: Data structure used to keep track */
|
127
|
+
/* of ephemeral symbols, floats, and integers. */
|
128
|
+
/* */
|
129
|
+
/* associatedValue: Contains a pointer to the storage */
|
130
|
+
/* structure for the symbol, float, or integer which is */
|
131
|
+
/* ephemeral. */
|
132
|
+
/* */
|
133
|
+
/* next: Contains a pointer to the next ephemeral item */
|
134
|
+
/* in a list of ephemeral items. */
|
135
|
+
/**********************************************************/
|
136
|
+
struct ephemeron
|
137
|
+
{
|
138
|
+
GENERIC_HN *associatedValue;
|
139
|
+
struct ephemeron *next;
|
140
|
+
};
|
141
|
+
|
142
|
+
/***************/
|
143
|
+
/* symbolMatch */
|
144
|
+
/***************/
|
145
|
+
struct symbolMatch
|
146
|
+
{
|
147
|
+
CLIPSLexeme *match;
|
148
|
+
struct symbolMatch *next;
|
149
|
+
};
|
150
|
+
|
151
|
+
#define IncrementLexemeCount(theValue) (((CLIPSLexeme *) theValue)->count++)
|
152
|
+
#define IncrementFloatCount(theValue) (((CLIPSFloat *) theValue)->count++)
|
153
|
+
#define IncrementIntegerCount(theValue) (((CLIPSInteger *) theValue)->count++)
|
154
|
+
#define IncrementBitMapCount(theValue) (((CLIPSBitMap *) theValue)->count++)
|
155
|
+
#define IncrementExternalAddressCount(theValue) (((CLIPSExternalAddress *) theValue)->count++)
|
156
|
+
|
157
|
+
/*==================*/
|
158
|
+
/* ENVIRONMENT DATA */
|
159
|
+
/*==================*/
|
160
|
+
|
161
|
+
#define SYMBOL_DATA 49
|
162
|
+
|
163
|
+
struct symbolData
|
164
|
+
{
|
165
|
+
CLIPSLexeme *PositiveInfinity;
|
166
|
+
CLIPSLexeme *NegativeInfinity;
|
167
|
+
CLIPSInteger *Zero;
|
168
|
+
CLIPSLexeme **SymbolTable;
|
169
|
+
CLIPSFloat **FloatTable;
|
170
|
+
CLIPSInteger **IntegerTable;
|
171
|
+
CLIPSBitMap **BitMapTable;
|
172
|
+
CLIPSExternalAddress **ExternalAddressTable;
|
173
|
+
#if BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE || BLOAD_INSTANCES || BSAVE_INSTANCES
|
174
|
+
unsigned long NumberOfSymbols;
|
175
|
+
unsigned long NumberOfFloats;
|
176
|
+
unsigned long NumberOfIntegers;
|
177
|
+
unsigned long NumberOfBitMaps;
|
178
|
+
unsigned long NumberOfExternalAddresses;
|
179
|
+
CLIPSLexeme **SymbolArray;
|
180
|
+
CLIPSFloat **FloatArray;
|
181
|
+
CLIPSInteger **IntegerArray;
|
182
|
+
CLIPSBitMap **BitMapArray;
|
183
|
+
CLIPSExternalAddress **ExternalAddressArray;
|
184
|
+
#endif
|
185
|
+
};
|
186
|
+
|
187
|
+
#define SymbolData(theEnv) ((struct symbolData *) GetEnvironmentData(theEnv,SYMBOL_DATA))
|
188
|
+
|
189
|
+
void InitializeAtomTables(Environment *,CLIPSLexeme **,CLIPSFloat **,
|
190
|
+
CLIPSInteger **,CLIPSBitMap **,
|
191
|
+
CLIPSExternalAddress **);
|
192
|
+
CLIPSLexeme *AddSymbol(Environment *,const char *,unsigned short);
|
193
|
+
CLIPSLexeme *FindSymbolHN(Environment *,const char *,unsigned short);
|
194
|
+
CLIPSFloat *CreateFloat(Environment *,double);
|
195
|
+
CLIPSInteger *CreateInteger(Environment *,long long);
|
196
|
+
void *AddBitMap(Environment *,void *,unsigned short);
|
197
|
+
CLIPSExternalAddress *CreateExternalAddress(Environment *,void *,unsigned short);
|
198
|
+
CLIPSExternalAddress *CreateCExternalAddress(Environment *,void *);
|
199
|
+
CLIPSInteger *FindLongHN(Environment *,long long);
|
200
|
+
size_t HashSymbol(const char *,size_t);
|
201
|
+
size_t HashFloat(double,size_t);
|
202
|
+
size_t HashInteger(long long,size_t);
|
203
|
+
size_t HashBitMap(const char *,size_t,unsigned);
|
204
|
+
size_t HashExternalAddress(void *,size_t);
|
205
|
+
void RetainLexeme(Environment *,CLIPSLexeme *);
|
206
|
+
void RetainFloat(Environment *,CLIPSFloat *);
|
207
|
+
void RetainInteger(Environment *,CLIPSInteger *);
|
208
|
+
void IncrementBitMapReferenceCount(Environment *,CLIPSBitMap *);
|
209
|
+
void RetainExternalAddress(Environment *,CLIPSExternalAddress *);
|
210
|
+
void ReleaseLexeme(Environment *,CLIPSLexeme *);
|
211
|
+
void ReleaseFloat(Environment *,CLIPSFloat *);
|
212
|
+
void ReleaseInteger(Environment *,CLIPSInteger *);
|
213
|
+
void DecrementBitMapReferenceCount(Environment *,CLIPSBitMap *);
|
214
|
+
void ReleaseExternalAddress(Environment *,CLIPSExternalAddress *);
|
215
|
+
void RemoveEphemeralAtoms(Environment *);
|
216
|
+
CLIPSLexeme **GetSymbolTable(Environment *);
|
217
|
+
void SetSymbolTable(Environment *,CLIPSLexeme **);
|
218
|
+
CLIPSFloat **GetFloatTable(Environment *);
|
219
|
+
void SetFloatTable(Environment *,CLIPSFloat **);
|
220
|
+
CLIPSInteger **GetIntegerTable(Environment *);
|
221
|
+
void SetIntegerTable(Environment *,CLIPSInteger **);
|
222
|
+
CLIPSBitMap **GetBitMapTable(Environment *);
|
223
|
+
void SetBitMapTable(Environment *,CLIPSBitMap **);
|
224
|
+
CLIPSExternalAddress **GetExternalAddressTable(Environment *);
|
225
|
+
void SetExternalAddressTable(Environment *,CLIPSExternalAddress **);
|
226
|
+
void RefreshSpecialSymbols(Environment *);
|
227
|
+
struct symbolMatch *FindSymbolMatches(Environment *,const char *,unsigned *,size_t *);
|
228
|
+
void ReturnSymbolMatches(Environment *,struct symbolMatch *);
|
229
|
+
CLIPSLexeme *GetNextSymbolMatch(Environment *,const char *,size_t,CLIPSLexeme *,bool,size_t *);
|
230
|
+
void ClearBitString(void *,size_t);
|
231
|
+
void SetAtomicValueIndices(Environment *,bool);
|
232
|
+
void RestoreAtomicValueBuckets(Environment *);
|
233
|
+
void EphemerateValue(Environment *,void *);
|
234
|
+
CLIPSLexeme *CreateSymbol(Environment *,const char *);
|
235
|
+
CLIPSLexeme *CreateString(Environment *,const char *);
|
236
|
+
CLIPSLexeme *CreateInstanceName(Environment *,const char *);
|
237
|
+
CLIPSLexeme *CreateBoolean(Environment *,bool);
|
238
|
+
bool BitStringHasBitsSet(void *,unsigned);
|
239
|
+
|
240
|
+
#endif /* _H_symbol */
|
241
|
+
|
242
|
+
|
243
|
+
|