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

  1 a.dunfey 1.8.2.1 //%2006////////////////////////////////////////////////////////////////////////
  2 chuck    1.2     //
  3 karl     1.5     // 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 chuck    1.2     // IBM Corp.; EMC Corporation, The Open Group.
  7 karl     1.5     // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8                  // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9                  // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10                  // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11 a.dunfey 1.8.2.1 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12                  // EMC Corporation; Symantec Corporation; The Open Group.
 13 chuck    1.2     //
 14                  // Permission is hereby granted, free of charge, to any person obtaining a copy
 15                  // of this software and associated documentation files (the "Software"), to
 16                  // deal in the Software without restriction, including without limitation the
 17                  // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 18                  // sell copies of the Software, and to permit persons to whom the Software is
 19                  // furnished to do so, subject to the following conditions:
 20                  // 
 21                  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 22                  // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 23                  // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 24                  // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 25                  // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 26                  // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 27                  // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 28                  // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 29                  //
 30                  //==============================================================================
 31                  //
 32                  // Author: Dave Rosckes (rosckes@us.ibm.com)
 33                  //
 34 david.dillard 1.3     // Modified By: David Dillard, VERITAS Software Corp.
 35                       //                  (david.dillard@veritas.com)
 36 vijay.eli     1.7     //              Vijay Eli, IBM (vijayeli@in.ibm.com) bug#3590
 37 chuck         1.2     //
 38                       //%/////////////////////////////////////////////////////////////////////////////
 39                       
 40                       #ifndef PEGASUS_CQLVALUEREP_H
 41                       #define PEGASUS_CQLVALUEREP_H
 42                       
 43                       
 44                       #include <Pegasus/Common/Config.h>
 45                       #include <Pegasus/Common/CIMInstance.h>
 46                       #include <Pegasus/Query/QueryCommon/QueryContext.h>
 47                       #include <Pegasus/Common/CIMObjectPath.h>
 48                       #include <Pegasus/CQL/CQLChainedIdentifier.h>
 49                       #include <Pegasus/CQL/CQLValue.h>
 50                       #include <Pegasus/Common/ArrayInternal.h>
 51                       #include <Pegasus/CQL/Linkage.h>
 52                       
 53                       PEGASUS_NAMESPACE_BEGIN
 54                       class PEGASUS_CQL_LINKAGE CQLFactory;
 55                       
 56                       class PEGASUS_CQL_LINKAGE CQLValueRep
 57                       {
 58 chuck         1.2       public:
 59                       
 60                           CQLValueRep();
 61                           ~CQLValueRep();
 62                           CQLValueRep(const CQLValueRep& val);
 63                           CQLValueRep(const CQLValueRep* val);
 64                           CQLValueRep(const String & inString, CQLValue::NumericType inValueType,
 65                               Boolean inSign = true);
 66                       
 67                           /**  Initializes object as a CQLIdentifier.
 68                              */
 69                           CQLValueRep(const CQLChainedIdentifier& inCQLIdent);
 70                       
 71                          /**  Initializes object as a CIMObjectPath.
 72                              */
 73                           CQLValueRep(const CIMObjectPath& inObjPath);
 74                       
 75                          /**  Initializes object as a CIMDateTime.
 76                              */
 77                           CQLValueRep(const CIMDateTime& inDateTime);
 78                       
 79 chuck         1.2         /**  Initializes object as a literal string (non-numeric).
 80                              */
 81                           CQLValueRep(const String& inString);
 82                       
 83 david.dillard 1.3        CQLValueRep(Sint64 inSint);
 84                          CQLValueRep(Uint64 inUint);
 85                          CQLValueRep(Real64 inReal);
 86 chuck         1.2        CQLValueRep(const CIMInstance& inInstance);
 87 david.dillard 1.3        CQLValueRep(Boolean inBool);
 88 chuck         1.2        CQLValueRep(const CIMClass& inClass);
 89                          CQLValueRep(const CIMObject& inObject);
 90                          CQLValueRep(const CIMValue& inVal);
 91                       
 92                           /**  This method is used to ask an identifier to resolve itself to 
 93                                  a number or string (primitive value).
 94                           
 95                                 Resolves:
 96                                  - symbolic constants
 97                                  - indexing an array
 98                                  - decoding identifier
 99                                       * URI reference
100                                       * embedded object (e.g. myclass.embeddedobject.prop1)
101                                           and this is recursive
102                                  - class aliasing
103                            */
104                       
105                           void resolve(const CIMInstance& CI, const QueryContext& inQueryCtx);
106                       
107                           CQLValueRep& operator=(const CQLValueRep& rhs);
108                       
109 chuck         1.2         /** operator == compares two CQLValue objects for equality and
110                                                   performs type checking.
111                               @param x - First CQLValue to compare
112                               @param y - Second CQLValue to compare
113                               @return true if they are identical in type, attribute and value,
114                               false otherwise.
115                           */
116                       
117                           Boolean operator==(const CQLValueRep& x);
118                       
119                           /** operator == compares two CQLValue objects for inequality and
120                                                   performs type checking.
121                               @param x - First CQLValue to compare
122                               @param y - Second CQLValue to compare
123                               @return true if they are NOT identical in type, attribute and value,
124                               false otherwise.
125                           */
126                       
127                           Boolean operator!=(const CQLValueRep& x);
128                       
129                           /** operator <= compares two CQLValue objects to see if x is less than or
130 chuck         1.2                                 equal to y and performs type checking.
131                               @param x - First CQLValue to compare
132                               @param y - Second CQLValue to compare
133                               @return true if x is less than or equal to y,
134                               false otherwise.
135                           */
136                       
137                           Boolean operator<=(const CQLValueRep& x);
138                       
139                           /** operator >= compares two CQLValue objects to see if x is greater than or
140                                                   equal to y and performs type checking.
141                               @param x - First CQLValue to compare
142                               @param y - Second CQLValue to compare
143                               @return true if x is greater than or equal to y,
144                               false otherwise.
145                           */
146                       
147                           Boolean operator>=(const CQLValueRep& x);
148                       
149                           /** The overload operator (<) compares CQLValue obects and
150                                 performs type checking.
151 chuck         1.2             <pre>
152                                   CQLValue   val1 = "def";
153                                   CQLValue   val2 = "a";
154 jim.wunderlich 1.8                 PEGASUS_ASSERT (val2 < val1);
155 chuck          1.2             </pre>
156                            */
157                        
158                            Boolean operator<(const CQLValueRep& val1);
159                        
160                            /** The overload operator (>) compares CQLValue obects and
161                                  performs type checking.
162                                <pre>
163                                    CQLValue   val1 = "def";
164                                    CQLValue   val2 = "a";
165 jim.wunderlich 1.8                 PEGASUS_ASSERT (val2 < val1);
166 chuck          1.2             </pre>
167                            */
168                        
169                            Boolean operator>(const CQLValueRep& val1);
170                        
171                            /** This overload operator (+) concatenates or adds the value of
172                            CQLValue objects and performs type checking and Uint64 handling.
173                                  For example, 
174                                <pre>
175                                    CQLValue  t1 = "abc";  // it's a string type
176                                    CQLValue  t2 = "def";   // it's another string type
177                                    CQLValue   t3 = t1 + t2;
178 jim.wunderlich 1.8                 PEGASUS_ASSERT(t3 == "abcdef");
179 chuck          1.2             </pre>
180                            */
181                         
182                             CQLValueRep operator+(const CQLValueRep x);
183                        
184                            /** This overload operator (-) subtracts the value of CQLValue
185                                  objects and performs type checking and Uint64 handling.
186                                  For example, 
187                                <pre>
188                                    CQLValue  t1 = 5;  
189                                    CQLValue  t2 = 2;   
190                                    CQLValue   t3 = t1 - t2;
191 jim.wunderlich 1.8                 PEGASUS_ASSERT(t3 == 3);
192 chuck          1.2             </pre>
193                            */
194                         
195                            //CQLValueRep operator-(const CQLValueRep& x);
196                        
197                            /** This overload operator (*) multiplies the values of CQLValue
198                                  objects and performs type checking and Uint64 handling.
199                                  For example, 
200                                <pre>
201                                    CQLValue  t1 = 3;  
202                                    CQLValue  t2 = 2;   
203                                    CQLValue   t3 = t1 *  t2;
204 jim.wunderlich 1.8                 PEGASUS_ASSERT(t3 == 6);
205 chuck          1.2             </pre>
206                            */
207                        
208                            //CQLValueRep operator*(const CQLValueRep& x);
209                        
210                            /** This overload operator (*) divides the values of CQLValue
211                                  objects and performs type checking and Uint64 handling.
212                                  For example, 
213                                <pre>
214                                    CQLValue  t1 = 6;  
215                                    CQLValue  t2 = 2;   
216                                    CQLValue   t3 = t1 /  t2;
217 jim.wunderlich 1.8                 PEGASUS_ASSERT(t3 == 2);
218 chuck          1.2             </pre>
219                            */
220                        
221                            //CQLValueRep operator/(const CQLValueRep& x);
222                        
223                            /** Accessor for getting the type of the CQLValue.
224                            
225                            TODO:  do we need this method?
226                              */
227                        
228                            CQLValue::CQLValueType getValueType();
229                        
230                            /** Clears this object and sets its type to NULL_VALUE
231                              */
232                        
233                            void setNull();
234                        
235                            /** Returns whether the value has been resolved to a primitive.
236                              */
237                        
238                            Boolean isResolved();
239 chuck          1.2     
240                            /** Returns whether the CQLValue is null.
241                              */
242                        
243                            Boolean isNull();
244                        
245                            /** Tests to see if this "isa" the input string.
246                            */
247                        
248                            Boolean isa(const CQLChainedIdentifier& inID, QueryContext& QueryCtx);
249                        
250                            /** Tests to see if this "like" the input string.
251                                  Both sides of the LIKE comparison must have a String type:
252                                  the result is a Boolean type.
253                            
254                                 The LIKE comparison allows a string to be tested by pattern-matching,
255                                  using special characters n the right-hand-side string.
256                                  See the DMTF CQL Specification for details.
257                            
258                                  For Basic Query, the left-hand expression (this) may be restricted to
259                            chain, and 
260 chuck          1.2               the right-hand expression may be restricted to be a literal-string.
261                            */
262                        
263                            Boolean like(const CQLValueRep& inVal);
264                            /*
265                           void invert();
266                            */
267                           CQLChainedIdentifier getChainedIdentifier()const;
268                           Uint64 getUint()const;
269                           Sint64 getSint()const;
270                           Real64 getReal()const;
271                           String getString()const;
272                           Boolean getBool()const;
273                           CIMDateTime getDateTime()const;
274                           CIMObjectPath getReference()const;
275                           CIMObject getObject()const;
276                           String toString()const;
277 vijay.eli      1.7        void applyContext(const QueryContext& _ctx,
278                                             const CQLChainedIdentifier& inCid);
279 humberto       1.4        
280                           static String valueTypeToString(const CQLValue::CQLValueType parmType);
281 chuck          1.2        friend class CQLFactory; 
282                           friend class CQLValue;
283                          private:
284                           Boolean _areClassesInline(const CIMClass& c1,const CIMClass& c2,QueryContext& in);
285                           void _validate(const CQLValueRep& x);
286                           void _resolveSymbolicConstant(const QueryContext& inQueryCtx);
287                           void _setValue(CIMValue cv, Sint64 Index = -1);
288                           void _process_value(CIMProperty& propObj,CQLIdentifier& _id,const QueryContext& inQueryContext);
289                           Boolean _compareObjects(CIMObject& _in1, CIMObject& _in2);
290                           Boolean _compareArray(const CQLValueRep& _in);
291                        
292                           CIMValue _theValue;
293                        
294                           CQLChainedIdentifier _CQLChainId;
295                        
296                           Boolean _isResolved;
297                        
298                           CQLValue::CQLValueType _valueType;
299                        
300                           String _ArrayType;
301                        };
302 chuck          1.2     
303                        /*
304                        #ifndef PEGASUS_ARRAY_T
305                        #define PEGASUS_ARRAY_T CQLValueRep
306                        #include <Pegasus/Common/ArrayInter.h>
307                        #undef PEGASUS_ARRAY_T
308                        #endif
309                        */
310                        
311                        PEGASUS_NAMESPACE_END
312                        
313                        #endif /* CQLVALUEREP_H */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2