00001 /******************************************************************************* 00002 * Copyright (C) 2001-2004 Vintela, Inc. All rights reserved. 00003 * 00004 * Redistribution and use in source and binary forms, with or without 00005 * modification, are permitted provided that the following conditions are met: 00006 * 00007 * - Redistributions of source code must retain the above copyright notice, 00008 * this list of conditions and the following disclaimer. 00009 * 00010 * - Redistributions in binary form must reproduce the above copyright notice, 00011 * this list of conditions and the following disclaimer in the documentation 00012 * and/or other materials provided with the distribution. 00013 * 00014 * - Neither the name of Vintela, Inc. nor the names of its 00015 * contributors may be used to endorse or promote products derived from this 00016 * software without specific prior written permission. 00017 * 00018 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 00019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00020 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00021 * ARE DISCLAIMED. IN NO EVENT SHALL Vintela, Inc. OR THE CONTRIBUTORS 00022 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00023 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00024 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00025 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00026 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00027 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00028 * POSSIBILITY OF SUCH DAMAGE. 00029 *******************************************************************************/ 00030 00035 #ifndef OWBI1_CIMPARAMVALUE_HPP_INCLUDE_GUARD_ 00036 #define OWBI1_CIMPARAMVALUE_HPP_INCLUDE_GUARD_ 00037 #include "OWBI1_config.h" 00038 #include "OWBI1_COWIntrusiveReference.hpp" 00039 #include "OWBI1_CIMBase.hpp" 00040 #include "OWBI1_CIMFwd.hpp" 00041 #include "OWBI1_CIMNULL.hpp" 00042 #include "OWBI1_CIMName.hpp" // necessary for implicit conversion (const char* -> CIMName) to work 00043 #include <iosfwd> 00044 00045 namespace OWBI1 00046 { 00047 00048 class OWBI1_OWBI1PROVIFC_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 OWBI1_WIN32 00126 #pragma warning (push) 00127 #pragma warning (disable: 4251) 00128 #endif 00129 00130 COWIntrusiveReference<Data> m_pdata; 00131 00132 #ifdef OWBI1_WIN32 00133 #pragma warning (pop) 00134 #endif 00135 00136 friend OWBI1_OWBI1PROVIFC_API bool operator<(const CIMParamValue& x, const CIMParamValue& y); 00137 }; 00138 00144 CIMValue getParamValue(const String& paramName, const CIMParamValueArray& params); 00145 00146 00147 00148 } // end namespace OWBI1 00149 00150 #endif