1 mike 1.6 //%/////////////////////////////////////////////////////////////////////////////
2 //
|
3 kumpf 1.28 // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM,
4 // The Open Group, Tivoli Systems
|
5 mike 1.6 //
6 // Permission is hereby granted, free of charge, to any person obtaining a copy
|
7 chip 1.9 // of this software and associated documentation files (the "Software"), to
8 // deal in the Software without restriction, including without limitation the
9 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
10 mike 1.6 // sell copies of the Software, and to permit persons to whom the Software is
11 // furnished to do so, subject to the following conditions:
|
12 kumpf 1.28 //
|
13 chip 1.9 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
|
14 mike 1.6 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
15 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
16 chip 1.9 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
17 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
18 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
19 mike 1.6 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 //
22 //==============================================================================
23 //
24 // Author: Mike Brasher (mbrasher@bmc.com)
25 //
|
26 kumpf 1.19 // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
|
27 kumpf 1.24 // Carol Ann Krug Graves, Hewlett-Packard Company
28 // (carolann_graves@hp.com)
|
29 mike 1.6 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
|
32 mike 1.7 #ifndef Pegasus_Object_h
33 #define Pegasus_Object_h
|
34 mike 1.6
35 #include <Pegasus/Common/Config.h>
|
36 kumpf 1.18 #include <Pegasus/Common/String.h>
37 #include <Pegasus/Common/Array.h>
38 #include <Pegasus/Common/CIMProperty.h>
39 #include <Pegasus/Common/CIMQualifier.h>
|
40 kumpf 1.31 #include <Pegasus/Common/Linkage.h>
|
41 mike 1.6
42 PEGASUS_NAMESPACE_BEGIN
43
|
44 kumpf 1.18 class CIMConstObject;
45 class CIMObjectRep;
|
46 mike 1.7 class CIMClass;
47 class CIMConstClass;
48 class CIMInstance;
49 class CIMConstInstance;
50
51 ////////////////////////////////////////////////////////////////////////////////
52 //
53 // CIMObject
54 //
55 ////////////////////////////////////////////////////////////////////////////////
56
|
57 chip 1.9 /** This class either refers to a CIMInstance or a CIMClass.
|
58 mike 1.7
59 The CIMObjectRep data member points to either a CIMInstanceRep or
60 CIMClassRep.
|
61 mike 1.6 */
62 class PEGASUS_COMMON_LINKAGE CIMObject
63 {
64 public:
65
|
66 mike 1.7 /** Constructor.
67 */
|
68 kumpf 1.18 CIMObject();
|
69 mike 1.6
|
70 mike 1.7 /** Copy constructor.
71 */
|
72 kumpf 1.18 CIMObject(const CIMObject& x);
|
73 mike 1.6
|
74 mike 1.7 /** Construction from CIMClass.
75 */
76 CIMObject(const CIMClass& x);
|
77 mike 1.6
|
78 mike 1.7 /** Construction from CIMInstance.
79 */
80 CIMObject(const CIMInstance& x);
|
81 mike 1.6
|
82 mike 1.7 /** Assignment operator.
83 */
|
84 kumpf 1.18 CIMObject& operator=(const CIMObject& x);
|
85 mike 1.6
|
86 mike 1.7 /** Assignment operator.
87 */
88 CIMObject& operator=(const CIMClass& x);
89
90 /** Assignment operator.
91 */
92 CIMObject& operator=(const CIMInstance& x);
93
|
94 chip 1.9 /** Destructor.
|
95 mike 1.7 */
|
96 kumpf 1.18 ~CIMObject();
|
97 mike 1.7
|
98 karl 1.13 /** Accessor for ClassName component of the object.
99 @return - Returns the ClassName of the object in
100 a String parameter.
101 <pre>
102 String className;
103 CIMClass myclass("myclass", "superclass");
104 className = myclass.getClassName;
105 </pre>
|
106 mike 1.7 */
|
107 kumpf 1.18 const String& getClassName() const;
|
108 mike 1.7
|
109 kumpf 1.22 const CIMObjectPath& getPath() const;
|
110 kumpf 1.24
111 /**
112 Sets the object path for the object
113 @param path CIMObjectPath containing the object path
114 */
115 void setPath (const CIMObjectPath & path);
|
116 chip 1.12
|
117 mike 1.7 /** addQualifier - Adds the CIMQualifier object to the instance.
118 Thows an exception of the CIMQualifier already exists in the instance
119 @param CIMQualifier object to add to instance
|
120 kumpf 1.29 @return the resulting object.
|
121 mike 1.7 @exception Throws AlreadyExists.
122 */
|
123 kumpf 1.18 CIMObject& addQualifier(const CIMQualifier& qualifier);
|
124 mike 1.7
125 /** findQualifier - Searches the instance for the qualifier object
126 defined by the input parameter.
127 @param String defining the qualifier object to be found.
128 @return - Position of the qualifier to be used in subsequent
129 operations or PEG_NOT_FOUND if the qualifier is not found.
130 */
|
131 kumpf 1.18 Uint32 findQualifier(const String& name) const;
|
132 mike 1.7
133 /** getQualifier - Retrieves the qualifier object defined by the
134 index input parameter. @ index for the qualifier object.
135 The index to qualifier objects is zero-origin and continuous
136 so that incrementing loops can be used to get all qualifier
137 objects in a CIMInstnace.
138 @return: Returns qualifier object defined by index.
139 @exception Throws the OutOfBounds exception if the index
140 is out of bounds
141 */
|
142 kumpf 1.18 CIMQualifier getQualifier(Uint32 pos);
|
143 mike 1.7
144 /** getQualifier - Retrieves the qualifier object defined by the
145 index input parameter. @ index for the qualifier object.
146 The index to qualifier objects is zero-origin and continuous
147 so that incrementing loops can be used to get all qualifier
148 objects in a CIMInstnace.
149 @return: Returns qualifier object defined by index.
150 @exception Throws the OutOfBounds exception if the index
151 is out of bounds
152 */
|
153 kumpf 1.18 CIMConstQualifier getQualifier(Uint32 pos) const;
154
155 void removeQualifier(Uint32 pos);
|
156 chip 1.11
|
157 kumpf 1.17 /** getQualifierCount - Gets the number of CIMQualifier objects
|
158 mike 1.7 defined for this CIMObject.
|
159 kumpf 1.17 @return Count of the number of CIMQualifier objects in the
|
160 mike 1.7 CIMObject.
161 @exception Throws the OutOfBounds exception if the index
162 is out of bounds
163 */
|
164 kumpf 1.18 Uint32 getQualifierCount() const;
|
165 mike 1.7
166 /** addProperty - Adds a property object defined by the input
167 parameter to the CIMObject
168 @param Property Object to be added. See the CIM Property
169 class for definition of the property object
|
170 kumpf 1.29 @return the resulting object.
|
171 mike 1.7 @exception Throws the exception AlreadyExists if the property
172 already exists.
173 */
|
174 kumpf 1.18 CIMObject& addProperty(const CIMProperty& x);
|
175 mike 1.7
176 /** findProperty - Searches the CIMProperty objects installed in the
177 CIMObject for property objects with the name defined by the
178 input.
179 @param String with the name of the property object to be found
180 @return Position in the CIM object to the property object if found or
181 PEG_NOT_FOUND if no property object found with the name defined by the
182 input.
183 */
|
184 kumpf 1.18 Uint32 findProperty(const String& name) const;
|
185 mike 1.7
|
186 kumpf 1.17 /** getProperty - Gets the CIMProperty object in the CIMObject defined
|
187 mike 1.7 by the input index parameter.
188 @param Index to the property object in the CIMObject.
189 The index to qualifier objects is zero-origin and continuous
190 so that incrementing loops can be used to get all qualifier
191 objects in a CIMObject.
192 @return CIMProperty object corresponding to the index.
193 @exception Throws the OutOfBounds exception if the index
194 is out of bounds
195 */
|
196 kumpf 1.18 CIMProperty getProperty(Uint32 pos);
|
197 mike 1.7
198 /** getProperty - Gets the CIMproperty object in the CIMObject defined
199 by the input index parameter.
200 @param Index to the property object in the CIMObject.
201 The index to qualifier objects is zero-origin and continuous
202 so that incrementing loops can be used to get all qualifier
203 objects in a CIMInstnace.
204 @return CIMProperty object corresponding to the index.
205 @exception Throws the OutOfBounds exception if the index
206 is out of bounds
207 */
|
208 kumpf 1.18 CIMConstProperty getProperty(Uint32 pos) const;
|
209 mike 1.7
210 /** removeProperty - Removes the property represented
211 by the position input parameter from the instance.
212 @param pos Index to the property to be removed from the
213 instance. Normally this is obtained by getProperty();
214 @exception Throws OutofBounds if index is not a property object
215 */
|
216 kumpf 1.18 void removeProperty(Uint32 pos);
|
217 mike 1.7
|
218 kumpf 1.17 /** getPropertyCount - Gets the number of CIMProperty
|
219 mike 1.7 objects defined for this CIMObject.
220 @return Count of the number of CIMProperty objects in the
221 CIMObject. Zero indicates that no CIMProperty objects
222 are contained in the CIMObject
223 @exception Throws the OutOfBounds exception if the index
224 is out of bounds
225
226 */
|
227 kumpf 1.18 Uint32 getPropertyCount() const;
|
228 mike 1.7
|
229 kumpf 1.18 /** Clones the given object.
230 */
231 CIMObject clone() const;
|
232 mike 1.7
233 /** Returns true if the two classes are structurally identical.
234 */
235 Boolean identical(const CIMConstObject& x) const;
236
|
237 kumpf 1.18 #ifdef PEGASUS_INTERNALONLY
|
238 kumpf 1.29 /** isNull() */
|
239 kumpf 1.20 Boolean isNull() const;
|
240 kumpf 1.18 #endif
|
241 mike 1.7
242 private:
243
|
244 kumpf 1.18 CIMObjectRep* _rep;
|
245 mike 1.7
|
246 kumpf 1.18 #ifdef PEGASUS_INTERNALONLY
247 CIMObject(CIMObjectRep* rep);
|
248 mike 1.7
|
249 kumpf 1.18 void _checkRep() const;
|
250 mike 1.7
251 friend class CIMConstObject;
252 friend class CIMClass;
253 friend class CIMConstClass;
254 friend class CIMInstance;
255 friend class CIMConstInstance;
|
256 kumpf 1.18 #endif
|
257 mike 1.7 };
258
|
259 kumpf 1.25 #define PEGASUS_ARRAY_T CIMObject
260 # include <Pegasus/Common/ArrayInter.h>
261 #undef PEGASUS_ARRAY_T
262
|
263 mike 1.7 ////////////////////////////////////////////////////////////////////////////////
264 //
265 // CIMConstObject
266 //
267 ////////////////////////////////////////////////////////////////////////////////
268
269 class PEGASUS_COMMON_LINKAGE CIMConstObject
270 {
271 public:
272
|
273 kumpf 1.18 CIMConstObject();
|
274 mike 1.7
|
275 kumpf 1.18 CIMConstObject(const CIMConstObject& x);
|
276 mike 1.7
|
277 kumpf 1.18 CIMConstObject(const CIMObject& x);
|
278 mike 1.7
279 /** Construction from CIMClass.
280 */
281 CIMConstObject(const CIMClass& x);
282
283 /** Construction from CIMInstance.
284 */
285 CIMConstObject(const CIMInstance& x);
286
287 /** Construction from CIMClass.
288 */
289 CIMConstObject(const CIMConstClass& x);
290
291 /** Construction from CIMInstance.
292 */
293 CIMConstObject(const CIMConstInstance& x);
294
|
295 kumpf 1.18 CIMConstObject& operator=(const CIMConstObject& x);
296
297 CIMConstObject& operator=(const CIMObject& x);
|
298 mike 1.6
|
299 mike 1.7 CIMConstObject& operator=(const CIMClass& x);
300
301 CIMConstObject& operator=(const CIMConstClass& x);
302
303 CIMConstObject& operator=(const CIMInstance& x);
304
305 CIMConstObject& operator=(const CIMConstInstance& x);
306
|
307 kumpf 1.18 ~CIMConstObject();
308
309 const String& getClassName() const;
310
|
311 kumpf 1.22 const CIMObjectPath& getPath() const;
|
312 kumpf 1.18
313 Uint32 findQualifier(const String& name) const;
314
315 CIMConstQualifier getQualifier(Uint32 pos) const;
316
317 Uint32 getQualifierCount() const;
318
319 Uint32 findProperty(const String& name) const;
320
321 CIMConstProperty getProperty(Uint32 pos) const;
322
323 Uint32 getPropertyCount() const;
324
325 CIMObject clone() const;
326
327 Boolean identical(const CIMConstObject& x) const;
328
329 #ifdef PEGASUS_INTERNALONLY
|
330 kumpf 1.20 Boolean isNull() const;
|
331 kumpf 1.18 #endif
|
332 mike 1.6
333 private:
334
|
335 kumpf 1.18 CIMObjectRep* _rep;
|
336 mike 1.6
|
337 kumpf 1.18 #ifdef PEGASUS_INTERNALONLY
338 void _checkRep() const;
|
339 mike 1.6
|
340 mike 1.7 friend class CIMObject;
341 friend class CIMClass;
342 friend class CIMConstClass;
343 friend class CIMInstance;
344 friend class CIMConstInstance;
|
345 kumpf 1.18 #endif
|
346 mike 1.6 };
347
348 PEGASUS_NAMESPACE_END
349
|
350 mike 1.7 #endif /* Pegasus_Object_h */
|