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

  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 */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2