// // VMime library (http://vmime.sourceforge.net) // Copyright (C) 2002-2004 Vincent Richard // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as // published by the Free Software Foundation; either version 2 of // the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // #ifndef VMIME_GENERICFIELD_HPP_INCLUDED #define VMIME_GENERICFIELD_HPP_INCLUDED #include "headerField.hpp" #include "headerFieldFactory.hpp" #include "typeAdapter.hpp" namespace vmime { /** Generic implementation for headerField. */ template class genericField : virtual public headerField { friend class headerFieldFactory::registerer >; protected: genericField() { } public: genericField & operator=(const genericField & other) { copyFrom(other); return (*this); } const VALUE_TYPE& getValue() const { return (m_value); } VALUE_TYPE& getValue() { return (m_value); } template void setValue(const TYPE& value) { m_value = value; } void setValue(const component& value) { const VALUE_TYPE& v = dynamic_cast (value); m_value = v; } private: VALUE_TYPE m_value; }; /** Generic implementation for headerField with a value of type 'string'. */ template <> class genericField : public genericField > { }; } // vmime #endif // VMIME_GENERICFIELD_HPP_INCLUDED