isotree 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/LICENSE.txt +2 -2
  4. data/README.md +22 -1
  5. data/ext/isotree/ext.cpp +26 -0
  6. data/ext/isotree/extconf.rb +3 -3
  7. data/lib/isotree.rb +1 -0
  8. data/lib/isotree/isolation_forest.rb +86 -1
  9. data/lib/isotree/version.rb +1 -1
  10. data/vendor/cereal/LICENSE +24 -0
  11. data/vendor/cereal/README.md +85 -0
  12. data/vendor/cereal/include/cereal/access.hpp +351 -0
  13. data/vendor/cereal/include/cereal/archives/adapters.hpp +163 -0
  14. data/vendor/cereal/include/cereal/archives/binary.hpp +169 -0
  15. data/vendor/cereal/include/cereal/archives/json.hpp +1019 -0
  16. data/vendor/cereal/include/cereal/archives/portable_binary.hpp +334 -0
  17. data/vendor/cereal/include/cereal/archives/xml.hpp +956 -0
  18. data/vendor/cereal/include/cereal/cereal.hpp +1089 -0
  19. data/vendor/cereal/include/cereal/details/helpers.hpp +422 -0
  20. data/vendor/cereal/include/cereal/details/polymorphic_impl.hpp +796 -0
  21. data/vendor/cereal/include/cereal/details/polymorphic_impl_fwd.hpp +65 -0
  22. data/vendor/cereal/include/cereal/details/static_object.hpp +127 -0
  23. data/vendor/cereal/include/cereal/details/traits.hpp +1411 -0
  24. data/vendor/cereal/include/cereal/details/util.hpp +84 -0
  25. data/vendor/cereal/include/cereal/external/base64.hpp +134 -0
  26. data/vendor/cereal/include/cereal/external/rapidjson/allocators.h +284 -0
  27. data/vendor/cereal/include/cereal/external/rapidjson/cursorstreamwrapper.h +78 -0
  28. data/vendor/cereal/include/cereal/external/rapidjson/document.h +2652 -0
  29. data/vendor/cereal/include/cereal/external/rapidjson/encodedstream.h +299 -0
  30. data/vendor/cereal/include/cereal/external/rapidjson/encodings.h +716 -0
  31. data/vendor/cereal/include/cereal/external/rapidjson/error/en.h +74 -0
  32. data/vendor/cereal/include/cereal/external/rapidjson/error/error.h +161 -0
  33. data/vendor/cereal/include/cereal/external/rapidjson/filereadstream.h +99 -0
  34. data/vendor/cereal/include/cereal/external/rapidjson/filewritestream.h +104 -0
  35. data/vendor/cereal/include/cereal/external/rapidjson/fwd.h +151 -0
  36. data/vendor/cereal/include/cereal/external/rapidjson/internal/biginteger.h +290 -0
  37. data/vendor/cereal/include/cereal/external/rapidjson/internal/diyfp.h +271 -0
  38. data/vendor/cereal/include/cereal/external/rapidjson/internal/dtoa.h +245 -0
  39. data/vendor/cereal/include/cereal/external/rapidjson/internal/ieee754.h +78 -0
  40. data/vendor/cereal/include/cereal/external/rapidjson/internal/itoa.h +308 -0
  41. data/vendor/cereal/include/cereal/external/rapidjson/internal/meta.h +186 -0
  42. data/vendor/cereal/include/cereal/external/rapidjson/internal/pow10.h +55 -0
  43. data/vendor/cereal/include/cereal/external/rapidjson/internal/regex.h +740 -0
  44. data/vendor/cereal/include/cereal/external/rapidjson/internal/stack.h +232 -0
  45. data/vendor/cereal/include/cereal/external/rapidjson/internal/strfunc.h +69 -0
  46. data/vendor/cereal/include/cereal/external/rapidjson/internal/strtod.h +290 -0
  47. data/vendor/cereal/include/cereal/external/rapidjson/internal/swap.h +46 -0
  48. data/vendor/cereal/include/cereal/external/rapidjson/istreamwrapper.h +128 -0
  49. data/vendor/cereal/include/cereal/external/rapidjson/memorybuffer.h +70 -0
  50. data/vendor/cereal/include/cereal/external/rapidjson/memorystream.h +71 -0
  51. data/vendor/cereal/include/cereal/external/rapidjson/msinttypes/inttypes.h +316 -0
  52. data/vendor/cereal/include/cereal/external/rapidjson/msinttypes/stdint.h +300 -0
  53. data/vendor/cereal/include/cereal/external/rapidjson/ostreamwrapper.h +81 -0
  54. data/vendor/cereal/include/cereal/external/rapidjson/pointer.h +1414 -0
  55. data/vendor/cereal/include/cereal/external/rapidjson/prettywriter.h +277 -0
  56. data/vendor/cereal/include/cereal/external/rapidjson/rapidjson.h +656 -0
  57. data/vendor/cereal/include/cereal/external/rapidjson/reader.h +2230 -0
  58. data/vendor/cereal/include/cereal/external/rapidjson/schema.h +2497 -0
  59. data/vendor/cereal/include/cereal/external/rapidjson/stream.h +223 -0
  60. data/vendor/cereal/include/cereal/external/rapidjson/stringbuffer.h +121 -0
  61. data/vendor/cereal/include/cereal/external/rapidjson/writer.h +709 -0
  62. data/vendor/cereal/include/cereal/external/rapidxml/license.txt +52 -0
  63. data/vendor/cereal/include/cereal/external/rapidxml/manual.html +406 -0
  64. data/vendor/cereal/include/cereal/external/rapidxml/rapidxml.hpp +2624 -0
  65. data/vendor/cereal/include/cereal/external/rapidxml/rapidxml_iterators.hpp +175 -0
  66. data/vendor/cereal/include/cereal/external/rapidxml/rapidxml_print.hpp +428 -0
  67. data/vendor/cereal/include/cereal/external/rapidxml/rapidxml_utils.hpp +123 -0
  68. data/vendor/cereal/include/cereal/macros.hpp +154 -0
  69. data/vendor/cereal/include/cereal/specialize.hpp +139 -0
  70. data/vendor/cereal/include/cereal/types/array.hpp +79 -0
  71. data/vendor/cereal/include/cereal/types/atomic.hpp +55 -0
  72. data/vendor/cereal/include/cereal/types/base_class.hpp +203 -0
  73. data/vendor/cereal/include/cereal/types/bitset.hpp +176 -0
  74. data/vendor/cereal/include/cereal/types/boost_variant.hpp +164 -0
  75. data/vendor/cereal/include/cereal/types/chrono.hpp +72 -0
  76. data/vendor/cereal/include/cereal/types/common.hpp +129 -0
  77. data/vendor/cereal/include/cereal/types/complex.hpp +56 -0
  78. data/vendor/cereal/include/cereal/types/concepts/pair_associative_container.hpp +73 -0
  79. data/vendor/cereal/include/cereal/types/deque.hpp +62 -0
  80. data/vendor/cereal/include/cereal/types/forward_list.hpp +68 -0
  81. data/vendor/cereal/include/cereal/types/functional.hpp +43 -0
  82. data/vendor/cereal/include/cereal/types/list.hpp +62 -0
  83. data/vendor/cereal/include/cereal/types/map.hpp +36 -0
  84. data/vendor/cereal/include/cereal/types/memory.hpp +425 -0
  85. data/vendor/cereal/include/cereal/types/optional.hpp +66 -0
  86. data/vendor/cereal/include/cereal/types/polymorphic.hpp +483 -0
  87. data/vendor/cereal/include/cereal/types/queue.hpp +132 -0
  88. data/vendor/cereal/include/cereal/types/set.hpp +103 -0
  89. data/vendor/cereal/include/cereal/types/stack.hpp +76 -0
  90. data/vendor/cereal/include/cereal/types/string.hpp +61 -0
  91. data/vendor/cereal/include/cereal/types/tuple.hpp +123 -0
  92. data/vendor/cereal/include/cereal/types/unordered_map.hpp +36 -0
  93. data/vendor/cereal/include/cereal/types/unordered_set.hpp +99 -0
  94. data/vendor/cereal/include/cereal/types/utility.hpp +47 -0
  95. data/vendor/cereal/include/cereal/types/valarray.hpp +89 -0
  96. data/vendor/cereal/include/cereal/types/variant.hpp +109 -0
  97. data/vendor/cereal/include/cereal/types/vector.hpp +112 -0
  98. data/vendor/cereal/include/cereal/version.hpp +52 -0
  99. data/vendor/isotree/LICENSE +1 -1
  100. data/vendor/isotree/README.md +2 -1
  101. data/vendor/isotree/src/RcppExports.cpp +44 -4
  102. data/vendor/isotree/src/Rwrapper.cpp +141 -51
  103. data/vendor/isotree/src/crit.cpp +1 -1
  104. data/vendor/isotree/src/dealloc.cpp +1 -1
  105. data/vendor/isotree/src/dist.cpp +6 -6
  106. data/vendor/isotree/src/extended.cpp +5 -5
  107. data/vendor/isotree/src/fit_model.cpp +30 -19
  108. data/vendor/isotree/src/helpers_iforest.cpp +26 -11
  109. data/vendor/isotree/src/impute.cpp +7 -7
  110. data/vendor/isotree/src/isoforest.cpp +7 -7
  111. data/vendor/isotree/src/isotree.hpp +27 -5
  112. data/vendor/isotree/src/merge_models.cpp +1 -1
  113. data/vendor/isotree/src/mult.cpp +1 -1
  114. data/vendor/isotree/src/predict.cpp +20 -16
  115. data/vendor/isotree/src/serialize.cpp +1 -1
  116. data/vendor/isotree/src/sql.cpp +545 -0
  117. data/vendor/isotree/src/utils.cpp +36 -44
  118. metadata +98 -92
@@ -0,0 +1,72 @@
1
+ /*! \file chrono.hpp
2
+ \brief Support for types found in \<chrono\>
3
+ \ingroup STLSupport */
4
+ /*
5
+ Copyright (c) 2014, Randolph Voorhies, Shane Grant
6
+ All rights reserved.
7
+
8
+ Redistribution and use in source and binary forms, with or without
9
+ modification, are permitted provided that the following conditions are met:
10
+ * Redistributions of source code must retain the above copyright
11
+ notice, this list of conditions and the following disclaimer.
12
+ * Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in the
14
+ documentation and/or other materials provided with the distribution.
15
+ * Neither the name of cereal nor the
16
+ names of its contributors may be used to endorse or promote products
17
+ derived from this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
23
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ #ifndef CEREAL_TYPES_CHRONO_HPP_
31
+ #define CEREAL_TYPES_CHRONO_HPP_
32
+
33
+ #include <chrono>
34
+
35
+ namespace cereal
36
+ {
37
+ //! Saving std::chrono::duration
38
+ template <class Archive, class R, class P> inline
39
+ void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::chrono::duration<R, P> const & dur )
40
+ {
41
+ ar( CEREAL_NVP_("count", dur.count()) );
42
+ }
43
+
44
+ //! Loading std::chrono::duration
45
+ template <class Archive, class R, class P> inline
46
+ void CEREAL_LOAD_FUNCTION_NAME( Archive & ar, std::chrono::duration<R, P> & dur )
47
+ {
48
+ R count;
49
+ ar( CEREAL_NVP_("count", count) );
50
+
51
+ dur = std::chrono::duration<R, P>{count};
52
+ }
53
+
54
+ //! Saving std::chrono::time_point
55
+ template <class Archive, class C, class D> inline
56
+ void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::chrono::time_point<C, D> const & dur )
57
+ {
58
+ ar( CEREAL_NVP_("time_since_epoch", dur.time_since_epoch()) );
59
+ }
60
+
61
+ //! Loading std::chrono::time_point
62
+ template <class Archive, class C, class D> inline
63
+ void CEREAL_LOAD_FUNCTION_NAME( Archive & ar, std::chrono::time_point<C, D> & dur )
64
+ {
65
+ D elapsed;
66
+ ar( CEREAL_NVP_("time_since_epoch", elapsed) );
67
+
68
+ dur = std::chrono::time_point<C, D>{elapsed};
69
+ }
70
+ } // namespace cereal
71
+
72
+ #endif // CEREAL_TYPES_CHRONO_HPP_
@@ -0,0 +1,129 @@
1
+ /*! \file common.hpp
2
+ \brief Support common types - always included automatically
3
+ \ingroup OtherTypes */
4
+ /*
5
+ Copyright (c) 2014, Randolph Voorhies, Shane Grant
6
+ All rights reserved.
7
+
8
+ Redistribution and use in source and binary forms, with or without
9
+ modification, are permitted provided that the following conditions are met:
10
+ * Redistributions of source code must retain the above copyright
11
+ notice, this list of conditions and the following disclaimer.
12
+ * Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in the
14
+ documentation and/or other materials provided with the distribution.
15
+ * Neither the name of cereal nor the
16
+ names of its contributors may be used to endorse or promote products
17
+ derived from this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
23
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ #ifndef CEREAL_TYPES_COMMON_HPP_
31
+ #define CEREAL_TYPES_COMMON_HPP_
32
+
33
+ #include "cereal/cereal.hpp"
34
+
35
+ namespace cereal
36
+ {
37
+ namespace common_detail
38
+ {
39
+ //! Serialization for arrays if BinaryData is supported and we are arithmetic
40
+ /*! @internal */
41
+ template <class Archive, class T> inline
42
+ void serializeArray( Archive & ar, T & array, std::true_type /* binary_supported */ )
43
+ {
44
+ ar( binary_data( array, sizeof(array) ) );
45
+ }
46
+
47
+ //! Serialization for arrays if BinaryData is not supported or we are not arithmetic
48
+ /*! @internal */
49
+ template <class Archive, class T> inline
50
+ void serializeArray( Archive & ar, T & array, std::false_type /* binary_supported */ )
51
+ {
52
+ for( auto & i : array )
53
+ ar( i );
54
+ }
55
+
56
+ namespace
57
+ {
58
+ //! Gets the underlying type of an enum
59
+ /*! @internal */
60
+ template <class T, bool IsEnum>
61
+ struct enum_underlying_type : std::false_type {};
62
+
63
+ //! Gets the underlying type of an enum
64
+ /*! Specialization for when we actually have an enum
65
+ @internal */
66
+ template <class T>
67
+ struct enum_underlying_type<T, true> { using type = typename std::underlying_type<T>::type; };
68
+ } // anon namespace
69
+
70
+ //! Checks if a type is an enum
71
+ /*! This is needed over simply calling std::is_enum because the type
72
+ traits checking at compile time will attempt to call something like
73
+ load_minimal with a special NoConvertRef struct that wraps up the true type.
74
+
75
+ This will strip away any of that and also expose the true underlying type.
76
+ @internal */
77
+ template <class T>
78
+ class is_enum
79
+ {
80
+ private:
81
+ using DecayedT = typename std::decay<T>::type;
82
+ using StrippedT = typename ::cereal::traits::strip_minimal<DecayedT>::type;
83
+
84
+ public:
85
+ static const bool value = std::is_enum<StrippedT>::value;
86
+ using type = StrippedT;
87
+ using base_type = typename enum_underlying_type<StrippedT, value>::type;
88
+ };
89
+ }
90
+
91
+ //! Saving for enum types
92
+ template <class Archive, class T> inline
93
+ typename std::enable_if<common_detail::is_enum<T>::value,
94
+ typename common_detail::is_enum<T>::base_type>::type
95
+ CEREAL_SAVE_MINIMAL_FUNCTION_NAME( Archive const &, T const & t )
96
+ {
97
+ return static_cast<typename common_detail::is_enum<T>::base_type>(t);
98
+ }
99
+
100
+ //! Loading for enum types
101
+ template <class Archive, class T> inline
102
+ typename std::enable_if<common_detail::is_enum<T>::value, void>::type
103
+ CEREAL_LOAD_MINIMAL_FUNCTION_NAME( Archive const &, T && t,
104
+ typename common_detail::is_enum<T>::base_type const & value )
105
+ {
106
+ t = reinterpret_cast<typename common_detail::is_enum<T>::type const &>( value );
107
+ }
108
+
109
+ //! Serialization for raw pointers
110
+ /*! This exists only to throw a static_assert to let users know we don't support raw pointers. */
111
+ template <class Archive, class T> inline
112
+ void CEREAL_SERIALIZE_FUNCTION_NAME( Archive &, T * & )
113
+ {
114
+ static_assert(cereal::traits::detail::delay_static_assert<T>::value,
115
+ "Cereal does not support serializing raw pointers - please use a smart pointer");
116
+ }
117
+
118
+ //! Serialization for C style arrays
119
+ template <class Archive, class T> inline
120
+ typename std::enable_if<std::is_array<T>::value, void>::type
121
+ CEREAL_SERIALIZE_FUNCTION_NAME(Archive & ar, T & array)
122
+ {
123
+ common_detail::serializeArray( ar, array,
124
+ std::integral_constant<bool, traits::is_output_serializable<BinaryData<T>, Archive>::value &&
125
+ std::is_arithmetic<typename std::remove_all_extents<T>::type>::value>() );
126
+ }
127
+ } // namespace cereal
128
+
129
+ #endif // CEREAL_TYPES_COMMON_HPP_
@@ -0,0 +1,56 @@
1
+ /*! \file complex.hpp
2
+ \brief Support for types found in \<complex\>
3
+ \ingroup STLSupport */
4
+ /*
5
+ Copyright (c) 2014, Randolph Voorhies, Shane Grant
6
+ All rights reserved.
7
+
8
+ Redistribution and use in source and binary forms, with or without
9
+ modification, are permitted provided that the following conditions are met:
10
+ * Redistributions of source code must retain the above copyright
11
+ notice, this list of conditions and the following disclaimer.
12
+ * Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in the
14
+ documentation and/or other materials provided with the distribution.
15
+ * Neither the name of cereal nor the
16
+ names of its contributors may be used to endorse or promote products
17
+ derived from this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
23
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ #ifndef CEREAL_TYPES_COMPLEX_HPP_
31
+ #define CEREAL_TYPES_COMPLEX_HPP_
32
+
33
+ #include <complex>
34
+
35
+ namespace cereal
36
+ {
37
+ //! Serializing (save) for std::complex
38
+ template <class Archive, class T> inline
39
+ void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::complex<T> const & comp )
40
+ {
41
+ ar( CEREAL_NVP_("real", comp.real()),
42
+ CEREAL_NVP_("imag", comp.imag()) );
43
+ }
44
+
45
+ //! Serializing (load) for std::complex
46
+ template <class Archive, class T> inline
47
+ void CEREAL_LOAD_FUNCTION_NAME( Archive & ar, std::complex<T> & bits )
48
+ {
49
+ T real, imag;
50
+ ar( CEREAL_NVP_("real", real),
51
+ CEREAL_NVP_("imag", imag) );
52
+ bits = {real, imag};
53
+ }
54
+ } // namespace cereal
55
+
56
+ #endif // CEREAL_TYPES_COMPLEX_HPP_
@@ -0,0 +1,73 @@
1
+ /*! \file pair_associative_container.hpp
2
+ \brief Support for the PairAssociativeContainer refinement of the
3
+ AssociativeContainer concept.
4
+ \ingroup TypeConcepts */
5
+ /*
6
+ Copyright (c) 2014, Randolph Voorhies, Shane Grant
7
+ All rights reserved.
8
+
9
+ Redistribution and use in source and binary forms, with or without
10
+ modification, are permitted provided that the following conditions are met:
11
+ * Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+ * Redistributions in binary form must reproduce the above copyright
14
+ notice, this list of conditions and the following disclaimer in the
15
+ documentation and/or other materials provided with the distribution.
16
+ * Neither the name of cereal nor the
17
+ names of its contributors may be used to endorse or promote products
18
+ derived from this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
21
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
24
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ */
31
+ #ifndef CEREAL_CONCEPTS_PAIR_ASSOCIATIVE_CONTAINER_HPP_
32
+ #define CEREAL_CONCEPTS_PAIR_ASSOCIATIVE_CONTAINER_HPP_
33
+
34
+ #include "cereal/cereal.hpp"
35
+
36
+ namespace cereal
37
+ {
38
+ //! Saving for std-like pair associative containers
39
+ template <class Archive, template <typename...> class Map, typename... Args, typename = typename Map<Args...>::mapped_type> inline
40
+ void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, Map<Args...> const & map )
41
+ {
42
+ ar( make_size_tag( static_cast<size_type>(map.size()) ) );
43
+
44
+ for( const auto & i : map )
45
+ ar( make_map_item(i.first, i.second) );
46
+ }
47
+
48
+ //! Loading for std-like pair associative containers
49
+ template <class Archive, template <typename...> class Map, typename... Args, typename = typename Map<Args...>::mapped_type> inline
50
+ void CEREAL_LOAD_FUNCTION_NAME( Archive & ar, Map<Args...> & map )
51
+ {
52
+ size_type size;
53
+ ar( make_size_tag( size ) );
54
+
55
+ map.clear();
56
+
57
+ auto hint = map.begin();
58
+ for( size_t i = 0; i < size; ++i )
59
+ {
60
+ typename Map<Args...>::key_type key;
61
+ typename Map<Args...>::mapped_type value;
62
+
63
+ ar( make_map_item(key, value) );
64
+ #ifdef CEREAL_OLDER_GCC
65
+ hint = map.insert( hint, std::make_pair(std::move(key), std::move(value)) );
66
+ #else // NOT CEREAL_OLDER_GCC
67
+ hint = map.emplace_hint( hint, std::move( key ), std::move( value ) );
68
+ #endif // NOT CEREAL_OLDER_GCC
69
+ }
70
+ }
71
+ } // namespace cereal
72
+
73
+ #endif // CEREAL_CONCEPTS_PAIR_ASSOCIATIVE_CONTAINER_HPP_
@@ -0,0 +1,62 @@
1
+ /*! \file deque.hpp
2
+ \brief Support for types found in \<deque\>
3
+ \ingroup STLSupport */
4
+ /*
5
+ Copyright (c) 2014, Randolph Voorhies, Shane Grant
6
+ All rights reserved.
7
+
8
+ Redistribution and use in source and binary forms, with or without
9
+ modification, are permitted provided that the following conditions are met:
10
+ * Redistributions of source code must retain the above copyright
11
+ notice, this list of conditions and the following disclaimer.
12
+ * Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in the
14
+ documentation and/or other materials provided with the distribution.
15
+ * Neither the name of cereal nor the
16
+ names of its contributors may be used to endorse or promote products
17
+ derived from this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
23
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ #ifndef CEREAL_TYPES_DEQUE_HPP_
31
+ #define CEREAL_TYPES_DEQUE_HPP_
32
+
33
+ #include "cereal/cereal.hpp"
34
+ #include <deque>
35
+
36
+ namespace cereal
37
+ {
38
+ //! Saving for std::deque
39
+ template <class Archive, class T, class A> inline
40
+ void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::deque<T, A> const & deque )
41
+ {
42
+ ar( make_size_tag( static_cast<size_type>(deque.size()) ) );
43
+
44
+ for( auto const & i : deque )
45
+ ar( i );
46
+ }
47
+
48
+ //! Loading for std::deque
49
+ template <class Archive, class T, class A> inline
50
+ void CEREAL_LOAD_FUNCTION_NAME( Archive & ar, std::deque<T, A> & deque )
51
+ {
52
+ size_type size;
53
+ ar( make_size_tag( size ) );
54
+
55
+ deque.resize( static_cast<size_t>( size ) );
56
+
57
+ for( auto & i : deque )
58
+ ar( i );
59
+ }
60
+ } // namespace cereal
61
+
62
+ #endif // CEREAL_TYPES_DEQUE_HPP_
@@ -0,0 +1,68 @@
1
+ /*! \file forward_list.hpp
2
+ \brief Support for types found in \<forward_list\>
3
+ \ingroup STLSupport */
4
+ /*
5
+ Copyright (c) 2014, Randolph Voorhies, Shane Grant
6
+ All rights reserved.
7
+
8
+ Redistribution and use in source and binary forms, with or without
9
+ modification, are permitted provided that the following conditions are met:
10
+ * Redistributions of source code must retain the above copyright
11
+ notice, this list of conditions and the following disclaimer.
12
+ * Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in the
14
+ documentation and/or other materials provided with the distribution.
15
+ * Neither the name of cereal nor the
16
+ names of its contributors may be used to endorse or promote products
17
+ derived from this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL RANDOLPH VOORHIES OR SHANE GRANT BE LIABLE FOR ANY
23
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ #ifndef CEREAL_TYPES_FORWARD_LIST_HPP_
31
+ #define CEREAL_TYPES_FORWARD_LIST_HPP_
32
+
33
+ #include "cereal/cereal.hpp"
34
+ #include <forward_list>
35
+
36
+ namespace cereal
37
+ {
38
+ //! Saving for std::forward_list all other types
39
+ template <class Archive, class T, class A> inline
40
+ void CEREAL_SAVE_FUNCTION_NAME( Archive & ar, std::forward_list<T, A> const & forward_list )
41
+ {
42
+ // write the size - note that this is slow because we need to traverse
43
+ // the entire list. there are ways we could avoid this but this was chosen
44
+ // since it works in the most general fashion with any archive type
45
+ size_type const size = std::distance( forward_list.begin(), forward_list.end() );
46
+
47
+ ar( make_size_tag( size ) );
48
+
49
+ // write the list
50
+ for( const auto & i : forward_list )
51
+ ar( i );
52
+ }
53
+
54
+ //! Loading for std::forward_list all other types from
55
+ template <class Archive, class T, class A>
56
+ void CEREAL_LOAD_FUNCTION_NAME( Archive & ar, std::forward_list<T, A> & forward_list )
57
+ {
58
+ size_type size;
59
+ ar( make_size_tag( size ) );
60
+
61
+ forward_list.resize( static_cast<size_t>( size ) );
62
+
63
+ for( auto & i : forward_list )
64
+ ar( i );
65
+ }
66
+ } // namespace cereal
67
+
68
+ #endif // CEREAL_TYPES_FORWARD_LIST_HPP_