00001 /* 00002 Copyright 2007, 2008, 2009, 2010, 2011 Instituto de Sistemas e Robotica, Instituto Superior Tecnico 00003 00004 This file is part of MeRMaID. 00005 00006 MeRMaID is free software: you can redistribute it and/or modify 00007 it under the terms of the GNU Lesser General Public License as published by 00008 the Free Software Foundation, either version 3 of the License, or 00009 (at your option) any later version. 00010 00011 MeRMaID is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU Lesser General Public License for more details. 00015 00016 You should have received a copy of the GNU Lesser General Public License 00017 along with MeRMaID. If not, see <http://www.gnu.org/licenses/>. 00018 */ 00019 00020 00021 00022 /** 00023 * @Filename DataValue.hpp 00024 * @Description DataValue class definition. 00025 * @Status Implementing 00026 * @Version $Id: DataValue.hpp 1 2011-03-04 18:13:18Z jreis $ 00027 * @Maintainer Marco Barbosa + Nelson Ramos 00028 */ 00029 00030 00031 #ifndef __DATASTRUCTURE_DATAVALUE_H_ 00032 #define __DATASTRUCTURE_DATAVALUE_H_ 00033 00034 #include "DataType.hpp" 00035 #include <XmlConvertible.hpp> 00036 #include <Stringable.hpp> 00037 #include <Cloneable.hpp> 00038 00039 00040 namespace mermaid 00041 { 00042 namespace support 00043 { 00044 namespace data 00045 { 00046 using mermaid::support::syntacticsugar::Stringable; 00047 using mermaid::support::syntacticsugar::Cloneable; 00048 00049 /** 00050 * @Class DataValue DataValue.hpp "DataValue.hpp" 00051 * @Description Class representing a Data value. 00052 * @Author Marco Barbosa + Nelson Ramos 00053 */ 00054 00055 class DataValue : public Stringable, Cloneable 00056 { 00057 00058 public: 00059 00060 virtual DataValue * clone() = 0; 00061 00062 DataValue(); 00063 00064 DataValue (const DataValue &otherValue); 00065 00066 DataValue& operator= (const DataValue &otherValue); 00067 00068 /** 00069 * @Description Method to convert value to string 00070 */ 00071 virtual operator std::string() const = 0; 00072 00073 DataType getType(); 00074 00075 00076 protected: 00077 00078 DataType type_; 00079 00080 void copyFrom (const DataValue &otherValue); 00081 }; // class DataValue 00082 } // namespace data 00083 } // namespace support 00084 } // namespace mermaid 00085 00086 #endif // __DATASTRUCTURE_DATAVALUE_H_