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_CIMFLAVOR_HPP_INCLUDE_GUARD_
00037 #define OW_CIMFLAVOR_HPP_INCLUDE_GUARD_
00038 #include "OW_config.h"
00039 #include "OW_CIMBase.hpp"
00040 #include "OW_Types.hpp"
00041 #include <iosfwd>
00042 
00043 namespace OW_NAMESPACE
00044 {
00045 
00050 class OW_COMMON_API CIMFlavor : public CIMBase
00051 {
00052 public:
00053    enum Flavor
00054    {
00056       INVALID           = 0,
00058       ENABLEOVERRIDE    = 1,
00060       DISABLEOVERRIDE   = 2,
00062       RESTRICTED        = 3,
00064       TOSUBCLASS        = 4,
00066       TRANSLATE         = 5,
00067       
00068       LASTVALUE         = 6
00069    };
00076    static bool validFlavor(Int32 iflavor)
00077    {
00078       return(iflavor > INVALID && iflavor < LASTVALUE);
00079    }
00091    CIMFlavor(Flavor iflavor) :
00092       CIMBase(), m_flavor(iflavor)
00093    {
00094       if (!validFlavor(iflavor))
00095       {
00096          m_flavor = INVALID;
00097       }
00098    }
00102    CIMFlavor() :
00103       CIMBase(), m_flavor(INVALID) {}
00108    CIMFlavor(const CIMFlavor& arg) :
00109       CIMBase(), m_flavor(arg.m_flavor)
00110    {
00111    }
00112 
00113    typedef Int32 CIMFlavor::*safe_bool;
00117    operator safe_bool () const
00118       {  return (validFlavor(m_flavor) == true) ? &CIMFlavor::m_flavor : 0; }
00119    bool operator!() const
00120       {  return !validFlavor(m_flavor); }
00124    virtual void setNull();
00131    CIMFlavor& operator= (const CIMFlavor& arg)
00132    {
00133       m_flavor = arg.m_flavor;
00134       return *this;
00135    }
00139    bool isValid()
00140    {
00141       return (m_flavor != INVALID);
00142    }
00143    
00150    bool equals(const CIMFlavor& arg)
00151    {
00152       return (m_flavor == arg.m_flavor);
00153    }
00160    bool operator== (const CIMFlavor& arg)
00161    {
00162       return equals(arg);
00163    }
00170    bool operator!= (const CIMFlavor& arg)
00171    {
00172       return (equals(arg) == false);
00173    }
00178    virtual void readObject(std::istream &istrm);
00183    virtual void writeObject(std::ostream &ostrm) const;
00187    virtual String toString() const;
00192    virtual String toMOF() const;
00196    Int32 getFlavor() const {  return m_flavor; }
00197 private:
00198    static bool validScope(Int32 iflavor)
00199    {
00200       
00201       
00202       
00203       return(iflavor >= ENABLEOVERRIDE && iflavor < LASTVALUE);
00204    }
00206    Int32 m_flavor;
00207    friend bool operator<(const CIMFlavor& x, const CIMFlavor& y)
00208    {
00209       return x.m_flavor < y.m_flavor;
00210    }
00211 };
00212 
00213 } 
00214 
00215 #endif