(file) Return to Cql2Dnf.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / CQL

Diff for /pegasus/src/Pegasus/CQL/Cql2Dnf.cpp between version 1.1.2.2 and 1.1.2.3

version 1.1.2.2, 2004/11/17 20:23:27 version 1.1.2.3, 2004/11/17 22:48:19
Line 531 
Line 531 
                 break;                 break;
             }             }
  
             case CQL_EQ: expOp = EQ;              case CQL_EQ:
             case CQL_NE: expOp = NE;              case CQL_NE:
             case CQL_LT: expOp = LT;              case CQL_LT:
             case CQL_LE: expOp = LE;              case CQL_LE:
             case CQL_GT: expOp = GT;              case CQL_GT:
             case CQL_GE: expOp = GE;              case CQL_GE:
             {             {
                 PEGASUS_ASSERT(_operands.size() >= 2);                 PEGASUS_ASSERT(_operands.size() >= 2);
  
Line 544 
Line 544 
  
                 CQLExpression rhs = _operands[j++];                 CQLExpression rhs = _operands[j++];
  
                 CQLSimplePredicate sp(lhs,rhs,expOp);                  CQLSimplePredicate sp(lhs,rhs,_convertOpType(op));
   printf("****** pushing simplepredicate on terminal heap %s\n",(const char*)sp.toString().getCString());
                 terminal_heap.push(term_el(false, sp));                 terminal_heap.push(term_el(false, sp));
  
                 stack.push(stack_el(terminal_heap.size()-1, true));                 stack.push(stack_el(terminal_heap.size()-1, true));
Line 851 
Line 851 
         }         }
 } }
  
   ExpressionOpType Cql2Dnf::_convertOpType(OperationType op){
           switch(op){
                   case CQL_EQ: return EQ;
                   case CQL_NE: return NE;
                   case CQL_GT: return GT;
                   case CQL_LT: return LT;
                   case CQL_GE: return GE;
                   case CQL_LE: return LE;
                   case CQL_IS_NULL: return IS_NULL;
                   case CQL_IS_NOT_NULL: return IS_NOT_NULL;
                   default: break;
           }
   }
   
 void Cql2Dnf::_destruct(CQLPredicate& _p){ void Cql2Dnf::_destruct(CQLPredicate& _p){
         if(_p.isSimple()){         if(_p.isSimple()){
                 CQLSimplePredicate _sp = _p.getSimplePredicate();                 CQLSimplePredicate _sp = _p.getSimplePredicate();
Line 915 
Line 929 
         //      CQLPredicate((e==f v !c==d) ^ a==b) [index = 2]  (the rebuilt tree)         //      CQLPredicate((e==f v !c==d) ^ a==b) [index = 2]  (the rebuilt tree)
         //         //
  
           if(eval_heap.size() > 0){
   printf("**** eval_heap.size = %d\n",eval_heap.size());
   printf("**** terminal_heap.size = %d\n",terminal_heap.size());
         Array<CQLPredicate> _preds;         Array<CQLPredicate> _preds;
         for(Uint32 i=0;i<eval_heap.size();i++){         for(Uint32 i=0;i<eval_heap.size();i++){
                 eval_el eval = eval_heap[i];                 eval_el eval = eval_heap[i];
Line 932 
Line 949 
                                 }                                 }
                                 case CQL_AND:                                 case CQL_AND:
                                 {                                 {
                                         CQLPredicate p(terminal_heap[eval.opn1]._simplePredicate,false);                                          CQLPredicate p;
                                         p.appendPredicate(CQLPredicate(terminal_heap[eval.opn2]._simplePredicate,AND));                                          CQLPredicate p1(terminal_heap[eval.opn2]._simplePredicate,false);
                                           p.appendPredicate(p1);
                                           CQLPredicate p2(terminal_heap[eval.opn1]._simplePredicate,false);
                                           p.appendPredicate(p2,AND);
                                         _preds.append(p);                                         _preds.append(p);
                                         break;                                         break;
                                 }                                 }
                                 case CQL_OR:                                 case CQL_OR:
                                 {                                 {
                                         CQLPredicate p(terminal_heap[eval.opn1]._simplePredicate,false);                                          CQLPredicate p;
                                         p.appendPredicate(CQLPredicate(terminal_heap[eval.opn2]._simplePredicate,OR));                                          CQLPredicate p1(terminal_heap[eval.opn2]._simplePredicate,false);
                                           p.appendPredicate(p1);
                                           CQLPredicate p2(terminal_heap[eval.opn1]._simplePredicate,false);
                                           p.appendPredicate(p2,OR);
                                         _preds.append(p);                                         _preds.append(p);
                                         break;                                         break;
                                 }                                 }
Line 968 
Line 991 
                                 }                                 }
                                 case CQL_AND:                                 case CQL_AND:
                                 {                                 {
                                         CQLPredicate p(terminal_heap[eval.opn1]._simplePredicate,false);                                          CQLPredicate p;
                                         p.appendPredicate(_preds[eval.opn2],AND);                                          CQLPredicate p1(terminal_heap[eval.opn1]._simplePredicate,false);
                                           p.appendPredicate(_preds[eval.opn2]);
                                           p.appendPredicate(p1,AND);
                                         _preds.append(p);                                         _preds.append(p);
                                         break;                                         break;
                                 }                                 }
                                 case CQL_OR:                                 case CQL_OR:
                                 {                                 {
                                         CQLPredicate p(terminal_heap[eval.opn1]._simplePredicate,false);                                          CQLPredicate p;
                                         p.appendPredicate(_preds[eval.opn2],OR);                                          CQLPredicate p1(terminal_heap[eval.opn1]._simplePredicate,false);
                                           p.appendPredicate(_preds[eval.opn2]);
                                           p.appendPredicate(p1,OR);
                                         _preds.append(p);                                         _preds.append(p);
                                         break;                                         break;
                                 }                                 }
Line 1006 
Line 1033 
                                 }                                 }
                                 case CQL_AND:                                 case CQL_AND:
                                 {                                 {
                                         CQLPredicate p(_preds[eval.opn1]);                                          CQLPredicate p;
                                         p.appendPredicate(CQLPredicate(terminal_heap[eval.opn2]._simplePredicate,AND));                                          CQLPredicate p1(terminal_heap[eval.opn2]._simplePredicate,false);
                                           p.appendPredicate(_preds[eval.opn1]);
                                           p.appendPredicate(p1,AND);
                                         _preds.append(p);                                         _preds.append(p);
                                         break;                                         break;
                                 }                                 }
                                 case CQL_OR:                                 case CQL_OR:
                                 {                                 {
                                         CQLPredicate p(_preds[eval.opn1]);                                          CQLPredicate p;
                                         p.appendPredicate(CQLPredicate(terminal_heap[eval.opn2]._simplePredicate,OR));                                          CQLPredicate p1(terminal_heap[eval.opn2]._simplePredicate,false);
                                           p.appendPredicate(_preds[eval.opn1]);
                                           p.appendPredicate(p1,OR);
                                         _preds.append(p);                                         _preds.append(p);
                                         break;                                         break;
                                 }                                 }
Line 1044 
Line 1075 
                                 }                                 }
                                 case CQL_AND:                                 case CQL_AND:
                                 {                                 {
                                         CQLPredicate p(_preds[eval.opn1]);                                          CQLPredicate p = _preds[eval.opn2];
                                         p.appendPredicate(_preds[eval.opn2],AND);                                          p.appendPredicate(_preds[eval.opn1],AND);
                                         _preds.append(p);                                         _preds.append(p);
                                         break;                                         break;
                                 }                                 }
                                 case CQL_OR:                                 case CQL_OR:
                                 {                                 {
                                         CQLPredicate p(_preds[eval.opn1],false);                                          CQLPredicate p = _preds[eval.opn2];
                                         p.appendPredicate(_preds[eval.opn2],OR);                                          p.appendPredicate(_preds[eval.opn1],OR);
                                         _preds.append(p);                                         _preds.append(p);
                                         break;                                         break;
                                 }                                 }
Line 1071 
Line 1102 
         } // end for(...)         } // end for(...)
  
         _dnfPredicate = _preds[_preds.size()-1];         _dnfPredicate = _preds[_preds.size()-1];
   
           } // end if
           else{ // we just have a CQLSimplePredicate on the terminal_heap
                   PEGASUS_ASSERT(terminal_heap.size() == 1);
                   _dnfPredicate = CQLPredicate(terminal_heap[0]._simplePredicate,false);
           }
 } }
  
 CQLPredicate Cql2Dnf::getDnfPredicate(){ CQLPredicate Cql2Dnf::getDnfPredicate(){


Legend:
Removed from v.1.1.2.2  
changed lines
  Added in v.1.1.2.3

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2