summaryrefslogtreecommitdiff
path: root/boost/spirit/home/x3/support/traits
diff options
context:
space:
mode:
Diffstat (limited to 'boost/spirit/home/x3/support/traits')
-rw-r--r--boost/spirit/home/x3/support/traits/attribute_category.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/attribute_of.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/attribute_type.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/container_traits.hpp34
-rw-r--r--boost/spirit/home/x3/support/traits/handles_container.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/has_attribute.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/is_parser.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/is_substitute.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/is_variant.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/make_attribute.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/move_to.hpp8
-rw-r--r--boost/spirit/home/x3/support/traits/numeric_traits.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/optional_traits.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/print_attribute.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/print_token.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/string_traits.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/transform_attribute.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/tuple_traits.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/value_traits.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/variant_find_substitute.hpp4
-rw-r--r--boost/spirit/home/x3/support/traits/variant_has_substitute.hpp4
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