| /*============================================================================= |
| Copyright (c) 2006 Tobias Schwinger |
| http://spirit.sourceforge.net/ |
| |
| Distributed under the Boost Software License, Version 1.0. (See accompanying |
| file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| =============================================================================*/ |
| #if !defined(BOOST_SPIRIT_DYNAMIC_TYPEOF_HPP) |
| #define BOOST_SPIRIT_DYNAMIC_TYPEOF_HPP |
| |
| #include <boost/typeof/typeof.hpp> |
| |
| #include <boost/spirit/home/classic/namespace.hpp> |
| #include <boost/spirit/home/classic/core/typeof.hpp> |
| |
| #include <boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp> |
| |
| namespace boost { namespace spirit { |
| |
| BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN |
| |
| // if.hpp |
| template <class ParsableT, typename CondT> struct if_parser; |
| template <class ParsableTrueT, class ParsableFalseT, typename CondT> |
| struct if_else_parser; |
| |
| // for.hpp |
| namespace impl { |
| template<typename InitF, typename CondT, typename StepF, class ParsableT> |
| struct for_parser; |
| } |
| |
| // while.hpp |
| template<typename ParsableT, typename CondT, bool is_do_parser> |
| struct while_parser; |
| |
| // lazy.hpp |
| template<typename ActorT> struct lazy_parser; |
| |
| // rule_alias.hpp |
| template <typename ParserT> class rule_alias; |
| |
| // switch.hpp |
| template <typename CaseT, typename CondT> struct switch_parser; |
| template <int N, class ParserT, bool IsDefault> struct case_parser; |
| |
| // select.hpp |
| template <typename TupleT, typename BehaviourT, typename T> |
| struct select_parser; |
| |
| BOOST_SPIRIT_CLASSIC_NAMESPACE_END |
| |
| }} // namespace BOOST_SPIRIT_CLASSIC_NS |
| |
| |
| #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() |
| |
| // if.hpp |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::if_parser,2) |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::if_else_parser,3) |
| |
| // for.hpp |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::impl::for_parser,4) |
| |
| // while.hpp |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::while_parser,(class)(class)(bool)) |
| |
| // lazy.hpp |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::lazy_parser,1) |
| |
| // stored_rule.hpp (has forward header) |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::stored_rule,(typename)(typename)(typename)(bool)) |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::stored_rule,3) |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::stored_rule,2) |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::stored_rule,1) |
| BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::stored_rule<>) |
| |
| // rule_alias.hpp |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::rule_alias,1) |
| |
| // switch.hpp |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::switch_parser,2) |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::case_parser,(int)(class)(bool)) |
| |
| // select.hpp |
| BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::select_parser,3) |
| |
| #endif |
| |