8 #ifndef BOOST_GIL_CONCEPTS_PIXEL_ITERATOR_HPP 
    9 #define BOOST_GIL_CONCEPTS_PIXEL_ITERATOR_HPP 
   11 #include <boost/gil/concepts/channel.hpp> 
   12 #include <boost/gil/concepts/color.hpp> 
   13 #include <boost/gil/concepts/concept_check.hpp> 
   14 #include <boost/gil/concepts/fwd.hpp> 
   15 #include <boost/gil/concepts/pixel.hpp> 
   16 #include <boost/gil/concepts/pixel_based.hpp> 
   18 #include <boost/iterator/iterator_concepts.hpp> 
   22 #include <type_traits> 
   24 #if defined(BOOST_CLANG) 
   25 #pragma clang diagnostic push 
   26 #pragma clang diagnostic ignored "-Wunknown-pragmas" 
   27 #pragma clang diagnostic ignored "-Wunused-local-typedefs" 
   30 #if defined(BOOST_GCC) && (BOOST_GCC >= 40900) 
   31 #pragma GCC diagnostic push 
   32 #pragma GCC diagnostic ignored "-Wunused-local-typedefs" 
   35 namespace boost { 
namespace gil {
 
   38 template <
typename It> 
struct const_iterator_type;
 
   39 template <
typename It> 
struct iterator_is_mutable;
 
   40 template <
typename It> 
struct is_iterator_adaptor;
 
   41 template <
typename It, 
typename NewBaseIt> 
struct iterator_adaptor_rebind;
 
   42 template <
typename It> 
struct iterator_adaptor_get_base;
 
   50 struct ForwardIteratorIsMutableConcept
 
   62 struct BidirectionalIteratorIsMutableConcept
 
   66         gil_function_requires< ForwardIteratorIsMutableConcept<TT>>();
 
   75 struct RandomAccessIteratorIsMutableConcept
 
   79         gil_function_requires<BidirectionalIteratorIsMutableConcept<TT>>();
 
   81         typename std::iterator_traits<TT>::difference_type n = 0;
 
   82         ignore_unused_variable_warning(n);
 
   90 template <
typename Iterator>
 
   91 struct RandomAccessIteratorIsMemoryBasedConcept
 
   95         std::ptrdiff_t bs = memunit_step(it);
 
   96         ignore_unused_variable_warning(bs);
 
   98         it = memunit_advanced(it, 3);
 
   99         std::ptrdiff_t bd = memunit_distance(it, it);
 
  100         ignore_unused_variable_warning(bd);
 
  102         memunit_advance(it,3);
 
  109 template <
typename Iterator>
 
  114         gil_function_requires<detail::RandomAccessIteratorIsMutableConcept<Iterator>>();
 
  116         using ref_t = 
typename std::remove_reference
 
  118                 typename std::iterator_traits<Iterator>::reference
 
  121         gil_function_requires<detail::ChannelIsMutableConcept<channel_t>>();
 
  136 template <
typename T>
 
  141         using type = 
typename transposed_type<T>::type;
 
  142         ignore_unused_variable_warning(type{});
 
  169 template <
typename Iterator>
 
  174         gil_function_requires<boost_concepts::RandomAccessTraversalConcept<Iterator>>();
 
  175         gil_function_requires<PixelBasedConcept<Iterator>>();
 
  177         using value_type = 
typename std::iterator_traits<Iterator>::value_type;
 
  178         gil_function_requires<PixelValueConcept<value_type>>();
 
  182         ignore_unused_variable_warning(is_mutable);
 
  185         const_t const_it(it);
 
  186         ignore_unused_variable_warning(const_it);
 
  191     void check_base(std::false_type) {}
 
  193     void check_base(std::true_type)
 
  196         gil_function_requires<PixelIteratorConcept<base_t>>();
 
  208 template <
typename Iterator>
 
  213         gil_function_requires<PixelIteratorConcept<Iterator>>();
 
  214         gil_function_requires<detail::PixelIteratorIsMutableConcept<Iterator>>();
 
  235 template <
typename Iterator>
 
  240         gil_function_requires<boost_concepts::RandomAccessTraversalConcept<Iterator>>();
 
  241         gil_function_requires<detail::RandomAccessIteratorIsMemoryBasedConcept<Iterator>>();
 
  256 template <
typename Iterator>
 
  261         gil_function_requires<boost_concepts::ForwardTraversalConcept<Iterator>>();
 
  274 template <
typename Iterator>
 
  279         gil_function_requires<StepIteratorConcept<Iterator>>();
 
  280         gil_function_requires<detail::ForwardIteratorIsMutableConcept<Iterator>>();
 
  316 template <
typename Iterator>
 
  321         gil_function_requires<boost_concepts::ForwardTraversalConcept<Iterator>>();
 
  324         gil_function_requires<boost_concepts::ForwardTraversalConcept<base_t>>();
 
  329         base_t base = it.base();
 
  330         ignore_unused_variable_warning(base);
 
  341 template <
typename Iterator>
 
  346         gil_function_requires<IteratorAdaptorConcept<Iterator>>();
 
  347         gil_function_requires<detail::ForwardIteratorIsMutableConcept<Iterator>>();
 
  353 #if defined(BOOST_CLANG) 
  354 #pragma clang diagnostic pop 
  357 #if defined(BOOST_GCC) && (BOOST_GCC >= 40900) 
  358 #pragma GCC diagnostic pop 
defined(BOOST_NO_CXX17_HDR_MEMORY_RESOURCE)
Definition: algorithm.hpp:36
 
Concept for locators and views that can define a type just like the given locator or view,...
Definition: concepts/pixel_iterator.hpp:138
 
Iterator adaptor is a forward iterator adapting another forward iterator.
Definition: concepts/pixel_iterator.hpp:318
 
Concept of a random-access iterator that can be advanced in memory units (bytes or bits)
Definition: concepts/pixel_iterator.hpp:237
 
Iterator adaptor that is mutable.
Definition: concepts/pixel_iterator.hpp:343
 
Pixel iterator that allows for changing its pixel.
Definition: concepts/pixel_iterator.hpp:210
 
Step iterator that allows for modifying its current value.
Definition: concepts/pixel_iterator.hpp:276
 
An STL random access traversal iterator over a model of PixelConcept.
Definition: concepts/pixel_iterator.hpp:171
 
Step iterator concept.
Definition: concepts/pixel_iterator.hpp:258
 
Returns the type of an iterator just like the input iterator, except operating over immutable values.
Definition: pixel_iterator.hpp:40
 
Definition: concepts/pixel_iterator.hpp:111
 
Specifies the element type of a homogeneous color base.
Definition: color_base_algorithm.hpp:225
 
metafunction predicate determining whether the given iterator is a plain one or an adaptor over anoth...
Definition: pixel_iterator.hpp:28
 
returns the base iterator for a given iterator adaptor. Provide an specialization when introducing ne...
Definition: metafunctions.hpp:36
 
Changes the base iterator of an iterator adaptor. Provide an specialization when introducing new iter...
Definition: pixel_iterator.hpp:36
 
Metafunction predicate returning whether the given iterator allows for changing its values.
Definition: pixel_iterator.hpp:49