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

Diff for /pegasus/src/Pegasus/Common/SCMOInstance.h between version 1.1.2.40 and 1.2

version 1.1.2.40, 2009/11/19 16:25:45 version 1.2, 2009/12/15 11:39:34
Line 177 
Line 177 
     SCMOInstance(     SCMOInstance(
         const CIMInstance& cimInstance,         const CIMInstance& cimInstance,
         const char* altNameSpace=0,         const char* altNameSpace=0,
         Uint64 altNSLen=0);          Uint32 altNSLen=0);
  
     /**     /**
      * Builds a SCMOInstance from the given CIMObjectPath copying all data.      * Builds a SCMOInstance from the given CIMObjectPath copying all data.
Line 194 
Line 194 
     SCMOInstance(     SCMOInstance(
         const CIMObjectPath& cimObj,         const CIMObjectPath& cimObj,
         const char* altNameSpace=0,         const char* altNameSpace=0,
         Uint64 altNSLen=0);          Uint32 altNSLen=0);
  
     /**     /**
      * Builds a SCMOInstance from the given CIMObject copying all data.      * Builds a SCMOInstance from the given CIMObject copying all data.
Line 212 
Line 212 
     SCMOInstance(     SCMOInstance(
         const CIMObject& cimObject,         const CIMObject& cimObject,
         const char* altNameSpace=0,         const char* altNameSpace=0,
         Uint64 altNSLen=0);          Uint32 altNSLen=0);
  
     /**     /**
      * Converts the SCMOInstance into a CIMInstance.      * Converts the SCMOInstance into a CIMInstance.
Line 289 
Line 289 
         Boolean& isArray,         Boolean& isArray,
         Uint32& size ) const;         Uint32& size ) const;
  
       void getSCMBValuePropertyAt(
           Uint32 pos,
           SCMBValue** value,
           const char ** valueBase,
           SCMBClassProperty ** propDef,
           const char ** classBase) const;
   
     /**     /**
      * Gets the type and value of the named property.      * Gets the type and value of the named property.
      * The value has to be copied by the caller !      * The value has to be copied by the caller !
Line 540 
Line 547 
         CIMType& type,         CIMType& type,
         const SCMBUnion** keyvalue) const;         const SCMBUnion** keyvalue) const;
  
       SCMO_RC getKeyBindingAtUnresolved(
           Uint32 node,
           const char** pname,
           Uint32 & pnameLen,
           CIMType& type,
           const SCMBUnion** pdata,
           const char** valueBase) const;
   
     /**     /**
      * Get the named key binding.      * Get the named key binding.
      * @parm name The name of the key binding.      * @parm name The name of the key binding.
Line 580 
Line 595 
      * Maybe only the class name and/or name space are available.      * Maybe only the class name and/or name space are available.
      * @return True if the SCMOInstacne is empty, false otherwise.      * @return True if the SCMOInstacne is empty, false otherwise.
      */      */
     Boolean isEmpty( ) const {return (inst.hdr->theClass->isEmpty()); };      Boolean isEmpty( ) const {return (inst.hdr->theClass.ptr->isEmpty()); };
  
     /**     /**
      * Determines whether the instance is used as a class container.      * Determines whether the instance is used as a class container.
Line 616 
Line 631 
      * @param hostName The host name as UTF8.      * @param hostName The host name as UTF8.
      * @param len The strlen of the host name.      * @param len The strlen of the host name.
      */      */
     void setHostName_l(const char* hostName, Uint64 len);      void setHostName_l(const char* hostName, Uint32 len);
  
     /**     /**
      * Get the host name of the instance. The caller has to make a copy !      * Get the host name of the instance. The caller has to make a copy !
Line 629 
Line 644 
      * @param Return strlen of result string.      * @param Return strlen of result string.
      * @return The class name as UTF8.      * @return The class name as UTF8.
      */      */
     const char* getHostName_l(Uint64 & length) const;      const char* getHostName_l(Uint32 & length) const;
  
     /**     /**
      * Sets the provided class name at the instance. By caling this function      * Sets the provided class name at the instance. By caling this function
Line 644 
Line 659 
      * @param className The class name as UTF8.      * @param className The class name as UTF8.
      * @param len The strlen of the name space.      * @param len The strlen of the name space.
      */      */
     void setClassName_l(const char* className, Uint64 len);      void setClassName_l(const char* className, Uint32 len);
  
     /**     /**
      * Get the class name of the instance. The caller has to make a copy !      * Get the class name of the instance. The caller has to make a copy !
Line 657 
Line 672 
      * @param lenght Return strlen of result string.      * @param lenght Return strlen of result string.
      * @return The class name as UTF8.      * @return The class name as UTF8.
      */      */
     const char* getClassName_l(Uint64 & length) const;      const char* getClassName_l(Uint32 & length) const;
  
     /**     /**
      * Sets the provided name space name at the instance.      * Sets the provided name space name at the instance.
Line 674 
Line 689 
      * @param nameSpaceName The name space name as UTF8.      * @param nameSpaceName The name space name as UTF8.
      * @param len The strlen of the name space.      * @param len The strlen of the name space.
      */      */
     void setNameSpace_l(const char* nameSpace, Uint64 len);      void setNameSpace_l(const char* nameSpace, Uint32 len);
  
     /**     /**
      * Get the name space of the instance. The caller has to make a copy !      * Get the name space of the instance. The caller has to make a copy !
Line 687 
Line 702 
      * @param Return strlen of result string.      * @param Return strlen of result string.
      * @return The class name as UTF8.      * @return The class name as UTF8.
      */      */
     const char* getNameSpace_l(Uint64 & length) const;      const char* getNameSpace_l(Uint32 & length) const;
  
     /**     /**
      * Is the name space or class name of the instance the origianl values      * Is the name space or class name of the instance the origianl values
Line 775 
Line 790 
     void Ref()     void Ref()
     {     {
         inst.hdr->refCount++;         inst.hdr->refCount++;
         // printf("\ninst.hdr->refCount=%u\n",inst.hdr->refCount.get());  
     };     };
  
     void Unref()     void Unref()
     {     {
         if (inst.hdr->refCount.decAndTestIfZero())         if (inst.hdr->refCount.decAndTestIfZero())
         {         {
             // printf("\ninst.hdr->refCount=%u\n",inst.hdr->refCount.get());  
             // All external references has to be destroyed.             // All external references has to be destroyed.
             _destroyExternalReferences();             _destroyExternalReferences();
             // The class has also be dereferenced.             // The class has also be dereferenced.
             delete inst.hdr->theClass;              delete inst.hdr->theClass.ptr;
             free(inst.base);             free(inst.base);
             inst.base=NULL;             inst.base=NULL;
         }         }
         else  
         {  
             // printf("\ninst.hdr->refCount=%u\n",inst.hdr->refCount.get());  
         }  
  
     };     };
  
Line 803 
Line 812 
         if ( 1 < inst.hdr->refCount.get() )         if ( 1 < inst.hdr->refCount.get() )
         {         {
             SCMBInstance_Main * oldRef = inst.hdr;             SCMBInstance_Main * oldRef = inst.hdr;
             fprintf(stderr,"!! Copy on Write (%d) !!\n",  
                     inst.hdr->refCount.get() );  
             _clone();             _clone();
             if (oldRef->refCount.decAndTestIfZero())             if (oldRef->refCount.decAndTestIfZero())
             {             {
                 // printf("\ninst.hdr->refCount=%u\n",inst.hdr->refCount.get());  
                 // All external references has to be destroyed.                 // All external references has to be destroyed.
                 _destroyExternalReferencesInternal((SCMBMgmt_Header*)oldRef);                 _destroyExternalReferencesInternal((SCMBMgmt_Header*)oldRef);
                 // The class has also be dereferenced.                 // The class has also be dereferenced.
                 delete oldRef->theClass;                  delete oldRef->theClass.ptr;
                 free((void*)oldRef);                 free((void*)oldRef);
                 oldRef=0;                 oldRef=0;
             }             }
Line 876 
Line 882 
     static SCMOClass _getSCMOClass(     static SCMOClass _getSCMOClass(
         const CIMObjectPath& theCIMObj,         const CIMObjectPath& theCIMObj,
         const char* altNS,         const char* altNS,
         Uint64 altNSlength);          Uint32 altNSlength);
  
     CIMProperty _getCIMPropertyAtNodeIndex(Uint32 nodeIdx) const;     CIMProperty _getCIMPropertyAtNodeIndex(Uint32 nodeIdx) const;
  
Line 901 
Line 907 
         SCMBMgmt_Header** pmem,         SCMBMgmt_Header** pmem,
         CIMType type,         CIMType type,
         Uint64 startNS,         Uint64 startNS,
         Uint64 lenNS,          Uint32 lenNS,
         Union& u);         Union& u);
  
     static void _setUnionArrayValue(     static void _setUnionArrayValue(
Line 910 
Line 916 
         CIMType type,         CIMType type,
         Uint32& n,         Uint32& n,
         Uint64 startNS,         Uint64 startNS,
         Uint64 lenNS,          Uint32 lenNS,
         Union& u);         Union& u);
  
     static void _setExtRefIndex(SCMBUnion* pInst, SCMBMgmt_Header** pmem);     static void _setExtRefIndex(SCMBUnion* pInst, SCMBMgmt_Header** pmem);
Line 1024 
Line 1030 
         (SCMBValue*)&(inst.base[inst.hdr->propertyArray.start]);         (SCMBValue*)&(inst.base[inst.hdr->propertyArray.start]);
  
     // create a pointer to property node array of the class.     // create a pointer to property node array of the class.
     Uint64 idx = inst.hdr->theClass->cls.hdr->propertySet.nodeArray.start;      Uint64 idx = inst.hdr->theClass.ptr->cls.hdr->propertySet.nodeArray.start;
     SCMBClassPropertyNode* theClassPropNodeArray =     SCMBClassPropertyNode* theClassPropNodeArray =
         (SCMBClassPropertyNode*)&(inst.hdr->theClass->cls.base)[idx];          (SCMBClassPropertyNode*)&(inst.hdr->theClass.ptr->cls.base)[idx];
  
     // return the absolute pointer to the property definition     // return the absolute pointer to the property definition
     *propDef= &(theClassPropNodeArray[node].theProperty);     *propDef= &(theClassPropNodeArray[node].theProperty);
Line 1042 
Line 1048 
     {     {
         // return the absolute pointer to         // return the absolute pointer to
         *value = &(theClassPropNodeArray[node].theProperty.defaultValue);         *value = &(theClassPropNodeArray[node].theProperty.defaultValue);
         *valueBase = inst.hdr->theClass->cls.base;          *valueBase = inst.hdr->theClass.ptr->cls.base;
     }     }
 } }
  
   inline void SCMOInstance::getSCMBValuePropertyAt(
       Uint32 pos,
       SCMBValue** value,
       const char ** valueBase,
       SCMBClassProperty ** propDef,
       const char ** propDefBase) const
   {
       _getPropertyAt(pos,value,valueBase,propDef);
   
       *propDefBase = inst.hdr->theClass.ptr->cls.base;
   }
   
   inline SCMO_RC SCMOInstance::getKeyBindingAtUnresolved(
           Uint32 node,
           const char** pname,
           Uint32 & pnameLen,
           CIMType& type,
           const SCMBUnion** pdata,
           const char** valueBase) const
   {
       SCMO_RC rc = _getKeyBindingDataAtNodeIndex(node,pname,pnameLen,type,pdata);
       // Adjust size to string length
       if (pnameLen)
       {
           pnameLen--;
       }
       *valueBase = inst.base;
       return rc;
   }
   
   
   
 #define PEGASUS_ARRAY_T SCMOInstance #define PEGASUS_ARRAY_T SCMOInstance
 # include <Pegasus/Common/ArrayInter.h> # include <Pegasus/Common/ArrayInter.h>
 #undef PEGASUS_ARRAY_T #undef PEGASUS_ARRAY_T


Legend:
Removed from v.1.1.2.40  
changed lines
  Added in v.1.2

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2