pelib
2.0.0
|
00001 /* 00002 Copyright 2015 Nicolas Melot 00003 00004 This file is part of Pelib. 00005 00006 Pelib is free software: you can redistribute it and/or modify 00007 it under the terms of the GNU 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 Pelib 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 General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with Pelib. If not, see <http://www.gnu.org/licenses/>. 00018 */ 00019 00020 00021 #include <pelib/CppData.hpp> 00022 #include <pelib/DataParser.hpp> 00023 #include <pelib/Scalar.hpp> 00024 #include <pelib/CastException.hpp> 00025 #include <pelib/ParseException.hpp> 00026 #include <pelib/NoDecimalFloatException.hpp> 00027 00028 #ifndef PELIB_CPPSCALAR 00029 #define PELIB_CPPSCALAR 00030 00031 namespace pelib 00032 { 00034 template <class Value> 00035 class 00036 CppScalar: public CppData 00037 { 00038 public: 00040 CppScalar() : CppData() 00041 { 00042 // Do nothing 00043 } 00044 00046 virtual 00047 CppScalar* 00048 clone() const 00049 { 00050 return new CppScalar(); 00051 } 00052 00057 virtual 00058 void 00059 dump(std::ostream &stream, const AlgebraData *data) const 00060 { 00061 const Scalar<Value> *scalar = dynamic_cast<const Scalar<Value>* >(data); 00062 if(scalar == NULL) throw CastException("parameter \"data\" was not of type \"Scalar<Value>\"."); 00063 00064 stream << "pelib::Scalar<" << type_name(typeid(scalar->getValue())).c_str() << "> " << scalar->getName() << "(\"" << scalar->getName() << "\", " << scalar->getValue() << ");" << std::endl; 00065 } 00066 00067 protected: 00068 private: 00069 }; 00070 } 00071 00072 #endif