00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _H_reorder
00033 #define _H_reorder
00034
00035 struct lhsParseNode;
00036
00037 #ifndef _H_expressn
00038 #include "expressn.h"
00039 #endif
00040 #ifndef _H_ruledef
00041 #include "ruledef.h"
00042 #endif
00043 #ifndef _H_pattern
00044 #include "pattern.h"
00045 #endif
00046
00047 #ifdef LOCALE
00048 #undef LOCALE
00049 #endif
00050
00051 #ifdef _REORDER_SOURCE_
00052 #define LOCALE
00053 #else
00054 #define LOCALE extern
00055 #endif
00056
00057
00058
00059
00060
00061 struct lhsParseNode
00062 {
00063 unsigned short type;
00064 void *value;
00065 unsigned int negated : 1;
00066 unsigned int exists : 1;
00067 unsigned int existsNand : 1;
00068 unsigned int logical : 1;
00069 unsigned int multifieldSlot : 1;
00070 unsigned int bindingVariable : 1;
00071 unsigned int derivedConstraints : 1;
00072 unsigned int userCE : 1;
00073 unsigned int whichCE : 7;
00074 unsigned int marked : 1;
00075 unsigned int withinMultifieldSlot : 1;
00076 unsigned short multiFieldsBefore;
00077 unsigned short multiFieldsAfter;
00078 unsigned short singleFieldsBefore;
00079 unsigned short singleFieldsAfter;
00080 struct constraintRecord *constraints;
00081 struct lhsParseNode *referringNode;
00082 struct patternParser *patternType;
00083 short pattern;
00084 short index;
00085 struct symbolHashNode *slot;
00086 short slotNumber;
00087 int beginNandDepth;
00088 int endNandDepth;
00089 int joinDepth;
00090 struct expr *networkTest;
00091 struct expr *externalNetworkTest;
00092 struct expr *secondaryNetworkTest;
00093 struct expr *secondaryExternalNetworkTest;
00094 struct expr *externalLeftHash;
00095 struct expr *externalRightHash;
00096 struct expr *constantSelector;
00097 struct expr *constantValue;
00098 struct expr *leftHash;
00099 struct expr *rightHash;
00100 struct expr *betaHash;
00101 struct lhsParseNode *expression;
00102 void *userData;
00103 struct lhsParseNode *right;
00104 struct lhsParseNode *bottom;
00105 };
00106
00107 LOCALE struct lhsParseNode *ReorderPatterns(void *,struct lhsParseNode *,int *);
00108 LOCALE struct lhsParseNode *CopyLHSParseNodes(void *,struct lhsParseNode *);
00109 LOCALE void CopyLHSParseNode(void *,struct lhsParseNode *,struct lhsParseNode *,int);
00110 LOCALE struct lhsParseNode *GetLHSParseNode(void *);
00111 LOCALE void ReturnLHSParseNodes(void *,struct lhsParseNode *);
00112 LOCALE struct lhsParseNode *ExpressionToLHSParseNodes(void *,struct expr *);
00113 LOCALE struct expr *LHSParseNodesToExpression(void *,struct lhsParseNode *);
00114 LOCALE void AddInitialPatterns(void *,struct lhsParseNode *);
00115 LOCALE int IsExistsSubjoin(struct lhsParseNode *,int);
00116
00117 #endif
00118
00119
00120
00121
00122