00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef MTL_ITERATOR_ADAPTOR_INCLUDE
00013 #define MTL_ITERATOR_ADAPTOR_INCLUDE
00014
00015 #include <boost/numeric/mtl/utility/iterator_adaptor_detail.hpp>
00016
00017 namespace mtl { namespace utilities {
00018
00019
00020
00021
00022
00023 template <typename PropertyMap, typename Cursor, typename ValueType>
00024 struct const_iterator_adaptor
00025 : public detail::ra_adaptor_operators< const_iterator_adaptor<PropertyMap, Cursor, ValueType> >
00026 {
00027 typedef detail::const_iterator_proxy<PropertyMap, Cursor, ValueType> proxy;
00028
00029 const_iterator_adaptor(PropertyMap map, Cursor cursor)
00030 : map(map), cursor(cursor) {}
00031
00032 proxy operator*() const
00033 {
00034 return proxy(map, cursor);
00035 }
00036
00037 PropertyMap map;
00038 Cursor cursor;
00039 };
00040
00041
00042 template <typename PropertyMap, typename Cursor, typename ValueType>
00043 struct iterator_adaptor
00044 : public detail::ra_adaptor_operators< iterator_adaptor<PropertyMap, Cursor, ValueType> >
00045 {
00046 typedef detail::iterator_proxy<PropertyMap, Cursor, ValueType> proxy;
00047
00048 iterator_adaptor(PropertyMap map, Cursor cursor)
00049 : map(map), cursor(cursor) {}
00050
00051 proxy operator*()
00052 {
00053 return proxy(map, cursor);
00054 }
00055
00056 PropertyMap map;
00057 Cursor cursor;
00058 };
00059
00060
00061 }}
00062
00063 #endif // MTL_ITERATOR_ADAPTOR_INCLUDE