00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00023
00024 #ifndef BTK_CONCEPTS_ATOM_ITERATOR_CONCEPT_HPP
00025 #define BTK_CONCEPTS_ATOM_ITERATOR_CONCEPT_HPP
00026
00058
00059 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00060
00061 #include <iterator>
00062 #include <boost/concept_check.hpp>
00063
00064 #include <btk/core/concepts/atom_concept.hpp>
00065
00066 namespace BTK {
00067 namespace CONCEPTS {
00068
00069 template <class T>
00070 struct AtomIteratorConcept
00071 {
00072 typedef typename std::iterator_traits<T>::value_type value_type;
00073
00074 void constraints() {
00075 boost::function_requires<boost::BidirectionalIteratorConcept<T> >();
00076 boost::function_requires<AtomConcept<value_type> >();
00077 }
00078 };
00079
00080 template <class T>
00081 struct MutableAtomIteratorConcept
00082 {
00083 void constraints() {
00084 boost::function_requires<AtomIteratorConcept<T> >();
00085 boost::function_requires<boost::Mutable_BidirectionalIteratorConcept<T> >();
00086 }
00087 };
00088
00089 }
00090 }
00091
00092 #endif //DOXYGEN_SHOULD_SKIP_THIS
00093
00094 #endif // BTK_CONCEPTS_ATOM_ITERATOR_CONCEPT_HPP