diff options
Diffstat (limited to 'boost/spirit/home/classic')
6 files changed, 12 insertions, 4 deletions
diff --git a/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp b/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp index 1f18b3255c..002d221eeb 100644 --- a/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp +++ b/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp @@ -281,17 +281,19 @@ struct grammar_definition grammar_destruct(GrammarT* self) { #if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) - typedef impl::grammar_helper_base<GrammarT> helper_base_t; typedef grammar_helper_list<GrammarT> helper_list_t; - typedef typename helper_list_t::vector_t::reverse_iterator iterator_t; helper_list_t& helpers = grammartract_helper_list::do_(self); # if defined(BOOST_INTEL_CXX_VERSION) + typedef typename helper_list_t::vector_t::reverse_iterator iterator_t; + for (iterator_t i = helpers.rbegin(); i != helpers.rend(); ++i) (*i)->undefine(self); # else + typedef impl::grammar_helper_base<GrammarT> helper_base_t; + std::for_each(helpers.rbegin(), helpers.rend(), std::bind2nd(std::mem_fun(&helper_base_t::undefine), self)); # endif diff --git a/boost/spirit/home/classic/core/non_terminal/impl/rule.ipp b/boost/spirit/home/classic/core/non_terminal/impl/rule.ipp index 9f10306f7c..137694ef2f 100644 --- a/boost/spirit/home/classic/core/non_terminal/impl/rule.ipp +++ b/boost/spirit/home/classic/core/non_terminal/impl/rule.ipp @@ -24,6 +24,7 @@ #include <boost/spirit/home/classic/core/non_terminal/parser_context.hpp> #include <boost/spirit/home/classic/core/non_terminal/parser_id.hpp> #include <boost/type_traits/is_base_and_derived.hpp> +#include <boost/mpl/if.hpp> /////////////////////////////////////////////////////////////////////////////// namespace boost { namespace spirit { diff --git a/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp b/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp index f6bdaaf40d..fc952fedea 100644 --- a/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp +++ b/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp @@ -10,6 +10,8 @@ #if !defined(BOOST_SPIRIT_SUBRULE_IPP) #define BOOST_SPIRIT_SUBRULE_IPP +#include <boost/mpl/if.hpp> + namespace boost { namespace spirit { BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN diff --git a/boost/spirit/home/classic/core/non_terminal/subrule.hpp b/boost/spirit/home/classic/core/non_terminal/subrule.hpp index 8b25d8d0e3..1d16d70aea 100644 --- a/boost/spirit/home/classic/core/non_terminal/subrule.hpp +++ b/boost/spirit/home/classic/core/non_terminal/subrule.hpp @@ -11,6 +11,9 @@ #include <boost/config.hpp> #include <boost/static_assert.hpp> +#include <boost/mpl/if.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/type_traits/is_same.hpp> #include <boost/spirit/home/classic/namespace.hpp> #include <boost/spirit/home/classic/core/parser.hpp> diff --git a/boost/spirit/home/classic/iterator/position_iterator.hpp b/boost/spirit/home/classic/iterator/position_iterator.hpp index e352f883ae..5607047264 100644 --- a/boost/spirit/home/classic/iterator/position_iterator.hpp +++ b/boost/spirit/home/classic/iterator/position_iterator.hpp @@ -95,7 +95,7 @@ BOOST_SPIRIT_CLASSIC_NAMESPACE_END // This must be included here for full compatibility with old MSVC -#include "boost/spirit/home/classic/iterator/impl/position_iterator.ipp" +#include <boost/spirit/home/classic/iterator/impl/position_iterator.ipp> /////////////////////////////////////////////////////////////////////////////// namespace boost { namespace spirit { diff --git a/boost/spirit/home/classic/tree/parse_tree_utils.hpp b/boost/spirit/home/classic/tree/parse_tree_utils.hpp index 105d80eb13..b9e52e3a2d 100644 --- a/boost/spirit/home/classic/tree/parse_tree_utils.hpp +++ b/boost/spirit/home/classic/tree/parse_tree_utils.hpp @@ -59,6 +59,6 @@ BOOST_SPIRIT_CLASSIC_NAMESPACE_END } // namespace spirit } // namespace boost -#include "boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp" +#include <boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp> #endif // !defined(PARSE_TREE_UTILS_HPP) |