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,163 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 11/01/16 */
|
5
|
+
/* */
|
6
|
+
/* PATTERN HEADER FILE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Provides the mechanism for recognizing and */
|
11
|
+
/* parsing the various types of patterns that can be used */
|
12
|
+
/* in the LHS of a rule. In version 6.0, the only pattern */
|
13
|
+
/* types provided are for deftemplate and instance */
|
14
|
+
/* patterns. */
|
15
|
+
/* */
|
16
|
+
/* Principal Programmer(s): */
|
17
|
+
/* Gary D. Riley */
|
18
|
+
/* */
|
19
|
+
/* Contributing Programmer(s): */
|
20
|
+
/* */
|
21
|
+
/* Revision History: */
|
22
|
+
/* */
|
23
|
+
/* 6.24: Removed LOGICAL_DEPENDENCIES compilation flag. */
|
24
|
+
/* */
|
25
|
+
/* Renamed BOOLEAN macro type to intBool. */
|
26
|
+
/* */
|
27
|
+
/* 6.30: Added support for hashed alpha memories. */
|
28
|
+
/* */
|
29
|
+
/* Added const qualifiers to remove C++ */
|
30
|
+
/* deprecation warnings. */
|
31
|
+
/* */
|
32
|
+
/* 6.40: Removed LOCALE definition. */
|
33
|
+
/* */
|
34
|
+
/* Pragma once and other inclusion changes. */
|
35
|
+
/* */
|
36
|
+
/* Added support for booleans with <stdbool.h>. */
|
37
|
+
/* */
|
38
|
+
/* Removed use of void pointers for specific */
|
39
|
+
/* data structures. */
|
40
|
+
/* */
|
41
|
+
/* Removed initial-fact and initial-object */
|
42
|
+
/* support. */
|
43
|
+
/* */
|
44
|
+
/*************************************************************/
|
45
|
+
|
46
|
+
#ifndef _H_pattern
|
47
|
+
|
48
|
+
#pragma once
|
49
|
+
|
50
|
+
#define _H_pattern
|
51
|
+
|
52
|
+
#include <stdio.h>
|
53
|
+
|
54
|
+
#include "evaluatn.h"
|
55
|
+
#include "entities.h"
|
56
|
+
|
57
|
+
|
58
|
+
#ifndef _H_symbol
|
59
|
+
#include "symbol.h"
|
60
|
+
#endif
|
61
|
+
#ifndef _H_scanner
|
62
|
+
#include "scanner.h"
|
63
|
+
#endif
|
64
|
+
#ifndef _H_expressn
|
65
|
+
#include "expressn.h"
|
66
|
+
#endif
|
67
|
+
#ifndef _H_match
|
68
|
+
#include "match.h"
|
69
|
+
#endif
|
70
|
+
#ifndef _H_reorder
|
71
|
+
#include "reorder.h"
|
72
|
+
#endif
|
73
|
+
#ifndef _H_constrnt
|
74
|
+
#include "constrnt.h"
|
75
|
+
#endif
|
76
|
+
|
77
|
+
#define MAXIMUM_NUMBER_OF_PATTERNS 128
|
78
|
+
|
79
|
+
struct patternParser
|
80
|
+
{
|
81
|
+
const char *name;
|
82
|
+
struct patternEntityRecord *entityType;
|
83
|
+
unsigned short positionInArray;
|
84
|
+
bool (*recognizeFunction)(CLIPSLexeme *);
|
85
|
+
struct lhsParseNode *(*parseFunction)(Environment *,const char *,struct token *);
|
86
|
+
bool (*postAnalysisFunction)(Environment *,struct lhsParseNode *);
|
87
|
+
struct patternNodeHeader *(*addPatternFunction)(Environment *,struct lhsParseNode *);
|
88
|
+
void (*removePatternFunction)(Environment *,struct patternNodeHeader *);
|
89
|
+
struct expr *(*genJNConstantFunction)(void *,struct lhsParseNode *,int);
|
90
|
+
void (*replaceGetJNValueFunction)(Environment *,struct expr *,struct lhsParseNode *,int);
|
91
|
+
struct expr *(*genGetJNValueFunction)(Environment *,struct lhsParseNode *,int);
|
92
|
+
struct expr *(*genCompareJNValuesFunction)(Environment *,struct lhsParseNode *,struct lhsParseNode *,bool);
|
93
|
+
struct expr *(*genPNConstantFunction)(Environment *,struct lhsParseNode *);
|
94
|
+
void (*replaceGetPNValueFunction)(Environment *,struct expr *,struct lhsParseNode *);
|
95
|
+
struct expr *(*genGetPNValueFunction)(Environment *,struct lhsParseNode *);
|
96
|
+
struct expr *(*genComparePNValuesFunction)(Environment *,struct lhsParseNode *,struct lhsParseNode *);
|
97
|
+
void (*returnUserDataFunction)(Environment *,void *);
|
98
|
+
void *(*copyUserDataFunction)(Environment *,void *);
|
99
|
+
void (*markIRPatternFunction)(Environment *,struct patternNodeHeader *,bool);
|
100
|
+
void (*incrementalResetFunction)(Environment *);
|
101
|
+
void (*codeReferenceFunction)(Environment *,void *,FILE *,unsigned int,unsigned int);
|
102
|
+
int priority;
|
103
|
+
struct patternParser *next;
|
104
|
+
};
|
105
|
+
|
106
|
+
struct reservedSymbol
|
107
|
+
{
|
108
|
+
const char *theSymbol;
|
109
|
+
const char *reservedBy;
|
110
|
+
struct reservedSymbol *next;
|
111
|
+
};
|
112
|
+
|
113
|
+
#define MAX_POSITIONS 8
|
114
|
+
|
115
|
+
#define PATTERN_DATA 19
|
116
|
+
|
117
|
+
struct patternData
|
118
|
+
{
|
119
|
+
struct patternParser *ListOfPatternParsers;
|
120
|
+
struct patternParser *PatternParserArray[MAX_POSITIONS];
|
121
|
+
unsigned short NextPosition;
|
122
|
+
struct reservedSymbol *ListOfReservedPatternSymbols;
|
123
|
+
bool WithinNotCE;
|
124
|
+
int GlobalSalience;
|
125
|
+
bool GlobalAutoFocus;
|
126
|
+
struct expr *SalienceExpression;
|
127
|
+
struct patternNodeHashEntry **PatternHashTable;
|
128
|
+
unsigned long PatternHashTableSize;
|
129
|
+
};
|
130
|
+
|
131
|
+
#define PatternData(theEnv) ((struct patternData *) GetEnvironmentData(theEnv,PATTERN_DATA))
|
132
|
+
|
133
|
+
void InitializePatterns(Environment *);
|
134
|
+
bool AddPatternParser(Environment *,struct patternParser *);
|
135
|
+
struct patternParser *FindPatternParser(Environment *,const char *);
|
136
|
+
void DetachPattern(Environment *,unsigned short,struct patternNodeHeader *);
|
137
|
+
void GetNextPatternEntity(Environment *,
|
138
|
+
struct patternParser **,
|
139
|
+
struct patternEntity **);
|
140
|
+
struct patternParser *GetPatternParser(Environment *,unsigned short);
|
141
|
+
struct lhsParseNode *RestrictionParse(Environment *,const char *,struct token *,bool,
|
142
|
+
CLIPSLexeme *,unsigned short,
|
143
|
+
struct constraintRecord *,unsigned short);
|
144
|
+
bool PostPatternAnalysis(Environment *,struct lhsParseNode *);
|
145
|
+
void PatternNodeHeaderToCode(Environment *,FILE *,struct patternNodeHeader *,
|
146
|
+
unsigned int,unsigned int);
|
147
|
+
void AddReservedPatternSymbol(Environment *,const char *,const char *);
|
148
|
+
bool ReservedPatternSymbol(Environment *,const char *,const char *);
|
149
|
+
void ReservedPatternSymbolErrorMsg(Environment *,const char *,const char *);
|
150
|
+
void AddHashedPatternNode(Environment *,void *,void *,unsigned short,void *);
|
151
|
+
bool RemoveHashedPatternNode(Environment *,void *,void *,unsigned short,void *);
|
152
|
+
void *FindHashedPatternNode(Environment *,void *,unsigned short,void *);
|
153
|
+
|
154
|
+
#endif /* _H_pattern */
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
|
@@ -0,0 +1,328 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 10/02/17 */
|
5
|
+
/* */
|
6
|
+
/* PRETTY PRINT MODULE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Routines for processing the pretty print */
|
11
|
+
/* representation of constructs. */
|
12
|
+
/* */
|
13
|
+
/* Principal Programmer(s): */
|
14
|
+
/* Gary D. Riley */
|
15
|
+
/* */
|
16
|
+
/* Contributing Programmer(s): */
|
17
|
+
/* Chris Culbert */
|
18
|
+
/* Brian Dantes */
|
19
|
+
/* */
|
20
|
+
/* Revision History: */
|
21
|
+
/* */
|
22
|
+
/* 6.24: Corrected code generating compilation */
|
23
|
+
/* warnings. */
|
24
|
+
/* */
|
25
|
+
/* 6.30: Changed integer type/precision. */
|
26
|
+
/* */
|
27
|
+
/* Used genstrcpy instead of strcpy. */
|
28
|
+
/* */
|
29
|
+
/* Added const qualifiers to remove C++ */
|
30
|
+
/* deprecation warnings. */
|
31
|
+
/* */
|
32
|
+
/* 6.31: Fix for pretty print buffer overflow. */
|
33
|
+
/* */
|
34
|
+
/* 6.40: Added NULL pointer check in CopyPPBuffer. */
|
35
|
+
/* */
|
36
|
+
/* Pragma once and other inclusion changes. */
|
37
|
+
/* */
|
38
|
+
/* Added support for booleans with <stdbool.h>. */
|
39
|
+
/* */
|
40
|
+
/* Removed use of void pointers for specific */
|
41
|
+
/* data structures. */
|
42
|
+
/* */
|
43
|
+
/*************************************************************/
|
44
|
+
|
45
|
+
#include <stdio.h>
|
46
|
+
#include <string.h>
|
47
|
+
#include <ctype.h>
|
48
|
+
|
49
|
+
#include "setup.h"
|
50
|
+
|
51
|
+
#include "constant.h"
|
52
|
+
#include "envrnmnt.h"
|
53
|
+
#include "memalloc.h"
|
54
|
+
#include "sysdep.h"
|
55
|
+
#include "utility.h"
|
56
|
+
|
57
|
+
#include "pprint.h"
|
58
|
+
|
59
|
+
#define PP_CR_FIXED_BUFFER_SIZE 120
|
60
|
+
|
61
|
+
/***************************************/
|
62
|
+
/* LOCAL INTERNAL FUNCTION DEFINITIONS */
|
63
|
+
/***************************************/
|
64
|
+
|
65
|
+
static void DeallocatePrettyPrintData(Environment *);
|
66
|
+
|
67
|
+
/****************************************************/
|
68
|
+
/* InitializePrettyPrintData: Allocates environment */
|
69
|
+
/* data for pretty print routines. */
|
70
|
+
/****************************************************/
|
71
|
+
void InitializePrettyPrintData(
|
72
|
+
Environment *theEnv)
|
73
|
+
{
|
74
|
+
AllocateEnvironmentData(theEnv,PRETTY_PRINT_DATA,sizeof(struct prettyPrintData),DeallocatePrettyPrintData);
|
75
|
+
|
76
|
+
PrettyPrintData(theEnv)->PPBufferEnabled = true;
|
77
|
+
}
|
78
|
+
|
79
|
+
/******************************************************/
|
80
|
+
/* DeallocatePrettyPrintData: Deallocates environment */
|
81
|
+
/* data for the pretty print routines. */
|
82
|
+
/******************************************************/
|
83
|
+
static void DeallocatePrettyPrintData(
|
84
|
+
Environment *theEnv)
|
85
|
+
{
|
86
|
+
if (PrettyPrintData(theEnv)->PrettyPrintBuffer != NULL)
|
87
|
+
{ rm(theEnv,PrettyPrintData(theEnv)->PrettyPrintBuffer,PrettyPrintData(theEnv)->PPBufferMax); }
|
88
|
+
}
|
89
|
+
|
90
|
+
/*******************************************************/
|
91
|
+
/* FlushPPBuffer: Resets the pretty print save buffer. */
|
92
|
+
/*******************************************************/
|
93
|
+
void FlushPPBuffer(
|
94
|
+
Environment *theEnv)
|
95
|
+
{
|
96
|
+
if (PrettyPrintData(theEnv)->PrettyPrintBuffer == NULL) return;
|
97
|
+
PrettyPrintData(theEnv)->PPBackupOnce = 0;
|
98
|
+
PrettyPrintData(theEnv)->PPBackupTwice = 0;
|
99
|
+
PrettyPrintData(theEnv)->PPBufferPos = 0;
|
100
|
+
PrettyPrintData(theEnv)->PrettyPrintBuffer[0] = EOS;
|
101
|
+
return;
|
102
|
+
}
|
103
|
+
|
104
|
+
/*********************************************************************/
|
105
|
+
/* DestroyPPBuffer: Resets and removes the pretty print save buffer. */
|
106
|
+
/*********************************************************************/
|
107
|
+
void DestroyPPBuffer(
|
108
|
+
Environment *theEnv)
|
109
|
+
{
|
110
|
+
PrettyPrintData(theEnv)->PPBackupOnce = 0;
|
111
|
+
PrettyPrintData(theEnv)->PPBackupTwice = 0;
|
112
|
+
PrettyPrintData(theEnv)->PPBufferPos = 0;
|
113
|
+
if (PrettyPrintData(theEnv)->PrettyPrintBuffer != NULL) rm(theEnv,PrettyPrintData(theEnv)->PrettyPrintBuffer,PrettyPrintData(theEnv)->PPBufferMax);
|
114
|
+
PrettyPrintData(theEnv)->PrettyPrintBuffer = NULL;
|
115
|
+
PrettyPrintData(theEnv)->PPBufferMax = 0;
|
116
|
+
}
|
117
|
+
|
118
|
+
/*********************************************/
|
119
|
+
/* SavePPBuffer: Appends a string to the end */
|
120
|
+
/* of the pretty print save buffer. */
|
121
|
+
/*********************************************/
|
122
|
+
void SavePPBuffer(
|
123
|
+
Environment *theEnv,
|
124
|
+
const char *str)
|
125
|
+
{
|
126
|
+
size_t increment;
|
127
|
+
|
128
|
+
/*==========================================*/
|
129
|
+
/* If the pretty print buffer isn't needed, */
|
130
|
+
/* then don't bother writing to it. */
|
131
|
+
/*==========================================*/
|
132
|
+
|
133
|
+
if ((PrettyPrintData(theEnv)->PPBufferStatus == false) || (! PrettyPrintData(theEnv)->PPBufferEnabled))
|
134
|
+
{ return; }
|
135
|
+
|
136
|
+
/*===============================*/
|
137
|
+
/* Determine the increment size. */
|
138
|
+
/*===============================*/
|
139
|
+
|
140
|
+
increment = 512;
|
141
|
+
if (PrettyPrintData(theEnv)->PPBufferPos > increment)
|
142
|
+
{ increment = PrettyPrintData(theEnv)->PPBufferPos * 3; }
|
143
|
+
|
144
|
+
/*================================================*/
|
145
|
+
/* If the pretty print buffer isn't big enough to */
|
146
|
+
/* contain the string, then increase its size. */
|
147
|
+
/*================================================*/
|
148
|
+
|
149
|
+
if (strlen(str) + PrettyPrintData(theEnv)->PPBufferPos + 1 >= PrettyPrintData(theEnv)->PPBufferMax)
|
150
|
+
{
|
151
|
+
PrettyPrintData(theEnv)->PrettyPrintBuffer =
|
152
|
+
(char *) genrealloc(theEnv,PrettyPrintData(theEnv)->PrettyPrintBuffer,
|
153
|
+
PrettyPrintData(theEnv)->PPBufferMax,
|
154
|
+
PrettyPrintData(theEnv)->PPBufferMax + increment);
|
155
|
+
PrettyPrintData(theEnv)->PPBufferMax += increment;
|
156
|
+
}
|
157
|
+
|
158
|
+
/*==================================================*/
|
159
|
+
/* Remember the previous tokens saved to the pretty */
|
160
|
+
/* print buffer in case it is necessary to back up. */
|
161
|
+
/*==================================================*/
|
162
|
+
|
163
|
+
PrettyPrintData(theEnv)->PPBackupTwice = PrettyPrintData(theEnv)->PPBackupOnce;
|
164
|
+
PrettyPrintData(theEnv)->PPBackupOnce = PrettyPrintData(theEnv)->PPBufferPos;
|
165
|
+
|
166
|
+
/*=============================================*/
|
167
|
+
/* Save the string to the pretty print buffer. */
|
168
|
+
/*=============================================*/
|
169
|
+
|
170
|
+
PrettyPrintData(theEnv)->PrettyPrintBuffer = AppendToString(theEnv,str,PrettyPrintData(theEnv)->PrettyPrintBuffer,&PrettyPrintData(theEnv)->PPBufferPos,&PrettyPrintData(theEnv)->PPBufferMax);
|
171
|
+
}
|
172
|
+
|
173
|
+
/***************************************************/
|
174
|
+
/* PPBackup: Removes the last string added to the */
|
175
|
+
/* pretty print save buffer. Only capable of */
|
176
|
+
/* backing up for the two most recent additions. */
|
177
|
+
/***************************************************/
|
178
|
+
void PPBackup(
|
179
|
+
Environment *theEnv)
|
180
|
+
{
|
181
|
+
if ((PrettyPrintData(theEnv)->PPBufferStatus == false) ||
|
182
|
+
(PrettyPrintData(theEnv)->PrettyPrintBuffer == NULL) ||
|
183
|
+
(! PrettyPrintData(theEnv)->PPBufferEnabled))
|
184
|
+
{ return; }
|
185
|
+
|
186
|
+
PrettyPrintData(theEnv)->PPBufferPos = PrettyPrintData(theEnv)->PPBackupOnce;
|
187
|
+
PrettyPrintData(theEnv)->PPBackupOnce = PrettyPrintData(theEnv)->PPBackupTwice;
|
188
|
+
PrettyPrintData(theEnv)->PrettyPrintBuffer[PrettyPrintData(theEnv)->PPBufferPos] = EOS;
|
189
|
+
}
|
190
|
+
|
191
|
+
/**************************************************/
|
192
|
+
/* CopyPPBuffer: Makes a copy of the pretty print */
|
193
|
+
/* save buffer. */
|
194
|
+
/**************************************************/
|
195
|
+
char *CopyPPBuffer(
|
196
|
+
Environment *theEnv)
|
197
|
+
{
|
198
|
+
size_t length;
|
199
|
+
char *newString;
|
200
|
+
char *theBuffer = PrettyPrintData(theEnv)->PrettyPrintBuffer;
|
201
|
+
|
202
|
+
if (theBuffer == NULL) return NULL;
|
203
|
+
|
204
|
+
length = (1 + strlen(theBuffer)) * sizeof(char);
|
205
|
+
newString = (char *) gm2(theEnv,length);
|
206
|
+
|
207
|
+
genstrcpy(newString,theBuffer);
|
208
|
+
return(newString);
|
209
|
+
}
|
210
|
+
|
211
|
+
/************************************************************/
|
212
|
+
/* GetPPBuffer: Returns a pointer to the PrettyPrintBuffer. */
|
213
|
+
/************************************************************/
|
214
|
+
char *GetPPBuffer(
|
215
|
+
Environment *theEnv)
|
216
|
+
{
|
217
|
+
return(PrettyPrintData(theEnv)->PrettyPrintBuffer);
|
218
|
+
}
|
219
|
+
|
220
|
+
/*******************************************/
|
221
|
+
/* PPCRAndIndent: Prints white spaces into */
|
222
|
+
/* the pretty print buffer. */
|
223
|
+
/*******************************************/
|
224
|
+
void PPCRAndIndent(
|
225
|
+
Environment *theEnv)
|
226
|
+
{
|
227
|
+
size_t i;
|
228
|
+
char *buffer;
|
229
|
+
char fixedBuffer[PP_CR_FIXED_BUFFER_SIZE];
|
230
|
+
|
231
|
+
if ((PrettyPrintData(theEnv)->PPBufferStatus == false) ||
|
232
|
+
(! PrettyPrintData(theEnv)->PPBufferEnabled))
|
233
|
+
{ return; }
|
234
|
+
|
235
|
+
if ((PrettyPrintData(theEnv)->IndentationDepth + 2) > PP_CR_FIXED_BUFFER_SIZE)
|
236
|
+
{ buffer = (char *) genalloc(theEnv,PrettyPrintData(theEnv)->IndentationDepth + 2);}
|
237
|
+
else
|
238
|
+
{ buffer = fixedBuffer; }
|
239
|
+
|
240
|
+
buffer[0] = '\n';
|
241
|
+
|
242
|
+
for (i = 1 ; i <= PrettyPrintData(theEnv)->IndentationDepth ; i++)
|
243
|
+
{ buffer[i] = ' '; }
|
244
|
+
buffer[i] = EOS;
|
245
|
+
|
246
|
+
SavePPBuffer(theEnv,buffer);
|
247
|
+
|
248
|
+
if ((PrettyPrintData(theEnv)->IndentationDepth + 2) > PP_CR_FIXED_BUFFER_SIZE)
|
249
|
+
{ genfree(theEnv,buffer,PrettyPrintData(theEnv)->IndentationDepth + 2);}
|
250
|
+
}
|
251
|
+
|
252
|
+
/************************************************/
|
253
|
+
/* IncrementIndentDepth: Increments indentation */
|
254
|
+
/* depth for pretty printing. */
|
255
|
+
/************************************************/
|
256
|
+
void IncrementIndentDepth(
|
257
|
+
Environment *theEnv,
|
258
|
+
size_t value)
|
259
|
+
{
|
260
|
+
PrettyPrintData(theEnv)->IndentationDepth += value;
|
261
|
+
}
|
262
|
+
|
263
|
+
/************************************************/
|
264
|
+
/* DecrementIndentDepth: Decrements indentation */
|
265
|
+
/* depth for pretty printing. */
|
266
|
+
/************************************************/
|
267
|
+
void DecrementIndentDepth(
|
268
|
+
Environment *theEnv,
|
269
|
+
size_t value)
|
270
|
+
{
|
271
|
+
PrettyPrintData(theEnv)->IndentationDepth -= value;
|
272
|
+
}
|
273
|
+
|
274
|
+
/************************************/
|
275
|
+
/* SetIndentDepth: Sets indentation */
|
276
|
+
/* depth for pretty printing. */
|
277
|
+
/************************************/
|
278
|
+
void SetIndentDepth(
|
279
|
+
Environment *theEnv,
|
280
|
+
size_t value)
|
281
|
+
{
|
282
|
+
PrettyPrintData(theEnv)->IndentationDepth = value;
|
283
|
+
}
|
284
|
+
|
285
|
+
/******************************************/
|
286
|
+
/* SetPPBufferStatus: Sets PPBufferStatus */
|
287
|
+
/* flag to boolean value of ON or OFF. */
|
288
|
+
/******************************************/
|
289
|
+
void SetPPBufferStatus(
|
290
|
+
Environment *theEnv,
|
291
|
+
bool value)
|
292
|
+
{
|
293
|
+
PrettyPrintData(theEnv)->PPBufferStatus = value;
|
294
|
+
}
|
295
|
+
|
296
|
+
/************************************/
|
297
|
+
/* GetPPBufferStatus: Returns value */
|
298
|
+
/* of the PPBufferStatus flag. */
|
299
|
+
/************************************/
|
300
|
+
bool GetPPBufferStatus(
|
301
|
+
Environment *theEnv)
|
302
|
+
{
|
303
|
+
return(PrettyPrintData(theEnv)->PPBufferStatus);
|
304
|
+
}
|
305
|
+
|
306
|
+
/***********************/
|
307
|
+
/* SetPPBufferEnabled: */
|
308
|
+
/***********************/
|
309
|
+
bool SetPPBufferEnabled(
|
310
|
+
Environment *theEnv,
|
311
|
+
bool value)
|
312
|
+
{
|
313
|
+
bool oldValue;
|
314
|
+
|
315
|
+
oldValue = PrettyPrintData(theEnv)->PPBufferEnabled;
|
316
|
+
PrettyPrintData(theEnv)->PPBufferEnabled = value;
|
317
|
+
return oldValue;
|
318
|
+
}
|
319
|
+
|
320
|
+
/***********************/
|
321
|
+
/* GetPPBufferEnabled: */
|
322
|
+
/***********************/
|
323
|
+
bool GetPPBufferEnabled(
|
324
|
+
Environment *theEnv)
|
325
|
+
{
|
326
|
+
return PrettyPrintData(theEnv)->PPBufferEnabled;
|
327
|
+
}
|
328
|
+
|
@@ -0,0 +1,79 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 10/02/17 */
|
5
|
+
/* */
|
6
|
+
/* PRETTY PRINT HEADER FILE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Routines for processing the pretty print */
|
11
|
+
/* representation of constructs. */
|
12
|
+
/* */
|
13
|
+
/* Principal Programmer(s): */
|
14
|
+
/* Gary D. Riley */
|
15
|
+
/* */
|
16
|
+
/* Contributing Programmer(s): */
|
17
|
+
/* */
|
18
|
+
/* Revision History: */
|
19
|
+
/* */
|
20
|
+
/* 6.30: Changed integer type/precision. */
|
21
|
+
/* */
|
22
|
+
/* Used genstrcpy instead of strcpy. */
|
23
|
+
/* */
|
24
|
+
/* Added const qualifiers to remove C++ */
|
25
|
+
/* deprecation warnings. */
|
26
|
+
/* */
|
27
|
+
/* 6.40: Removed LOCALE definition. */
|
28
|
+
/* */
|
29
|
+
/* Pragma once and other inclusion changes. */
|
30
|
+
/* */
|
31
|
+
/* Added support for booleans with <stdbool.h>. */
|
32
|
+
/* */
|
33
|
+
/* Removed use of void pointers for specific */
|
34
|
+
/* data structures. */
|
35
|
+
/* */
|
36
|
+
/*************************************************************/
|
37
|
+
|
38
|
+
#ifndef _H_pprint
|
39
|
+
|
40
|
+
#pragma once
|
41
|
+
|
42
|
+
#define _H_pprint
|
43
|
+
|
44
|
+
#define PRETTY_PRINT_DATA 52
|
45
|
+
|
46
|
+
struct prettyPrintData
|
47
|
+
{
|
48
|
+
bool PPBufferStatus;
|
49
|
+
bool PPBufferEnabled;
|
50
|
+
size_t IndentationDepth;
|
51
|
+
size_t PPBufferPos;
|
52
|
+
size_t PPBufferMax;
|
53
|
+
size_t PPBackupOnce;
|
54
|
+
size_t PPBackupTwice;
|
55
|
+
char *PrettyPrintBuffer;
|
56
|
+
};
|
57
|
+
|
58
|
+
#define PrettyPrintData(theEnv) ((struct prettyPrintData *) GetEnvironmentData(theEnv,PRETTY_PRINT_DATA))
|
59
|
+
|
60
|
+
void InitializePrettyPrintData(Environment *);
|
61
|
+
void FlushPPBuffer(Environment *);
|
62
|
+
void DestroyPPBuffer(Environment *);
|
63
|
+
void SavePPBuffer(Environment *,const char *);
|
64
|
+
void PPBackup(Environment *);
|
65
|
+
char *CopyPPBuffer(Environment *);
|
66
|
+
char *GetPPBuffer(Environment *);
|
67
|
+
void PPCRAndIndent(Environment *);
|
68
|
+
void IncrementIndentDepth(Environment *,size_t);
|
69
|
+
void DecrementIndentDepth(Environment *,size_t);
|
70
|
+
void SetIndentDepth(Environment *,size_t);
|
71
|
+
void SetPPBufferStatus(Environment *,bool);
|
72
|
+
bool GetPPBufferStatus(Environment *);
|
73
|
+
bool SetPPBufferEnabled(Environment *,bool);
|
74
|
+
bool GetPPBufferEnabled(Environment *);
|
75
|
+
|
76
|
+
#endif
|
77
|
+
|
78
|
+
|
79
|
+
|