00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef BTK_CONCEPTS_CHAIN_ITERATOR_CONCEPT_HPP
00022 #define BTK_CONCEPTS_CHAIN_ITERATOR_CONCEPT_HPP
00023
00024 #include <iterator>
00025 #include <boost/concept_check.hpp>
00026
00027 #include <btk/core/concepts/chain_concept.hpp>
00028
00029 namespace BTK {
00030 namespace CONCEPTS {
00031
00032 template <typename T>
00033 struct ChainIteratorConcept
00034 {
00035 typedef typename std::iterator_traits<T>::value_type value_type;
00036
00037 void constraints() {
00038 boost::function_requires<boost::BidirectionalIteratorConcept<T> >();
00039 boost::function_requires<ChainConcept<value_type> >();
00040 }
00041 };
00042
00043 template <typename T>
00044 struct MutableChainIteratorConcept
00045 {
00046 void constraints() {
00047 boost::function_requires<ChainIteratorConcept<T> >();
00048 boost::function_requires<boost::Mutable_BidirectionalIteratorConcept<T> >();
00049 }
00050 };
00051
00052 }
00053 }
00054
00055 #endif