~singpolyma/biboumi

3f8513726512308b1b48d3370d7acf0f63752725 — louiz’ 6 years ago de73a72 + 97c8e2f
Merge tag '7.2'
5 files changed, 21 insertions(+), 15 deletions(-)

M CHANGELOG.rst
M packaging/biboumi.spec.cmake
M src/database/row.hpp
M src/utils/is_one_of.hpp
M tests/utils.cpp
M CHANGELOG.rst => CHANGELOG.rst +6 -0
@@ 1,3 1,9 @@
Version 7.2 - 2018-01-24
========================

- Fix compilation with gcc 4.9. This is the last version to support this
  old version.

Version 7.1 - 2018-01-22
========================


M packaging/biboumi.spec.cmake => packaging/biboumi.spec.cmake +3 -0
@@ 66,6 66,9 @@ make check %{?_smp_mflags}
* ${RPM_DATE} Le Coz Florent <louiz@louiz.org> - ${RPM_VERSION}-1
- Build latest git revision

* Wed Jan 24 2018 Le Coz Florent <louiz@louiz.org> - 7.2-1
  Update to version 7.2

* Wed Jan 22 2018 Le Coz Florent <louiz@louiz.org> - 7.1-1
  Update to version 7.1


M src/database/row.hpp => src/database/row.hpp +2 -2
@@ 30,13 30,13 @@ struct Row
  }

  template <bool Coucou=true>
  void save(std::unique_ptr<DatabaseEngine>& db,  typename std::enable_if<!is_one_of<Id, T...> && Coucou>::type* = nullptr)
  void save(std::unique_ptr<DatabaseEngine>& db,  typename std::enable_if<!is_one_of<Id, T...>::value && Coucou>::type* = nullptr)
  {
    this->insert(*db);
  }

  template <bool Coucou=true>
  void save(std::unique_ptr<DatabaseEngine>& db,  typename std::enable_if<is_one_of<Id, T...> && Coucou>::type* = nullptr)
  void save(std::unique_ptr<DatabaseEngine>& db,  typename std::enable_if<is_one_of<Id, T...>::value && Coucou>::type* = nullptr)
  {
    const Id& id = std::get<Id>(this->columns);
    if (id.value == Id::unset_value)

M src/utils/is_one_of.hpp => src/utils/is_one_of.hpp +3 -6
@@ 3,15 3,12 @@
#include <type_traits>

template <typename...>
struct is_one_of_implem {
struct is_one_of {
    static constexpr bool value = false;
};

template <typename F, typename S, typename... T>
struct is_one_of_implem<F, S, T...> {
struct is_one_of<F, S, T...> {
    static constexpr bool value =
        std::is_same<F, S>::value || is_one_of_implem<F, T...>::value;
        std::is_same<F, S>::value || is_one_of<F, T...>::value;
};

template<typename... T>
constexpr bool is_one_of = is_one_of_implem<T...>::value;

M tests/utils.cpp => tests/utils.cpp +7 -7
@@ 175,11 175,11 @@ TEST_CASE("dirname")

TEST_CASE("is_in")
{
  CHECK((is_one_of<int, float, std::string, int>) == true);
  CHECK((is_one_of<int, float, std::string>) == false);
  CHECK((is_one_of<int>) == false);
  CHECK((is_one_of<int, int>) == true);
  CHECK((is_one_of<bool, int>) == false);
  CHECK((is_one_of<bool, bool>) == true);
  CHECK((is_one_of<bool, bool, bool, bool, bool, int>) == true);
  CHECK((is_one_of<int, float, std::string, int>::value) == true);
  CHECK((is_one_of<int, float, std::string>::value) == false);
  CHECK((is_one_of<int>::value) == false);
  CHECK((is_one_of<int, int>::value) == true);
  CHECK((is_one_of<bool, int>::value) == false);
  CHECK((is_one_of<bool, bool>::value) == true);
  CHECK((is_one_of<bool, bool, bool, bool, bool, int>::value) == true);
}