summaryrefslogtreecommitdiff
path: root/dev-cpp/cpprestsdk/files/cpprestsdk-2.10.19-llvm-json-unique-ptr.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-cpp/cpprestsdk/files/cpprestsdk-2.10.19-llvm-json-unique-ptr.patch')
-rw-r--r--dev-cpp/cpprestsdk/files/cpprestsdk-2.10.19-llvm-json-unique-ptr.patch221
1 files changed, 0 insertions, 221 deletions
diff --git a/dev-cpp/cpprestsdk/files/cpprestsdk-2.10.19-llvm-json-unique-ptr.patch b/dev-cpp/cpprestsdk/files/cpprestsdk-2.10.19-llvm-json-unique-ptr.patch
deleted file mode 100644
index ce7f03741b0b..000000000000
--- a/dev-cpp/cpprestsdk/files/cpprestsdk-2.10.19-llvm-json-unique-ptr.patch
+++ /dev/null
@@ -1,221 +0,0 @@
-This patch moves the implementations of certain json-methods to the cpp-file-implementations.
-This is needed because llvm needs sizeof(T) to be valid for a lot more methods on containers
-and std::unique_ptr, so these methods can't be header only on llvm. This patch is developed
-by me and I cannot right now find an upstream bug-report on this just yet. I uploaded a similar
-patch to FreeBSD ports a while ago.
---- a/Release/include/cpprest/json.h
-+++ b/Release/include/cpprest/json.h
-@@ -737,12 +737,10 @@
- _ASYNCRTIMP void format(std::basic_string<char>& string) const;
-
- #ifdef ENABLE_JSON_VALUE_VISUALIZER
-- explicit value(std::unique_ptr<details::_Value> v, value_type kind) : m_value(std::move(v)), m_kind(kind)
-+ explicit value(std::unique_ptr<details::_Value> v, value_type kind);
- #else
-- explicit value(std::unique_ptr<details::_Value> v) : m_value(std::move(v))
-+ explicit value(std::unique_ptr<details::_Value> v);
- #endif
-- {
-- }
-
- std::unique_ptr<details::_Value> m_value;
- #ifdef ENABLE_JSON_VALUE_VISUALIZER
-@@ -831,9 +829,9 @@
- typedef storage_type::size_type size_type;
-
- private:
-- array() : m_elements() {}
-- array(size_type size) : m_elements(size) {}
-- array(storage_type elements) : m_elements(std::move(elements)) {}
-+ array();
-+ array(size_type size);
-+ array(storage_type elements);
-
- public:
- /// <summary>
-@@ -915,20 +913,13 @@
- /// <returns>Iterator to the new location of the element following the erased element.</returns>
- /// <remarks>GCC doesn't support erase with const_iterator on vector yet. In the future this should be
- /// changed.</remarks>
-- iterator erase(iterator position) { return m_elements.erase(position); }
-+ iterator erase(iterator position);
-
- /// <summary>
- /// Deletes the element at an index of the JSON array.
- /// </summary>
- /// <param name="index">The index of the element to delete.</param>
-- void erase(size_type index)
-- {
-- if (index >= m_elements.size())
-- {
-- throw json_exception("index out of bounds");
-- }
-- m_elements.erase(m_elements.begin() + index);
-- }
-+ void erase(size_type index);
-
- /// <summary>
- /// Accesses an element of a JSON array. Throws when index out of bounds.
-@@ -959,15 +950,7 @@
- /// </summary>
- /// <param name="index">The index of an element in the JSON array.</param>
- /// <returns>A reference to the value kept in the field.</returns>
-- json::value& operator[](size_type index)
-- {
-- msl::safeint3::SafeInt<size_type> nMinSize(index);
-- nMinSize += 1;
-- msl::safeint3::SafeInt<size_type> nlastSize(m_elements.size());
-- if (nlastSize < nMinSize) m_elements.resize((size_type)nMinSize);
--
-- return m_elements[index];
-- }
-+ json::value& operator[](size_type index);
-
- /// <summary>
- /// Gets the number of elements of the array.
-@@ -998,14 +981,8 @@
- typedef storage_type::size_type size_type;
-
- private:
-- object(bool keep_order = false) : m_elements(), m_keep_order(keep_order) {}
-- object(storage_type elements, bool keep_order = false) : m_elements(std::move(elements)), m_keep_order(keep_order)
-- {
-- if (!keep_order)
-- {
-- sort(m_elements.begin(), m_elements.end(), compare_pairs);
-- }
-- }
-+ object(bool keep_order = false);
-+ object(storage_type elements, bool keep_order = false);
-
- public:
- /// <summary>
-@@ -1087,22 +1064,13 @@
- /// <returns>Iterator to the new location of the element following the erased element.</returns>
- /// <remarks>GCC doesn't support erase with const_iterator on vector yet. In the future this should be
- /// changed.</remarks>
-- iterator erase(iterator position) { return m_elements.erase(position); }
-+ iterator erase(iterator position);
-
- /// <summary>
- /// Deletes an element of the JSON object. If the key doesn't exist, this method throws.
- /// </summary>
- /// <param name="key">The key of an element in the JSON object.</param>
-- void erase(const utility::string_t& key)
-- {
-- auto iter = find_by_key(key);
-- if (iter == m_elements.end())
-- {
-- throw web::json::json_exception("Key not found");
-- }
--
-- m_elements.erase(iter);
-- }
-+ void erase(const utility::string_t& key);
-
- /// <summary>
- /// Accesses an element of a JSON object. If the key doesn't exist, this method throws.
-@@ -1142,17 +1110,7 @@
- /// <param name="key">The key of an element in the JSON object.</param>
- /// <returns>If the key exists, a reference to the value kept in the field, otherwise a newly created null value
- /// that will be stored for the given key.</returns>
-- json::value& operator[](const utility::string_t& key)
-- {
-- auto iter = find_insert_location(key);
--
-- if (iter == m_elements.end() || key != iter->first)
-- {
-- return m_elements.insert(iter, std::pair<utility::string_t, value>(key, value()))->second;
-- }
--
-- return iter->second;
-- }
-+ json::value& operator[](const utility::string_t& key);
-
- /// <summary>
- /// Gets an iterator to an element of a JSON object.
---- a/Release/src/json/json.cpp
-+++ b/Release/src/json/json.cpp
-@@ -135,6 +135,14 @@
- {
- }
-
-+#ifdef ENABLE_JSON_VALUE_VISUALIZER
-+web::json::value::value(std::unique_ptr<details::_Value> v, value_type kind) : m_value(std::move(v)), m_kind(kind)
-+#else
-+web::json::value::value(std::unique_ptr<details::_Value> v) : m_value(std::move(v))
-+#endif
-+{
-+}
-+
- web::json::value::value(const value& other)
- : m_value(other.m_value->_copy_value())
- #ifdef ENABLE_JSON_VALUE_VISUALIZER
-@@ -495,3 +503,67 @@
- #endif
- return instance;
- }
-+
-+web::json::array::array() : m_elements() {}
-+web::json::array::array(size_type size) : m_elements(size) {}
-+web::json::array::array(storage_type elements) : m_elements(std::move(elements)) {}
-+
-+web::json::array::iterator web::json::array::erase(web::json::array::iterator position)
-+{
-+ return m_elements.erase(position);
-+}
-+
-+void web::json::array::erase(web::json::array::size_type index)
-+{
-+ if (index >= m_elements.size())
-+ {
-+ throw json_exception("index out of bounds");
-+ }
-+ m_elements.erase(m_elements.begin() + index);
-+}
-+
-+json::value& web::json::array::operator[](web::json::array::size_type index)
-+{
-+ msl::safeint3::SafeInt<size_type> nMinSize(index);
-+ nMinSize += 1;
-+ msl::safeint3::SafeInt<size_type> nlastSize(m_elements.size());
-+ if (nlastSize < nMinSize) m_elements.resize((size_type)nMinSize);
-+
-+ return m_elements[index];
-+}
-+
-+web::json::object::object(bool keep_order) : m_elements(), m_keep_order(keep_order) {}
-+web::json::object::object(storage_type elements, bool keep_order) : m_elements(std::move(elements)), m_keep_order(keep_order)
-+{
-+ if (!keep_order)
-+ {
-+ sort(m_elements.begin(), m_elements.end(), compare_pairs);
-+ }
-+}
-+web::json::object::iterator web::json::object::erase(iterator position)
-+{
-+ return m_elements.erase(position);
-+}
-+
-+void web::json::object::erase(const utility::string_t& key)
-+{
-+ auto iter = find_by_key(key);
-+ if (iter == m_elements.end())
-+ {
-+ throw web::json::json_exception("Key not found");
-+ }
-+
-+ m_elements.erase(iter);
-+}
-+
-+json::value& web::json::object::operator[](const utility::string_t& key)
-+{
-+ auto iter = find_insert_location(key);
-+
-+ if (iter == m_elements.end() || key != iter->first)
-+ {
-+ return m_elements.insert(iter, std::pair<utility::string_t, value>(key, value()))->second;
-+ }
-+
-+ return iter->second;
-+}