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 #ifndef _H_objrtfnx
00027 #define _H_objrtfnx
00028
00029 #if DEFRULE_CONSTRUCT && OBJECT_SYSTEM
00030
00031 #ifndef _H_conscomp
00032 #include "conscomp.h"
00033 #endif
00034 #ifndef _H_evaluatn
00035 #include "evaluatn.h"
00036 #endif
00037 #ifndef _H_object
00038 #include "object.h"
00039 #endif
00040 #ifndef _H_match
00041 #include "match.h"
00042 #endif
00043 #ifndef _H_objrtmch
00044 #include "objrtmch.h"
00045 #endif
00046
00047 struct ObjectMatchVar1
00048 {
00049 unsigned short whichSlot;
00050 unsigned short whichPattern;
00051 unsigned short whichField;
00052 unsigned objectAddress : 1;
00053 unsigned allFields : 1;
00054 unsigned lhs : 1;
00055 unsigned rhs : 1;
00056 };
00057
00058 struct ObjectMatchVar2
00059 {
00060 unsigned short whichSlot;
00061 unsigned short whichPattern;
00062 unsigned short beginningOffset;
00063 unsigned short endOffset;
00064 unsigned fromBeginning : 1;
00065 unsigned fromEnd : 1;
00066 unsigned lhs : 1;
00067 unsigned rhs : 1;
00068 };
00069
00070 struct ObjectMatchLength
00071 {
00072 unsigned minLength : 15;
00073 unsigned exactly : 1;
00074 };
00075
00076 struct ObjectCmpPNConstant
00077 {
00078 unsigned short offset;
00079 unsigned pass : 1;
00080 unsigned fail : 1;
00081 unsigned general : 1;
00082 unsigned fromBeginning : 1;
00083 };
00084
00085 struct ObjectCmpPNSingleSlotVars1
00086 {
00087 unsigned short firstSlot;
00088 unsigned short secondSlot;
00089 unsigned pass : 1;
00090 unsigned fail : 1;
00091 };
00092
00093 struct ObjectCmpPNSingleSlotVars2
00094 {
00095 unsigned short firstSlot;
00096 unsigned short secondSlot;
00097 unsigned short offset;
00098 unsigned pass : 1;
00099 unsigned fail : 1;
00100 unsigned fromBeginning : 1;
00101 };
00102
00103 struct ObjectCmpPNSingleSlotVars3
00104 {
00105 unsigned short firstSlot;
00106 unsigned short secondSlot;
00107 unsigned short firstOffset;
00108 unsigned short secondOffset;
00109 unsigned pass : 1;
00110 unsigned fail : 1;
00111 unsigned firstFromBeginning : 1;
00112 unsigned secondFromBeginning : 1;
00113 };
00114
00115 struct ObjectCmpJoinSingleSlotVars1
00116 {
00117 unsigned short firstSlot;
00118 unsigned short secondSlot;
00119 unsigned short firstPattern;
00120 unsigned short secondPattern;
00121 unsigned pass : 1;
00122 unsigned fail : 1;
00123 unsigned int firstPatternLHS : 1;
00124 unsigned int firstPatternRHS : 1;
00125 unsigned int secondPatternLHS : 1;
00126 unsigned int secondPatternRHS : 1;
00127 };
00128
00129 struct ObjectCmpJoinSingleSlotVars2
00130 {
00131 unsigned short firstSlot;
00132 unsigned short secondSlot;
00133 unsigned short firstPattern;
00134 unsigned short secondPattern;
00135 unsigned short offset;
00136 unsigned pass : 1;
00137 unsigned fromBeginning : 1;
00138 unsigned fail : 1;
00139 unsigned int firstPatternLHS : 1;
00140 unsigned int firstPatternRHS : 1;
00141 unsigned int secondPatternLHS : 1;
00142 unsigned int secondPatternRHS : 1;
00143 };
00144
00145 struct ObjectCmpJoinSingleSlotVars3
00146 {
00147 unsigned short firstSlot;
00148 unsigned short secondSlot;
00149 unsigned short firstPattern;
00150 unsigned short secondPattern;
00151 unsigned short firstOffset;
00152 unsigned short secondOffset;
00153 unsigned pass : 1;
00154 unsigned fail : 1;
00155 unsigned firstFromBeginning : 1;
00156 unsigned secondFromBeginning : 1;
00157 unsigned int firstPatternLHS : 1;
00158 unsigned int firstPatternRHS : 1;
00159 unsigned int secondPatternLHS : 1;
00160 unsigned int secondPatternRHS : 1;
00161 };
00162
00163 #define OBJECT_RETE_DATA 35
00164
00165 struct objectReteData
00166 {
00167 INSTANCE_TYPE *CurrentPatternObject;
00168 INSTANCE_SLOT *CurrentPatternObjectSlot;
00169 unsigned CurrentObjectSlotLength;
00170 struct multifieldMarker *CurrentPatternObjectMarks;
00171 struct entityRecord ObjectGVInfo1;
00172 struct entityRecord ObjectGVInfo2;
00173 struct entityRecord ObjectGVPNInfo1;
00174 struct entityRecord ObjectGVPNInfo2;
00175 struct entityRecord ObjectCmpConstantInfo;
00176 struct entityRecord LengthTestInfo;
00177 struct entityRecord PNSimpleCompareInfo1;
00178 struct entityRecord PNSimpleCompareInfo2;
00179 struct entityRecord PNSimpleCompareInfo3;
00180 struct entityRecord JNSimpleCompareInfo1;
00181 struct entityRecord JNSimpleCompareInfo2;
00182 struct entityRecord JNSimpleCompareInfo3;
00183 OBJECT_MATCH_ACTION *ObjectMatchActionQueue;
00184 OBJECT_PATTERN_NODE *ObjectPatternNetworkPointer;
00185 OBJECT_ALPHA_NODE *ObjectPatternNetworkTerminalPointer;
00186 intBool DelayObjectPatternMatching;
00187 unsigned long long CurrentObjectMatchTimeTag;
00188 long long UseEntityTimeTag;
00189 #if DEFRULE_CONSTRUCT && OBJECT_SYSTEM && CONSTRUCT_COMPILER && (! RUN_TIME)
00190 struct CodeGeneratorItem *ObjectPatternCodeItem;
00191 #endif
00192 };
00193
00194 #define ObjectReteData(theEnv) ((struct objectReteData *) GetEnvironmentData(theEnv,OBJECT_RETE_DATA))
00195
00196
00197 #ifdef LOCALE
00198 #undef LOCALE
00199 #endif
00200
00201 #ifdef _OBJRTFNX_SOURCE_
00202 #define LOCALE
00203 #else
00204 #define LOCALE extern
00205 #endif
00206
00207 LOCALE void InstallObjectPrimitives(void *);
00208 LOCALE intBool ObjectCmpConstantFunction(void *,void *,DATA_OBJECT *);
00209
00210 #endif
00211
00212 #endif
00213
00214
00215
00216
00217
00218