00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef PREDICATE_IMPL_H
00017 #define PREDICATE_IMPL_H
00018 #include<DataType.h>
00019 #include<Predicate.h>
00020 #include<ErrorType.h>
00021 class TableImpl;
00022 class Table;
00023 class PredicateImpl:public Predicate
00024 {
00025
00026 char fldName1[IDENTIFIER_LENGTH];
00027 char fldName2[IDENTIFIER_LENGTH];
00028 ComparisionOp compOp;
00029 void *operand;
00030 void **operandPtr;
00031 LogicalOp logicalOp;
00032 PredicateImpl *lhs;
00033 PredicateImpl *rhs;
00034
00035
00036 void *tuple;
00037
00038
00039 TableImpl *table;
00040
00041 public:
00042 PredicateImpl()
00043 {
00044 strcpy(fldName1, ""); strcpy(fldName2, "");
00045 operand = NULL; operandPtr = NULL; lhs = rhs = NULL;
00046 tuple = NULL; table = NULL;
00047 }
00048 ~PredicateImpl(){}
00049
00050 void setTerm(const char* fName1, ComparisionOp op, const char *fName2);
00051
00052
00053 void setTerm(const char* fName1, ComparisionOp op, void *opnd);
00054
00055 void setTerm(const char* fName1, ComparisionOp op, void **opnd);
00056
00057
00058 void setTerm(Predicate *p1, LogicalOp op, Predicate *p2 = NULL);
00059
00060 void* valPtrForIndexField(const char *name);
00061
00062 DbRetVal evaluate(bool &result);
00063
00064 void setTable(Table *tbl);
00065 void setTuple(void *tpl);
00066 bool isSingleTerm();
00067 bool isNotOrInvolved();
00068
00069
00070
00071 bool pointLookupInvolved(const char *fName);
00072
00073 void print();
00074
00075 };
00076
00077 #endif