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

  1 chuck 1.1.2.7 //%2003////////////////////////////////////////////////////////////////////////
  2 chuck 1.1.2.6 //
  3               // Copyright (c) 2000, 2001, 2002  BMC Software, Hewlett-Packard Development
  4               // Company, L. P., IBM Corp., The Open Group, Tivoli Systems.
  5 chuck 1.1.2.8 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.;
  6 chuck 1.1.2.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               // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 23               //
 24               //==============================================================================
 25               //
 26               // Authors: David Rosckes (rosckes@us.ibm.com)
 27 chuck 1.1.2.6 //          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 humberto 1.1.2.10     CQLExpressionRep(const 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 david    1.1.2.11     CQLValue resolveValue(const CIMInstance& CI, const QueryContext& QueryCtx);
 74 humberto 1.1.2.1  
 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 humberto 1.1.2.10     void appendOperation(const TermOpType theTermOpType, const CQLTerm& theTerm);
 81 humberto 1.1.2.1  
 82 humberto 1.1.2.10    String toString()const;
 83 chuck    1.1.2.5  
 84 humberto 1.1.2.10    Boolean isSimple()const;
 85 chuck    1.1.2.5  
 86 humberto 1.1.2.10    Boolean isSimpleValue()const;
 87 chuck    1.1.2.5  
 88 humberto 1.1.2.10    Array<CQLTerm> getTerms()const;
 89 chuck    1.1.2.5  
 90 humberto 1.1.2.10    Array<TermOpType> getOperators()const;
 91 chuck    1.1.2.5  
 92 david    1.1.2.9     void applyContext(QueryContext& inContext,
 93                                        CQLChainedIdentifier& inCid);
 94 chuck    1.1.2.5  
 95 humberto 1.1.2.10    Boolean operator==(const CQLExpressionRep& rep)const;
 96 chuck    1.1.2.5  
 97 humberto 1.1.2.10    Boolean operator!=(const CQLExpressionRep& rep)const;
 98 chuck    1.1.2.5  
 99 humberto 1.1.2.1     friend class CQLFactory;
100                   
101                     private:
102                      
103                   
104                       /**  The _TermOperators member variable is an 
105                              array of operators that are valid to operate on Terms in a CQL
106                       expression. 
107                              Valid operators include concatentation, plus and minus.
108                       
109                              The array is ordered according to the operation from left to right.
110                         */
111                       
112                       Array<TermOpType> _TermOperators;
113                   
114                       /**  The _CQLTerms member variable is an 
115                              array of operands that are valid in a CQL expression. 
116                       
117                              The array is ordered according to the operation from left to right.
118                         */
119                       Array<CQLTerm> _CQLTerms;
120 humberto 1.1.2.1  
121 humberto 1.1.2.4      Boolean _isSimple;
122 humberto 1.1.2.1  };
123                   
124                   PEGASUS_NAMESPACE_END
125                   
126                   
127                   #endif /* CQLEXPRESSION_H_HEADER_INCLUDED_BEE5929F */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2