1 // 2 // Copyright 2005-2007 Adobe Systems Incorporated 3 // 4 // Distributed under the Boost Software License, Version 1.0 5 // See accompanying file LICENSE_1_0.txt or copy at 6 // http://www.boost.org/LICENSE_1_0.txt 7 // 8 #ifndef BOOST_GIL_CONCEPTS_DYNAMIC_STEP_HPP 9 #define BOOST_GIL_CONCEPTS_DYNAMIC_STEP_HPP 10 11 #include <boost/gil/concepts/fwd.hpp> 12 #include <boost/gil/concepts/concept_check.hpp> 13 14 #if defined(BOOST_CLANG) 15 #pragma clang diagnostic push 16 #pragma clang diagnostic ignored "-Wunknown-pragmas" 17 #pragma clang diagnostic ignored "-Wunused-local-typedefs" 18 #endif 19 20 #if defined(BOOST_GCC) && (BOOST_GCC >= 40900) 21 #pragma GCC diagnostic push 22 #pragma GCC diagnostic ignored "-Wunused-local-typedefs" 23 #endif 24 25 namespace boost { namespace gil { 26 27 /// \ingroup PixelIteratorConcept 28 /// \brief Concept for iterators, locators and views that can define a type just like the given 29 /// iterator, locator or view, except it supports runtime specified step along the X navigation. 30 /// 31 /// \code 32 /// concept HasDynamicXStepTypeConcept<typename T> 33 /// { 34 /// typename dynamic_x_step_type<T>; 35 /// where Metafunction<dynamic_x_step_type<T> >; 36 /// }; 37 /// \endcode 38 template <typename T> 39 struct HasDynamicXStepTypeConcept 40 { constraintsboost::gil::HasDynamicXStepTypeConcept41 void constraints() 42 { 43 using type = typename dynamic_x_step_type<T>::type; 44 ignore_unused_variable_warning(type{}); 45 } 46 }; 47 48 /// \ingroup PixelLocatorConcept 49 /// \brief Concept for locators and views that can define a type just like the given locator or view, 50 /// except it supports runtime specified step along the Y navigation 51 /// \code 52 /// concept HasDynamicYStepTypeConcept<typename T> 53 /// { 54 /// typename dynamic_y_step_type<T>; 55 /// where Metafunction<dynamic_y_step_type<T> >; 56 /// }; 57 /// \endcode 58 template <typename T> 59 struct HasDynamicYStepTypeConcept 60 { constraintsboost::gil::HasDynamicYStepTypeConcept61 void constraints() 62 { 63 using type = typename dynamic_y_step_type<T>::type; 64 ignore_unused_variable_warning(type{}); 65 } 66 }; 67 68 }} // namespace boost::gil 69 70 #if defined(BOOST_CLANG) 71 #pragma clang diagnostic pop 72 #endif 73 74 #if defined(BOOST_GCC) && (BOOST_GCC >= 40900) 75 #pragma GCC diagnostic pop 76 #endif 77 78 #endif 79