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,49 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 07/30/16 */
|
5
|
+
/* */
|
6
|
+
/* DEFFACTS PARSER 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: Removed conditional code for unsupported */
|
21
|
+
/* compilers/operating systems (IBM_MCW and */
|
22
|
+
/* MAC_MCW). */
|
23
|
+
/* */
|
24
|
+
/* GetConstructNameAndComment API change. */
|
25
|
+
/* */
|
26
|
+
/* Added const qualifiers to remove C++ */
|
27
|
+
/* deprecation warnings. */
|
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
|
+
/*************************************************************/
|
39
|
+
|
40
|
+
#ifndef _H_dffctpsr
|
41
|
+
|
42
|
+
#pragma once
|
43
|
+
|
44
|
+
#define _H_dffctpsr
|
45
|
+
|
46
|
+
bool ParseDeffacts(Environment *,const char *);
|
47
|
+
|
48
|
+
#endif /* _H_dffctpsr */
|
49
|
+
|
@@ -0,0 +1,520 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 11/01/16 */
|
5
|
+
/* */
|
6
|
+
/* */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Binary Load/Save Functions for Deffunctions */
|
11
|
+
/* */
|
12
|
+
/* Principal Programmer(s): */
|
13
|
+
/* Brian L. Dantes */
|
14
|
+
/* */
|
15
|
+
/* Contributing Programmer(s): */
|
16
|
+
/* */
|
17
|
+
/* Revision History: */
|
18
|
+
/* */
|
19
|
+
/* 6.30: Removed conditional code for unsupported */
|
20
|
+
/* compilers/operating systems (IBM_MCW, */
|
21
|
+
/* MAC_MCW, and IBM_TBC). */
|
22
|
+
/* */
|
23
|
+
/* 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
|
+
/* =========================================
|
35
|
+
*****************************************
|
36
|
+
EXTERNAL DEFINITIONS
|
37
|
+
=========================================
|
38
|
+
***************************************** */
|
39
|
+
#include "setup.h"
|
40
|
+
|
41
|
+
#if DEFFUNCTION_CONSTRUCT && (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE)
|
42
|
+
|
43
|
+
#include "bload.h"
|
44
|
+
#include "bsave.h"
|
45
|
+
#include "cstrcbin.h"
|
46
|
+
#include "cstrccom.h"
|
47
|
+
#include "envrnmnt.h"
|
48
|
+
#include "memalloc.h"
|
49
|
+
#include "modulbin.h"
|
50
|
+
|
51
|
+
#include "dffnxbin.h"
|
52
|
+
|
53
|
+
/* =========================================
|
54
|
+
*****************************************
|
55
|
+
CONSTANTS
|
56
|
+
=========================================
|
57
|
+
***************************************** */
|
58
|
+
|
59
|
+
/* =========================================
|
60
|
+
*****************************************
|
61
|
+
MACROS AND TYPES
|
62
|
+
=========================================
|
63
|
+
***************************************** */
|
64
|
+
typedef struct bsaveDeffunctionModule
|
65
|
+
{
|
66
|
+
struct bsaveDefmoduleItemHeader header;
|
67
|
+
} BSAVE_DEFFUNCTION_MODULE;
|
68
|
+
|
69
|
+
typedef struct bsaveDeffunctionStruct
|
70
|
+
{
|
71
|
+
struct bsaveConstructHeader header;
|
72
|
+
unsigned short minNumberOfParameters;
|
73
|
+
unsigned short maxNumberOfParameters;
|
74
|
+
unsigned short numberOfLocalVars;
|
75
|
+
unsigned long name;
|
76
|
+
unsigned long code;
|
77
|
+
} BSAVE_DEFFUNCTION;
|
78
|
+
|
79
|
+
/****************************************/
|
80
|
+
/* LOCAL INTERNAL FUNCTION DEFINITIONS */
|
81
|
+
/****************************************/
|
82
|
+
|
83
|
+
#if BLOAD_AND_BSAVE
|
84
|
+
static void BsaveDeffunctionFind(Environment *);
|
85
|
+
static void MarkDeffunctionItems(Environment *,ConstructHeader *,void *);
|
86
|
+
static void BsaveDeffunctionExpressions(Environment *,FILE *);
|
87
|
+
static void BsaveDeffunctionExpression(Environment *,ConstructHeader *,void *);
|
88
|
+
static void BsaveStorageDeffunctions(Environment *,FILE *);
|
89
|
+
static void BsaveDeffunctions(Environment *,FILE *);
|
90
|
+
static void BsaveDeffunction(Environment *,ConstructHeader *,void *);
|
91
|
+
#endif
|
92
|
+
|
93
|
+
static void BloadStorageDeffunctions(Environment *);
|
94
|
+
static void BloadDeffunctions(Environment *);
|
95
|
+
static void UpdateDeffunctionModule(Environment *,void *,unsigned long);
|
96
|
+
static void UpdateDeffunction(Environment *,void *,unsigned long);
|
97
|
+
static void ClearDeffunctionBload(Environment *);
|
98
|
+
static void DeallocateDeffunctionBloadData(Environment *);
|
99
|
+
|
100
|
+
/* =========================================
|
101
|
+
*****************************************
|
102
|
+
EXTERNALLY VISIBLE FUNCTIONS
|
103
|
+
=========================================
|
104
|
+
***************************************** */
|
105
|
+
|
106
|
+
/***********************************************************
|
107
|
+
NAME : SetupDeffunctionsBload
|
108
|
+
DESCRIPTION : Initializes data structures and
|
109
|
+
routines for binary loads of deffunctions
|
110
|
+
INPUTS : None
|
111
|
+
RETURNS : Nothing useful
|
112
|
+
SIDE EFFECTS : Routines defined and structures initialized
|
113
|
+
NOTES : None
|
114
|
+
***********************************************************/
|
115
|
+
void SetupDeffunctionsBload(
|
116
|
+
Environment *theEnv)
|
117
|
+
{
|
118
|
+
AllocateEnvironmentData(theEnv,DFFNXBIN_DATA,sizeof(struct deffunctionBinaryData),DeallocateDeffunctionBloadData);
|
119
|
+
#if BLOAD_AND_BSAVE
|
120
|
+
AddBinaryItem(theEnv,"deffunctions",0,BsaveDeffunctionFind,BsaveDeffunctionExpressions,
|
121
|
+
BsaveStorageDeffunctions,BsaveDeffunctions,
|
122
|
+
BloadStorageDeffunctions,BloadDeffunctions,
|
123
|
+
ClearDeffunctionBload);
|
124
|
+
#else
|
125
|
+
AddBinaryItem(theEnv,"deffunctions",0,NULL,NULL,NULL,NULL,
|
126
|
+
BloadStorageDeffunctions,BloadDeffunctions,
|
127
|
+
ClearDeffunctionBload);
|
128
|
+
#endif
|
129
|
+
}
|
130
|
+
|
131
|
+
/***********************************************************/
|
132
|
+
/* DeallocateDeffunctionBloadData: Deallocates environment */
|
133
|
+
/* data for the deffunction bsave functionality. */
|
134
|
+
/***********************************************************/
|
135
|
+
static void DeallocateDeffunctionBloadData(
|
136
|
+
Environment *theEnv)
|
137
|
+
{
|
138
|
+
size_t space;
|
139
|
+
|
140
|
+
#if (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE) && (! RUN_TIME)
|
141
|
+
space = DeffunctionBinaryData(theEnv)->DeffunctionCount * sizeof(Deffunction);
|
142
|
+
if (space != 0) genfree(theEnv,DeffunctionBinaryData(theEnv)->DeffunctionArray,space);
|
143
|
+
|
144
|
+
space = DeffunctionBinaryData(theEnv)->ModuleCount * sizeof(struct deffunctionModuleData);
|
145
|
+
if (space != 0) genfree(theEnv,DeffunctionBinaryData(theEnv)->ModuleArray,space);
|
146
|
+
#endif
|
147
|
+
}
|
148
|
+
|
149
|
+
/***************************************************
|
150
|
+
NAME : BloadDeffunctionModuleReference
|
151
|
+
DESCRIPTION : Returns a pointer to the
|
152
|
+
appropriate deffunction module
|
153
|
+
INPUTS : The index of the module
|
154
|
+
RETURNS : A pointer to the module
|
155
|
+
SIDE EFFECTS : None
|
156
|
+
NOTES : None
|
157
|
+
***************************************************/
|
158
|
+
void *BloadDeffunctionModuleReference(
|
159
|
+
Environment *theEnv,
|
160
|
+
unsigned long theIndex)
|
161
|
+
{
|
162
|
+
return (void *) &DeffunctionBinaryData(theEnv)->ModuleArray[theIndex];
|
163
|
+
}
|
164
|
+
|
165
|
+
/* =========================================
|
166
|
+
*****************************************
|
167
|
+
INTERNALLY VISIBLE FUNCTIONS
|
168
|
+
=========================================
|
169
|
+
***************************************** */
|
170
|
+
|
171
|
+
#if BLOAD_AND_BSAVE
|
172
|
+
|
173
|
+
/***************************************************************************
|
174
|
+
NAME : BsaveDeffunctionFind
|
175
|
+
DESCRIPTION : For all deffunctions, this routine marks all
|
176
|
+
the needed symbols.
|
177
|
+
Also, it also counts the number of
|
178
|
+
expression structures needed.
|
179
|
+
Also, counts total number of deffunctions.
|
180
|
+
INPUTS : None
|
181
|
+
RETURNS : Nothing useful
|
182
|
+
SIDE EFFECTS : ExpressionCount (a global from BSAVE.C) is incremented
|
183
|
+
for every expression needed
|
184
|
+
Symbols are marked in their structures
|
185
|
+
NOTES : Also sets bsaveIndex for each deffunction (assumes
|
186
|
+
deffunctions will be bsaved in order of binary list)
|
187
|
+
***************************************************************************/
|
188
|
+
static void BsaveDeffunctionFind(
|
189
|
+
Environment *theEnv)
|
190
|
+
{
|
191
|
+
SaveBloadCount(theEnv,DeffunctionBinaryData(theEnv)->ModuleCount);
|
192
|
+
SaveBloadCount(theEnv,DeffunctionBinaryData(theEnv)->DeffunctionCount);
|
193
|
+
DeffunctionBinaryData(theEnv)->DeffunctionCount = 0L;
|
194
|
+
|
195
|
+
DeffunctionBinaryData(theEnv)->ModuleCount = GetNumberOfDefmodules(theEnv);
|
196
|
+
|
197
|
+
DoForAllConstructs(theEnv,MarkDeffunctionItems,
|
198
|
+
DeffunctionData(theEnv)->DeffunctionModuleIndex,
|
199
|
+
false,NULL);
|
200
|
+
}
|
201
|
+
|
202
|
+
/***************************************************
|
203
|
+
NAME : MarkDeffunctionItems
|
204
|
+
DESCRIPTION : Marks the needed items for
|
205
|
+
a deffunction bsave
|
206
|
+
INPUTS : 1) The deffunction
|
207
|
+
2) User data buffer (ignored)
|
208
|
+
RETURNS : Nothing useful
|
209
|
+
SIDE EFFECTS : Needed items marked
|
210
|
+
NOTES : None
|
211
|
+
***************************************************/
|
212
|
+
static void MarkDeffunctionItems(
|
213
|
+
Environment *theEnv,
|
214
|
+
ConstructHeader *theDeffunction,
|
215
|
+
void *userBuffer)
|
216
|
+
{
|
217
|
+
#if MAC_XCD
|
218
|
+
#pragma unused(userBuffer)
|
219
|
+
#endif
|
220
|
+
|
221
|
+
MarkConstructHeaderNeededItems(theDeffunction,DeffunctionBinaryData(theEnv)->DeffunctionCount++);
|
222
|
+
ExpressionData(theEnv)->ExpressionCount += ExpressionSize(((Deffunction *) theDeffunction)->code);
|
223
|
+
MarkNeededItems(theEnv,((Deffunction *) theDeffunction)->code);
|
224
|
+
}
|
225
|
+
|
226
|
+
/***************************************************
|
227
|
+
NAME : BsaveDeffunctionExpressions
|
228
|
+
DESCRIPTION : Writes out all expressions needed
|
229
|
+
by deffunctyions
|
230
|
+
INPUTS : The file pointer of the binary file
|
231
|
+
RETURNS : Nothing useful
|
232
|
+
SIDE EFFECTS : File updated
|
233
|
+
NOTES : None
|
234
|
+
***************************************************/
|
235
|
+
static void BsaveDeffunctionExpressions(
|
236
|
+
Environment *theEnv,
|
237
|
+
FILE *fp)
|
238
|
+
{
|
239
|
+
DoForAllConstructs(theEnv,BsaveDeffunctionExpression,DeffunctionData(theEnv)->DeffunctionModuleIndex,
|
240
|
+
false,fp);
|
241
|
+
}
|
242
|
+
|
243
|
+
/***************************************************
|
244
|
+
NAME : BsaveDeffunctionExpression
|
245
|
+
DESCRIPTION : Saves the needed expressions for
|
246
|
+
a deffunction bsave
|
247
|
+
INPUTS : 1) The deffunction
|
248
|
+
2) Output data file pointer
|
249
|
+
RETURNS : Nothing useful
|
250
|
+
SIDE EFFECTS : Expressions saved
|
251
|
+
NOTES : None
|
252
|
+
***************************************************/
|
253
|
+
static void BsaveDeffunctionExpression(
|
254
|
+
Environment *theEnv,
|
255
|
+
ConstructHeader *theDeffunction,
|
256
|
+
void *userBuffer)
|
257
|
+
{
|
258
|
+
BsaveExpression(theEnv,((Deffunction *) theDeffunction)->code,(FILE *) userBuffer);
|
259
|
+
}
|
260
|
+
|
261
|
+
/***********************************************************
|
262
|
+
NAME : BsaveStorageDeffunctions
|
263
|
+
DESCRIPTION : Writes out number of each type of structure
|
264
|
+
required for deffunctions
|
265
|
+
Space required for counts (unsigned long)
|
266
|
+
INPUTS : File pointer of binary file
|
267
|
+
RETURNS : Nothing useful
|
268
|
+
SIDE EFFECTS : Binary file adjusted
|
269
|
+
NOTES : None
|
270
|
+
***********************************************************/
|
271
|
+
static void BsaveStorageDeffunctions(
|
272
|
+
Environment *theEnv,
|
273
|
+
FILE *fp)
|
274
|
+
{
|
275
|
+
size_t space;
|
276
|
+
|
277
|
+
space = sizeof(unsigned long) * 2;
|
278
|
+
GenWrite(&space,sizeof(size_t),fp);
|
279
|
+
GenWrite(&DeffunctionBinaryData(theEnv)->ModuleCount,sizeof(unsigned long),fp);
|
280
|
+
GenWrite(&DeffunctionBinaryData(theEnv)->DeffunctionCount,sizeof(unsigned long),fp);
|
281
|
+
}
|
282
|
+
|
283
|
+
/*************************************************************************************
|
284
|
+
NAME : BsaveDeffunctions
|
285
|
+
DESCRIPTION : Writes out deffunction in binary format
|
286
|
+
Space required (unsigned long)
|
287
|
+
All deffunctions (sizeof(Deffunction) * Number of deffunctions)
|
288
|
+
INPUTS : File pointer of binary file
|
289
|
+
RETURNS : Nothing useful
|
290
|
+
SIDE EFFECTS : Binary file adjusted
|
291
|
+
NOTES : None
|
292
|
+
*************************************************************************************/
|
293
|
+
static void BsaveDeffunctions(
|
294
|
+
Environment *theEnv,
|
295
|
+
FILE *fp)
|
296
|
+
{
|
297
|
+
size_t space;
|
298
|
+
Defmodule *theModule;
|
299
|
+
DeffunctionModuleData *theModuleItem;
|
300
|
+
BSAVE_DEFFUNCTION_MODULE dummy_mitem;
|
301
|
+
|
302
|
+
space = ((sizeof(BSAVE_DEFFUNCTION_MODULE) * DeffunctionBinaryData(theEnv)->ModuleCount) +
|
303
|
+
(sizeof(BSAVE_DEFFUNCTION) * DeffunctionBinaryData(theEnv)->DeffunctionCount));
|
304
|
+
GenWrite(&space,sizeof(size_t),fp);
|
305
|
+
|
306
|
+
/* =================================
|
307
|
+
Write out each deffunction module
|
308
|
+
================================= */
|
309
|
+
DeffunctionBinaryData(theEnv)->DeffunctionCount = 0L;
|
310
|
+
theModule = GetNextDefmodule(theEnv,NULL);
|
311
|
+
while (theModule != NULL)
|
312
|
+
{
|
313
|
+
theModuleItem = (DeffunctionModuleData *)
|
314
|
+
GetModuleItem(theEnv,theModule,FindModuleItem(theEnv,"deffunction")->moduleIndex);
|
315
|
+
AssignBsaveDefmdlItemHdrVals(&dummy_mitem.header,&theModuleItem->header);
|
316
|
+
GenWrite(&dummy_mitem,sizeof(BSAVE_DEFFUNCTION_MODULE),fp);
|
317
|
+
theModule = GetNextDefmodule(theEnv,theModule);
|
318
|
+
}
|
319
|
+
|
320
|
+
/* ==========================
|
321
|
+
Write out each deffunction
|
322
|
+
========================== */
|
323
|
+
DoForAllConstructs(theEnv,BsaveDeffunction,DeffunctionData(theEnv)->DeffunctionModuleIndex,
|
324
|
+
false,fp);
|
325
|
+
|
326
|
+
RestoreBloadCount(theEnv,&DeffunctionBinaryData(theEnv)->ModuleCount);
|
327
|
+
RestoreBloadCount(theEnv,&DeffunctionBinaryData(theEnv)->DeffunctionCount);
|
328
|
+
}
|
329
|
+
|
330
|
+
/***************************************************
|
331
|
+
NAME : BsaveDeffunction
|
332
|
+
DESCRIPTION : Bsaves a deffunction
|
333
|
+
INPUTS : 1) The deffunction
|
334
|
+
2) Output data file pointer
|
335
|
+
RETURNS : Nothing useful
|
336
|
+
SIDE EFFECTS : Deffunction saved
|
337
|
+
NOTES : None
|
338
|
+
***************************************************/
|
339
|
+
static void BsaveDeffunction(
|
340
|
+
Environment *theEnv,
|
341
|
+
ConstructHeader *theDeffunction,
|
342
|
+
void *userBuffer)
|
343
|
+
{
|
344
|
+
Deffunction *dptr = (Deffunction *) theDeffunction;
|
345
|
+
BSAVE_DEFFUNCTION dummy_df;
|
346
|
+
|
347
|
+
AssignBsaveConstructHeaderVals(&dummy_df.header,&dptr->header);
|
348
|
+
dummy_df.minNumberOfParameters = dptr->minNumberOfParameters;
|
349
|
+
dummy_df.maxNumberOfParameters = dptr->maxNumberOfParameters;
|
350
|
+
dummy_df.numberOfLocalVars = dptr->numberOfLocalVars;
|
351
|
+
if (dptr->code != NULL)
|
352
|
+
{
|
353
|
+
dummy_df.code = ExpressionData(theEnv)->ExpressionCount;
|
354
|
+
ExpressionData(theEnv)->ExpressionCount += ExpressionSize(dptr->code);
|
355
|
+
}
|
356
|
+
else
|
357
|
+
dummy_df.code = ULONG_MAX;
|
358
|
+
GenWrite(&dummy_df,sizeof(BSAVE_DEFFUNCTION),(FILE *) userBuffer);
|
359
|
+
}
|
360
|
+
|
361
|
+
#endif
|
362
|
+
|
363
|
+
/***********************************************************************
|
364
|
+
NAME : BloadStorageDeffunctions
|
365
|
+
DESCRIPTION : This routine space required for deffunction
|
366
|
+
structures and allocates space for them
|
367
|
+
INPUTS : Nothing
|
368
|
+
RETURNS : Nothing useful
|
369
|
+
SIDE EFFECTS : Arrays allocated and set
|
370
|
+
NOTES : This routine makes no attempt to reset any pointers
|
371
|
+
within the structures
|
372
|
+
***********************************************************************/
|
373
|
+
static void BloadStorageDeffunctions(
|
374
|
+
Environment *theEnv)
|
375
|
+
{
|
376
|
+
size_t space;
|
377
|
+
|
378
|
+
GenReadBinary(theEnv,&space,sizeof(size_t));
|
379
|
+
if (space == 0L)
|
380
|
+
return;
|
381
|
+
GenReadBinary(theEnv,&DeffunctionBinaryData(theEnv)->ModuleCount,sizeof(unsigned long));
|
382
|
+
GenReadBinary(theEnv,&DeffunctionBinaryData(theEnv)->DeffunctionCount,sizeof(unsigned long));
|
383
|
+
if (DeffunctionBinaryData(theEnv)->ModuleCount == 0L)
|
384
|
+
{
|
385
|
+
DeffunctionBinaryData(theEnv)->ModuleArray = NULL;
|
386
|
+
DeffunctionBinaryData(theEnv)->DeffunctionArray = NULL;
|
387
|
+
return;
|
388
|
+
}
|
389
|
+
|
390
|
+
space = (DeffunctionBinaryData(theEnv)->ModuleCount * sizeof(DeffunctionModuleData));
|
391
|
+
DeffunctionBinaryData(theEnv)->ModuleArray = (DeffunctionModuleData *) genalloc(theEnv,space);
|
392
|
+
|
393
|
+
if (DeffunctionBinaryData(theEnv)->DeffunctionCount == 0L)
|
394
|
+
{
|
395
|
+
DeffunctionBinaryData(theEnv)->DeffunctionArray = NULL;
|
396
|
+
return;
|
397
|
+
}
|
398
|
+
|
399
|
+
space = (DeffunctionBinaryData(theEnv)->DeffunctionCount * sizeof(Deffunction));
|
400
|
+
DeffunctionBinaryData(theEnv)->DeffunctionArray = (Deffunction *) genalloc(theEnv,space);
|
401
|
+
}
|
402
|
+
|
403
|
+
/*********************************************************************
|
404
|
+
NAME : BloadDeffunctions
|
405
|
+
DESCRIPTION : This routine reads deffunction information from
|
406
|
+
a binary file
|
407
|
+
This routine moves through the deffunction
|
408
|
+
binary array updating pointers
|
409
|
+
INPUTS : None
|
410
|
+
RETURNS : Nothing useful
|
411
|
+
SIDE EFFECTS : Pointers reset from array indices
|
412
|
+
NOTES : Assumes all loading is finished
|
413
|
+
********************************************************************/
|
414
|
+
static void BloadDeffunctions(
|
415
|
+
Environment *theEnv)
|
416
|
+
{
|
417
|
+
size_t space;
|
418
|
+
|
419
|
+
GenReadBinary(theEnv,&space,sizeof(size_t));
|
420
|
+
BloadandRefresh(theEnv,DeffunctionBinaryData(theEnv)->ModuleCount,sizeof(BSAVE_DEFFUNCTION_MODULE),UpdateDeffunctionModule);
|
421
|
+
BloadandRefresh(theEnv,DeffunctionBinaryData(theEnv)->DeffunctionCount,sizeof(BSAVE_DEFFUNCTION),UpdateDeffunction);
|
422
|
+
}
|
423
|
+
|
424
|
+
/*******************************************************
|
425
|
+
NAME : UpdateDeffunctionModule
|
426
|
+
DESCRIPTION : Updates deffunction module with binary
|
427
|
+
load data - sets pointers from
|
428
|
+
offset information
|
429
|
+
INPUTS : 1) A pointer to the bloaded data
|
430
|
+
2) The index of the binary array
|
431
|
+
element to update
|
432
|
+
RETURNS : Nothing useful
|
433
|
+
SIDE EFFECTS : Deffunction moudle pointers updated
|
434
|
+
NOTES : None
|
435
|
+
*******************************************************/
|
436
|
+
static void UpdateDeffunctionModule(
|
437
|
+
Environment *theEnv,
|
438
|
+
void *buf,
|
439
|
+
unsigned long obji)
|
440
|
+
{
|
441
|
+
BSAVE_DEFFUNCTION_MODULE *bdptr;
|
442
|
+
|
443
|
+
bdptr = (BSAVE_DEFFUNCTION_MODULE *) buf;
|
444
|
+
UpdateDefmoduleItemHeader(theEnv,&bdptr->header,&DeffunctionBinaryData(theEnv)->ModuleArray[obji].header,
|
445
|
+
sizeof(Deffunction),DeffunctionBinaryData(theEnv)->DeffunctionArray);
|
446
|
+
}
|
447
|
+
|
448
|
+
/***************************************************
|
449
|
+
NAME : UpdateDeffunction
|
450
|
+
DESCRIPTION : Updates deffunction with binary
|
451
|
+
load data - sets pointers from
|
452
|
+
offset information
|
453
|
+
INPUTS : 1) A pointer to the bloaded data
|
454
|
+
2) The index of the binary array
|
455
|
+
element to update
|
456
|
+
RETURNS : Nothing useful
|
457
|
+
SIDE EFFECTS : Deffunction pointers upadted
|
458
|
+
NOTES : None
|
459
|
+
***************************************************/
|
460
|
+
static void UpdateDeffunction(
|
461
|
+
Environment *theEnv,
|
462
|
+
void *buf,
|
463
|
+
unsigned long obji)
|
464
|
+
{
|
465
|
+
BSAVE_DEFFUNCTION *bdptr;
|
466
|
+
Deffunction *dptr;
|
467
|
+
|
468
|
+
bdptr = (BSAVE_DEFFUNCTION *) buf;
|
469
|
+
dptr = &DeffunctionBinaryData(theEnv)->DeffunctionArray[obji];
|
470
|
+
|
471
|
+
UpdateConstructHeader(theEnv,&bdptr->header,&dptr->header,DEFFUNCTION,
|
472
|
+
sizeof(DeffunctionModuleData),DeffunctionBinaryData(theEnv)->ModuleArray,
|
473
|
+
sizeof(Deffunction),DeffunctionBinaryData(theEnv)->DeffunctionArray);
|
474
|
+
|
475
|
+
dptr->code = ExpressionPointer(bdptr->code);
|
476
|
+
dptr->busy = 0;
|
477
|
+
dptr->executing = 0;
|
478
|
+
#if DEBUGGING_FUNCTIONS
|
479
|
+
dptr->trace = DeffunctionData(theEnv)->WatchDeffunctions;
|
480
|
+
#endif
|
481
|
+
dptr->minNumberOfParameters = bdptr->minNumberOfParameters;
|
482
|
+
dptr->maxNumberOfParameters = bdptr->maxNumberOfParameters;
|
483
|
+
dptr->numberOfLocalVars = bdptr->numberOfLocalVars;
|
484
|
+
}
|
485
|
+
|
486
|
+
/***************************************************************
|
487
|
+
NAME : ClearDeffunctionBload
|
488
|
+
DESCRIPTION : Release all binary-loaded deffunction
|
489
|
+
structure arrays
|
490
|
+
Resets deffunction list to NULL
|
491
|
+
INPUTS : None
|
492
|
+
RETURNS : Nothing useful
|
493
|
+
SIDE EFFECTS : Memory cleared
|
494
|
+
NOTES : Deffunction name symbol counts decremented
|
495
|
+
***************************************************************/
|
496
|
+
static void ClearDeffunctionBload(
|
497
|
+
Environment *theEnv)
|
498
|
+
{
|
499
|
+
unsigned long i;
|
500
|
+
size_t space;
|
501
|
+
|
502
|
+
space = (sizeof(DeffunctionModuleData) * DeffunctionBinaryData(theEnv)->ModuleCount);
|
503
|
+
if (space == 0L)
|
504
|
+
return;
|
505
|
+
genfree(theEnv,DeffunctionBinaryData(theEnv)->ModuleArray,space);
|
506
|
+
DeffunctionBinaryData(theEnv)->ModuleArray = NULL;
|
507
|
+
DeffunctionBinaryData(theEnv)->ModuleCount = 0L;
|
508
|
+
|
509
|
+
for (i = 0 ; i < DeffunctionBinaryData(theEnv)->DeffunctionCount ; i++)
|
510
|
+
UnmarkConstructHeader(theEnv,&DeffunctionBinaryData(theEnv)->DeffunctionArray[i].header);
|
511
|
+
space = (sizeof(Deffunction) * DeffunctionBinaryData(theEnv)->DeffunctionCount);
|
512
|
+
if (space == 0)
|
513
|
+
return;
|
514
|
+
genfree(theEnv,DeffunctionBinaryData(theEnv)->DeffunctionArray,space);
|
515
|
+
DeffunctionBinaryData(theEnv)->DeffunctionArray = NULL;
|
516
|
+
DeffunctionBinaryData(theEnv)->DeffunctionCount = 0L;
|
517
|
+
}
|
518
|
+
|
519
|
+
#endif
|
520
|
+
|
@@ -0,0 +1,67 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 07/30/16 */
|
5
|
+
/* */
|
6
|
+
/* */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: */
|
11
|
+
/* */
|
12
|
+
/* Principal Programmer(s): */
|
13
|
+
/* Brian L. Dantes */
|
14
|
+
/* */
|
15
|
+
/* Contributing Programmer(s): */
|
16
|
+
/* */
|
17
|
+
/* Revision History: */
|
18
|
+
/* */
|
19
|
+
/* 6.30: Removed conditional code for unsupported */
|
20
|
+
/* compilers/operating systems (IBM_MCW, */
|
21
|
+
/* MAC_MCW, and IBM_TBC). */
|
22
|
+
/* */
|
23
|
+
/* Changed integer type/precision. */
|
24
|
+
/* */
|
25
|
+
/* 6.40: Removed LOCALE definition. */
|
26
|
+
/* */
|
27
|
+
/* Pragma once and other inclusion changes. */
|
28
|
+
/* */
|
29
|
+
/* Removed use of void pointers for specific */
|
30
|
+
/* data structures. */
|
31
|
+
/* */
|
32
|
+
/*************************************************************/
|
33
|
+
|
34
|
+
#ifndef _H_dffnxbin
|
35
|
+
|
36
|
+
#pragma once
|
37
|
+
|
38
|
+
#define _H_dffnxbin
|
39
|
+
|
40
|
+
#if DEFFUNCTION_CONSTRUCT && (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE)
|
41
|
+
|
42
|
+
#include "dffnxfun.h"
|
43
|
+
|
44
|
+
void SetupDeffunctionsBload(Environment *);
|
45
|
+
void *BloadDeffunctionModuleReference(Environment *,unsigned long);
|
46
|
+
|
47
|
+
#define DFFNXBIN_DATA 24
|
48
|
+
|
49
|
+
struct deffunctionBinaryData
|
50
|
+
{
|
51
|
+
Deffunction *DeffunctionArray;
|
52
|
+
unsigned long DeffunctionCount;
|
53
|
+
unsigned long ModuleCount;
|
54
|
+
DeffunctionModuleData *ModuleArray;
|
55
|
+
};
|
56
|
+
|
57
|
+
#define DeffunctionBinaryData(theEnv) ((struct deffunctionBinaryData *) GetEnvironmentData(theEnv,DFFNXBIN_DATA))
|
58
|
+
|
59
|
+
#define DeffunctionPointer(i) (((i) == ULONG_MAX) ? NULL : &DeffunctionBinaryData(theEnv)->DeffunctionArray[i])
|
60
|
+
|
61
|
+
#endif /* DEFFUNCTION_CONSTRUCT && (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE) */
|
62
|
+
|
63
|
+
#endif /* _H_dffnxbin */
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
|