14#include <AUI/Common/AString.h>
21 template<
typename Val
idator1,
typename Val
idator2>
24 bool operator()(T t)
const noexcept {
25 return Validator1()(t) && Validator2()(t);
29 template<
typename Val
idator1,
typename Val
idator2>
32 bool operator()(T t)
const noexcept {
33 return Validator1()(t) || Validator2()(t);
39 constexpr bool is_validator = std::is_base_of_v<validator, T>;
41 template<
typename Val
idator1,
typename Val
idator2, std::enable_if_t<is_val
idator<Val
idator1> &&
42 is_val
idator<Val
idator2>,
bool> = true>
43 auto operator||(Validator1 v1, Validator2 v2)
noexcept {
48 template<
typename Val
idator1,
typename Val
idator2, std::enable_if_t<is_val
idator<Val
idator1> &&
49 is_val
idator<Val
idator2>,
bool> = true>
50 auto operator&&(Validator1 v1, Validator2 v2)
noexcept {
52 return impl::And<Validator1, Validator2>();
59 template<auto lower, auto higher>
62 bool operator()(T t)
const noexcept {
63 return t >= lower && t <= higher;
73 bool operator()(
int c)
const noexcept {
74 return (c >=
'a' && c <=
'z') || (c >=
'A' && c <=
'Z');
82 bool operator()(
int c)
const noexcept {
83 return (c >=
'0' && c <=
'9');
98 template<
typename Val
idator>
99 struct any: validator {
101 any(Validator validator = {}): validator(std::move(validator)) {}
103 template<
typename Container>
104 bool operator()(
const Container& c)
const noexcept {
105 for (
const auto& elem : c) {
106 if (validator(elem))
return true;
116 template<
typename Val
idator>
117 struct all: validator {
119 all(Validator validator = {}): validator(std::move(validator)) {}
121 template<
typename Container>
122 bool operator()(
const Container& c)
const noexcept {
123 for (
const auto& elem : c) {
124 if (!Validator()(elem))
return false;
Definition AValidator.h:71
Definition AValidator.h:81
Definition AValidator.h:117
Definition AValidator.h:22
Definition AValidator.h:30
Definition AValidator.h:60
Definition AValidator.h:18