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,69 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 08/25/16 */
|
5
|
+
/* */
|
6
|
+
/* DEVELOPER 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.24: Converted INSTANCE_PATTERN_MATCHING to */
|
20
|
+
/* DEFRULE_CONSTRUCT. */
|
21
|
+
/* */
|
22
|
+
/* 6.30: Added support for hashed alpha memories. */
|
23
|
+
/* */
|
24
|
+
/* Changed garbage collection algorithm. */
|
25
|
+
/* Functions enable-gc-heuristics and */
|
26
|
+
/* disable-gc-heuristics are no longer supported. */
|
27
|
+
/* */
|
28
|
+
/* Changed integer type/precision. */
|
29
|
+
/* */
|
30
|
+
/* 6.40: Removed LOCALE definition. */
|
31
|
+
/* */
|
32
|
+
/* Pragma once and other inclusion changes. */
|
33
|
+
/* */
|
34
|
+
/* Added support for booleans with <stdbool.h>. */
|
35
|
+
/* */
|
36
|
+
/* Removed use of void pointers for specific */
|
37
|
+
/* data structures. */
|
38
|
+
/* */
|
39
|
+
/* UDF redesign. */
|
40
|
+
/* */
|
41
|
+
/*************************************************************/
|
42
|
+
|
43
|
+
#ifndef _H_developr
|
44
|
+
|
45
|
+
#pragma once
|
46
|
+
|
47
|
+
#define _H_developr
|
48
|
+
|
49
|
+
void DeveloperCommands(Environment *);
|
50
|
+
void PrimitiveTablesInfoCommand(Environment *,UDFContext *,UDFValue *);
|
51
|
+
void PrimitiveTablesUsageCommand(Environment *,UDFContext *,UDFValue *);
|
52
|
+
|
53
|
+
#if DEFRULE_CONSTRUCT && DEFTEMPLATE_CONSTRUCT
|
54
|
+
void ShowFactPatternNetworkCommand(Environment *,UDFContext *,UDFValue *);
|
55
|
+
void ValidateFactIntegrityCommand(Environment *,UDFContext *,UDFValue *);
|
56
|
+
#endif
|
57
|
+
#if DEFRULE_CONSTRUCT && OBJECT_SYSTEM
|
58
|
+
void PrintObjectPatternNetworkCommand(Environment *,UDFContext *,UDFValue *);
|
59
|
+
#endif
|
60
|
+
#if OBJECT_SYSTEM
|
61
|
+
void InstanceTableUsageCommand(Environment *,UDFContext *,UDFValue *);
|
62
|
+
#endif
|
63
|
+
#if DEFRULE_CONSTRUCT
|
64
|
+
void ValidateBetaMemoriesCommand(Environment *,UDFContext *,UDFValue *);
|
65
|
+
#endif
|
66
|
+
|
67
|
+
#endif /* _H_developr */
|
68
|
+
|
69
|
+
|
@@ -0,0 +1,477 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 07/30/16 */
|
5
|
+
/* */
|
6
|
+
/* DEFFACTS BSAVE/BLOAD MODULE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Implements the binary save/load feature for the */
|
11
|
+
/* deffacts construct. */
|
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.30: Changed integer type/precision. */
|
22
|
+
/* */
|
23
|
+
/* 6.40: Pragma once and other inclusion changes. */
|
24
|
+
/* */
|
25
|
+
/* Removed use of void pointers for specific */
|
26
|
+
/* data structures. */
|
27
|
+
/* */
|
28
|
+
/*************************************************************/
|
29
|
+
|
30
|
+
#include "setup.h"
|
31
|
+
|
32
|
+
#if DEFFACTS_CONSTRUCT && (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE) && (! RUN_TIME)
|
33
|
+
|
34
|
+
#include <stdio.h>
|
35
|
+
|
36
|
+
#include "bload.h"
|
37
|
+
#include "bsave.h"
|
38
|
+
#include "dffctdef.h"
|
39
|
+
#include "envrnmnt.h"
|
40
|
+
#include "memalloc.h"
|
41
|
+
#include "moduldef.h"
|
42
|
+
|
43
|
+
#include "dffctbin.h"
|
44
|
+
|
45
|
+
/***************************************/
|
46
|
+
/* LOCAL INTERNAL FUNCTION DEFINITIONS */
|
47
|
+
/***************************************/
|
48
|
+
|
49
|
+
#if BLOAD_AND_BSAVE
|
50
|
+
static void BsaveFind(Environment *);
|
51
|
+
static void BsaveExpressions(Environment *,FILE *);
|
52
|
+
static void BsaveStorage(Environment *,FILE *);
|
53
|
+
static void BsaveBinaryItem(Environment *,FILE *);
|
54
|
+
#endif
|
55
|
+
static void BloadStorage(Environment *);
|
56
|
+
static void BloadBinaryItem(Environment *);
|
57
|
+
static void UpdateDeffactsModule(Environment *,void *,unsigned long);
|
58
|
+
static void UpdateDeffacts(Environment *,void *,unsigned long);
|
59
|
+
static void ClearBload(Environment *);
|
60
|
+
static void DeallocateDeffactsBloadData(Environment *);
|
61
|
+
|
62
|
+
/********************************************/
|
63
|
+
/* DeffactsBinarySetup: Installs the binary */
|
64
|
+
/* save/load feature for deffacts. */
|
65
|
+
/********************************************/
|
66
|
+
void DeffactsBinarySetup(
|
67
|
+
Environment *theEnv)
|
68
|
+
{
|
69
|
+
AllocateEnvironmentData(theEnv,DFFCTBIN_DATA,sizeof(struct deffactsBinaryData),DeallocateDeffactsBloadData);
|
70
|
+
#if BLOAD_AND_BSAVE
|
71
|
+
AddBinaryItem(theEnv,"deffacts",0,BsaveFind,BsaveExpressions,
|
72
|
+
BsaveStorage,BsaveBinaryItem,
|
73
|
+
BloadStorage,BloadBinaryItem,
|
74
|
+
ClearBload);
|
75
|
+
#endif
|
76
|
+
|
77
|
+
#if (BLOAD || BLOAD_ONLY)
|
78
|
+
AddBinaryItem(theEnv,"deffacts",0,NULL,NULL,NULL,NULL,
|
79
|
+
BloadStorage,BloadBinaryItem,
|
80
|
+
ClearBload);
|
81
|
+
#endif
|
82
|
+
}
|
83
|
+
|
84
|
+
/********************************************************/
|
85
|
+
/* DeallocateDeffactsBloadData: Deallocates environment */
|
86
|
+
/* data for the deffacts bsave functionality. */
|
87
|
+
/********************************************************/
|
88
|
+
static void DeallocateDeffactsBloadData(
|
89
|
+
Environment *theEnv)
|
90
|
+
{
|
91
|
+
size_t space;
|
92
|
+
|
93
|
+
space = DeffactsBinaryData(theEnv)->NumberOfDeffacts * sizeof(Deffacts);
|
94
|
+
if (space != 0) genfree(theEnv,DeffactsBinaryData(theEnv)->DeffactsArray,space);
|
95
|
+
|
96
|
+
space = DeffactsBinaryData(theEnv)->NumberOfDeffactsModules * sizeof(struct deffactsModule);
|
97
|
+
if (space != 0) genfree(theEnv,DeffactsBinaryData(theEnv)->ModuleArray,space);
|
98
|
+
}
|
99
|
+
|
100
|
+
#if BLOAD_AND_BSAVE
|
101
|
+
|
102
|
+
/*********************************************************/
|
103
|
+
/* BsaveFind: Counts the number of data structures which */
|
104
|
+
/* must be saved in the binary image for the deffacts */
|
105
|
+
/* in the current environment. */
|
106
|
+
/*********************************************************/
|
107
|
+
static void BsaveFind(
|
108
|
+
Environment *theEnv)
|
109
|
+
{
|
110
|
+
Deffacts *theDeffacts;
|
111
|
+
Defmodule *theModule;
|
112
|
+
|
113
|
+
/*=======================================================*/
|
114
|
+
/* If a binary image is already loaded, then temporarily */
|
115
|
+
/* save the count values since these will be overwritten */
|
116
|
+
/* in the process of saving the binary image. */
|
117
|
+
/*=======================================================*/
|
118
|
+
|
119
|
+
SaveBloadCount(theEnv,DeffactsBinaryData(theEnv)->NumberOfDeffactsModules);
|
120
|
+
SaveBloadCount(theEnv,DeffactsBinaryData(theEnv)->NumberOfDeffacts);
|
121
|
+
|
122
|
+
/*========================================*/
|
123
|
+
/* Set the count of deffacts and deffacts */
|
124
|
+
/* module data structures to zero. */
|
125
|
+
/*========================================*/
|
126
|
+
|
127
|
+
DeffactsBinaryData(theEnv)->NumberOfDeffacts = 0;
|
128
|
+
DeffactsBinaryData(theEnv)->NumberOfDeffactsModules = 0;
|
129
|
+
|
130
|
+
/*===========================*/
|
131
|
+
/* Loop through each module. */
|
132
|
+
/*===========================*/
|
133
|
+
|
134
|
+
for (theModule = GetNextDefmodule(theEnv,NULL);
|
135
|
+
theModule != NULL;
|
136
|
+
theModule = GetNextDefmodule(theEnv,theModule))
|
137
|
+
{
|
138
|
+
/*===============================================*/
|
139
|
+
/* Set the current module to the module being */
|
140
|
+
/* examined and increment the number of deffacts */
|
141
|
+
/* modules encountered. */
|
142
|
+
/*===============================================*/
|
143
|
+
|
144
|
+
SetCurrentModule(theEnv,theModule);
|
145
|
+
DeffactsBinaryData(theEnv)->NumberOfDeffactsModules++;
|
146
|
+
|
147
|
+
/*===================================================*/
|
148
|
+
/* Loop through each deffacts in the current module. */
|
149
|
+
/*===================================================*/
|
150
|
+
|
151
|
+
for (theDeffacts = GetNextDeffacts(theEnv,NULL);
|
152
|
+
theDeffacts != NULL;
|
153
|
+
theDeffacts = GetNextDeffacts(theEnv,theDeffacts))
|
154
|
+
{
|
155
|
+
/*======================================================*/
|
156
|
+
/* Initialize the construct header for the binary save. */
|
157
|
+
/*======================================================*/
|
158
|
+
|
159
|
+
MarkConstructHeaderNeededItems(&theDeffacts->header,DeffactsBinaryData(theEnv)->NumberOfDeffacts++);
|
160
|
+
|
161
|
+
/*============================================================*/
|
162
|
+
/* Count the number of expressions contained in the deffacts' */
|
163
|
+
/* assertion list and mark any atomic values contained there */
|
164
|
+
/* as in use. */
|
165
|
+
/*============================================================*/
|
166
|
+
|
167
|
+
ExpressionData(theEnv)->ExpressionCount += ExpressionSize(theDeffacts->assertList);
|
168
|
+
MarkNeededItems(theEnv,theDeffacts->assertList);
|
169
|
+
}
|
170
|
+
}
|
171
|
+
}
|
172
|
+
|
173
|
+
/************************************************/
|
174
|
+
/* BsaveExpressions: Saves the expressions used */
|
175
|
+
/* by deffacts to the binary save file. */
|
176
|
+
/************************************************/
|
177
|
+
static void BsaveExpressions(
|
178
|
+
Environment *theEnv,
|
179
|
+
FILE *fp)
|
180
|
+
{
|
181
|
+
Deffacts *theDeffacts;
|
182
|
+
Defmodule *theModule;
|
183
|
+
|
184
|
+
/*===========================*/
|
185
|
+
/* Loop through each module. */
|
186
|
+
/*===========================*/
|
187
|
+
|
188
|
+
for (theModule = GetNextDefmodule(theEnv,NULL);
|
189
|
+
theModule != NULL;
|
190
|
+
theModule = GetNextDefmodule(theEnv,theModule))
|
191
|
+
{
|
192
|
+
/*======================================================*/
|
193
|
+
/* Set the current module to the module being examined. */
|
194
|
+
/*======================================================*/
|
195
|
+
|
196
|
+
SetCurrentModule(theEnv,theModule);
|
197
|
+
|
198
|
+
/*==================================================*/
|
199
|
+
/* Loop through each deffacts in the current module */
|
200
|
+
/* and save the assertion list expression. */
|
201
|
+
/*==================================================*/
|
202
|
+
|
203
|
+
for (theDeffacts = GetNextDeffacts(theEnv,NULL);
|
204
|
+
theDeffacts != NULL;
|
205
|
+
theDeffacts = GetNextDeffacts(theEnv,theDeffacts))
|
206
|
+
{ BsaveExpression(theEnv,theDeffacts->assertList,fp); }
|
207
|
+
}
|
208
|
+
}
|
209
|
+
|
210
|
+
/******************************************************/
|
211
|
+
/* BsaveStorage: Writes out the storage requirements */
|
212
|
+
/* for all deffacts structures to the binary file. */
|
213
|
+
/******************************************************/
|
214
|
+
static void BsaveStorage(
|
215
|
+
Environment *theEnv,
|
216
|
+
FILE *fp)
|
217
|
+
{
|
218
|
+
size_t space;
|
219
|
+
|
220
|
+
/*=================================================================*/
|
221
|
+
/* Only two data structures are saved as part of a deffacts binary */
|
222
|
+
/* image: the deffacts data structure and the deffactsModule data */
|
223
|
+
/* structure. The assertion list expressions are not save with the */
|
224
|
+
/* deffacts portion of the binary image. */
|
225
|
+
/*=================================================================*/
|
226
|
+
|
227
|
+
space = sizeof(long) * 2;
|
228
|
+
GenWrite(&space,sizeof(size_t),fp);
|
229
|
+
GenWrite(&DeffactsBinaryData(theEnv)->NumberOfDeffacts,sizeof(long),fp);
|
230
|
+
GenWrite(&DeffactsBinaryData(theEnv)->NumberOfDeffactsModules,sizeof(long),fp);
|
231
|
+
}
|
232
|
+
|
233
|
+
/********************************************/
|
234
|
+
/* BsaveBinaryItem: Writes out all deffacts */
|
235
|
+
/* structures to the binary file. */
|
236
|
+
/********************************************/
|
237
|
+
static void BsaveBinaryItem(
|
238
|
+
Environment *theEnv,
|
239
|
+
FILE *fp)
|
240
|
+
{
|
241
|
+
size_t space;
|
242
|
+
Deffacts *theDeffacts;
|
243
|
+
struct bsaveDeffacts newDeffacts;
|
244
|
+
Defmodule *theModule;
|
245
|
+
struct bsaveDeffactsModule tempDeffactsModule;
|
246
|
+
struct deffactsModule *theModuleItem;
|
247
|
+
|
248
|
+
/*=========================================================*/
|
249
|
+
/* Write out the amount of space taken up by the deffacts */
|
250
|
+
/* and deffactsModule data structures in the binary image. */
|
251
|
+
/*=========================================================*/
|
252
|
+
|
253
|
+
space = DeffactsBinaryData(theEnv)->NumberOfDeffacts * sizeof(struct bsaveDeffacts) +
|
254
|
+
(DeffactsBinaryData(theEnv)->NumberOfDeffactsModules * sizeof(struct bsaveDeffactsModule));
|
255
|
+
GenWrite(&space,sizeof(size_t),fp);
|
256
|
+
|
257
|
+
/*================================================*/
|
258
|
+
/* Write out each deffacts module data structure. */
|
259
|
+
/*================================================*/
|
260
|
+
|
261
|
+
DeffactsBinaryData(theEnv)->NumberOfDeffacts = 0;
|
262
|
+
for (theModule = GetNextDefmodule(theEnv,NULL);
|
263
|
+
theModule != NULL;
|
264
|
+
theModule = GetNextDefmodule(theEnv,theModule))
|
265
|
+
{
|
266
|
+
SetCurrentModule(theEnv,theModule);
|
267
|
+
|
268
|
+
theModuleItem = (struct deffactsModule *) GetModuleItem(theEnv,NULL,DeffactsData(theEnv)->DeffactsModuleIndex);
|
269
|
+
AssignBsaveDefmdlItemHdrVals(&tempDeffactsModule.header,&theModuleItem->header);
|
270
|
+
GenWrite(&tempDeffactsModule,sizeof(struct bsaveDeffactsModule),fp);
|
271
|
+
}
|
272
|
+
|
273
|
+
/*==========================*/
|
274
|
+
/* Write out each deffacts. */
|
275
|
+
/*==========================*/
|
276
|
+
|
277
|
+
for (theModule = GetNextDefmodule(theEnv,NULL);
|
278
|
+
theModule != NULL;
|
279
|
+
theModule = GetNextDefmodule(theEnv,theModule))
|
280
|
+
{
|
281
|
+
SetCurrentModule(theEnv,theModule);
|
282
|
+
|
283
|
+
for (theDeffacts = GetNextDeffacts(theEnv,NULL);
|
284
|
+
theDeffacts != NULL;
|
285
|
+
theDeffacts = GetNextDeffacts(theEnv,theDeffacts))
|
286
|
+
{
|
287
|
+
AssignBsaveConstructHeaderVals(&newDeffacts.header,&theDeffacts->header);
|
288
|
+
if (theDeffacts->assertList != NULL)
|
289
|
+
{
|
290
|
+
newDeffacts.assertList = ExpressionData(theEnv)->ExpressionCount;
|
291
|
+
ExpressionData(theEnv)->ExpressionCount += ExpressionSize(theDeffacts->assertList);
|
292
|
+
}
|
293
|
+
else
|
294
|
+
{ newDeffacts.assertList = ULONG_MAX; }
|
295
|
+
|
296
|
+
GenWrite(&newDeffacts,sizeof(struct bsaveDeffacts),fp);
|
297
|
+
}
|
298
|
+
}
|
299
|
+
|
300
|
+
/*=============================================================*/
|
301
|
+
/* If a binary image was already loaded when the bsave command */
|
302
|
+
/* was issued, then restore the counts indicating the number */
|
303
|
+
/* of deffacts and deffacts modules in the binary image (these */
|
304
|
+
/* were overwritten by the binary save). */
|
305
|
+
/*=============================================================*/
|
306
|
+
|
307
|
+
RestoreBloadCount(theEnv,&DeffactsBinaryData(theEnv)->NumberOfDeffactsModules);
|
308
|
+
RestoreBloadCount(theEnv,&DeffactsBinaryData(theEnv)->NumberOfDeffacts);
|
309
|
+
}
|
310
|
+
|
311
|
+
#endif /* BLOAD_AND_BSAVE */
|
312
|
+
|
313
|
+
/****************************************************/
|
314
|
+
/* BloadStorage: Allocates storage requirements for */
|
315
|
+
/* the deffacts used by this binary image. */
|
316
|
+
/****************************************************/
|
317
|
+
static void BloadStorage(
|
318
|
+
Environment *theEnv)
|
319
|
+
{
|
320
|
+
size_t space;
|
321
|
+
|
322
|
+
/*=====================================================*/
|
323
|
+
/* Determine the number of deffacts and deffactsModule */
|
324
|
+
/* data structures to be read. */
|
325
|
+
/*=====================================================*/
|
326
|
+
|
327
|
+
GenReadBinary(theEnv,&space,sizeof(size_t));
|
328
|
+
GenReadBinary(theEnv,&DeffactsBinaryData(theEnv)->NumberOfDeffacts,sizeof(long));
|
329
|
+
GenReadBinary(theEnv,&DeffactsBinaryData(theEnv)->NumberOfDeffactsModules,sizeof(long));
|
330
|
+
|
331
|
+
/*===================================*/
|
332
|
+
/* Allocate the space needed for the */
|
333
|
+
/* deffactsModule data structures. */
|
334
|
+
/*===================================*/
|
335
|
+
|
336
|
+
if (DeffactsBinaryData(theEnv)->NumberOfDeffactsModules == 0)
|
337
|
+
{
|
338
|
+
DeffactsBinaryData(theEnv)->DeffactsArray = NULL;
|
339
|
+
DeffactsBinaryData(theEnv)->ModuleArray = NULL;
|
340
|
+
return;
|
341
|
+
}
|
342
|
+
|
343
|
+
space = DeffactsBinaryData(theEnv)->NumberOfDeffactsModules * sizeof(struct deffactsModule);
|
344
|
+
DeffactsBinaryData(theEnv)->ModuleArray = (struct deffactsModule *) genalloc(theEnv,space);
|
345
|
+
|
346
|
+
/*===================================*/
|
347
|
+
/* Allocate the space needed for the */
|
348
|
+
/* deffacts data structures. */
|
349
|
+
/*===================================*/
|
350
|
+
|
351
|
+
if (DeffactsBinaryData(theEnv)->NumberOfDeffacts == 0)
|
352
|
+
{
|
353
|
+
DeffactsBinaryData(theEnv)->DeffactsArray = NULL;
|
354
|
+
return;
|
355
|
+
}
|
356
|
+
|
357
|
+
space = (DeffactsBinaryData(theEnv)->NumberOfDeffacts * sizeof(Deffacts));
|
358
|
+
DeffactsBinaryData(theEnv)->DeffactsArray = (Deffacts *) genalloc(theEnv,space);
|
359
|
+
}
|
360
|
+
|
361
|
+
/*****************************************************/
|
362
|
+
/* BloadBinaryItem: Loads and refreshes the deffacts */
|
363
|
+
/* constructs used by this binary image. */
|
364
|
+
/*****************************************************/
|
365
|
+
static void BloadBinaryItem(
|
366
|
+
Environment *theEnv)
|
367
|
+
{
|
368
|
+
size_t space;
|
369
|
+
|
370
|
+
/*======================================================*/
|
371
|
+
/* Read in the amount of space used by the binary image */
|
372
|
+
/* (this is used to skip the construct in the event it */
|
373
|
+
/* is not available in the version being run). */
|
374
|
+
/*======================================================*/
|
375
|
+
|
376
|
+
GenReadBinary(theEnv,&space,sizeof(size_t));
|
377
|
+
|
378
|
+
/*============================================*/
|
379
|
+
/* Read in the deffactsModule data structures */
|
380
|
+
/* and refresh the pointers. */
|
381
|
+
/*============================================*/
|
382
|
+
|
383
|
+
BloadandRefresh(theEnv,DeffactsBinaryData(theEnv)->NumberOfDeffactsModules,
|
384
|
+
sizeof(struct bsaveDeffactsModule),UpdateDeffactsModule);
|
385
|
+
|
386
|
+
/*======================================*/
|
387
|
+
/* Read in the deffacts data structures */
|
388
|
+
/* and refresh the pointers. */
|
389
|
+
/*======================================*/
|
390
|
+
|
391
|
+
BloadandRefresh(theEnv,DeffactsBinaryData(theEnv)->NumberOfDeffacts,
|
392
|
+
sizeof(struct bsaveDeffacts),UpdateDeffacts);
|
393
|
+
}
|
394
|
+
|
395
|
+
/***************************************************/
|
396
|
+
/* UpdateDeffactsModule: Bload refresh routine for */
|
397
|
+
/* deffacts module data structures. */
|
398
|
+
/***************************************************/
|
399
|
+
static void UpdateDeffactsModule(
|
400
|
+
Environment *theEnv,
|
401
|
+
void *buf,
|
402
|
+
unsigned long obji)
|
403
|
+
{
|
404
|
+
struct bsaveDeffactsModule *bdmPtr;
|
405
|
+
|
406
|
+
bdmPtr = (struct bsaveDeffactsModule *) buf;
|
407
|
+
UpdateDefmoduleItemHeader(theEnv,&bdmPtr->header,&DeffactsBinaryData(theEnv)->ModuleArray[obji].header,
|
408
|
+
sizeof(Deffacts),DeffactsBinaryData(theEnv)->DeffactsArray);
|
409
|
+
}
|
410
|
+
|
411
|
+
/*********************************************/
|
412
|
+
/* UpdateDeffacts: Bload refresh routine for */
|
413
|
+
/* deffacts data structures. */
|
414
|
+
/*********************************************/
|
415
|
+
static void UpdateDeffacts(
|
416
|
+
Environment *theEnv,
|
417
|
+
void *buf,
|
418
|
+
unsigned long obji)
|
419
|
+
{
|
420
|
+
struct bsaveDeffacts *bdp;
|
421
|
+
|
422
|
+
bdp = (struct bsaveDeffacts *) buf;
|
423
|
+
UpdateConstructHeader(theEnv,&bdp->header,&DeffactsBinaryData(theEnv)->DeffactsArray[obji].header,
|
424
|
+
DEFFACTS,sizeof(struct deffactsModule),DeffactsBinaryData(theEnv)->ModuleArray,
|
425
|
+
sizeof(Deffacts),DeffactsBinaryData(theEnv)->DeffactsArray);
|
426
|
+
DeffactsBinaryData(theEnv)->DeffactsArray[obji].assertList = ExpressionPointer(bdp->assertList);
|
427
|
+
}
|
428
|
+
|
429
|
+
/**************************************/
|
430
|
+
/* ClearBload: Deffacts clear routine */
|
431
|
+
/* when a binary load is in effect. */
|
432
|
+
/**************************************/
|
433
|
+
static void ClearBload(
|
434
|
+
Environment *theEnv)
|
435
|
+
{
|
436
|
+
unsigned long i;
|
437
|
+
size_t space;
|
438
|
+
|
439
|
+
/*=============================================*/
|
440
|
+
/* Decrement in use counters for atomic values */
|
441
|
+
/* contained in the construct headers. */
|
442
|
+
/*=============================================*/
|
443
|
+
|
444
|
+
for (i = 0; i < DeffactsBinaryData(theEnv)->NumberOfDeffacts; i++)
|
445
|
+
{ UnmarkConstructHeader(theEnv,&DeffactsBinaryData(theEnv)->DeffactsArray[i].header); }
|
446
|
+
|
447
|
+
/*=============================================================*/
|
448
|
+
/* Deallocate the space used for the deffacts data structures. */
|
449
|
+
/*=============================================================*/
|
450
|
+
|
451
|
+
space = DeffactsBinaryData(theEnv)->NumberOfDeffacts * sizeof(Deffacts);
|
452
|
+
if (space != 0) genfree(theEnv,DeffactsBinaryData(theEnv)->DeffactsArray,space);
|
453
|
+
DeffactsBinaryData(theEnv)->NumberOfDeffacts = 0;
|
454
|
+
|
455
|
+
/*====================================================================*/
|
456
|
+
/* Deallocate the space used for the deffacts module data structures. */
|
457
|
+
/*====================================================================*/
|
458
|
+
|
459
|
+
space = DeffactsBinaryData(theEnv)->NumberOfDeffactsModules * sizeof(struct deffactsModule);
|
460
|
+
if (space != 0) genfree(theEnv,DeffactsBinaryData(theEnv)->ModuleArray,space);
|
461
|
+
DeffactsBinaryData(theEnv)->NumberOfDeffactsModules = 0;
|
462
|
+
}
|
463
|
+
|
464
|
+
/******************************************************/
|
465
|
+
/* BloadDeffactsModuleReference: Returns the deffacts */
|
466
|
+
/* module pointer for use with the bload function. */
|
467
|
+
/******************************************************/
|
468
|
+
void *BloadDeffactsModuleReference(
|
469
|
+
Environment *theEnv,
|
470
|
+
unsigned long theIndex)
|
471
|
+
{
|
472
|
+
return (void *) &DeffactsBinaryData(theEnv)->ModuleArray[theIndex];
|
473
|
+
}
|
474
|
+
|
475
|
+
#endif /* DEFFACTS_CONSTRUCT && (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE) && (! RUN_TIME) */
|
476
|
+
|
477
|
+
|
@@ -0,0 +1,76 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 07/30/16 */
|
5
|
+
/* */
|
6
|
+
/* DEFFACTS BSAVE/BLOAD HEADER FILE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: */
|
11
|
+
/* */
|
12
|
+
/* Principal Programmer(s): */
|
13
|
+
/* Gary D. Riley */
|
14
|
+
/* */
|
15
|
+
/* Contributing Programmer(s): */
|
16
|
+
/* Brian L. Dantes */
|
17
|
+
/* */
|
18
|
+
/* Revision History: */
|
19
|
+
/* */
|
20
|
+
/* 6.30: Changed integer type/precision. */
|
21
|
+
/* */
|
22
|
+
/* 6.40: Removed LOCALE definition. */
|
23
|
+
/* */
|
24
|
+
/* Pragma once and other inclusion changes. */
|
25
|
+
/* */
|
26
|
+
/* Removed use of void pointers for specific */
|
27
|
+
/* data structures. */
|
28
|
+
/* */
|
29
|
+
/*************************************************************/
|
30
|
+
|
31
|
+
#ifndef _H_dffctbin
|
32
|
+
|
33
|
+
#pragma once
|
34
|
+
|
35
|
+
#define _H_dffctbin
|
36
|
+
|
37
|
+
#if (! RUN_TIME)
|
38
|
+
|
39
|
+
#include "constrct.h"
|
40
|
+
#include "cstrcbin.h"
|
41
|
+
#include "dffctdef.h"
|
42
|
+
#include "modulbin.h"
|
43
|
+
|
44
|
+
struct bsaveDeffacts
|
45
|
+
{
|
46
|
+
struct bsaveConstructHeader header;
|
47
|
+
unsigned long assertList;
|
48
|
+
};
|
49
|
+
|
50
|
+
struct bsaveDeffactsModule
|
51
|
+
{
|
52
|
+
struct bsaveDefmoduleItemHeader header;
|
53
|
+
};
|
54
|
+
|
55
|
+
#define DFFCTBIN_DATA 26
|
56
|
+
|
57
|
+
struct deffactsBinaryData
|
58
|
+
{
|
59
|
+
Deffacts *DeffactsArray;
|
60
|
+
unsigned long NumberOfDeffacts;
|
61
|
+
struct deffactsModule *ModuleArray;
|
62
|
+
unsigned long NumberOfDeffactsModules;
|
63
|
+
};
|
64
|
+
|
65
|
+
#define DeffactsBinaryData(theEnv) ((struct deffactsBinaryData *) GetEnvironmentData(theEnv,DFFCTBIN_DATA))
|
66
|
+
|
67
|
+
void DeffactsBinarySetup(Environment *);
|
68
|
+
void *BloadDeffactsModuleReference(Environment *,unsigned long);
|
69
|
+
|
70
|
+
#endif /* (! RUN_TIME) */
|
71
|
+
|
72
|
+
#endif /* _H_dffctbin */
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|