typeof.hpp 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*=============================================================================
  2. Copyright (c) 2006 Tobias Schwinger
  3. http://spirit.sourceforge.net/
  4. Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. =============================================================================*/
  7. #if !defined(BOOST_SPIRIT_ACTOR_TYPEOF_HPP)
  8. #define BOOST_SPIRIT_ACTOR_TYPEOF_HPP
  9. #include <boost/spirit/home/classic/namespace.hpp>
  10. #include <boost/typeof/typeof.hpp>
  11. namespace boost { namespace spirit {
  12. BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
  13. template<typename T, typename ActionT> class ref_actor;
  14. template<typename T, typename ActionT> class ref_value_actor;
  15. template<typename T, typename ValueT, typename ActionT>
  16. class ref_const_ref_actor;
  17. template<typename T, typename ValueT, typename ActionT>
  18. class ref_const_ref_value_actor;
  19. template<typename T, typename Value1T, typename Value2T, typename ActionT>
  20. class ref_const_ref_const_ref_actor;
  21. struct assign_action;
  22. struct clear_action;
  23. struct increment_action;
  24. struct decrement_action;
  25. struct push_back_action;
  26. struct push_front_action;
  27. struct insert_key_action;
  28. struct insert_at_action;
  29. struct assign_key_action;
  30. template<typename T> class swap_actor;
  31. BOOST_SPIRIT_CLASSIC_NAMESPACE_END
  32. }} // namespace BOOST_SPIRIT_CLASSIC_NS
  33. #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
  34. BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_actor,2)
  35. #if !defined(BOOST_SPIRIT_CORE_TYPEOF_HPP)
  36. // this part also lives in the core master header and is deprecated there...
  37. BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_value_actor,2)
  38. BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_const_ref_actor,3)
  39. BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::assign_action)
  40. BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::push_back_action)
  41. #endif
  42. BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_const_ref_value_actor,3)
  43. BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_const_ref_const_ref_actor,4)
  44. BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::clear_action)
  45. BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::increment_action)
  46. BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::decrement_action)
  47. BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::push_front_action)
  48. BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::insert_key_action)
  49. BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::insert_at_action)
  50. BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::assign_key_action)
  51. BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::swap_actor,1)
  52. #endif