mirror of
https://github.com/rbock/sqlpp11.git
synced 2026-04-28 15:09:26 -05:00
Rewrote any_t to take bools instead of predicate and classes
This commit is contained in:
@@ -33,17 +33,23 @@ namespace sqlpp
|
||||
{
|
||||
namespace detail
|
||||
{
|
||||
template<bool... b>
|
||||
struct all_helper;
|
||||
template<bool... B>
|
||||
struct logic_helper;
|
||||
|
||||
template<template<typename> class Predicate, typename... T>
|
||||
using all_t = std::is_same<all_helper<Predicate<T>::value...>, all_helper<(true or Predicate<T>::value)...>>;
|
||||
using all_t = std::integral_constant<
|
||||
bool,
|
||||
std::is_same<logic_helper<Predicate<T>::value...>, logic_helper<(true or Predicate<T>::value)...>>::value>;
|
||||
|
||||
template<template<typename> class Predicate, typename... T>
|
||||
using any_t = typename std::conditional<std::is_same<all_helper<Predicate<T>::value...>, all_helper<(false and Predicate<T>::value)...>>::value,
|
||||
std::false_type,
|
||||
std::true_type
|
||||
>::type;
|
||||
template<bool... B>
|
||||
using any_t = std::integral_constant<
|
||||
bool,
|
||||
not std::is_same<logic_helper<B...>, logic_helper<(false and B)...>>::value>;
|
||||
|
||||
template<bool... B>
|
||||
using none_t = std::integral_constant<
|
||||
bool,
|
||||
std::is_same<logic_helper<B...>, logic_helper<(false and B)...>>::value>;
|
||||
|
||||
template<bool>
|
||||
struct not_impl;
|
||||
|
||||
@@ -79,9 +79,7 @@ namespace sqlpp
|
||||
template<typename E, typename... Elements>
|
||||
struct is_element_of<E, type_set<Elements...>>
|
||||
{
|
||||
template<typename X>
|
||||
using matchE = std::is_same<E, X>;
|
||||
static constexpr bool value = any_t<matchE, Elements...>::value;
|
||||
static constexpr bool value = any_t<std::is_same<E, Elements>::value...>::value;
|
||||
};
|
||||
|
||||
template<typename L, typename R>
|
||||
@@ -116,6 +114,9 @@ namespace sqlpp
|
||||
using type = typename make_type_set<LElements..., RElements...>::type;
|
||||
};
|
||||
|
||||
template<typename L, typename R>
|
||||
using joined_set_t = typename joined_set<L, R>::type;
|
||||
|
||||
template<typename L, typename R>
|
||||
struct is_disjunct_from
|
||||
{
|
||||
@@ -125,12 +126,7 @@ namespace sqlpp
|
||||
template<typename... LElements, typename... RElements>
|
||||
struct is_disjunct_from<type_set<LElements...>, type_set<RElements...>>
|
||||
{
|
||||
template<typename X>
|
||||
using is_element_of_L = is_element_of<X, type_set<LElements...>>;
|
||||
template<typename X>
|
||||
using is_element_of_R = is_element_of<X, type_set<RElements...>>;
|
||||
static constexpr bool value =
|
||||
not(any_t<is_element_of_L, RElements...>::value or any_t<is_element_of_R, LElements...>::value);
|
||||
static constexpr bool value = joined_set_t<type_set<LElements...>, type_set<RElements...>>::size::value == sizeof...(LElements) + sizeof...(RElements);
|
||||
};
|
||||
|
||||
template<>
|
||||
|
||||
+2
-2
@@ -67,7 +67,7 @@ namespace sqlpp
|
||||
|
||||
static_assert(sqlpp::detail::all_t<is_assignment_t, Assignments...>::value, "at least one argument is not an assignment in set()");
|
||||
|
||||
static_assert(not sqlpp::detail::any_t<must_not_insert_t, typename Assignments::_column_t...>::value, "at least one assignment is prohibited by its column definition in set()");
|
||||
static_assert(sqlpp::detail::none_t<must_not_insert_t<typename Assignments::_column_t>::value...>::value, "at least one assignment is prohibited by its column definition in set()");
|
||||
|
||||
using _column_table_set = typename ::sqlpp::detail::make_joined_set<typename Assignments::_column_t::_table_set...>::type;
|
||||
using _value_table_set = typename ::sqlpp::detail::make_joined_set<typename Assignments::value_type::_table_set...>::type;
|
||||
@@ -144,7 +144,7 @@ namespace sqlpp
|
||||
|
||||
static_assert(::sqlpp::detail::all_t<is_column_t, Columns...>::value, "at least one argument is not a column in columns()");
|
||||
|
||||
static_assert(not ::sqlpp::detail::any_t<must_not_insert_t, Columns...>::value, "at least one column argument has a must_not_insert flag in its definition");
|
||||
static_assert(::sqlpp::detail::none_t<must_not_insert_t<Columns>::value...>::value, "at least one column argument has a must_not_insert flag in its definition");
|
||||
|
||||
using _value_tuple_t = std::tuple<vendor::insert_value_t<Columns>...>;
|
||||
using _table_set = typename ::sqlpp::detail::make_joined_set<typename Columns::_table_set...>::type;
|
||||
|
||||
Vendored
+1
-1
@@ -50,7 +50,7 @@ namespace sqlpp
|
||||
|
||||
static_assert(::sqlpp::detail::all_t<is_assignment_t, Assignments...>::value, "at least one argument is not an assignment in set()");
|
||||
|
||||
static_assert(not ::sqlpp::detail::any_t<must_not_update_t, typename Assignments::_column_t...>::value, "at least one assignment is prohibited by its column definition in set()");
|
||||
static_assert(::sqlpp::detail::none_t<must_not_update_t<typename Assignments::_column_t>::value...>::value, "at least one assignment is prohibited by its column definition in set()");
|
||||
|
||||
using _column_table_set = typename ::sqlpp::detail::make_joined_set<typename Assignments::_column_t::_table_set...>::type;
|
||||
using _value_table_set = typename ::sqlpp::detail::make_joined_set<typename Assignments::value_type::_table_set...>::type;
|
||||
|
||||
Vendored
+1
-1
@@ -47,7 +47,7 @@ namespace sqlpp
|
||||
using _parameter_tuple_t = std::tuple<Expressions...>;
|
||||
|
||||
static_assert(_is_dynamic::value or sizeof...(Expressions), "at least one expression argument required in where()");
|
||||
static_assert(not sqlpp::detail::any_t<is_assignment_t, Expressions...>::value, "at least one argument is an assignment in where()");
|
||||
static_assert(sqlpp::detail::none_t<is_assignment_t<Expressions>::value...>::value, "at least one argument is an assignment in where()");
|
||||
static_assert(sqlpp::detail::all_t<is_expression_t, Expressions...>::value, "at least one argument is not valid expression in where()");
|
||||
|
||||
using _parameter_list_t = typename make_parameter_list_t<_parameter_tuple_t>::type;
|
||||
|
||||
Reference in New Issue
Block a user