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

Diff for /pegasus/src/Pegasus/Common/CIMObject.h between version 1.4 and 1.30

version 1.4, 2001/07/07 13:03:11 version 1.30, 2002/07/19 23:40:13
Line 1 
Line 1 
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM  // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM,
   // The Open Group, Tivoli Systems
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to // of this software and associated documentation files (the "Software"), to
Line 22 
Line 23 
 // //
 // Author: Mike Brasher (mbrasher@bmc.com) // Author: Mike Brasher (mbrasher@bmc.com)
 // //
 // Modified By:  // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
   //              Carol Ann Krug Graves, Hewlett-Packard Company
   //                  (carolann_graves@hp.com)
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #ifndef Pegasus_CIMObject_h  #ifndef Pegasus_Object_h
 #define Pegasus_CIMObject_h  #define Pegasus_Object_h
  
 #include <Pegasus/Common/Config.h> #include <Pegasus/Common/Config.h>
 #include <Pegasus/Common/CIMClass.h>  #include <Pegasus/Common/String.h>
 #include <Pegasus/Common/CIMInstance.h>  #include <Pegasus/Common/Array.h>
   #include <Pegasus/Common/CIMProperty.h>
   #include <Pegasus/Common/CIMQualifier.h>
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 /** This class contains either a class or an instance (both CIM objects).  class CIMConstObject;
     Initializers are provided for both CIMClass and CIMInstance. The  class CIMObjectRep;
     isClass() and isInstance() methods are provided for determining the  class CIMClass;
     type of contained object. Methods are also provided for getting  class CIMConstClass;
     the internal object (into a CIMClass or CIMInstance).  class CIMInstance;
   class CIMConstInstance;
   
   ////////////////////////////////////////////////////////////////////////////////
   //
   // CIMObject
   //
   ////////////////////////////////////////////////////////////////////////////////
   
   /** This class either refers to a CIMInstance or a CIMClass.
   
       The CIMObjectRep data member points to either a CIMInstanceRep or
       CIMClassRep.
 */ */
 class PEGASUS_COMMON_LINKAGE CIMObject class PEGASUS_COMMON_LINKAGE CIMObject
 { {
 public: public:
  
     CIMObject() : _rep(0), _type(TYPE_NONE)      /** Constructor.
     {      */
       CIMObject();
     }  
  
     CIMObject(const CIMObject& x) : _type(x._type)      /** Copy constructor.
     {      */
         Inc(_rep = x._rep);      CIMObject(const CIMObject& x);
     }  
  
     CIMObject(const CIMClass& x) : _type(TYPE_CLASS)      /** Construction from CIMClass.
     {      */
         Inc(_rep = x._rep);      CIMObject(const CIMClass& x);
     }  
  
     CIMObject(const CIMInstance& x) : _type(TYPE_INSTANCE)      /** Construction from CIMInstance.
     {      */
         Inc(_rep = x._rep);      CIMObject(const CIMInstance& x);
     }  
  
     CIMObject& operator=(const CIMObject& x)      /** Assignment operator.
     {      */
         if (x._rep != _rep)      CIMObject& operator=(const CIMObject& x);
         {  
             Dec(_rep);  
             Inc(_rep = x._rep);  
             _type = x._type;  
         }  
         return *this;  
     }  
  
     CIMObject& operator=(const CIMClass& x)      /** Assignment operator.
     {      */
         if (x._rep != _rep)      CIMObject& operator=(const CIMClass& x);
         {  
             Dec(_rep);  
             Inc(_rep = x._rep);  
             _type = TYPE_CLASS;  
         }  
         return *this;  
     }  
  
     CIMObject& operator=(const CIMInstance& x)      /** Assignment operator.
     {      */
         if (x._rep != _rep)      CIMObject& operator=(const CIMInstance& x);
         {  
             Dec(_rep);  
             Inc(_rep = x._rep);  
             _type = TYPE_INSTANCE;  
         }  
         return *this;  
     }  
  
     ~CIMObject()      /** Destructor.
     {      */
         Dec(_rep);      ~CIMObject();
     }  
  
     Boolean isClass() const      /** Accessor for ClassName component of the object.
     {          @return - Returns the ClassName of the object in
         return _type == TYPE_CLASS;          a String parameter.
     }          <pre>
               String className;
               CIMClass myclass("myclass", "superclass");
               className = myclass.getClassName;
           </pre>
       */
       const String& getClassName() const;
  
     Boolean isInstance() const      const CIMObjectPath& getPath() const;
     {  
         return _type == TYPE_INSTANCE;  
     }  
  
     /** Returns the class contained by this object (if an class).      /**
         @return CIMClass        Sets the object path for the object
         @exception throws TypeMismatch if object does not contain a CIMClass.        @param  path  CIMObjectPath containing the object path
     */     */
     CIMClass getClass();      void setPath (const CIMObjectPath & path);
  
     /** Const version of getClass() */      /** addQualifier - Adds the CIMQualifier object to the instance.
           Thows an exception of the CIMQualifier already exists in the instance
           @param CIMQualifier object to add to instance
           @return the resulting object.
           @exception Throws AlreadyExists.
       */
       CIMObject& addQualifier(const CIMQualifier& qualifier);
   
       /** findQualifier - Searches the instance for the qualifier object
           defined by the input parameter.
           @param String defining the qualifier object to be found.
           @return - Position of the qualifier to be used in subsequent
           operations or PEG_NOT_FOUND if the qualifier is not found.
       */
       Uint32 findQualifier(const String& name) const;
   
       /** getQualifier - Retrieves the qualifier object defined by the
           index input parameter.  @ index for the qualifier object.
           The index to qualifier objects is zero-origin and continuous
           so that incrementing loops can be used to get all qualifier
           objects in a CIMInstnace.
           @return: Returns qualifier object defined by index.
           @exception Throws the OutOfBounds exception if the index
           is out of bounds
       */
       CIMQualifier getQualifier(Uint32 pos);
   
       /** getQualifier - Retrieves the qualifier object defined by the
           index input parameter.  @ index for the qualifier object.
           The index to qualifier objects is zero-origin and continuous
           so that incrementing loops can be used to get all qualifier
           objects in a CIMInstnace.
           @return: Returns qualifier object defined by index.
           @exception Throws the OutOfBounds exception if the index
           is out of bounds
       */
       CIMConstQualifier getQualifier(Uint32 pos) const;
   
       void removeQualifier(Uint32 pos);
   
       /** getQualifierCount - Gets the number of CIMQualifier objects
           defined for this CIMObject.
           @return Count of the number of CIMQualifier objects in the
           CIMObject.
           @exception Throws the OutOfBounds exception if the index
           is out of bounds
       */
       Uint32 getQualifierCount() const;
   
       /** addProperty - Adds a property object defined by the input
           parameter to the CIMObject
           @param Property Object to be added.  See the CIM Property
           class for definition of the property object
           @return the resulting object.
           @exception Throws the exception AlreadyExists if the property
           already exists.
       */
       CIMObject& addProperty(const CIMProperty& x);
   
       /** findProperty - Searches the CIMProperty objects installed in the
           CIMObject for property objects with the name defined by the
           input.
           @param String with the name of the property object to be found
           @return Position in the CIM object to the property object if found or
           PEG_NOT_FOUND if no property object found with the name defined by the
           input.
       */
       Uint32 findProperty(const String& name) const;
   
       /** getProperty - Gets the CIMProperty object in the CIMObject defined
           by the input index parameter.
           @param Index to the property object in the CIMObject.
           The index to qualifier objects is zero-origin and continuous
           so that incrementing loops can be used to get all qualifier
           objects in a CIMObject.
           @return CIMProperty object corresponding to the index.
           @exception Throws the OutOfBounds exception if the index
           is out of bounds
       */
       CIMProperty getProperty(Uint32 pos);
   
       /** getProperty - Gets the CIMproperty object in the CIMObject defined
           by the input index parameter.
           @param Index to the property object in the CIMObject.
           The index to qualifier objects is zero-origin and continuous
           so that incrementing loops can be used to get all qualifier
           objects in a CIMInstnace.
           @return CIMProperty object corresponding to the index.
           @exception Throws the OutOfBounds exception if the index
           is out of bounds
       */
       CIMConstProperty getProperty(Uint32 pos) const;
   
       /** removeProperty - Removes the property represented
           by the position input parameter from the instance.
           @param pos Index to the property to be removed from the
           instance.  Normally this is obtained by getProperty();
           @exception Throws OutofBounds if index is not a property object
       */
       void removeProperty(Uint32 pos);
   
       /** getPropertyCount - Gets the number of CIMProperty
           objects defined for this CIMObject.
           @return Count of the number of CIMProperty objects in the
           CIMObject. Zero indicates that no CIMProperty objects
           are contained in the CIMObject
           @exception Throws the OutOfBounds exception if the index
           is out of bounds
   
       */
       Uint32 getPropertyCount() const;
   
       /** Clones the given object.
       */
       CIMObject clone() const;
   
       /** Returns true if the two classes are structurally identical.
       */
       Boolean identical(const CIMConstObject& x) const;
   
   #ifdef PEGASUS_INTERNALONLY
       /** isNull() */
       Boolean isNull() const;
   #endif
  
     CIMConstClass getClass() const;  private:
  
     /** Returns the instance contained by this object (if an instance).      CIMObjectRep* _rep;
         @return CIMInstance  
         @exception throws TypeMismatch if object does not contain a CIMInstance.  
     */  
     CIMInstance getInstance();  
  
     /** Const version of getInstance() */  #ifdef PEGASUS_INTERNALONLY
       CIMObject(CIMObjectRep* rep);
  
     CIMConstInstance getInstance() const;      void _checkRep() const;
  
     operator int() const      friend class CIMConstObject;
     {      friend class CIMClass;
         return _rep != 0;      friend class CIMConstClass;
     }      friend class CIMInstance;
       friend class CIMConstInstance;
   #endif
   };
  
     void toXml(Array<Sint8>& out) const;  #define PEGASUS_ARRAY_T CIMObject
   # include <Pegasus/Common/ArrayInter.h>
   #undef PEGASUS_ARRAY_T
  
 private:  ////////////////////////////////////////////////////////////////////////////////
   //
   // CIMConstObject
   //
   ////////////////////////////////////////////////////////////////////////////////
  
     void _checkRep() const  class PEGASUS_COMMON_LINKAGE CIMConstObject
     {     {
         if (!_rep)  public:
             ThrowUnitializedHandle();  
     }  
  
     // Point to either a CIMClass or CIMInstance:      CIMConstObject();
  
     Sharable* _rep;      CIMConstObject(const CIMConstObject& x);
  
     enum Type { TYPE_CLASS, TYPE_INSTANCE, TYPE_NONE };      CIMConstObject(const CIMObject& x);
     Type _type;  
 };  
  
 /** The CIMObjectWithPath encapsulates a CIMReference and CIMObject.      /** Construction from CIMClass.
     Accessors are provided for getting the two parts. Constructors are  
     provided for initializing it from a CIMObject.  
 */ */
 class PEGASUS_COMMON_LINKAGE CIMObjectWithPath      CIMConstObject(const CIMClass& x);
 {  
 public:  
  
     /** Constructor      /** Construction from CIMInstance.
     */     */
     CIMObjectWithPath();      CIMConstObject(const CIMInstance& x);
  
     /** constructor      /** Construction from CIMClass.
     */     */
     CIMObjectWithPath(const CIMReference& reference, const CIMObject& object);      CIMConstObject(const CIMConstClass& x);
  
     /** Constructor - Constructs a CIMObjectWithPath Object from      /** Construction from CIMInstance.
         another CimObjectWithPath  
         @param - ATTN  
     */     */
     CIMObjectWithPath(const CIMObjectWithPath& x);      CIMConstObject(const CIMConstInstance& x);
  
     ~CIMObjectWithPath();      CIMConstObject& operator=(const CIMConstObject& x);
  
     CIMObjectWithPath& operator=(const CIMObjectWithPath& x);      CIMConstObject& operator=(const CIMObject& x);
  
     /** set -      CIMConstObject& operator=(const CIMClass& x);
     */  
     void set(const CIMReference& reference, const CIMObject& object);  
  
     /**      CIMConstObject& operator=(const CIMConstClass& x);
     */  
     const CIMReference& getReference() const { return _reference; }  
  
     /**      CIMConstObject& operator=(const CIMInstance& x);
     */  
     const CIMObject& getObject() const { return _object; }  
  
     /**      CIMConstObject& operator=(const CIMConstInstance& x);
     */  
     CIMReference& getReference() { return _reference; }  
  
     /**      ~CIMConstObject();
     */  
     CIMObject& getObject() { return _object; }  
  
     /**      const String& getClassName() const;
     */  
     void toXml(Array<Sint8>& out) const;      const CIMObjectPath& getPath() const;
   
       Uint32 findQualifier(const String& name) const;
   
       CIMConstQualifier getQualifier(Uint32 pos) const;
   
       Uint32 getQualifierCount() const;
   
       Uint32 findProperty(const String& name) const;
   
       CIMConstProperty getProperty(Uint32 pos) const;
   
       Uint32 getPropertyCount() const;
   
       CIMObject clone() const;
   
       Boolean identical(const CIMConstObject& x) const;
   
   #ifdef PEGASUS_INTERNALONLY
       Boolean isNull() const;
   #endif
  
 private: private:
  
     CIMReference _reference;      CIMObjectRep* _rep;
     CIMObject _object;  
   #ifdef PEGASUS_INTERNALONLY
       void _checkRep() const;
   
       friend class CIMObject;
       friend class CIMClass;
       friend class CIMConstClass;
       friend class CIMInstance;
       friend class CIMConstInstance;
   #endif
 }; };
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END
  
 #endif /* Pegasus_CIMObject_h */  #endif /* Pegasus_Object_h */


Legend:
Removed from v.1.4  
changed lines
  Added in v.1.30

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2