define_assoc_struct.hpp 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*=============================================================================
  2. Copyright (c) 2010-2011 Christopher Schmidt
  3. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. ==============================================================================*/
  6. #ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP
  7. #define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP
  8. #include <boost/fusion/support/config.hpp>
  9. #include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
  10. #include <boost/fusion/adapted/struct/detail/define_struct.hpp>
  11. #include <boost/preprocessor/cat.hpp>
  12. #define BOOST_FUSION_DEFINE_ASSOC_STRUCT_FILLER_0(X, Y, Z) \
  13. ((X, Y, Z)) BOOST_FUSION_DEFINE_ASSOC_STRUCT_FILLER_1
  14. #define BOOST_FUSION_DEFINE_ASSOC_STRUCT_FILLER_1(X, Y, Z) \
  15. ((X, Y, Z)) BOOST_FUSION_DEFINE_ASSOC_STRUCT_FILLER_0
  16. #define BOOST_FUSION_DEFINE_ASSOC_STRUCT_FILLER_0_END
  17. #define BOOST_FUSION_DEFINE_ASSOC_STRUCT_FILLER_1_END
  18. #define BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT( \
  19. TEMPLATE_PARAMS_SEQ, NAMESPACE_SEQ, NAME, ATTRIBUTES) \
  20. \
  21. BOOST_FUSION_DEFINE_TPL_STRUCT_IMPL( \
  22. TEMPLATE_PARAMS_SEQ, \
  23. (0)NAMESPACE_SEQ, \
  24. NAME, \
  25. BOOST_PP_CAT( \
  26. BOOST_FUSION_DEFINE_ASSOC_STRUCT_FILLER_0(0,0,0)ATTRIBUTES,_END), \
  27. 3) \
  28. \
  29. BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT( \
  30. TEMPLATE_PARAMS_SEQ, \
  31. (BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ) NAME)\
  32. TEMPLATE_PARAMS_SEQ, \
  33. ATTRIBUTES)
  34. #define BOOST_FUSION_DEFINE_ASSOC_STRUCT(NAMESPACE_SEQ, NAME, ATTRIBUTES) \
  35. BOOST_FUSION_DEFINE_STRUCT_IMPL( \
  36. (0)NAMESPACE_SEQ, \
  37. NAME, \
  38. BOOST_PP_CAT( \
  39. BOOST_FUSION_DEFINE_ASSOC_STRUCT_FILLER_0(0,0,0)ATTRIBUTES,_END), \
  40. 3) \
  41. \
  42. BOOST_FUSION_ADAPT_ASSOC_STRUCT( \
  43. BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ) NAME, \
  44. ATTRIBUTES)
  45. #endif