1 mike 1.1 //BEGIN_LICENSE
2 //
3 // Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a
6 // copy of this software and associated documentation files (the "Software"),
7 // to deal in the Software without restriction, including without limitation
8 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 // and/or sell copies of the Software, and to permit persons to whom the
10 // Software is furnished to do so, subject to the following conditions:
11 //
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
15 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18 // DEALINGS IN THE SOFTWARE.
19 //
20 //END_LICENSE
21 //BEGIN_HISTORY
22 mike 1.1 //
23 // Author:
24 //
|
25 mike 1.2 // $Log: Property.h,v $
|
26 karl 1.3 // Revision 1.2 2001/01/15 04:31:44 mike
27 // worked on resolve scheme
28 //
|
29 mike 1.2 // Revision 1.1.1.1 2001/01/14 19:53:04 mike
30 // Pegasus import
31 //
|
32 mike 1.1 //
33 //END_HISTORY
34
35 #ifndef Pegasus_Property_h
36 #define Pegasus_Property_h
37
38 #include <Pegasus/Common/Config.h>
39 #include <Pegasus/Common/PropertyRep.h>
40
41 PEGASUS_NAMESPACE_BEGIN
42
43 ////////////////////////////////////////////////////////////////////////////////
44 //
45 // Property
46 //
47 ////////////////////////////////////////////////////////////////////////////////
48
49 class ConstProperty;
50 class InstanceDeclRep;
|
51 karl 1.3 /** Property Class - ATTN:
52 */
|
53 mike 1.1 class PEGASUS_COMMON_LINKAGE Property
54 {
55 public:
|
56 karl 1.3 /// Method Property
|
57 mike 1.1 Property() : _rep(0)
58 {
59
60 }
|
61 karl 1.3 /// Method Property
|
62 mike 1.1 Property(const Property& x)
63 {
64 Inc(_rep = x._rep);
65 }
|
66 karl 1.3 /** Method Property
|
67 mike 1.1
|
68 karl 1.3 @return
|
69 mike 1.1 // Throws IllegalName if name argument not legal CIM identifier.
|
70 karl 1.3 */
|
71 mike 1.1 Property(
|
72 karl 1.3 const String& name,
|
73 mike 1.1 const Value& value,
74 Uint32 arraySize = 0,
75 const String& referenceClassName = String::EMPTY,
76 const String& classOrigin = String(),
77 Boolean propagated = false)
78 {
79 _rep = new PropertyRep(name, value,
80 arraySize, referenceClassName, classOrigin, propagated);
81 }
82
83 ~Property()
84 {
85 Dec(_rep);
86 }
|
87 karl 1.3 /// Method
|
88 mike 1.1 Property& operator=(const Property& x)
89 {
90 if (x._rep != _rep)
91 {
92 Dec(_rep);
93 Inc(_rep = x._rep);
94 }
95 return *this;
96 }
|
97 karl 1.3 /// Method
98 const String& getName() const
99 {
|
100 mike 1.1 _checkRep();
|
101 karl 1.3 return _rep->getName();
|
102 mike 1.1 }
|
103 karl 1.3 /** Method setName - Set the property name
104 @return
105 Throws IllegalName if name argument not legal CIM identifier.
106 */
|
107 mike 1.1 void setName(const String& name)
108 {
109 _checkRep();
110 _rep->setName(name);
111 }
|
112 karl 1.3 /// Method getValue - ATTN:
113 const Value& getValue() const
114 {
|
115 mike 1.1 _checkRep();
116 return _rep->getValue();
117 }
|
118 karl 1.3 /// Method setValue - ATTN
119 void setValue(const Value& value)
|
120 mike 1.1 {
121 _checkRep();
122 _rep->setValue(value);
123 }
|
124 karl 1.3 /// Method getArraySize - ATTN:
|
125 mike 1.1 Uint32 getArraySize() const
126 {
127 _checkRep();
128 return _rep->getArraySize();
129 }
|
130 karl 1.3 /// Method getReferenceClassName - ATTN:
131 const String& getReferenceClassName() const
|
132 mike 1.1 {
133 _checkRep();
|
134 karl 1.3 return _rep->getReferenceClassName();
|
135 mike 1.1 }
|
136 karl 1.3 /// Method getClassOrigin - ATTN
137 const String& getClassOrigin() const
138 {
|
139 mike 1.1 _checkRep();
140 return _rep->getClassOrigin();
141 }
|
142 karl 1.3 /// Method setClassOrigin
|
143 mike 1.1 void setClassOrigin(const String& classOrigin)
144 {
145 _checkRep();
146 _rep->setClassOrigin(classOrigin);
147 }
|
148 karl 1.3 /// Method getPropagated - ATTN
149 Boolean getPropagated() const
150 {
|
151 mike 1.1 _checkRep();
152 return _rep->getPropagated();
153 }
|
154 karl 1.3 /// Method setProgagated - ATTN
155 void setPropagated(Boolean propagated)
156 {
|
157 mike 1.1 _checkRep();
158 _rep->setPropagated(propagated);
159 }
|
160 karl 1.3 /** Method addQualifier - ATTN
161 @return
162 Throws AlreadyExists.
163 */
|
164 mike 1.1 Property& addQualifier(const Qualifier& x)
165 {
166 _checkRep();
167 _rep->addQualifier(x);
168 return *this;
169 }
|
170 karl 1.3 /// Method findQualifier - ATTN
|
171 mike 1.1 Uint32 findQualifier(const String& name)
172 {
173 _checkRep();
174 return _rep->findQualifier(name);
175 }
|
176 karl 1.3 /// Method findQualifier - ATTN
|
177 mike 1.1 Uint32 findQualifier(const String& name) const
178 {
179 _checkRep();
180 return _rep->findQualifier(name);
181 }
|
182 karl 1.3 /// Method getQualifier - ATTN
|
183 mike 1.1 Qualifier getQualifier(Uint32 pos)
184 {
185 _checkRep();
186 return _rep->getQualifier(pos);
187 }
|
188 karl 1.3 /// Method getQualifier - ATTN
|
189 mike 1.1 ConstQualifier getQualifier(Uint32 pos) const
190 {
191 _checkRep();
192 return _rep->getQualifier(pos);
193 }
|
194 karl 1.3 /// Method getQualifier - ATTN
|
195 mike 1.1 Uint32 getQualifierCount() const
196 {
197 _checkRep();
198 return _rep->getQualifierCount();
199 }
|
200 karl 1.3 /// Method resolve
|
201 mike 1.1 void resolve(
|
202 karl 1.3 DeclContext* declContext,
|
203 mike 1.1 const String& nameSpace,
204 Boolean isInstancePart,
205 const ConstProperty& property)
206 {
207 _checkRep();
208 _rep->resolve(declContext, nameSpace, isInstancePart, property);
209 }
|
210 karl 1.3 /// Method resolve - ATTN
|
211 mike 1.1 void resolve(
|
212 karl 1.3 DeclContext* declContext,
|
213 mike 1.1 const String& nameSpace,
214 Boolean isInstancePart)
215 {
216 _checkRep();
217 _rep->resolve(declContext, nameSpace, isInstancePart);
218 }
|
219 karl 1.3 /// ATTN
|
220 mike 1.1 operator int() const { return _rep != 0; }
|
221 karl 1.3 /// mthod toXML
|
222 mike 1.1 void toXml(Array<Sint8>& out) const
223 {
224 _checkRep();
225 _rep->toXml(out);
226 }
|
227 karl 1.3 /// mthod print -ATTN
|
228 mike 1.1 void print() const
229 {
230 _checkRep();
231 _rep->print();
232 }
|
233 karl 1.3 /// Method identical - ATTN
|
234 mike 1.1 Boolean identical(const ConstProperty& x) const;
|
235 karl 1.3 /// Method clone - ATTN
236 Property clone() const
237 {
238 return Property(_rep->clone());
|
239 mike 1.1 }
240
241 private:
242
|
243 karl 1.3 Property(PropertyRep* rep) : _rep(rep)
244 {
|
245 mike 1.1 }
246
247 // This constructor allows the ClassDeclRep friend class to cast
248 // away constness.
249
250 explicit Property(const ConstProperty& x);
251
252 void _checkRep() const
253 {
254 if (!_rep)
255 throw UnitializedHandle();
256 }
257
258 PropertyRep* _rep;
259 friend class ConstProperty;
260 friend class ClassDeclRep;
261 friend class InstanceDeclRep;
262 };
263
264 ////////////////////////////////////////////////////////////////////////////////
265 //
266 mike 1.1 // ConstProperty
267 //
268 ////////////////////////////////////////////////////////////////////////////////
269
270 class PEGASUS_COMMON_LINKAGE ConstProperty
271 {
272 public:
273
274 ConstProperty() : _rep(0)
275 {
276
277 }
278
279 ConstProperty(const ConstProperty& x)
280 {
281 Inc(_rep = x._rep);
282 }
283
284 ConstProperty(const Property& x)
285 {
286 Inc(_rep = x._rep);
287 mike 1.1 }
288
289 // Throws IllegalName if name argument not legal CIM identifier.
290
291 ConstProperty(
|
292 karl 1.3 const String& name,
|
293 mike 1.1 const Value& value,
294 Uint32 arraySize = 0,
295 const String& referenceClassName = String::EMPTY,
296 const String& classOrigin = String(),
297 Boolean propagated = false)
298 {
299 _rep = new PropertyRep(name, value,
300 arraySize, referenceClassName, classOrigin, propagated);
301 }
302
303 ~ConstProperty()
304 {
305 Dec(_rep);
306 }
307
308 ConstProperty& operator=(const ConstProperty& x)
309 {
310 if (x._rep != _rep)
311 {
312 Dec(_rep);
313 Inc(_rep = x._rep);
314 mike 1.1 }
315 return *this;
316 }
317
318 ConstProperty& operator=(const Property& x)
319 {
320 if (x._rep != _rep)
321 {
322 Dec(_rep);
323 Inc(_rep = x._rep);
324 }
325 return *this;
326 }
327
|
328 karl 1.3 const String& getName() const
329 {
|
330 mike 1.1 _checkRep();
|
331 karl 1.3 return _rep->getName();
|
332 mike 1.1 }
333
|
334 karl 1.3 const Value& getValue() const
|
335 mike 1.1 {
336 _checkRep();
337 return _rep->getValue();
338 }
339
340 Uint32 getArraySize() const
341 {
342 _checkRep();
343 return _rep->getArraySize();
344 }
345
|
346 karl 1.3 const String& getReferenceClassName() const
|
347 mike 1.1 {
348 _checkRep();
|
349 karl 1.3 return _rep->getReferenceClassName();
|
350 mike 1.1 }
351
|
352 karl 1.3 const String& getClassOrigin() const
|
353 mike 1.1 {
354 _checkRep();
355 return _rep->getClassOrigin();
356 }
357
|
358 karl 1.3 Boolean getPropagated() const
359 {
|
360 mike 1.1 _checkRep();
361 return _rep->getPropagated();
362 }
363
364 Uint32 findQualifier(const String& name) const
365 {
366 _checkRep();
367 return _rep->findQualifier(name);
368 }
369
370 ConstQualifier getQualifier(Uint32 pos) const
371 {
372 _checkRep();
373 return _rep->getQualifier(pos);
374 }
375
376 Uint32 getQualifierCount() const
377 {
378 _checkRep();
379 return _rep->getQualifierCount();
380 }
381 mike 1.1
382 operator int() const { return _rep != 0; }
383
384 void toXml(Array<Sint8>& out) const
385 {
386 _checkRep();
387 _rep->toXml(out);
388 }
389
390 void print() const
391 {
392 _checkRep();
393 _rep->print();
394 }
395
396 Boolean identical(const ConstProperty& x) const
397 {
398 x._checkRep();
399 _checkRep();
400 return _rep->identical(x._rep);
401 }
402 mike 1.1
|
403 karl 1.3 Property clone() const
|
404 mike 1.1 {
|
405 karl 1.3 return Property(_rep->clone());
|
406 mike 1.1 }
407
408 private:
409
410 void _checkRep() const
411 {
412 if (!_rep)
413 throw UnitializedHandle();
414 }
415
416 PropertyRep* _rep;
417
418 friend class Property;
419 friend class PropertyRep;
420 };
421
422 PEGASUS_NAMESPACE_END
423
424 #endif /* Pegasus_Property_h */
|