00001 00025 #ifndef GALOIS_NODEREFITERATOR_H 00026 #define GALOIS_NODEREFITERATOR_H 00027 00028 #include "boost/iterator/iterator_adaptor.hpp" 00029 00030 namespace Galois { 00031 00033 template<typename Iterator> 00034 struct NoDerefIterator : public boost::iterator_adaptor< 00035 NoDerefIterator<Iterator>, Iterator, Iterator, 00036 boost::use_default, const Iterator&> 00037 { 00038 NoDerefIterator(): NoDerefIterator::iterator_adaptor_() { } 00039 explicit NoDerefIterator(Iterator it): NoDerefIterator::iterator_adaptor_(it) { } 00040 const Iterator& dereference() const { 00041 return NoDerefIterator::iterator_adaptor_::base_reference(); 00042 } 00043 Iterator& dereference() { 00044 return NoDerefIterator::iterator_adaptor_::base_reference(); 00045 } 00046 }; 00047 00049 template<typename Iterator> 00050 NoDerefIterator<Iterator> make_no_deref_iterator(Iterator it) { 00051 return NoDerefIterator<Iterator>(it); 00052 } 00053 00054 } 00055 00056 #endif