diff options
Diffstat (limited to 'freefilesync/revert_zenju_aggressive_upstreamisms.patch')
-rw-r--r-- | freefilesync/revert_zenju_aggressive_upstreamisms.patch | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/freefilesync/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/revert_zenju_aggressive_upstreamisms.patch new file mode 100644 index 0000000..0da4e06 --- /dev/null +++ b/freefilesync/revert_zenju_aggressive_upstreamisms.patch @@ -0,0 +1,275 @@ +Author: Ben Stack <bgstack15@gmail.com> +Date: 2020-05-17 14:11 -0400 +Message: Use the following command to get this old contents. Zenju must be using some newer definition of -std=c++2a than what Devuan Ceres provides as of 2020-05-17, and probably wxwidgets. This is the 10.23 code for these files. + + git checkout b4ecf755 zen/legacy_compiler.h zen/string_base.h wx+/choice_enum.h + +Unfortunately with the removal of the wxWidgets-gtk2 code from Debian, we are stuck using all available at approximately November 1, 2019 snapshot of Debian: https://snapshot.debian.org/archive/debian/20191101T211023Z/pool/main/w/wxwidgets3.0/ +libwxbase3.0-0v5_3.0.4+dfsg-14_amd64.deb +libwxbase3.0-0v5_3.0.4+dfsg-14_i386.deb +libwxbase3.0-dev_3.0.4+dfsg-14_amd64.deb +libwxbase3.0-dev_3.0.4+dfsg-14_i386.deb +libwxgtk3.0-0v5_3.0.4+dfsg-14_amd64.deb +libwxgtk3.0-0v5_3.0.4+dfsg-14_i386.deb +libwxgtk3.0-dev_3.0.4+dfsg-14_amd64.deb +libwxgtk3.0-dev_3.0.4+dfsg-14_i386.deb +wx3.0-headers_3.0.4+dfsg-14_all.deb +wx-common_3.0.4+dfsg-14_amd64.deb +wx-common_3.0.4+dfsg-14_i386.deb +diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/zen/legacy_compiler.h 10.24-1/zen/legacy_compiler.h +--- 10.24-0/zen/legacy_compiler.h 2020-05-17 13:44:27.542140458 -0400 ++++ 10.24-1/zen/legacy_compiler.h 2020-05-17 14:07:49.115166339 -0400 +@@ -7,9 +7,6 @@ + #ifndef LEGACY_COMPILER_H_839567308565656789 + #define LEGACY_COMPILER_H_839567308565656789 + +- #include <numbers> //C++20 +- +- #include <span> //requires C++20 + + + +@@ -21,8 +18,53 @@ + + //--------------------------------------------------------------------------------- + ++#if __cpp_lib_span ++ #error get rid of workaround: ++#endif ++ ++template <class T> ++class span ++{ ++public: ++ template <class Iterator> ++ span(Iterator first, Iterator last) : size_(last - first), data_(first != last ? &*first : nullptr) {} ++ ++ template <class Container> ++ span(Container& cont) : span(cont.begin(), cont.end()) {} ++ ++ using iterator = T*; ++ using const_iterator = const T*; ++ ++ iterator begin() { return data_; } ++ iterator end () { return data_ + size_; } ++ ++ const_iterator begin() const { return data_; } ++ const_iterator end () const { return data_ + size_; } + ++ const_iterator cbegin() const { return begin(); } ++ const_iterator cend () const { return end (); } + ++ T* data() const { return data_; } ++ size_t size() const { return size_; } ++ bool empty() const { return size_ == 0; } ++ ++private: ++ const size_t size_; ++ T* const data_; ++}; ++ ++ ++#if __cpp_lib_math_constants ++ #error get rid of workaround: ++#endif ++ ++namespace numbers ++{ ++const double pi = 3.14159265358979323846; ++const double e = 2.71828182845904523536; ++const double sqrt2 = 1.41421356237309504880; ++const double ln2 = 0.693147180559945309417; ++} + } + + +diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/zen/string_base.h 10.24-1/zen/string_base.h +--- 10.24-0/zen/string_base.h 2020-05-17 13:44:27.554140569 -0400 ++++ 10.24-1/zen/string_base.h 2020-05-17 14:09:44.164244361 -0400 +@@ -12,7 +12,9 @@ + #include <cstdint> + #include <atomic> + #include "string_tools.h" ++#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison + #include <compare> ++#endif + + + //Zbase - a policy based string class optimizing performance and flexibility +@@ -293,15 +295,29 @@ + }; + + ++#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison ++ #error implement! ++#endif ++ + + template <class Char, template <class> class SP> bool operator==(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs); + template <class Char, template <class> class SP> bool operator==(const Zbase<Char, SP>& lhs, const Char* rhs); + template <class Char, template <class> class SP> inline bool operator==(const Char* lhs, const Zbase<Char, SP>& rhs) { return operator==(rhs, lhs); } + ++#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison + template <class Char, template <class> class SP> std::strong_ordering operator<=>(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs); + template <class Char, template <class> class SP> std::strong_ordering operator<=>(const Zbase<Char, SP>& lhs, const Char* rhs); + template <class Char, template <class> class SP> std::strong_ordering operator<=>(const Char* lhs, const Zbase<Char, SP>& rhs); + ++#else ++template <class Char, template <class> class SP> inline bool operator!=(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs) { return !operator==(lhs, rhs); } ++template <class Char, template <class> class SP> inline bool operator!=(const Zbase<Char, SP>& lhs, const Char* rhs) { return !operator==(lhs, rhs); } ++template <class Char, template <class> class SP> inline bool operator!=(const Char* lhs, const Zbase<Char, SP>& rhs) { return !operator==(lhs, rhs); } ++ ++template <class Char, template <class> class SP> bool operator<(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs); ++template <class Char, template <class> class SP> bool operator<(const Zbase<Char, SP>& lhs, const Char* rhs); ++template <class Char, template <class> class SP> bool operator<(const Char* lhs, const Zbase<Char, SP>& rhs); ++#endif + + template <class Char, template <class> class SP> inline Zbase<Char, SP> operator+(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs) { return Zbase<Char, SP>(lhs) += rhs; } + template <class Char, template <class> class SP> inline Zbase<Char, SP> operator+(const Zbase<Char, SP>& lhs, const Char* rhs) { return Zbase<Char, SP>(lhs) += rhs; } +@@ -482,11 +498,12 @@ + } + + ++#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison + template <class Char, template <class> class SP> inline + std::strong_ordering operator<=>(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs) + { +- return std::lexicographical_compare_three_way(lhs.begin(), lhs.end(), //respect embedded 0 +- rhs.begin(), rhs.end()); // ++ return std::lexicographical_compare_three_way(lhs.begin(), lhs.end(), //respect embedded 0 ++ rhs.begin(), rhs.end()); + } + + +@@ -501,11 +518,35 @@ + template <class Char, template <class> class SP> inline + std::strong_ordering operator<=>(const Char* lhs, const Zbase<Char, SP>& rhs) + { +- return std::lexicographical_compare_three_way(lhs, lhs + strLength(lhs), +- rhs.begin(), rhs.end()); //respect embedded 0 ++ return std::lexicographical_compare_three_way(lhs, lhs + strLength(lhs), //respect embedded 0 ++ rhs.begin(), rhs.end()); ++} ++ ++#else ++template <class Char, template <class> class SP> inline ++bool operator<(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs) ++{ ++ return std::lexicographical_compare(lhs.begin(), lhs.end(), //respect embedded 0 ++ rhs.begin(), rhs.end()); + } + + ++template <class Char, template <class> class SP> inline ++bool operator<(const Zbase<Char, SP>& lhs, const Char* rhs) ++{ ++ return std::lexicographical_compare(lhs.begin(), lhs.end(), //respect embedded 0 ++ rhs, rhs + strLength(rhs)); ++} ++ ++ ++template <class Char, template <class> class SP> inline ++bool operator<(const Char* lhs, const Zbase<Char, SP>& rhs) ++{ ++ return std::lexicographical_compare(lhs, lhs + strLength(lhs), //respect embedded 0 ++ rhs.begin(), rhs.end()); ++} ++#endif ++ + + template <class Char, template <class> class SP> inline + size_t Zbase<Char, SP>::length() const +diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/wx+/choice_enum.h +--- 10.24-0/wx+/choice_enum.h 2020-05-17 18:30:59.441499418 -0400 ++++ 10.24-1/wx+/choice_enum.h 2020-05-17 18:53:59.893685507 -0400 +@@ -7,7 +7,6 @@ + #ifndef CHOICE_ENUM_H_132413545345687 + #define CHOICE_ENUM_H_132413545345687 + +-#include <unordered_map> + #include <vector> + #include <wx/choice.h> + +@@ -44,11 +43,8 @@ + descrList.push_back({ value, { text, tooltip } }); + return *this; + } +- + using DescrList = std::vector<std::pair<Enum, std::pair<wxString, wxString>>>; + DescrList descrList; +- +- std::unordered_map<const wxChoice*, std::vector<wxString>> itemsSetLast; + }; + template <class Enum> void setEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value); + template <class Enum> Enum getEnumVal(const EnumDescrList<Enum>& mapping, const wxChoice& ctrl); +@@ -69,34 +65,26 @@ + + //--------------- impelementation ------------------------------------------- + template <class Enum> +-void setEnumVal(EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value) ++void setEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value) + { +- auto& itemsSetLast = mapping.itemsSetLast[&ctrl]; ++ ctrl.Clear(); + +- std::vector<wxString> items; ++ int selectedPos = 0; + for (auto it = mapping.descrList.begin(); it != mapping.descrList.end(); ++it) +- items.push_back(it->second.first); +- +- if (items != itemsSetLast) + { +- ctrl.Set(items); //expensive as fuck! => only call when absolutely needed! +- itemsSetLast = std::move(items); ++ ctrl.Append(it->second.first); ++ if (it->first == value) ++ { ++ selectedPos = it - mapping.descrList.begin(); ++ ++ if (it->second.second.empty()) ++ ctrl.UnsetToolTip(); ++ else ++ ctrl.SetToolTip(it->second.second); ++ } + } +- //----------------------------------------------------------------- +- +- const auto it = std::find_if(mapping.descrList.begin(), mapping.descrList.end(), [&](const auto& mapItem) { return mapItem.first == value; }); +- if (it != mapping.descrList.end()) +- { +- if (const wxString& tooltip = it->second.second; +- !tooltip.empty()) +- ctrl.SetToolTip(tooltip); +- else +- ctrl.UnsetToolTip(); + +- const int selectedPos = it - mapping.descrList.begin(); +- ctrl.SetSelection(selectedPos); +- } +- else assert(false); ++ ctrl.SetSelection(selectedPos); + } + + template <class Enum> +@@ -115,17 +103,11 @@ + + template <class Enum> void updateTooltipEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl) + { +- const int selectedPos = ctrl.GetSelection(); ++ const Enum currentValue = getEnumVal(mapping, ctrl); + +- if (0 <= selectedPos && selectedPos < static_cast<int>(mapping.descrList.size())) +- { +- if (const auto& [text, tooltip] = mapping.descrList[selectedPos].second; +- !tooltip.empty()) +- ctrl.SetToolTip(tooltip); +- else +- ctrl.UnsetToolTip(); +- } +- else assert(false); ++ for (const auto& [enumValue, textAndTooltip] : mapping.descrList) ++ if (currentValue == enumValue) ++ ctrl.SetToolTip(textAndTooltip.second); + } + } + |