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/RawData.hpp> 00022 #include <pelib/Vector.hpp> 00023 #include <pelib/Scalar.hpp> 00024 #include <pelib/CastException.hpp> 00025 00026 #ifndef PELIB_RAWVECTOR 00027 #define PELIB_RAWVECTOR 00028 00029 #define debug(var) std::cout << "[" << __FILE__ << ":" << __FUNCTION__ << ":" << __LINE__ << "] " << #var << " = \"" << (var) << "\"" << std::endl; 00030 00031 namespace pelib 00032 { 00034 template <class Key, class Value> 00035 class RawVector: public RawData 00036 { 00037 public: 00039 virtual 00040 RawVector* 00041 clone() const 00042 { 00043 return new RawVector(); 00044 } 00045 00046 virtual 00047 void 00048 dump(std::ostream &o, const AlgebraData *data) const 00049 { 00050 const Vector<Key, Value> *vector = dynamic_cast<const Vector<Key, Value>*>(data); 00051 if(vector == NULL) throw CastException("parameter \"data\" was not of type \"Vector<Key, Value>\"."); 00052 // warning: "iter++" makes valgrind unhappy, dealing with free'd memory 00053 for(typename std::map<Key, Value>::const_iterator iter = vector->getValues().begin(); iter != vector->getValues().end(); iter++) 00054 { 00055 o << iter->second << " "; 00056 } 00057 00058 o << std::endl; 00059 } 00060 00061 protected: 00062 private: 00063 }; 00064 } 00065 00066 #undef debug 00067 #endif