facilities.cxx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # /* **************************************************************************
  2. # * *
  3. # * (C) Copyright Paul Mensonides 2002.
  4. # * Distributed under the Boost Software License, Version 1.0. (See
  5. # * accompanying file LICENSE_1_0.txt or copy at
  6. # * http://www.boost.org/LICENSE_1_0.txt)
  7. # * *
  8. # ************************************************************************** */
  9. #
  10. # /* See http://www.boost.org for most recent version. */
  11. #
  12. # include <boost/preprocessor/cat.hpp>
  13. # include <boost/preprocessor/facilities.hpp>
  14. # include <boost/preprocessor/arithmetic/add.hpp>
  15. # include <boost/preprocessor/arithmetic/mul.hpp>
  16. # include <libs/preprocessor/test/test.h>
  17. BEGIN BOOST_PP_APPLY(BOOST_PP_NIL) 0 == 0 END
  18. BEGIN BOOST_PP_APPLY((0)) == 0 END
  19. BEGIN BOOST_PP_APPLY((BOOST_PP_EMPTY))() 0 == 0 END
  20. # define MACRO(x, y, z) 1
  21. # define ARGS (1, 2, 3)
  22. BEGIN BOOST_PP_EXPAND(MACRO ARGS) == 1 END
  23. BEGIN BOOST_PP_IDENTITY(1)() == 1 END
  24. BEGIN BOOST_PP_IDENTITY_N(36,10)(0,1,2,3,4,5,6,7,8,9) == 36 END
  25. BEGIN BOOST_PP_CAT(BOOST_PP_INTERCEPT, 2) 1 == 1 END
  26. #if BOOST_PP_VARIADICS
  27. #define OVMAC_1(x) BOOST_PP_ADD(x,5)
  28. #define OVMAC_2(x,y) BOOST_PP_ADD(x,y)
  29. #define OVMAC_3(x,y,z) BOOST_PP_ADD(BOOST_PP_MUL(x,y),z)
  30. #define OVMAC_4(x,y,z,a) BOOST_PP_ADD(BOOST_PP_MUL(x,y),BOOST_PP_MUL(a,z))
  31. #if BOOST_PP_VARIADICS_MSVC
  32. #define OVTEST(...) BOOST_PP_CAT(BOOST_PP_OVERLOAD(OVMAC_,__VA_ARGS__)(__VA_ARGS__),BOOST_PP_EMPTY())
  33. #else
  34. #define OVTEST(...) BOOST_PP_OVERLOAD(OVMAC_,__VA_ARGS__)(__VA_ARGS__)
  35. #endif
  36. BEGIN OVTEST(3,4,5) == 17 END
  37. BEGIN OVTEST(9,3,2,7) == 41 END
  38. BEGIN OVTEST(8) == 13 END
  39. BEGIN OVTEST(24,61) == 85 END
  40. #endif