Simple Application Framework
1
|
00001 /* 00002 This file is part of Simple Application Framework (Saf) library. 00003 Copyright (C) 2010 - 2012 Ondrej Danek <ondrej.danek@gmail.com> 00004 00005 This library is free software: you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published 00007 by the Free Software Foundation, either version 3 of the License, or 00008 (at your option) any later version. 00009 00010 Saf is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License 00016 along with Simple Application Framework library. If not, 00017 see <http://www.gnu.org/licenses/>. 00018 */ 00019 00028 #ifndef SAF_TYPE_ITERATORTRAITS_H 00029 #define SAF_TYPE_ITERATORTRAITS_H 00030 00031 #include "../Type.h" 00032 #include "IteratorCategory.h" 00033 00034 namespace Saf 00035 { 00036 namespace Type 00037 { 00039 template <class T> 00040 class IteratorTraits 00041 { 00042 public: 00044 typedef typename T::ValType ValType; 00046 typedef typename T::CategoryType CategoryType; 00047 00049 static CategoryType Category() 00050 { 00051 CategoryType cat; 00052 return cat; 00053 } 00054 }; 00055 00057 template <class T> 00058 class IteratorTraits<T *> 00059 { 00060 public: 00061 typedef T ValType; 00062 typedef IteratorCategory::RandomAccessCategory CategoryType; 00063 00064 static CategoryType Category() 00065 { 00066 CategoryType cat; 00067 return cat; 00068 } 00069 }; 00070 00071 template <class T> 00072 class IteratorTraits<const T *> 00073 { 00074 public: 00075 typedef T ValType; 00076 typedef IteratorCategory::RandomAccessCategory CategoryType; 00077 00078 static CategoryType Category() 00079 { 00080 CategoryType cat; 00081 return cat; 00082 } 00083 }; 00085 } 00086 } 00087 00088 #endif