00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00036 #ifndef OW_CIMQUALIFIER_HPP_INCLUDE_GUARD_
00037 #define OW_CIMQUALIFIER_HPP_INCLUDE_GUARD_
00038 #include "OW_config.h"
00039 #include "OW_CIMElement.hpp"
00040 #include "OW_COWIntrusiveReference.hpp"
00041 #include "OW_CIMFwd.hpp"
00042 #include "OW_CIMNULL.hpp"
00043 #include "OW_CIMName.hpp" 
00044 
00045 namespace OW_NAMESPACE
00046 {
00047 
00053 class OW_COMMON_API CIMQualifier : public CIMElement
00054 {
00055 public:
00056    struct QUALData;
00057    
00058    static const char* const CIM_QUAL_ASSOCIATION;
00059    static const char* const CIM_QUAL_INDICATION;
00060    
00061    static const char* const CIM_QUAL_ABSTRACT;
00062    static const char* const CIM_QUAL_AGGREGATE;
00063    static const char* const CIM_QUAL_AGGREGATION;
00064    static const char* const CIM_QUAL_ALIAS;
00065    static const char* const CIM_QUAL_ARRAYTYPE;
00066    static const char* const CIM_QUAL_BITMAP;
00067    static const char* const CIM_QUAL_BITVALUES;
00068    static const char* const CIM_QUAL_COMPOSITION;
00069    static const char* const CIM_QUAL_COUNTER;
00070    static const char* const CIM_QUAL_DELETE;
00071    static const char* const CIM_QUAL_DEPRECATED;
00072    static const char* const CIM_QUAL_DESCRIPTION;
00073    static const char* const CIM_QUAL_DISPLAYNAME;
00074    static const char* const CIM_QUAL_DN;
00075    static const char* const CIM_QUAL_EMBEDDEDOBJECT;
00076    static const char* const CIM_QUAL_EXCEPTION;
00077    static const char* const CIM_QUAL_EXPENSIVE;
00078    static const char* const CIM_QUAL_EXPERIMENTAL;
00079    static const char* const CIM_QUAL_GAUGE;
00080    static const char* const CIM_QUAL_IFDELETED;
00081    static const char* const CIM_QUAL_IN;
00082    static const char* const CIM_QUAL_INVISIBLE;
00083    static const char* const CIM_QUAL_KEY;
00084    static const char* const CIM_QUAL_LARGE;
00085    static const char* const CIM_QUAL_MAPPINGSTRINGS;
00086    static const char* const CIM_QUAL_MAX;
00087    static const char* const CIM_QUAL_MAXLEN;
00088    static const char* const CIM_QUAL_MAXVALUE;
00089    static const char* const CIM_QUAL_MIN;
00090    static const char* const CIM_QUAL_MINLEN;
00091    static const char* const CIM_QUAL_MINVALUE;
00092    static const char* const CIM_QUAL_MODELCORRESPONDENCE;
00093    static const char* const CIM_QUAL_NONLOCAL;
00094    static const char* const CIM_QUAL_NONLOCALTYPE;
00095    static const char* const CIM_QUAL_NULLVALUE;
00096    static const char* const CIM_QUAL_OCTETSTRING;
00097    static const char* const CIM_QUAL_OUT;
00098    static const char* const CIM_QUAL_OVERRIDE;
00099    static const char* const CIM_QUAL_PROPAGATED;
00100    static const char* const CIM_QUAL_PROPERTYUSAGE;
00101    static const char* const CIM_QUAL_READ;
00102    static const char* const CIM_QUAL_REQUIRED;
00103    static const char* const CIM_QUAL_REVISION;
00104    static const char* const CIM_QUAL_SCHEMA;
00105    static const char* const CIM_QUAL_SOURCE;
00106    static const char* const CIM_QUAL_SOURCETYPE;
00107    static const char* const CIM_QUAL_STATIC;
00108    static const char* const CIM_QUAL_SYNTAX;
00109    static const char* const CIM_QUAL_SYNTAXTYPE;
00110    static const char* const CIM_QUAL_TERMINAL;
00111    static const char* const CIM_QUAL_TRIGGERTYPE;
00112    static const char* const CIM_QUAL_UNITS;
00113    static const char* const CIM_QUAL_UNKNOWNVALUES;
00114    static const char* const CIM_QUAL_UNSUPPORTEDVALUES;
00115    static const char* const CIM_QUAL_VALUEMAP;
00116    static const char* const CIM_QUAL_VALUES;
00117    static const char* const CIM_QUAL_VERSION;
00118    static const char* const CIM_QUAL_WEAK;
00119    static const char* const CIM_QUAL_WRITE;
00120    static const char* const CIM_QUAL_PROVIDER;
00124    CIMQualifier();
00128    explicit CIMQualifier(CIMNULL_t);
00133    CIMQualifier(const CIMName& name);
00139    CIMQualifier(const char* name);
00144    CIMQualifier(const CIMQualifierType& qtype);
00149    CIMQualifier(const CIMQualifier& arg);
00153    ~CIMQualifier();
00157    virtual void setNull();
00163    CIMQualifier& operator= (const CIMQualifier& arg);
00167    bool isKeyQualifier() const;
00171    bool isAssociationQualifier() const;
00175    CIMValue getValue() const;
00180    CIMValue getValueT() const;
00186    CIMQualifier& setValue(const CIMValue& value);
00192    CIMQualifier& setDefaults(const CIMQualifierType& qtype);
00197    CIMQualifierType getDefaults() const;
00203    bool hasFlavor(const CIMFlavor& flavor) const;
00209    CIMQualifier& addFlavor(const CIMFlavor& flavor);
00216    CIMQualifier& removeFlavor(Int32 flavor);
00220    bool hasValue() const;
00227    bool equals(const CIMQualifier& arg) const;
00231    CIMFlavorArray getFlavor() const;
00237    CIMQualifier& setPropagated(bool propagated=true);
00241    bool getPropagated() const;
00242 
00250    CIMQualifier& setLanguage(const String& language);
00254    String getLanguage() const;
00255 
00256    typedef COWIntrusiveReference<QUALData> CIMQualifier::*safe_bool;
00257    operator safe_bool () const
00258       {  return m_pdata ? &CIMQualifier::m_pdata : 0; }
00259    bool operator!() const
00260       {  return !m_pdata; }
00264    virtual String getName() const;
00269    virtual void setName(const CIMName& name);
00270    
00275    virtual void readObject(std::istream &istrm);
00280    virtual void writeObject(std::ostream &ostrm) const;
00284    virtual String toMOF() const;
00288    virtual String toString() const;
00292    static CIMQualifier createKeyQualifier();
00293 
00298    enum { SERIALIZATION_VERSION = 1 };
00299 
00300 private:
00301 
00302 #ifdef OW_WIN32
00303 #pragma warning (push)
00304 #pragma warning (disable: 4251)
00305 #endif
00306 
00307    COWIntrusiveReference<QUALData> m_pdata;
00308 
00309 #ifdef OW_WIN32
00310 #pragma warning (pop)
00311 #endif
00312 
00313    friend OW_COMMON_API bool operator<(const CIMQualifier& x, const CIMQualifier& y);
00314 };
00315 
00316 } 
00317 
00318 #endif