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 
00035 #ifndef OW_CIMPARAMVALUE_HPP_INCLUDE_GUARD_
00036 #define OW_CIMPARAMVALUE_HPP_INCLUDE_GUARD_
00037 #include "OW_config.h"
00038 #include "OW_COWIntrusiveReference.hpp"
00039 #include "OW_CIMBase.hpp"
00040 #include "OW_CIMFwd.hpp"
00041 #include "OW_CIMNULL.hpp"
00042 #include "OW_CIMName.hpp" 
00043 #include <iosfwd>
00044 
00045 namespace OW_NAMESPACE
00046 {
00047 
00048 class OW_COMMON_API CIMParamValue : public CIMBase
00049 {
00050 public:
00051    struct Data;
00055    CIMParamValue();
00059    explicit CIMParamValue(CIMNULL_t);
00065    CIMParamValue(const CIMName& name, const CIMValue& val);
00070    explicit CIMParamValue(const CIMName& name);
00075    CIMParamValue(const CIMParamValue& arg);
00076    
00080    ~CIMParamValue();
00086    CIMParamValue& operator = (const CIMParamValue& arg);
00087    String getName() const;
00088    CIMParamValue& setName(const CIMName& name);
00089    CIMValue getValue() const;
00090    CIMParamValue& setValue(const CIMValue& val);
00091 
00092    typedef COWIntrusiveReference<Data> CIMParamValue::*safe_bool;
00096    operator safe_bool () const
00097    {
00098       return m_pdata ? &CIMParamValue::m_pdata : 0;
00099    }
00100    bool operator!() const
00101    {
00102       return !this->m_pdata;
00103    }
00108    virtual void readObject(std::istream &istrm);
00113    virtual void writeObject(std::ostream &ostrm) const;
00114    virtual void setNull();
00118    virtual String toString() const;
00122    virtual String toMOF() const;
00123 private:
00124 
00125 #ifdef OW_WIN32
00126 #pragma warning (push)
00127 #pragma warning (disable: 4251)
00128 #endif
00129 
00130    COWIntrusiveReference<Data> m_pdata;
00131 
00132 #ifdef OW_WIN32
00133 #pragma warning (pop)
00134 #endif
00135 
00136    friend OW_COMMON_API bool operator<(const CIMParamValue& x, const CIMParamValue& y);
00137 };
00138 
00144 CIMValue getParamValue(const String& paramName, const CIMParamValueArray& params);
00145 
00146 
00147 
00148 } 
00149 
00150 #endif