concepts.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //
  2. // Copyright 2018 Mateusz Loskot <mateusz at loskot dot net>
  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. // FIXME: Avoid Clang's flooding of non-disableable warnings like:
  9. // "T does not declare any constructor to initialize its non-modifiable members"
  10. // when compiling with concepts check enabled.
  11. // See https://bugs.llvm.org/show_bug.cgi?id=41759
  12. #if !defined(BOOST_GIL_USE_CONCEPT_CHECK) && !defined(__clang__)
  13. #error Compile with BOOST_GIL_USE_CONCEPT_CHECK defined
  14. #endif
  15. // FIXME: There are missing headers internally, leading to incomplete types
  16. #if 0
  17. #include <boost/gil/image_view.hpp>
  18. #include <boost/gil/planar_pixel_reference.hpp>
  19. #include <boost/gil/typedefs.hpp>
  20. #else
  21. #include <boost/gil.hpp>
  22. #endif
  23. namespace gil = boost::gil;
  24. template <typename View>
  25. void test_view()
  26. {
  27. boost::function_requires<gil::ImageViewConcept<View>>();
  28. boost::function_requires<gil::CollectionImageViewConcept<View>>();
  29. boost::function_requires<gil::ForwardCollectionImageViewConcept<View>>();
  30. boost::function_requires<gil::ReversibleCollectionImageViewConcept<View>>();
  31. }
  32. template <typename View>
  33. void test_view_planar()
  34. {
  35. boost::function_requires<gil::ImageViewConcept<View>>();
  36. boost::function_requires<gil::CollectionImageViewConcept<View>>();
  37. }
  38. int main()
  39. {
  40. test_view<gil::gray8_view_t>();
  41. test_view<gil::gray8c_view_t>();
  42. test_view<gil::abgr8_view_t>();
  43. test_view<gil::abgr8_step_view_t>();
  44. test_view<gil::abgr8c_view_t>();
  45. test_view<gil::abgr8c_step_view_t>();
  46. test_view<gil::argb8_view_t>();
  47. test_view<gil::argb8_step_view_t>();
  48. test_view<gil::argb8c_view_t>();
  49. test_view<gil::argb8c_step_view_t>();
  50. test_view<gil::bgr8_view_t>();
  51. test_view<gil::bgr8_step_view_t>();
  52. test_view<gil::bgr8c_view_t>();
  53. test_view<gil::bgr8c_step_view_t>();
  54. test_view<gil::bgra8_view_t>();
  55. test_view<gil::bgra8_step_view_t>();
  56. test_view<gil::bgra8c_view_t>();
  57. test_view<gil::bgra8c_step_view_t>();
  58. test_view<gil::rgb8_view_t>();
  59. test_view<gil::rgb8_step_view_t>();
  60. test_view<gil::rgb8c_view_t>();
  61. test_view<gil::rgb8c_step_view_t>();
  62. test_view_planar<gil::rgb8_planar_view_t>();
  63. test_view_planar<gil::rgb8_planar_step_view_t>();
  64. test_view_planar<gil::rgb8c_planar_view_t>();
  65. test_view_planar<gil::rgb8c_planar_step_view_t>();
  66. test_view<gil::rgba8_view_t>();
  67. test_view<gil::rgba8_step_view_t>();
  68. test_view<gil::rgba8c_view_t>();
  69. test_view<gil::rgba8c_step_view_t>();
  70. test_view_planar<gil::rgba8_planar_view_t>();
  71. test_view_planar<gil::rgba8_planar_step_view_t>();
  72. test_view_planar<gil::rgba8c_planar_view_t>();
  73. test_view_planar<gil::rgba8c_planar_step_view_t>();
  74. test_view<gil::cmyk8_view_t>();
  75. test_view<gil::cmyk8_step_view_t>();
  76. test_view<gil::cmyk8c_view_t>();
  77. test_view<gil::cmyk8c_step_view_t>();
  78. test_view_planar<gil::cmyk8_planar_view_t>();
  79. test_view_planar<gil::cmyk8_planar_step_view_t>();
  80. test_view_planar<gil::cmyk8c_planar_view_t>();
  81. test_view_planar<gil::cmyk8c_planar_step_view_t>();
  82. return 0;
  83. }