| VRS - The Virtual Rendering System |
| version 3.3 |
00001 /********************************************************************** 00002 VRS - The Virtual Rendering System 00003 Copyright (C) 2001 Computer Graphics Systems Group at the 00004 Hasso-Plattner-Institute, Potsdam, Germany. 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Lesser General Public 00007 License as published by the Free Software Foundation; either 00008 version 2.1 of the License, or (at your option) any later version. 00009 This library is distributed in the hope that it will be useful, but 00010 WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00012 See the GNU Lesser General Public License for more details. 00013 You should have received a copy of the GNU Lesser+ General Public 00014 License along with this library; if not, write to the FreeSoftware 00015 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA, 02111-1307, USA. 00016 **********************************************************************/ 00017 // $Id: typecastiterator2d.h 4455 2004-11-03 10:58:29Z saar $ 00018 // $Date: 2004-11-03 11:58:29 +0100 (Wed, 03 Nov 2004) $ 00019 // $Revision: 4455 $ 00020 // $State$ 00021 // $Author: saar $ 00022 // 00023 // $Log$ 00024 // Revision 1.12 2004/11/03 10:58:29 saar 00025 // Class comment changed (Doxygen style) 00026 // 00027 // Revision 1.11 2004/06/03 12:48:01 kirsch 00028 // replaced vrs assertions with check args and internal error macros 00029 // 00030 // Revision 1.10 2004/03/12 16:28:40 baumann 00031 // macros VRS_NAMESPACE_BEGIN/_END expanded and removed 00032 // 00033 // Revision 1.9 2004/02/10 10:48:46 wendland 00034 // added VRS_SERIALIZATION_PARENT_CLASS 00035 // 00036 // Revision 1.8 2004/01/19 11:43:58 baumann 00037 // serialization mechanism improved 00038 // 00039 // Revision 1.7 2004/01/15 14:16:54 baumann 00040 // serialization mechanism improved 00041 // 00042 // Revision 1.6 2002/08/13 08:35:04 baumann 00043 // some changes for the interface VRS::Iterator2D<T> 00044 // 00045 // Revision 1.5 2002/08/06 16:24:02 baumann 00046 // VRS_API removed for template classes 00047 // 00048 // Revision 1.4 2002/07/11 14:21:52 kersting 00049 // added version for serialize method 00050 // 00051 // Revision 1.3 2002/07/05 05:55:27 baumann 00052 // changed return type of get()-method from "const T&" to "T" 00053 // 00054 // Revision 1.2 2002/07/03 15:52:50 baumann 00055 // several changes for iterator code 00056 // most iterators are now serializable again 00057 // 00058 // Revision 1.1 2002/03/04 12:03:54 kersting 00059 // directory structure changes 00060 // 00061 // Revision 1.10 2002/03/03 21:44:25 kosta 00062 // VRS_TYPEINFO-macro rewritten 00063 // 00064 // Revision 1.9 2002/02/19 10:34:13 kosta 00065 // undone all changes since 2002-02-15 00066 // 00067 // Revision 1.6 2002/02/14 09:37:20 kosta 00068 // automatic serialization registration for template classes implemented 00069 // 00070 // Revision 1.5 2002/02/05 07:48:25 kosta 00071 // new persistency macros: 00072 // VRS_SERIALIZABLE(CLASS_NAME); 00073 // VRS_SERIALIZABLE_ABSTRACT_CLASS(CLASS_NAME); 00074 // VRS_SERIALIZABLE_NO_SO_CLASS(CLASS_NAME) 00075 // 00076 // Revision 1.4 2002/02/04 13:07:19 kosta 00077 // VRS_SERIALIZABLE macros completely rewritten 00078 // 00079 // Revision 1.3 2002/01/15 16:25:54 kosta 00080 // macros rewritten for a better namespace support 00081 // 00082 // Revision 1.2 2001/11/13 16:36:31 kirsch 00083 // changed line feed to unix style (removed control-M) 00084 // 00085 // Revision 1.1.1.1 2001/06/08 08:09:20 kirsch 00086 // imported alpha-version by olli 00087 // 00088 00089 00090 #ifndef VRS_CONTAINER_TYPECASTITERATOR2D_H 00091 #define VRS_CONTAINER_TYPECASTITERATOR2D_H 00092 00093 #include <vrs/container/iterator2d.h> 00094 00095 namespace VRS { 00096 00098 template<typename TO, typename FROM> 00099 class TypeCastIterator2D : public Iterator2D<TO> { 00100 public: 00101 TypeCastIterator2D(const Iterator2D<FROM>* from) 00102 : from_(from) 00103 { VRS_CheckArg(from, "no iterator"); } 00104 00105 virtual unsigned int sizeX() const { return from_->sizeX(); } 00106 virtual unsigned int sizeY() const { return from_->sizeY(); } 00107 00108 virtual TO get(unsigned int x, unsigned int y) const { return static_cast<TO>(from_->get(x, y)); } 00109 00110 VRS_TYPEINFO(TypeCastIterator2D, Iterator2D<TO>); 00111 VRS_SERIALIZABLE(TypeCastIterator2D); 00112 00113 protected: 00114 TypeCastIterator2D() { } // only for serialization 00115 00116 private: 00117 SO<const Iterator2D<FROM> > from_; 00118 }; 00119 00120 template<typename TO, typename FROM> 00121 void TypeCastIterator2D<TO, FROM>::serialize(SerializationManager& doc) { 00122 VRS_SERIALIZATION_PARENT_CLASS(doc, Iterator2D<TO>); 00123 serialization(doc, "Master", from_); 00124 } 00125 00126 VRS_SERIALIZATION_REGISTRATION_TEMPLATE_2(TypeCastIterator2D); 00127 00128 } // namespace VRS 00129 00130 #endif // VRS_CONTAINER_TYPECASTITERATOR2D_H