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

  1 thilo.boehm 1.1.2.1 //%LICENSE////////////////////////////////////////////////////////////////
  2                     //
  3                     // Licensed to The Open Group (TOG) under one or more contributor license
  4                     // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
  5                     // this work for additional information regarding copyright ownership.
  6                     // Each contributor licenses this file to you under the OpenPegasus Open
  7                     // Source License; you may not use this file except in compliance with the
  8                     // License.
  9                     //
 10                     // Permission is hereby granted, free of charge, to any person obtaining a
 11                     // copy of this software and associated documentation files (the "Software"),
 12                     // to deal in the Software without restriction, including without limitation
 13                     // the rights to use, copy, modify, merge, publish, distribute, sublicense,
 14                     // and/or sell copies of the Software, and to permit persons to whom the
 15                     // Software is furnished to do so, subject to the following conditions:
 16                     //
 17                     // The above copyright notice and this permission notice shall be included
 18                     // in all copies or substantial portions of the Software.
 19                     //
 20                     // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 21                     // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 22 thilo.boehm 1.1.2.1 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 23                     // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 24                     // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 25                     // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 26                     // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 27                     //
 28                     //////////////////////////////////////////////////////////////////////////
 29                     //
 30                     //%/////////////////////////////////////////////////////////////////////////////
 31                     
 32                     #ifndef _SCMOINSTANCE_H_
 33                     #define _SCMOINSTANCE_H_
 34                     
 35                     
 36                     #include <Pegasus/Common/Config.h>
 37                     #include <Pegasus/Common/Linkage.h>
 38                     #include <Pegasus/Common/SCMO.h>
 39 thilo.boehm 1.1.2.2 #include <Pegasus/Common/SCMOClass.h>
 40 r.kieninger 1.1.2.10 #include <Pegasus/Common/Union.h>
 41 thilo.boehm 1.1.2.1  
 42                      PEGASUS_NAMESPACE_BEGIN
 43                      
 44                      #define PEGASUS_SCMB_INSTANCE_MAGIC 0xD00D1234
 45                      
 46                      class SCMOClass;
 47                      
 48                      class PEGASUS_COMMON_LINKAGE SCMOInstance
 49                      {
 50                      public:
 51                      
 52                          /**
 53                           * Creating a SCMOInstance using a SCMOClass.
 54                           * @param baseClass A SCMOClass.
 55                           */
 56                          SCMOInstance(SCMOClass baseClass);
 57                      
 58                          /**
 59                           * Copy constructor for the SCMO instance, used to implement refcounting.
 60                           * @param theSCMOClass The instance for which to create a copy
 61                           * @return
 62 thilo.boehm 1.1.2.1       */
 63                          SCMOInstance(const SCMOInstance& theSCMOInstance )
 64                          {
 65                              inst.hdr = theSCMOInstance.inst.hdr;
 66                              Ref();
 67                          }
 68                      
 69                          /**
 70                           * Destructor is decrementing the refcount. If refcount is zero, the
 71                           * singele chunk memory object is deallocated.
 72                           */
 73                          ~SCMOInstance()
 74                          {
 75                              Unref();
 76                          }
 77                      
 78                          /**
 79                           * Builds a SCMOInstance based on this SCMOClass.
 80                           * The method arguments determine whether qualifiers are included,
 81                           * the class origin attributes are included,
 82                           * and which properties are included in the new instance.
 83 thilo.boehm 1.1.2.1       * @param baseClass The SCMOClass of this instance.
 84                           * @param includeQualifiers A Boolean indicating whether qualifiers in
 85                           * the class definition (and its properties) are to be added to the
 86                           * instance.  The TOINSTANCE flavor is ignored.
 87                           * @param includeClassOrigin A Boolean indicating whether ClassOrigin
 88                           * attributes are to be added to the instance.
 89                           * @param propertyList Is an NULL terminated array of char* to property
 90                           * names defining the properties that are included in the created instance.
 91                           * If the propertyList is NULL, all properties are included to the instance.
 92                           * If the propertyList is empty, no properties are added.
 93                           *
 94                           * Note that this function does NOT generate an error if a property name
 95                           * is supplied that is NOT in the class;
 96                           * it simply does not add that property to the instance.
 97                           *
 98                           */
 99                          SCMOInstance(
100                              SCMOClass baseClass,
101                              Boolean includeQualifiers,
102                              Boolean includeClassOrigin,
103                              const char** propertyList);
104 thilo.boehm 1.1.2.1  
105                          /**
106                           * Builds a SCMOInstance from the given SCMOClass and copies all
107                           * CIMInstance data into the new SCMOInstance.
108                           * @param baseClass The SCMOClass of this instance.
109                           * @param cimInstance A CIMInstace of the same class.
110 thilo.boehm 1.1.2.4       * @exception Exception if class name and name space does not match.
111                           * @exception
112                           *     Exception if CIMInstance has more key bindings then the SCMOClass.
113                           * @exception
114                           *     Exception if a key binding is not found as a key property
115                           *     of the SCMOClass.
116                           * @exception Exception if a key binding does not match
117                           *     the class definition.
118                           * @exception Exception if a property is not part of class definition.
119                           * @exception Exception if a property does not match the class definition.
120 thilo.boehm 1.1.2.1       */
121                          SCMOInstance(SCMOClass baseClass, const CIMInstance& cimInstance);
122                      
123                          /**
124 thilo.boehm 1.1.2.4       * Builds a SCMOInstance from the given SCMOClass and copies all
125                           * CIMObjectPath data into the new SCMOInstance.
126                           * @param baseClass The SCMOClass of this instance.
127                           * @param cimInstance A CIMObjectpath of the same class.
128                           * @exception Exception if class name and name space does not match.
129                           * @exception
130                           *     Exception if CIMInstance has more key bindings then the SCMOClass.
131                           * @exception
132                           *     Exception if a key binding is not found as a key property
133                           *     of the SCMOClass.
134                           * @exception Exception if a key binding does not match
135                           *     the class definition.
136                           */
137                          SCMOInstance(SCMOClass baseClass, const CIMObjectPath& cimObj);
138                      
139                          /**
140 thilo.boehm 1.1.2.1       * Converts the SCMOInstance into a CIMInstance.
141                           * It is a deep copy of the SCMOInstance into the CIMInstance.
142                           * @param cimInstance An empty CIMInstance.
143                           */
144 thilo.boehm 1.1.2.6      SCMO_RC getCIMInstance(CIMInstance& cimInstance) const;
145 thilo.boehm 1.1.2.1  
146                          /**
147                           * Makes a deep copy of the instance.
148                           * This creates a new copy of the instance.
149 thilo.boehm 1.1.2.5       * @param objectPathOnly If set to true, only the object path relevant parts
150                           *     host name and key bindings are part of the cloned instance.
151 thilo.boehm 1.1.2.1       * @return A new copy of the SCMOInstance object.
152                           */
153 thilo.boehm 1.1.2.5      SCMOInstance clone(Boolean objectPathOnly = false) const;
154 thilo.boehm 1.1.2.1  
155                          /**
156 r.kieninger 1.1.2.9       * Retrieves the objectpath part of the SCMOInstance as an instance
157                           * of class CIMObjectPath.                .
158                           * @param cimObj Reference to an instantiated CIMObjectPath to be
159                           *     populated with the data from the SCMOInstance.
160                           * @return void
161                           */
162                          void getCIMObjectPath(CIMObjectPath& cimObj) const;
163                      
164                          /**
165 thilo.boehm 1.1.2.1       * Returns the number of properties of the instance.
166                           * @param Number of properties
167                           */
168                          Uint32 getPropertyCount() const;
169                      
170                          /**
171                           * Gets the property name, type, and value addressed by a positional index.
172                           * The property name and value has to be copied by the caller !
173                           * @param pos The positional index of the property
174                           * @param pname Returns the property name as '\0' terminated string.
175                           *              Has to be copied by caller.
176                           *              It is set to NULL if rc != SCMO_OK.
177                           * @param pvalue Returns a pointer to the value of property.
178                           *               The value has to be copied by the caller !
179                           *               It returns NULL if rc != SCMO_OK.
180                           *               If the value is an array, the
181                           *               value array is stored in continuous memory.
182                           *               e.g. If the CIMType is CIMTYPE_UINT32:
183                           *               value = (void*)Uint32[0 to size-1]
184                           *               If it is an array of CIMTYPE_STRING, an array
185                           *               of char* to the string values is returned.
186 thilo.boehm 1.1.2.1       *               This array has to be freed by the caller !
187                           * @param type Returns the CIMType of the property
188                           *             It is invalid if rc == SCMO_INDEX_OUT_OF_BOUND.
189                           * @param isArray Returns if the value is an array.
190                           *             It is invalid if rc == SCMO_INDEX_OUT_OF_BOUND.
191                           * @param size Returns the size of the array.
192                           *             If it is not an array, 0 is returned.
193                           *             It is invalid if rc == SCMO_INDEX_OUT_OF_BOUND.
194                           *
195                           * @return     SCMO_OK
196                           *             SCMO_NULL_VALUE : The value is a null value.
197                           *             SCMO_INDEX_OUT_OF_BOUND : Given index not found
198                           *
199                           */
200                          SCMO_RC getPropertyAt(
201                              Uint32 pos,
202                              const char** pname,
203                              CIMType& type,
204                              const void** pvalue,
205                              Boolean& isArray,
206                              Uint32& size ) const;
207 thilo.boehm 1.1.2.1  
208                          /**
209 marek       1.1.2.11      * Gets the property name, type, and value addressed by a positional index.
210                           * The property name and value has to be copied by the caller !
211                           * @param pos The positional index of the property
212                           * @param pname Returns the property name as '\0' terminated string.
213                           *              Has to be copied by caller.
214                           *              It is set to NULL if rc != SCMO_OK.
215                           * @param value Returns an absolute pointer to the value of property.
216                           *                  Sub-pointers are NOT resolved!
217                           *               The value has to be copied by the caller !
218                           *               It returns NULL if rc != SCMO_OK.
219                           *               If the value is an array, the
220                           *               value array is stored in continuous memory.
221                           *               e.g. If the CIMType is CIMTYPE_UINT32:
222                           *               value = (void*)Uint32[0 to size-1]
223                           *               If it is an array of CIMTYPE_STRING, an array
224                           *               of char* to the string values is returned.
225                           *               This array has to be freed by the caller !
226                           * @param valueBase Returns an absolute pointer to the base of value,
227                           *                  because subsequent pointers in the value are NOT 
228                           *                  resolved.
229                           * @param propDef Returns an absolute pointer to the property definition
230 marek       1.1.2.11      *                  Sub-pointers are NOT resolved!
231                           *             It is invalid if rc == SCMO_INDEX_OUT_OF_BOUND.
232                           *
233                           * @return     SCMO_OK
234                           *             SCMO_NULL_VALUE : The value is a null value.
235                           *             SCMO_INDEX_OUT_OF_BOUND : Given index not found
236                           *
237                           */
238                          SCMO_RC getPropertyAt(
239                              Uint32 pos,
240                              SCMBValue** value,
241                              const char ** valueBase,
242                              SCMBClassProperty ** propDef) const;
243                      
244                          /**
245 thilo.boehm 1.1.2.1       * Gets the type and value of the named property.
246                           * The value has to be copied by the caller !
247                           * @param name The property name
248                           * @param pvalue Returns a pointer to the value of property.
249                           *               The value has to be copied by the caller !
250                           *               It returns NULL if rc != SCMO_OK.
251                           *               If the value is an array, the
252                           *               value array is stored in continuous memory.
253                           *               e.g. If the CIMType is CIMTYPE_UINT32:
254                           *               value = (void*)Uint32[0 to size-1]
255                           *               If it is an array of CIMTYPE_STRING, an array
256                           *               of char* to the string values is returned.
257                           *               This array has to be freed by the caller !
258                           * @param type Returns the CIMType of the property
259                           *             It is invalid if rc == SCMO_NOT_FOUND.
260                           * @param isArray Returns if the value is an array.
261                           *             It is invalid if rc == SCMO_NOT_FOUND.
262                           * @param size Returns the size of the array.
263                           *             If it is not an array, 0 is returned.
264                           *             It is invalid if rc == SCMO_NOT_FOUND.
265                           *
266 thilo.boehm 1.1.2.1       * @return     SCMO_OK
267                           *             SCMO_NULL_VALUE : The value is a null value.
268                           *             SCMO_NOT_FOUND : Given property name not found.
269                           */
270                          SCMO_RC getProperty(
271                              const char* name,
272                              CIMType& type,
273                              const void** pvalue,
274                              Boolean& isArray,
275                              Uint32& size ) const;
276                      
277                          /**
278                           * Set/replace a property in the instance.
279                           * If the class origin is specified, it is honored at identifying
280                           * the property within the instance.
281                           * Note: Only properties which are already part of the instance/class can
282                           * be set/replaced.
283                           * @param name The name of the property to be set.
284                           * @param type The CIMType of the property
285                           * @param value A pointer to property  value.
286                           *         The value is copied into the instance
287 thilo.boehm 1.1.2.1       *         If the value == NULL, a null value is assumed.
288                           *         If the value is an array, the
289                           *         value array must be stored in continuous memory.
290                           *         e.g. If the CIMType is CIMTYPE_UINT32:
291                           *         value = (void*)Uint32[0 to size-1]
292                           * @param isArray Indicate that the value is an array. Default false.
293                           * @param size Returns the size of the array. If not an array this
294                           *         this parameter is ignorer. Default 0.
295                           * @param origin The class originality of the property.
296                           *               If NULL, then it is ignorred. Default NULL.
297                           * @return     SCMO_OK
298                           *             SCMO_NOT_SAME_ORIGIN : The property name was found, but
299                           *                                    the origin was not the same.
300                           *             SCMO_NOT_FOUND : Given property name not found.
301                           *             SCMO_WRONG_TYPE : Named property has the wrong type.
302                           *             SCMO_NOT_AN_ARRAY : Named property is not an array.
303                           *             SCMO_IS_AN_ARRAY  : Named property is an array.
304                           */
305                          SCMO_RC setPropertyWithOrigin(
306                              const char* name,
307                              CIMType type,
308 thilo.boehm 1.1.2.1          void* value,
309                              Boolean isArray=false,
310                              Uint32 size = 0,
311                              const char* origin = NULL);
312                      
313                          /**
314 thilo.boehm 1.1.2.3       * Rebuild of the key bindings from the property values
315 thilo.boehm 1.1.2.1       * if no or incomplete key properties are set on the instance.
316 thilo.boehm 1.1.2.3       * @exception NoSuchProperty
317 thilo.boehm 1.1.2.1       */
318 thilo.boehm 1.1.2.2      void buildKeyBindingsFromProperties();
319 thilo.boehm 1.1.2.1  
320                          /**
321                           * Set/replace a property filter on an instance.
322                           * The filter is a white list of property names.
323                           * A property part of the list can be accessed by name or index and
324                           * is eligible to be returned to requester.
325                           * Key properties can not be filtered. They are always a part of the
326                           * instance. If a key property is not part of the property list,
327                           * it will not be filtered out.
328                           * @param propertyList Is an NULL terminated array of char* to
329                           * property names
330                           */
331                          void setPropertyFilter(const char **propertyList);
332                      
333                          /**
334                           * Gets the hash index for the named property. Filtering is ignored.
335                           * @param theName The property name
336                           * @param pos Returns the hash index.
337                           * @return     SCMO_OK
338                           *             SCMO_INVALID_PARAMETER: name was a NULL pointer.
339                           *             SCMO_NOT_FOUND : Given property name not found.
340 thilo.boehm 1.1.2.1       */
341                          SCMO_RC getPropertyNodeIndex(const char* name, Uint32& pos) const;
342                      
343                          /**
344                           * Set/replace a property in the instance at node index.
345 thilo.boehm 1.1.2.4       * Note: If node is filtered, the property is not set but the return value
346 thilo.boehm 1.1.2.1       * is still SCMO_OK.
347                           * @param index The node index.
348                           * @param type The CIMType of the property
349                           * @param value A pointer to property  value.
350                           *         The value is copied into the instance
351                           *         If the value is an array, the
352                           *         value array must be stored in continuous memory.
353                           *         e.g. If the CIMType is CIMTYPE_UINT32:
354                           *         value = (void*)Uint32[0 to size-1]
355                           * @param isArray Indicate that the value is an array. Default false.
356                           * @param size The size of the array. If not an array this
357                           *         this parameter is ignorer. Default 0.
358                           * @return     SCMO_OK
359                           *             SCMO_INDEX_OUT_OF_BOUND : Given index not found
360                           *             SCMO_WRONG_TYPE : The property at given node index
361                           *                               has the wrong type.
362                           *             SCMO_NOT_AN_ARRAY : The property at given node index
363                           *                                 is not an array.
364                           *             SCMO_IS_AN_ARRAY  : The property at given node index
365                           *                                 is an array.
366                           */
367 thilo.boehm 1.1.2.1      SCMO_RC setPropertyWithNodeIndex(
368                              Uint32 node,
369                              CIMType type,
370                              void* value,
371                              Boolean isArray=false,
372                              Uint32 size = 0);
373                      
374                          /**
375                           * Set/replace the named key binding
376                           * @param name The key binding name.
377                           * @param type The type as CIMKeyBinding::Type.
378 r.kieninger 1.1.2.10      * @param value The value as string.
379 thilo.boehm 1.1.2.1       * @return     SCMO_OK
380 thilo.boehm 1.1.2.8       *             SCMO_INVALID_PARAMETER : Given name or pvalue
381                           *                                      is a NULL pointer.
382 thilo.boehm 1.1.2.1       *             SCMO_TYPE_MISSMATCH : Given type does not
383                           *                                   match to key binding type
384                           *             SCMO_NOT_FOUND : Given property name not found.
385                           */
386                          SCMO_RC setKeyBinding(
387                              const char* name,
388                              CIMKeyBinding::Type type,
389                              const char* pvalue);
390                      
391                          /**
392 r.kieninger 1.1.2.10      * Set/replace the named key binding using binary data
393                           * @param name The key binding name.
394                           * @param type The type as CIMType.
395                           * @param value A pointer to the binary key value.
396                           *         The value is copied into the instance
397                           *         If the value == NULL, a null value is assumed.
398                           * @return     SCMO_OK
399                           *             SCMO_INVALID_PARAMETER : Given name or pvalue
400                           *                                      is a NULL pointer.
401                           *             SCMO_TYPE_MISSMATCH : Given type does not
402                           *                                   match to key binding type
403                           *             SCMO_NOT_FOUND : Given property name not found.
404                           */
405                          SCMO_RC setKeyBinding(
406                              const char* name,
407                              CIMType type,
408                              void* keyvalue);
409                      
410                          /**
411                           * Set/replace the key binding at node
412 thilo.boehm 1.1.2.7       * @param node The node index of the key.
413                           * @param type The type as CIMKeyBinding::Type.
414                           * @parma value The value as string.
415                           * @return     SCMO_OK
416 thilo.boehm 1.1.2.8       *             SCMO_INVALID_PARAMETER : Given pvalue is a NULL pointer.
417 thilo.boehm 1.1.2.7       *             SCMO_TYPE_MISSMATCH : Given type does not
418                           *                                   match to key binding type
419                           *             SCMO_INDEX_OUT_OF_BOUND : Given index is our of range.
420                           */
421                          SCMO_RC setKeyBindingAt(
422                              Uint32 node,
423                              CIMKeyBinding::Type type,
424                              const char* pvalue);
425                      
426                          /**
427 r.kieninger 1.1.2.10      * Set/replace the key binding at node using binary data
428                           * @param node The node index of the key.
429                           * @param type The type as CIMType.
430                           * @param value A pointer to the binary key value.
431                           *         The value is copied into the instance
432                           *         If the value == NULL, a null value is assumed.
433                           * @return     SCMO_OK
434                           *             SCMO_INVALID_PARAMETER : Given pvalue is a NULL pointer.
435                           *             SCMO_TYPE_MISSMATCH : Given type does not
436                           *                                   match to key binding type
437                           *             SCMO_INDEX_OUT_OF_BOUND : Given index is our of range.
438                           */
439                          SCMO_RC setKeyBindingAt(
440                              Uint32 node,
441                              CIMType type,
442                              void* keyvalue);
443                      
444                          /**
445 thilo.boehm 1.1.2.1       * Gets the key binding count.
446                           * @return the number of key bindings set.
447                           */
448 marek       1.1.2.11     Uint32 getKeyBindingCount() const;
449 thilo.boehm 1.1.2.1  
450                          /**
451                           * Get the indexed key binding.
452                           * @parm idx The key bining index
453                           * @parm pname Returns the name.
454                           *             Has to be copied by caller.
455                           *             It is invalid if rc == SCMO_INDEX_OUT_OF_BOUND.
456                           * @param type Returns the type as CIMKeyBinding::Type.
457                           *             It is invalid if rc == SCMO_INDEX_OUT_OF_BOUND.
458                           * @parma pvalue Returns the value as string.
459                           *             Has to be copied by caller.
460                           *             It is only valid if rc == SCMO_OK.
461                           * @return     SCMO_OK
462                           *             SCMO_NULL_VALUE : The key binding is not set.
463                           *             SCMO_INDEX_OUT_OF_BOUND : Given index not found
464                           *
465                           */
466                          SCMO_RC getKeyBindingAt(
467                              Uint32 idx,
468                              const char** pname,
469                              CIMKeyBinding::Type& type,
470 thilo.boehm 1.1.2.1          const char** pvalue) const;
471                      
472                          /**
473                           * Get the named key binding.
474                           * @parm name The name of the key binding.
475                           * @param type Returns the type as CIMKeyBinding::Type.
476                           *             It is invalid if rc == SCMO_INDEX_OUT_OF_BOUND.
477                           * @parma value Returns the value as string.
478                           *             Has to be copied by caller.
479                           *             It is only valid if rc == SCMO_OK.
480                           * @return     SCMO_OK
481                           *             SCMO_NULL_VALUE : The key binding is not set.
482                           *             SCMO_NOT_FOUND : Given property name not found.
483                           */
484                          SCMO_RC getKeyBinding(
485                              const char* name,
486                              CIMKeyBinding::Type& ptype,
487                              const char** pvalue) const;
488                      
489                          /**
490                           * Determines whether the object has been initialized.
491 thilo.boehm 1.1.2.1       * @return True if the object has not been initialized, false otherwise.
492                           */
493                          Boolean isUninitialized( ) const {return (inst.base == NULL); };
494                      
495                          /**
496                           * Determies if two objects are referencing to the same instance
497                           * @return True if the objects are referencing to the some instance.
498                           */
499                          Boolean isSame(SCMOInstance& theInstance) const;
500                      
501                          /**
502                           * Get the host name of the instance. The caller has to make a copy !
503                           * @return The host name as UTF8.
504                           */
505                          const char* getHostName() const;
506                      
507                          /**
508                           * Sets the provided host name at the instance.
509                           * @param hostName The host name as UTF8.
510                           */
511                          void setHostName(const char* hostName);
512 thilo.boehm 1.1.2.1  
513                          /**
514 marek       1.1.2.11      * Get the class name of the instance. The caller has to make a copy !
515 thilo.boehm 1.1.2.1       * @return The class name as UTF8.
516                           */
517                          const char* getClassName() const;
518                      
519                          /**
520 marek       1.1.2.11      * Get the class name of the instance. The caller has to make a copy !
521                           * @return The class name as UTF8. Return length of result string.
522                           */
523                          const char* getClassName_l(Uint64 & length) const;
524                      
525                          /**
526 thilo.boehm 1.1.2.1       * Get the name space of the instance. The caller has to make a copy !
527                           * @return The name space as UTF8.
528                           */
529                          const char* getNameSpace() const;
530                      
531                          /**
532                           *  To indicate the export processing ( eg. XMLWriter )
533                           *  to include qualifiers for this instance.
534                           */
535                          void includeQualifiers()
536                          {
537                              inst.hdr->flags.includeQualifiers = true;
538                          };
539                      
540                          /**
541                           *  To indicate the export processing ( eg. XMLWriter )
542                           *  to NOT to include (exclude) qualifiers for this instance.
543                           */
544                          void excludeQualifiers()
545                          {
546                              inst.hdr->flags.includeQualifiers = false;
547 thilo.boehm 1.1.2.1      }
548                      
549                          /**
550                           *  To indicate the export processing ( eg. XMLWriter )
551                           *  to include class origins for this instance.
552                           */
553                          void includeClassOrigins()
554                          {
555                              inst.hdr->flags.includeClassOrigin = true;
556                          };
557                      
558                          /**
559                           *  To indicate the export processing ( eg. XMLWriter )
560                           *  to NOT to include (exclude) class origins for this instance.
561                           */
562                          void excludeClassOrigins()
563                          {
564                              inst.hdr->flags.includeClassOrigin = false;
565                          }
566                      
567                      private:
568 thilo.boehm 1.1.2.1  
569                          void Ref()
570                          {
571                              inst.hdr->refCount++;
572                              // printf("\ninst.hdr->refCount=%u\n",inst.hdr->refCount.get());
573                          };
574                      
575                          void Unref()
576                          {
577                              if (inst.hdr->refCount.decAndTestIfZero())
578                              {
579                                  // printf("\ninst.hdr->refCount=%u\n",inst.hdr->refCount.get());
580                                  // The class has also be dereferenced.
581                                  delete inst.hdr->theClass;
582                                  free(inst.base);
583                                  inst.base=NULL;
584                              }
585                              else
586                              {
587                                  // printf("\ninst.hdr->refCount=%u\n",inst.hdr->refCount.get());
588                              }
589 thilo.boehm 1.1.2.1  
590                          };
591                          /**
592                           * A SCMOInstance can only be created by a SCMOClass
593                           */
594                          SCMOInstance();
595                      
596                          void _initSCMOInstance(
597                              SCMOClass* pClass,
598                              Boolean inclQual,
599                              Boolean inclOrigin);
600                      
601                      
602                          SCMO_RC _getPropertyAtNodeIndex(
603                                  Uint32 pos,
604                                  const char** pname,
605                                  CIMType& type,
606                                  const void** pvalue,
607                                  Boolean& isArray,
608                                  Uint32& size ) const;
609                      
610 thilo.boehm 1.1.2.1      void _setPropertyAtNodeIndex(
611                              Uint32 pos,
612                              CIMType type,
613                              void* value,
614                              Boolean isArray,
615                              Uint32 size);
616                      
617 thilo.boehm 1.1.2.4      void _setCIMValueAtNodeIndex(Uint32 node, CIMValueRep* valRep);
618                      
619 thilo.boehm 1.1.2.6      void _getCIMValueFromSCMBValue(
620                              CIMValue& cimV,
621                              const SCMBValue& scmbV,
622                              const char * base) const;
623                      
624                          CIMProperty _getCIMPropertyAtNodeIndex(Uint32 nodeIdx) const;
625                      
626 thilo.boehm 1.1.2.4      void _setCIMObjectPath(const CIMObjectPath& cimObj);
627                      
628 thilo.boehm 1.1.2.1      void* _getSCMBUnion(
629                              CIMType type,
630                              Boolean isArray,
631                              Uint32 size,
632                              Uint64 start,
633                              char* base) const;
634                      
635                          void _setSCMBUnion(
636                              void* value,
637                              CIMType type,
638                              Boolean isArray,
639                              Uint32 size,
640                              Uint64 start);
641                      
642 thilo.boehm 1.1.2.4      static void _setUnionValue(
643                              Uint64 start,
644                              SCMBMgmt_Header** pmem,
645                              CIMType type,
646                              Union& u);
647                      
648                          static void _setArrayValue(
649                              Uint64 start,
650                              SCMBMgmt_Header** pmem,
651                              CIMType type,
652                              Uint32& n,
653                              Union& u);
654                      
655 thilo.boehm 1.1.2.1      SCMO_RC _getKeyBindingAtNodeIndex(
656                              Uint32 pos,
657                              const char** pname,
658                              CIMKeyBinding::Type& ptype,
659                              const char** pvalue) const;
660                      
661 marek       1.1.2.11     SCMO_RC _getKeyBindingAtNodeIndex_l(
662                              Uint32 node,
663                              const char** pname,
664                              Uint32 & pnameLen,
665                              CIMKeyBinding::Type& type,
666                              const char** pvalue,
667                              Uint32 & pvalueLen) const;
668                      
669 thilo.boehm 1.1.2.5      void _copyKeyBindings(SCMOInstance& targetInst) const;
670                      
671 thilo.boehm 1.1.2.1      Uint32 _initPropFilterWithKeys();
672                      
673                          void _setPropertyInPropertyFilter(Uint32 i);
674                      
675                          Boolean _isPropertyInFilter(Uint32 i) const;
676                      
677                          void _clearPropertyFilter();
678                      
679 thilo.boehm 1.1.2.3      void _setKeyBindingFromSCMBUnion(
680 thilo.boehm 1.1.2.4          CIMType type,
681 thilo.boehm 1.1.2.3          SCMBUnion& u,
682                              SCMBDataPtr& keyNode);
683 thilo.boehm 1.1.2.2  
684 thilo.boehm 1.1.2.1      union{
685                              // To access the instance main structure
686                              SCMBInstance_Main *hdr;
687                              // To access the memory management header
688                              SCMBMgmt_Header     *mem;
689                              // Generic access pointer
690                              char *base;
691                          }inst;
692                      
693                          friend class SCMOClass;
694                          friend class SCMODump;
695 marek       1.1.2.11     friend class SCMOXmlWriter;
696 thilo.boehm 1.1.2.1  };
697                      
698                      
699                      PEGASUS_NAMESPACE_END
700                      
701                      
702                      #endif

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2