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

  1 chuck 1.1.2.5 //%2003////////////////////////////////////////////////////////////////////////
  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) 2003 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.5 // 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_CQLTermRep_h
 36                  #define Pegasus_CQLTermRep_h
 37                  
 38                  #include <Pegasus/Common/Config.h>
 39                  #include <Pegasus/CQL/CQLValue.h>
 40                  #include <Pegasus/CQL/Linkage.h>
 41                  #include <Pegasus/CQL/CQLFactor.h>
 42                  
 43                  PEGASUS_NAMESPACE_BEGIN
 44                  
 45                  class PEGASUS_CQL_LINKAGE CQLFactory;
 46                  class PEGASUS_CQL_LINKAGE QueryContext;
 47                  /** The CQLTerm class encapsulates each CQL term in a CQL expression.  
 48                  
 49                  This class contains an array of CQLFactor objects and an array of CQLOperator
 50                  objects.
 51                    */
 52                  // 
 53                  /**
 54                    The CQLTerm class encapsulates a generic CQL term to make it 
 55                     easier to break into pieces (factors) and process the term.  
 56 humberto 1.1.2.1 
 57                     A CQL term is made up of factors and operators. 
 58                     For example,  'A * B' is a CQLTerm, where 'A' and 'B' are factors, and '*'
 59                  is an operator on a factor.
 60                  
 61                     There must be exactly one more factor than there are operators.
 62                    */
 63                  class PEGASUS_CQL_LINKAGE CQLTermRep
 64                  {
 65                    public:
 66                     CQLTermRep();
 67                      /** constructor takes one CQLFactor object.
 68                        */
 69 humberto 1.1.2.7     CQLTermRep(const CQLFactor & theFactor);
 70 humberto 1.1.2.3     CQLTermRep(const CQLTermRep* rep);
 71 humberto 1.1.2.1     ~CQLTermRep();
 72                  
 73                      /**  the getValue method evaluates the CQL term and returns the value.
 74                            Any property that need to be resolved into a value is taken from the
 75                      CIMInstance.
 76                        */
 77                      CQLValue resolveValue(CIMInstance CI, QueryContext& QueryCtx);
 78                  
 79                      /** The appendOperation is used by Bison.
 80                            It is invoked 0 or more times for the CQLTerm, and
 81                            when invoked will always pass in an integer that is the Factor operation
 82                            type and a CQLFactor object.
 83                        */
 84                      void appendOperation(FactorOpType inFactorOpType, CQLFactor inFactor);
 85                  
 86 humberto 1.1.2.7    String toString()const;
 87 chuck    1.1.2.4 
 88 humberto 1.1.2.7    Boolean isSimple()const;
 89 chuck    1.1.2.4 
 90 humberto 1.1.2.7    Boolean isSimpleValue()const;
 91 chuck    1.1.2.4 
 92 humberto 1.1.2.7    Array<CQLFactor> getFactors()const;
 93 chuck    1.1.2.4 
 94 humberto 1.1.2.7    Array<FactorOpType> getOperators()const;
 95 chuck    1.1.2.4 
 96 david    1.1.2.6    void applyContext(QueryContext& inContext,
 97                                       CQLChainedIdentifier& inCid); 
 98 chuck    1.1.2.4 
 99 humberto 1.1.2.1    friend class CQLFactory;
100                  
101                    private:
102                      
103                      Array<FactorOpType> _FactorOperators;
104                  
105                      Array<CQLFactor> _Factors;
106                  
107                  };
108                  
109                  PEGASUS_NAMESPACE_END
110                  
111                  #endif 

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2