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

  1 chuck 1.1.2.6 //%2004////////////////////////////////////////////////////////////////////////
  2               //
  3               // Copyright (c) 2000, 2001, 2002  BMC Software, Hewlett-Packard Development
  4               // Company, L. P., IBM Corp., The Open Group, Tivoli Systems.
  5               // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L. P.;
  6               // IBM Corp.; EMC Corporation, The Open Group.
  7               //
  8               // Permission is hereby granted, free of charge, to any person obtaining a copy
  9               // of this software and associated documentation files (the "Software"), to
 10               // deal in the Software without restriction, including without limitation the
 11               // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 12               // sell copies of the Software, and to permit persons to whom the Software is
 13               // furnished to do so, subject to the following conditions:
 14               // 
 15               // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 16               // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 17               // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 18               // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 19               // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 20               // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 21               // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 22 chuck 1.1.2.6 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 23               //
 24               //==============================================================================
 25               //
 26               // Authors: David Rosckes (rosckes@us.ibm.com)
 27               //          Bert Rivero (hurivero@us.ibm.com)
 28               //          Chuck Carmack (carmack@us.ibm.com)
 29               //          Brian Lucier (lucier@us.ibm.com)
 30               //
 31               // Modified By: 
 32               //
 33               //%/////////////////////////////////////////////////////////////////////////////
 34               
 35 humberto 1.1.2.1 #ifndef Pegasus_CQLExpressionRep_h
 36                  #define Pegasus_CQLExpressionRep_h
 37                  
 38                  #include <Pegasus/Common/Config.h>
 39                  #include <Pegasus/CQL/CQLValue.h>
 40                  #include <Pegasus/CQL/Linkage.h>
 41                  #include <Pegasus/CQL/CQLTerm.h>
 42                  
 43                  PEGASUS_NAMESPACE_BEGIN
 44                  
 45                  class PEGASUS_CQL_LINKAGE CQLFactory;
 46                  class PEGASUS_CQL_LINKAGE QueryContext;
 47                  
 48                  /**
 49                    The CQLExpression class encapsulates a generic CQL expression to make it
 50                  easier to break into components and process the expression.  
 51                  
 52                     A CQL expression is made up of terms and operators. 
 53                     For example,  'A + B' is a CQLExpression, where 'A' and 'B' are terms, and
 54                  '+' is an operator.
 55                  
 56 humberto 1.1.2.1    There must be exactly one more term than there are operators.
 57                    */
 58                  //##ModelId=40FC03230150
 59                  class PEGASUS_CQL_LINKAGE CQLExpressionRep
 60                  {
 61                    public:
 62                     CQLExpressionRep(){}
 63                      /** constructor takes one CQLTerm object.
 64                        */
 65                      CQLExpressionRep(CQLTerm& theTerm);
 66 humberto 1.1.2.3    CQLExpressionRep(const CQLExpressionRep* rep);
 67 humberto 1.1.2.1     /**  the getValue method evaluates the expression and returns the value.
 68                            Any property that need to be resolved into a value is taken from the
 69                      CIMInstance.
 70                        */
 71                      ~CQLExpressionRep();
 72                  
 73                      CQLValue resolveValue(CIMInstance CI, QueryContext& QueryCtx);
 74                  
 75                      /** The appendOperation is used by Bison.
 76                            It is invoked 0 or more times for the CQLExpression, and
 77                            when invoked will always pass in an integer that is the Term operation
 78                            type and a CQLTerm object.
 79                        */
 80                      void appendOperation(TermOpType theTermOpType, CQLTerm& theTerm);
 81                  
 82                     String toString();
 83 chuck    1.1.2.5 
 84 humberto 1.1.2.2    Boolean isSimple();
 85 chuck    1.1.2.5 
 86 humberto 1.1.2.1    Boolean isSimpleValue();
 87 chuck    1.1.2.5 
 88 humberto 1.1.2.1    Array<CQLTerm> getTerms();
 89 chuck    1.1.2.5 
 90 humberto 1.1.2.1    Array<TermOpType> getOperators();
 91 chuck    1.1.2.5 
 92                     void applyContext(QueryContext& inContext);
 93                  
 94 humberto 1.1.2.1    Boolean operator==(const CQLExpressionRep& rep);
 95 chuck    1.1.2.5 
 96 humberto 1.1.2.1    Boolean operator!=(const CQLExpressionRep& rep);
 97 chuck    1.1.2.5 
 98 humberto 1.1.2.1    friend class CQLFactory;
 99                  
100                    private:
101                     
102                  
103                      /**  The _TermOperators member variable is an 
104                             array of operators that are valid to operate on Terms in a CQL
105                      expression. 
106                             Valid operators include concatentation, plus and minus.
107                      
108                             The array is ordered according to the operation from left to right.
109                        */
110                      
111                      Array<TermOpType> _TermOperators;
112                  
113                      /**  The _CQLTerms member variable is an 
114                             array of operands that are valid in a CQL expression. 
115                      
116                             The array is ordered according to the operation from left to right.
117                        */
118                      Array<CQLTerm> _CQLTerms;
119 humberto 1.1.2.1 
120 humberto 1.1.2.4     Boolean _isSimple;
121 humberto 1.1.2.1 };
122                  
123                  PEGASUS_NAMESPACE_END
124                  
125                  
126                  #endif /* CQLEXPRESSION_H_HEADER_INCLUDED_BEE5929F */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2