/usr/include/boost/spirit/home/support
NameSizeModeActions
algorithm/-0755rm
auto/-0755rm
auxiliary/-0755rm
char_encoding/-0755rm
char_set/-0755rm
detail/-0755rm
iterators/-0755rm
nonterminal/-0755rm
utree/-0755rm
action_dispatch.hpp75180644editdlrm
adapt_adt_attributes.hpp138350644editdlrm
argument.hpp66490644editdlrm
argument_expression.hpp29090644editdlrm
assert_msg.hpp22730644editdlrm
attributes.hpp458020644editdlrm
attributes_fwd.hpp118710644editdlrm
auto.hpp12980644editdlrm
char_class.hpp329110644editdlrm
common_terminals.hpp186490644editdlrm
container.hpp153580644editdlrm
context.hpp93650644editdlrm
extended_variant.hpp53510644editdlrm
handles_container.hpp20840644editdlrm
has_semantic_action.hpp15170644editdlrm
info.hpp48360644editdlrm
lazy.hpp12250644editdlrm
limits.hpp6070644editdlrm
make_component.hpp155930644editdlrm
meta_compiler.hpp125030644editdlrm
modify.hpp37650644editdlrm
multi_pass.hpp17080644editdlrm
multi_pass_wrapper.hpp14190644editdlrm
numeric_traits.hpp35590644editdlrm
sequence_base_id.hpp13620644editdlrm
string_traits.hpp104740644editdlrm
terminal.hpp232960644editdlrm
terminal_expression.hpp5830644editdlrm
unused.hpp23470644editdlrm
utf8.hpp36130644editdlrm
utree.hpp8120644editdlrm
Edit: /usr/include/boost/spirit/home/support/modify.hpp (3765B)
/*============================================================================= Copyright (c) 2001-2011 Joel de Guzman 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) =============================================================================*/ #ifndef BOOST_SPIRIT_MODIFY_OCTOBER_25_2008_0142PM #define BOOST_SPIRIT_MODIFY_OCTOBER_25_2008_0142PM #if defined(_MSC_VER) #pragma once #endif #include #include namespace boost { namespace spirit { template struct is_modifier_directive; // Testing if a modifier set includes a modifier T involves // checking for inheritance (i.e. Modifiers is derived from T) template struct has_modifier : is_base_of {}; // Adding modifiers is done using multi-inheritance template struct compound_modifier : Current, New { compound_modifier() : Current(), New() {} compound_modifier(Current const& current, New const& new_) : Current(current), New(new_) {} }; // Don't add if New is already in Current template struct compound_modifier< Current, New, typename enable_if >::type> : Current { compound_modifier() : Current() {} compound_modifier(Current const& current, New const&) : Current(current) {} }; // Special case if Current is unused_type template struct compound_modifier : New { compound_modifier() : New() {} compound_modifier(unused_type, New const& new_) : New(new_) {} }; // Domains may specialize this modify metafunction to allow // directives to add information to the Modifier template // parameter that is passed to the make_component metafunction. // By default, we return the modifiers untouched template struct modify { typedef void proto_is_callable_; template struct result; template struct result { typedef typename remove_const< typename remove_reference::type>::type tag_type; typedef typename remove_const< typename remove_reference::type>::type modifiers_type; typedef typename mpl::if_< is_modifier_directive , compound_modifier , Modifiers>::type type; }; template typename result::type operator()(Tag tag, Modifiers modifiers) const { return op(tag, modifiers, is_modifier_directive()); } template Modifiers op(Tag /*tag*/, Modifiers modifiers, mpl::false_) const { return modifiers; } template compound_modifier op(Tag tag, Modifiers modifiers, mpl::true_) const { return compound_modifier(modifiers, tag); } }; }} #endif