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,347 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 02/09/21 */
|
5
|
+
/* */
|
6
|
+
/* DEFMODULE BASIC COMMANDS HEADER FILE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Implements core commands for the defmodule */
|
11
|
+
/* construct such as clear, reset, save, ppdefmodule */
|
12
|
+
/* list-defmodules, and get-defmodule-list. */
|
13
|
+
/* */
|
14
|
+
/* Principal Programmer(s): */
|
15
|
+
/* Gary D. Riley */
|
16
|
+
/* */
|
17
|
+
/* Contributing Programmer(s): */
|
18
|
+
/* Brian L. Dantes */
|
19
|
+
/* */
|
20
|
+
/* Revision History: */
|
21
|
+
/* */
|
22
|
+
/* 6.30: Removed conditional code for unsupported */
|
23
|
+
/* compilers/operating systems (IBM_MCW and */
|
24
|
+
/* MAC_MCW). */
|
25
|
+
/* */
|
26
|
+
/* Added const qualifiers to remove C++ */
|
27
|
+
/* deprecation warnings. */
|
28
|
+
/* */
|
29
|
+
/* Converted API macros to function calls. */
|
30
|
+
/* */
|
31
|
+
/* 6.40: 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
|
+
/* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
|
39
|
+
/* */
|
40
|
+
/* UDF redesign. */
|
41
|
+
/* */
|
42
|
+
/* Pretty print functions accept optional logical */
|
43
|
+
/* name argument. */
|
44
|
+
/* */
|
45
|
+
/*************************************************************/
|
46
|
+
|
47
|
+
#include "setup.h"
|
48
|
+
|
49
|
+
#include <stdio.h>
|
50
|
+
#include <string.h>
|
51
|
+
|
52
|
+
#include "argacces.h"
|
53
|
+
#include "bload.h"
|
54
|
+
#include "constrct.h"
|
55
|
+
#include "envrnmnt.h"
|
56
|
+
#include "extnfunc.h"
|
57
|
+
#if BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE
|
58
|
+
#include "modulbin.h"
|
59
|
+
#endif
|
60
|
+
#include "modulcmp.h"
|
61
|
+
#include "multifld.h"
|
62
|
+
#include "prntutil.h"
|
63
|
+
#include "router.h"
|
64
|
+
|
65
|
+
#include "modulbsc.h"
|
66
|
+
|
67
|
+
/***************************************/
|
68
|
+
/* LOCAL INTERNAL FUNCTION DEFINITIONS */
|
69
|
+
/***************************************/
|
70
|
+
|
71
|
+
static void ClearDefmodules(Environment *,void *);
|
72
|
+
#if DEFMODULE_CONSTRUCT
|
73
|
+
static void SaveDefmodules(Environment *,Defmodule *,const char *,void *);
|
74
|
+
#endif
|
75
|
+
|
76
|
+
/*****************************************************************/
|
77
|
+
/* DefmoduleBasicCommands: Initializes basic defmodule commands. */
|
78
|
+
/*****************************************************************/
|
79
|
+
void DefmoduleBasicCommands(
|
80
|
+
Environment *theEnv)
|
81
|
+
{
|
82
|
+
AddClearFunction(theEnv,"defmodule",ClearDefmodules,2000,NULL);
|
83
|
+
|
84
|
+
#if DEFMODULE_CONSTRUCT
|
85
|
+
AddSaveFunction(theEnv,"defmodule",SaveDefmodules,1100,NULL);
|
86
|
+
|
87
|
+
#if ! RUN_TIME
|
88
|
+
AddUDF(theEnv,"get-defmodule-list","m",0,0,NULL,GetDefmoduleListFunction,"GetDefmoduleListFunction",NULL);
|
89
|
+
|
90
|
+
#if DEBUGGING_FUNCTIONS
|
91
|
+
AddUDF(theEnv,"list-defmodules","v",0,0,NULL,ListDefmodulesCommand,"ListDefmodulesCommand",NULL);
|
92
|
+
AddUDF(theEnv,"ppdefmodule","v",1,2,";y;ldsyn",PPDefmoduleCommand,"PPDefmoduleCommand",NULL);
|
93
|
+
#endif
|
94
|
+
#endif
|
95
|
+
#endif
|
96
|
+
|
97
|
+
#if (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE)
|
98
|
+
DefmoduleBinarySetup(theEnv);
|
99
|
+
#endif
|
100
|
+
|
101
|
+
#if CONSTRUCT_COMPILER && (! RUN_TIME)
|
102
|
+
DefmoduleCompilerSetup(theEnv);
|
103
|
+
#endif
|
104
|
+
}
|
105
|
+
|
106
|
+
/*********************************************************/
|
107
|
+
/* ClearDefmodules: Defmodule clear routine for use with */
|
108
|
+
/* the clear command. Creates the MAIN module. */
|
109
|
+
/*********************************************************/
|
110
|
+
static void ClearDefmodules(
|
111
|
+
Environment *theEnv,
|
112
|
+
void *context)
|
113
|
+
{
|
114
|
+
#if (BLOAD || BLOAD_AND_BSAVE || BLOAD_ONLY) && (! RUN_TIME)
|
115
|
+
if (Bloaded(theEnv) == true) return;
|
116
|
+
#endif
|
117
|
+
#if (! RUN_TIME)
|
118
|
+
RemoveAllDefmodules(theEnv,NULL);
|
119
|
+
|
120
|
+
CreateMainModule(theEnv,NULL);
|
121
|
+
DefmoduleData(theEnv)->MainModuleRedefinable = true;
|
122
|
+
#else
|
123
|
+
#if MAC_XCD
|
124
|
+
#pragma unused(theEnv)
|
125
|
+
#endif
|
126
|
+
#endif
|
127
|
+
}
|
128
|
+
|
129
|
+
#if DEFMODULE_CONSTRUCT
|
130
|
+
|
131
|
+
/******************************************/
|
132
|
+
/* SaveDefmodules: Defmodule save routine */
|
133
|
+
/* for use with the save command. */
|
134
|
+
/******************************************/
|
135
|
+
static void SaveDefmodules(
|
136
|
+
Environment *theEnv,
|
137
|
+
Defmodule *theModule,
|
138
|
+
const char *logicalName,
|
139
|
+
void *context)
|
140
|
+
{
|
141
|
+
const char *ppform;
|
142
|
+
|
143
|
+
ppform = DefmodulePPForm(theModule);
|
144
|
+
if (ppform != NULL)
|
145
|
+
{
|
146
|
+
WriteString(theEnv,logicalName,ppform);
|
147
|
+
WriteString(theEnv,logicalName,"\n");
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
/************************************************/
|
152
|
+
/* GetDefmoduleListFunction: H/L access routine */
|
153
|
+
/* for the get-defmodule-list function. */
|
154
|
+
/************************************************/
|
155
|
+
void GetDefmoduleListFunction(
|
156
|
+
Environment *theEnv,
|
157
|
+
UDFContext *context,
|
158
|
+
UDFValue *returnValue)
|
159
|
+
{
|
160
|
+
CLIPSValue result;
|
161
|
+
|
162
|
+
GetDefmoduleList(theEnv,&result);
|
163
|
+
CLIPSToUDFValue(&result,returnValue);
|
164
|
+
}
|
165
|
+
|
166
|
+
/******************************************/
|
167
|
+
/* GetDefmoduleList: C access routine */
|
168
|
+
/* for the get-defmodule-list function. */
|
169
|
+
/******************************************/
|
170
|
+
void GetDefmoduleList(
|
171
|
+
Environment *theEnv,
|
172
|
+
CLIPSValue *returnValue)
|
173
|
+
{
|
174
|
+
Defmodule *theConstruct;
|
175
|
+
unsigned long count = 0;
|
176
|
+
Multifield *theList;
|
177
|
+
|
178
|
+
/*====================================*/
|
179
|
+
/* Determine the number of constructs */
|
180
|
+
/* of the specified type. */
|
181
|
+
/*====================================*/
|
182
|
+
|
183
|
+
for (theConstruct = GetNextDefmodule(theEnv,NULL);
|
184
|
+
theConstruct != NULL;
|
185
|
+
theConstruct = GetNextDefmodule(theEnv,theConstruct))
|
186
|
+
{ count++; }
|
187
|
+
|
188
|
+
/*===========================*/
|
189
|
+
/* Create a multifield large */
|
190
|
+
/* enough to store the list. */
|
191
|
+
/*===========================*/
|
192
|
+
|
193
|
+
theList = CreateMultifield(theEnv,count);
|
194
|
+
returnValue->value = theList;
|
195
|
+
|
196
|
+
/*====================================*/
|
197
|
+
/* Store the names in the multifield. */
|
198
|
+
/*====================================*/
|
199
|
+
|
200
|
+
for (theConstruct = GetNextDefmodule(theEnv,NULL), count = 0;
|
201
|
+
theConstruct != NULL;
|
202
|
+
theConstruct = GetNextDefmodule(theEnv,theConstruct), count++)
|
203
|
+
{
|
204
|
+
if (EvaluationData(theEnv)->HaltExecution == true)
|
205
|
+
{
|
206
|
+
returnValue->multifieldValue = CreateMultifield(theEnv,0L);
|
207
|
+
return;
|
208
|
+
}
|
209
|
+
theList->contents[count].lexemeValue = CreateSymbol(theEnv,DefmoduleName(theConstruct));
|
210
|
+
}
|
211
|
+
}
|
212
|
+
|
213
|
+
#if DEBUGGING_FUNCTIONS
|
214
|
+
|
215
|
+
/********************************************/
|
216
|
+
/* PPDefmoduleCommand: H/L access routine */
|
217
|
+
/* for the ppdefmodule command. */
|
218
|
+
/********************************************/
|
219
|
+
void PPDefmoduleCommand(
|
220
|
+
Environment *theEnv,
|
221
|
+
UDFContext *context,
|
222
|
+
UDFValue *returnValue)
|
223
|
+
{
|
224
|
+
const char *defmoduleName;
|
225
|
+
const char *logicalName;
|
226
|
+
const char *ppForm;
|
227
|
+
|
228
|
+
defmoduleName = GetConstructName(context,"ppdefmodule","defmodule name");
|
229
|
+
if (defmoduleName == NULL) return;
|
230
|
+
|
231
|
+
if (UDFHasNextArgument(context))
|
232
|
+
{
|
233
|
+
logicalName = GetLogicalName(context,STDOUT);
|
234
|
+
if (logicalName == NULL)
|
235
|
+
{
|
236
|
+
IllegalLogicalNameMessage(theEnv,"ppdefmodule");
|
237
|
+
SetHaltExecution(theEnv,true);
|
238
|
+
SetEvaluationError(theEnv,true);
|
239
|
+
return;
|
240
|
+
}
|
241
|
+
}
|
242
|
+
else
|
243
|
+
{ logicalName = STDOUT; }
|
244
|
+
|
245
|
+
if (strcmp(logicalName,"nil") == 0)
|
246
|
+
{
|
247
|
+
ppForm = PPDefmoduleNil(theEnv,defmoduleName);
|
248
|
+
|
249
|
+
if (ppForm == NULL)
|
250
|
+
{ CantFindItemErrorMessage(theEnv,"defmodule",defmoduleName,true); }
|
251
|
+
|
252
|
+
returnValue->lexemeValue = CreateString(theEnv,ppForm);
|
253
|
+
|
254
|
+
return;
|
255
|
+
}
|
256
|
+
|
257
|
+
PPDefmodule(theEnv,defmoduleName,logicalName);
|
258
|
+
|
259
|
+
return;
|
260
|
+
}
|
261
|
+
|
262
|
+
/****************************************/
|
263
|
+
/* PPDefmoduleNil: C access routine for */
|
264
|
+
/* the ppdefmodule command. */
|
265
|
+
/****************************************/
|
266
|
+
const char *PPDefmoduleNil(
|
267
|
+
Environment *theEnv,
|
268
|
+
const char *defmoduleName)
|
269
|
+
{
|
270
|
+
Defmodule *defmodulePtr;
|
271
|
+
|
272
|
+
defmodulePtr = FindDefmodule(theEnv,defmoduleName);
|
273
|
+
if (defmodulePtr == NULL)
|
274
|
+
{
|
275
|
+
CantFindItemErrorMessage(theEnv,"defmodule",defmoduleName,true);
|
276
|
+
return NULL;
|
277
|
+
}
|
278
|
+
|
279
|
+
if (DefmodulePPForm(defmodulePtr) == NULL) return "";
|
280
|
+
|
281
|
+
return DefmodulePPForm(defmodulePtr);
|
282
|
+
}
|
283
|
+
|
284
|
+
/*************************************/
|
285
|
+
/* PPDefmodule: C access routine for */
|
286
|
+
/* the ppdefmodule command. */
|
287
|
+
/*************************************/
|
288
|
+
bool PPDefmodule(
|
289
|
+
Environment *theEnv,
|
290
|
+
const char *defmoduleName,
|
291
|
+
const char *logicalName)
|
292
|
+
{
|
293
|
+
Defmodule *defmodulePtr;
|
294
|
+
|
295
|
+
defmodulePtr = FindDefmodule(theEnv,defmoduleName);
|
296
|
+
if (defmodulePtr == NULL)
|
297
|
+
{
|
298
|
+
CantFindItemErrorMessage(theEnv,"defmodule",defmoduleName,true);
|
299
|
+
return false;
|
300
|
+
}
|
301
|
+
|
302
|
+
if (DefmodulePPForm(defmodulePtr) == NULL) return true;
|
303
|
+
WriteString(theEnv,logicalName,DefmodulePPForm(defmodulePtr));
|
304
|
+
|
305
|
+
return true;
|
306
|
+
}
|
307
|
+
|
308
|
+
/***********************************************/
|
309
|
+
/* ListDefmodulesCommand: H/L access routine */
|
310
|
+
/* for the list-defmodules command. */
|
311
|
+
/***********************************************/
|
312
|
+
void ListDefmodulesCommand(
|
313
|
+
Environment *theEnv,
|
314
|
+
UDFContext *context,
|
315
|
+
UDFValue *returnValue)
|
316
|
+
{
|
317
|
+
ListDefmodules(theEnv,STDOUT);
|
318
|
+
}
|
319
|
+
|
320
|
+
/**************************************/
|
321
|
+
/* ListDefmodules: C access routine */
|
322
|
+
/* for the list-defmodules command. */
|
323
|
+
/**************************************/
|
324
|
+
void ListDefmodules(
|
325
|
+
Environment *theEnv,
|
326
|
+
const char *logicalName)
|
327
|
+
{
|
328
|
+
Defmodule *theModule;
|
329
|
+
unsigned int count = 0;
|
330
|
+
|
331
|
+
for (theModule = GetNextDefmodule(theEnv,NULL);
|
332
|
+
theModule != NULL;
|
333
|
+
theModule = GetNextDefmodule(theEnv,theModule))
|
334
|
+
{
|
335
|
+
WriteString(theEnv,logicalName,DefmoduleName(theModule));
|
336
|
+
WriteString(theEnv,logicalName,"\n");
|
337
|
+
count++;
|
338
|
+
}
|
339
|
+
|
340
|
+
PrintTally(theEnv,logicalName,count,"defmodule","defmodules");
|
341
|
+
}
|
342
|
+
|
343
|
+
#endif /* DEBUGGING_FUNCTIONS */
|
344
|
+
|
345
|
+
#endif /* DEFMODULE_CONSTRUCT */
|
346
|
+
|
347
|
+
|
@@ -0,0 +1,67 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 07/02/18 */
|
5
|
+
/* */
|
6
|
+
/* DEFMODULE BASIC COMMANDS HEADER FILE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Implements core commands for the deffacts */
|
11
|
+
/* construct such as clear, reset, save, undeffacts, */
|
12
|
+
/* ppdeffacts, list-deffacts, and get-deffacts-list. */
|
13
|
+
/* */
|
14
|
+
/* Principal Programmer(s): */
|
15
|
+
/* Gary D. Riley */
|
16
|
+
/* */
|
17
|
+
/* Contributing Programmer(s): */
|
18
|
+
/* Brian L. Dantes */
|
19
|
+
/* */
|
20
|
+
/* Revision History: */
|
21
|
+
/* */
|
22
|
+
/* 6.30: Removed conditional code for unsupported */
|
23
|
+
/* compilers/operating systems (IBM_MCW and */
|
24
|
+
/* MAC_MCW). */
|
25
|
+
/* */
|
26
|
+
/* Added const qualifiers to remove C++ */
|
27
|
+
/* deprecation warnings. */
|
28
|
+
/* */
|
29
|
+
/* Converted API macros to function calls. */
|
30
|
+
/* */
|
31
|
+
/* 6.40: Removed LOCALE definition. */
|
32
|
+
/* */
|
33
|
+
/* Pragma once and other inclusion changes. */
|
34
|
+
/* */
|
35
|
+
/* Added support for booleans with <stdbool.h>. */
|
36
|
+
/* */
|
37
|
+
/* Removed use of void pointers for specific */
|
38
|
+
/* data structures. */
|
39
|
+
/* */
|
40
|
+
/* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
|
41
|
+
/* */
|
42
|
+
/* UDF redesign. */
|
43
|
+
/* */
|
44
|
+
/* Pretty print functions accept optional logical */
|
45
|
+
/* name argument. */
|
46
|
+
/* */
|
47
|
+
/*************************************************************/
|
48
|
+
|
49
|
+
#ifndef _H_modulbsc
|
50
|
+
|
51
|
+
#pragma once
|
52
|
+
|
53
|
+
#define _H_modulbsc
|
54
|
+
|
55
|
+
#include "evaluatn.h"
|
56
|
+
|
57
|
+
void DefmoduleBasicCommands(Environment *);
|
58
|
+
void GetDefmoduleListFunction(Environment *,UDFContext *,UDFValue *);
|
59
|
+
void GetDefmoduleList(Environment *,CLIPSValue *);
|
60
|
+
void PPDefmoduleCommand(Environment *,UDFContext *,UDFValue *);
|
61
|
+
bool PPDefmodule(Environment *,const char *,const char *);
|
62
|
+
const char *PPDefmoduleNil(Environment *,const char *);
|
63
|
+
void ListDefmodulesCommand(Environment *,UDFContext *,UDFValue *);
|
64
|
+
void ListDefmodules(Environment *,const char *);
|
65
|
+
|
66
|
+
#endif /* _H_modulbsc */
|
67
|
+
|