diff options
Diffstat (limited to 'boost/spirit/home/x3/support/traits')
21 files changed, 28 insertions, 90 deletions
diff --git a/boost/spirit/home/x3/support/traits/attribute_category.hpp b/boost/spirit/home/x3/support/traits/attribute_category.hpp index a003327de2..53e806c613 100644 --- a/boost/spirit/home/x3/support/traits/attribute_category.hpp +++ b/boost/spirit/home/x3/support/traits/attribute_category.hpp @@ -8,10 +8,6 @@ #if !defined(BOOST_SPIRIT_X3_ATTRIBUTE_CATEGORY_JAN_4_2012_1150AM) #define BOOST_SPIRIT_X3_ATTRIBUTE_CATEGORY_JAN_4_2012_1150AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/mpl/identity.hpp> #include <boost/mpl/logical.hpp> #include <boost/mpl/eval_if.hpp> diff --git a/boost/spirit/home/x3/support/traits/attribute_of.hpp b/boost/spirit/home/x3/support/traits/attribute_of.hpp index 71f70b0273..93ee79b57b 100644 --- a/boost/spirit/home/x3/support/traits/attribute_of.hpp +++ b/boost/spirit/home/x3/support/traits/attribute_of.hpp @@ -9,10 +9,6 @@ #if !defined(BOOST_SPIRIT_X3_ATTRIBUTE_OF_JAN_7_2012_0914AM) #define BOOST_SPIRIT_X3_ATTRIBUTE_OF_JAN_7_2012_0914AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/spirit/home/x3/support/utility/sfinae.hpp> #include <boost/mpl/identity.hpp> #include <boost/utility/enable_if.hpp> diff --git a/boost/spirit/home/x3/support/traits/attribute_type.hpp b/boost/spirit/home/x3/support/traits/attribute_type.hpp index 55e788b41c..f1b8d871a9 100644 --- a/boost/spirit/home/x3/support/traits/attribute_type.hpp +++ b/boost/spirit/home/x3/support/traits/attribute_type.hpp @@ -8,10 +8,6 @@ #if !defined(BOOST_SPIRIT_X3_ATTRIBUTE_TYPE_JAN_5_2012_0358PM) #define BOOST_SPIRIT_X3_ATTRIBUTE_TYPE_JAN_5_2012_0358PM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/mpl/identity.hpp> namespace boost { namespace spirit { namespace x3 { namespace traits diff --git a/boost/spirit/home/x3/support/traits/container_traits.hpp b/boost/spirit/home/x3/support/traits/container_traits.hpp index c382b7bfaa..ed9213b68c 100644 --- a/boost/spirit/home/x3/support/traits/container_traits.hpp +++ b/boost/spirit/home/x3/support/traits/container_traits.hpp @@ -9,10 +9,6 @@ #if !defined(BOOST_SPIRIT_X3_CONTAINER_FEBRUARY_06_2007_1001AM) #define BOOST_SPIRIT_X3_CONTAINER_FEBRUARY_06_2007_1001AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/fusion/support/category_of.hpp> #include <boost/spirit/home/x3/support/unused.hpp> #include <boost/detail/iterator.hpp> @@ -20,8 +16,12 @@ #include <boost/mpl/has_xxx.hpp> #include <boost/mpl/bool.hpp> #include <boost/mpl/identity.hpp> + #include <vector> +#include <map> #include <string> +#include <iterator> +#include <algorithm> namespace boost { namespace spirit { namespace x3 { namespace traits { @@ -112,10 +112,22 @@ namespace boost { namespace spirit { namespace x3 { namespace traits template <typename Container, typename Enable = void> struct push_back_container { + template <typename Key, typename Value, typename Compare, typename Allocator, typename T> + static void push_back(std::map<Key, Value, Compare, Allocator>& c, T&& val) + { + c.insert(std::move(val)); + } + + template <typename Container_, typename T> + static void push_back(Container_& c, T&& val) + { + c.push_back(std::move(val)); + } + template <typename T> static bool call(Container& c, T&& val) { - c.insert(c.end(), std::move(val)); + push_back(c, std::move(val)); return true; } }; @@ -154,17 +166,23 @@ namespace boost { namespace spirit { namespace x3 { namespace traits template <typename Container_> static void reserve(Container_& c, std::size_t size) {} - template <typename T> - static void reserve(std::vector<T>& c, std::size_t size) + template <typename T, typename Allocator> + static void reserve(std::vector<T, Allocator>& c, std::size_t size) { c.reserve(size); } + + template <typename Container_, typename Iterator> + static void insert(Container_& c, Iterator first, Iterator last) + { + std::copy(first, last, std::inserter(c, c.end())); + } template <typename Iterator> static bool call(Container& c, Iterator first, Iterator last) { reserve(c, c.size() + std::distance(first, last)); - c.insert(c.end(), first, last); + insert(c, first, last); return true; } }; diff --git a/boost/spirit/home/x3/support/traits/handles_container.hpp b/boost/spirit/home/x3/support/traits/handles_container.hpp index 3fe05aef87..ad0d1f19ea 100644 --- a/boost/spirit/home/x3/support/traits/handles_container.hpp +++ b/boost/spirit/home/x3/support/traits/handles_container.hpp @@ -8,10 +8,6 @@ #if !defined(BOOST_SPIRIT_X3_HANDLES_CONTAINER_DEC_18_2010_0920AM) #define BOOST_SPIRIT_X3_HANDLES_CONTAINER_DEC_18_2010_0920AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/mpl/bool.hpp> namespace boost { namespace spirit { namespace x3 { namespace traits diff --git a/boost/spirit/home/x3/support/traits/has_attribute.hpp b/boost/spirit/home/x3/support/traits/has_attribute.hpp index c8b1f8a347..cf4ab00801 100644 --- a/boost/spirit/home/x3/support/traits/has_attribute.hpp +++ b/boost/spirit/home/x3/support/traits/has_attribute.hpp @@ -9,10 +9,6 @@ #if !defined(BOOST_SPIRIT_X3_HAS_ATTRIBUTE_JUN_6_2012_1714PM) #define BOOST_SPIRIT_X3_HAS_ATTRIBUTE_JUN_6_2012_1714PM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/spirit/home/x3/support/traits/attribute_of.hpp> #include <boost/spirit/home/x3/support/utility/sfinae.hpp> #include <boost/mpl/bool.hpp> diff --git a/boost/spirit/home/x3/support/traits/is_parser.hpp b/boost/spirit/home/x3/support/traits/is_parser.hpp index cfbe8f74b4..a65d984584 100644 --- a/boost/spirit/home/x3/support/traits/is_parser.hpp +++ b/boost/spirit/home/x3/support/traits/is_parser.hpp @@ -8,10 +8,6 @@ #if !defined(BOOST_SPIRIT_X3_IS_PARSER_MAY_20_2013_0235PM) #define BOOST_SPIRIT_X3_IS_PARSER_MAY_20_2013_0235PM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/mpl/bool.hpp> #include <boost/spirit/home/x3/core/parser.hpp> #include <boost/spirit/home/x3/support/utility/sfinae.hpp> diff --git a/boost/spirit/home/x3/support/traits/is_substitute.hpp b/boost/spirit/home/x3/support/traits/is_substitute.hpp index 9e023371ce..ef1c472c7f 100644 --- a/boost/spirit/home/x3/support/traits/is_substitute.hpp +++ b/boost/spirit/home/x3/support/traits/is_substitute.hpp @@ -8,10 +8,6 @@ #if !defined(BOOST_SPIRIT_X3_IS_SUBSTITUTE_JAN_9_2012_1049PM) #define BOOST_SPIRIT_X3_IS_SUBSTITUTE_JAN_9_2012_1049PM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/spirit/home/x3/support/traits/container_traits.hpp> #include <boost/fusion/include/is_sequence.hpp> #include <boost/fusion/include/map.hpp> diff --git a/boost/spirit/home/x3/support/traits/is_variant.hpp b/boost/spirit/home/x3/support/traits/is_variant.hpp index 829a673c3f..a936044a81 100644 --- a/boost/spirit/home/x3/support/traits/is_variant.hpp +++ b/boost/spirit/home/x3/support/traits/is_variant.hpp @@ -8,10 +8,6 @@ #if !defined(BOOST_SPIRIT_X3_IS_VARIANT_JAN_10_2012_0823AM) #define BOOST_SPIRIT_X3_IS_VARIANT_JAN_10_2012_0823AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/variant.hpp> #include <boost/mpl/has_xxx.hpp> #include <boost/mpl/bool.hpp> diff --git a/boost/spirit/home/x3/support/traits/make_attribute.hpp b/boost/spirit/home/x3/support/traits/make_attribute.hpp index cf3baeedaf..9465228c1d 100644 --- a/boost/spirit/home/x3/support/traits/make_attribute.hpp +++ b/boost/spirit/home/x3/support/traits/make_attribute.hpp @@ -9,10 +9,6 @@ #if !defined(BOOST_SPIRIT_X3_MAKE_ATTRIBUTE_JAN_8_2012_0721PM) #define BOOST_SPIRIT_X3_MAKE_ATTRIBUTE_JAN_8_2012_0721PM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/mpl/if.hpp> #include <boost/type_traits/remove_const.hpp> #include <boost/type_traits/add_reference.hpp> diff --git a/boost/spirit/home/x3/support/traits/move_to.hpp b/boost/spirit/home/x3/support/traits/move_to.hpp index ecd7c6f202..fd3d59d7e2 100644 --- a/boost/spirit/home/x3/support/traits/move_to.hpp +++ b/boost/spirit/home/x3/support/traits/move_to.hpp @@ -9,10 +9,6 @@ #if !defined(BOOST_SPIRIT_X3_MOVE_TO_JAN_17_2013_0859PM) #define BOOST_SPIRIT_X3_MOVE_TO_JAN_17_2013_0859PM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/spirit/home/x3/support/traits/attribute_category.hpp> #include <boost/spirit/home/x3/support/traits/tuple_traits.hpp> #include <boost/spirit/home/x3/support/traits/variant_has_substitute.hpp> @@ -181,14 +177,14 @@ namespace boost { namespace spirit { namespace x3 { namespace traits template <typename T> inline void move_to(T& src, T& dest) { - if (&src != &dest) + if (boost::addressof(src) != boost::addressof(dest)) dest = std::move(src); } template <typename T> inline void move_to(T const& src, T& dest) { - if (&src != &dest) + if (boost::addressof(src) != boost::addressof(dest)) dest = std::move(src); } diff --git a/boost/spirit/home/x3/support/traits/numeric_traits.hpp b/boost/spirit/home/x3/support/traits/numeric_traits.hpp index 3cdbdaec63..9f455cc627 100644 --- a/boost/spirit/home/x3/support/traits/numeric_traits.hpp +++ b/boost/spirit/home/x3/support/traits/numeric_traits.hpp @@ -7,10 +7,6 @@ #if !defined(BOOST_SPIRIT_X3_NUMERIC_TRAITS_JAN_07_2011_0722AM) #define BOOST_SPIRIT_X3_NUMERIC_TRAITS_JAN_07_2011_0722AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/config.hpp> #include <boost/integer_traits.hpp> #include <boost/mpl/bool.hpp> diff --git a/boost/spirit/home/x3/support/traits/optional_traits.hpp b/boost/spirit/home/x3/support/traits/optional_traits.hpp index 65568b0265..3c5e853797 100644 --- a/boost/spirit/home/x3/support/traits/optional_traits.hpp +++ b/boost/spirit/home/x3/support/traits/optional_traits.hpp @@ -9,10 +9,6 @@ #if !defined(BOOST_SPIRIT_X3_OPTIONAL_TRAITS_FEBRUARY_06_2007_1001AM) #define BOOST_SPIRIT_X3_OPTIONAL_TRAITS_FEBRUARY_06_2007_1001AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/spirit/home/x3/support/unused.hpp> #include <boost/optional/optional.hpp> #include <boost/mpl/identity.hpp> diff --git a/boost/spirit/home/x3/support/traits/print_attribute.hpp b/boost/spirit/home/x3/support/traits/print_attribute.hpp index 47bffce1a1..cc76e02d30 100644 --- a/boost/spirit/home/x3/support/traits/print_attribute.hpp +++ b/boost/spirit/home/x3/support/traits/print_attribute.hpp @@ -8,10 +8,6 @@ #if !defined(BOOST_SPIRIT_X3_PRINT_ATTRIBUTE_JANUARY_20_2013_0814AM) #define BOOST_SPIRIT_X3_PRINT_ATTRIBUTE_JANUARY_20_2013_0814AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/variant.hpp> #include <boost/optional/optional.hpp> #include <boost/fusion/include/is_sequence.hpp> diff --git a/boost/spirit/home/x3/support/traits/print_token.hpp b/boost/spirit/home/x3/support/traits/print_token.hpp index f1429f4776..e8f4dea325 100644 --- a/boost/spirit/home/x3/support/traits/print_token.hpp +++ b/boost/spirit/home/x3/support/traits/print_token.hpp @@ -8,10 +8,6 @@ #if !defined(BOOST_SPIRIT_X3_PRINT_TOKEN_JANUARY_20_2013_0814AM) #define BOOST_SPIRIT_X3_PRINT_TOKEN_JANUARY_20_2013_0814AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/mpl/if.hpp> #include <boost/mpl/and.hpp> #include <boost/type_traits/is_convertible.hpp> diff --git a/boost/spirit/home/x3/support/traits/string_traits.hpp b/boost/spirit/home/x3/support/traits/string_traits.hpp index 46ee356cdc..44c8d144a8 100644 --- a/boost/spirit/home/x3/support/traits/string_traits.hpp +++ b/boost/spirit/home/x3/support/traits/string_traits.hpp @@ -9,10 +9,6 @@ #if !defined(BOOST_SPIRIT_X3_STRING_TRAITS_OCTOBER_2008_1252PM) #define BOOST_SPIRIT_X3_STRING_TRAITS_OCTOBER_2008_1252PM -#if defined(_MSC_VER) -#pragma once -#endif - #include <string> #include <boost/mpl/bool.hpp> #include <boost/mpl/identity.hpp> diff --git a/boost/spirit/home/x3/support/traits/transform_attribute.hpp b/boost/spirit/home/x3/support/traits/transform_attribute.hpp index 24268520d7..98af3099e6 100644 --- a/boost/spirit/home/x3/support/traits/transform_attribute.hpp +++ b/boost/spirit/home/x3/support/traits/transform_attribute.hpp @@ -9,10 +9,6 @@ #if !defined(BOOST_SPIRIT_X3_ATTRIBUTE_TRANSFORM_JAN_8_2012_0721PM) #define BOOST_SPIRIT_X3_ATTRIBUTE_TRANSFORM_JAN_8_2012_0721PM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/mpl/identity.hpp> namespace boost { namespace spirit { namespace x3 { namespace traits diff --git a/boost/spirit/home/x3/support/traits/tuple_traits.hpp b/boost/spirit/home/x3/support/traits/tuple_traits.hpp index 17bfd4e1cb..46e4246b74 100644 --- a/boost/spirit/home/x3/support/traits/tuple_traits.hpp +++ b/boost/spirit/home/x3/support/traits/tuple_traits.hpp @@ -7,10 +7,6 @@ #if !defined(BOOST_SPIRIT_X3_TUPLE_TRAITS_JANUARY_2012_1132PM) #define BOOST_SPIRIT_X3_TUPLE_TRAITS_JANUARY_2012_1132PM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/fusion/include/is_sequence.hpp> #include <boost/fusion/include/size.hpp> #include <boost/mpl/bool.hpp> diff --git a/boost/spirit/home/x3/support/traits/value_traits.hpp b/boost/spirit/home/x3/support/traits/value_traits.hpp index 5f004c957c..d28af74d3f 100644 --- a/boost/spirit/home/x3/support/traits/value_traits.hpp +++ b/boost/spirit/home/x3/support/traits/value_traits.hpp @@ -9,10 +9,6 @@ #if !defined(BOOST_SPIRIT_X3_VALUE_TRAITS_MAY_07_2013_0203PM) #define BOOST_SPIRIT_X3_VALUE_TRAITS_MAY_07_2013_0203PM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/utility/value_init.hpp> namespace boost { namespace spirit { namespace x3 { namespace traits diff --git a/boost/spirit/home/x3/support/traits/variant_find_substitute.hpp b/boost/spirit/home/x3/support/traits/variant_find_substitute.hpp index 4de7b7d5e3..d258d54dc5 100644 --- a/boost/spirit/home/x3/support/traits/variant_find_substitute.hpp +++ b/boost/spirit/home/x3/support/traits/variant_find_substitute.hpp @@ -8,10 +8,6 @@ #if !defined(BOOST_SPIRIT_X3_VARIANT_FIND_SUBSTITUTE_APR_18_2014_930AM) #define BOOST_SPIRIT_X3_VARIANT_FIND_SUBSTITUTE_APR_18_2014_930AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/spirit/home/x3/support/traits/is_substitute.hpp> namespace boost { namespace spirit { namespace x3 { namespace traits diff --git a/boost/spirit/home/x3/support/traits/variant_has_substitute.hpp b/boost/spirit/home/x3/support/traits/variant_has_substitute.hpp index d0dfb49b8d..2f8b42a834 100644 --- a/boost/spirit/home/x3/support/traits/variant_has_substitute.hpp +++ b/boost/spirit/home/x3/support/traits/variant_has_substitute.hpp @@ -8,10 +8,6 @@ #if !defined(BOOST_SPIRIT_X3_VARIANT_HAS_SUBSTITUTE_APR_18_2014_925AM) #define BOOST_SPIRIT_X3_VARIANT_HAS_SUBSTITUTE_APR_18_2014_925AM -#if defined(_MSC_VER) -#pragma once -#endif - #include <boost/spirit/home/x3/support/traits/is_substitute.hpp> namespace boost { namespace spirit { namespace x3 { namespace traits |