add matches

This commit is contained in:
chatlanin
2022-03-21 11:20:06 +03:00
parent f32a1e49a6
commit 6a58a1ac55
2 changed files with 8 additions and 25 deletions

View File

@@ -14,11 +14,11 @@ int main(int argc, char *argv[])
{// ex: split_str {// ex: split_str
std::string str { "asdf,qwer,zxcv" }; std::string str { "asdf,qwer,zxcv" };
hack::string::v_str v = hack::string::split_str(str, ','); hack::string::v_str v = hack::string::split_str(str, ',');
for (const auto& c : v) std::cout << c << std::endl; for (const auto& c : v) hack::log()(c);
} }
{// ex: within {// ex: within
std::cout << std::boolalpha << hack::range::within(12, 34, 12, 23, 31, 17, 22, 33) << std::endl; hack::log()(hack::range::within(12, 34, 12, 23, 31, 17, 22, 33));
} }
{// ex: vector_multiset {// ex: vector_multiset
@@ -43,7 +43,7 @@ int main(int argc, char *argv[])
std::vector<std::string> vs { "asdf", "qwer", "zxcv" }; std::vector<std::string> vs { "asdf", "qwer", "zxcv" };
hack::log()("vector", vs, 1, 2, 'a'); hack::log()("vector", vs, 1, 2, 'a');
std::list<std::string> ls { "asdf", "qwer", "zxcv" }; std::list<std::string> ls { "asdf", "qwer", "zxcv" };
hack::log()(vs, ls); hack::log()(vs, ls);
@@ -58,7 +58,7 @@ int main(int argc, char *argv[])
std::vector<int> v { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; std::vector<int> v { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
hack::log()(hack::container::matches(v, 2, 5, 4, 12)); hack::log()(hack::container::matches(v, 2, 5, 4, 12));
} }
{// ex: vector_remove_at {// ex: vector_remove_at
std::vector<int> v { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; std::vector<int> v { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
hack::container::vector_remove_at(v, 3); hack::container::vector_remove_at(v, 3);

View File

@@ -9,23 +9,6 @@
namespace hack namespace hack
{ {
template<typename T>
concept is_sequence_container = std::same_as<T, std::vector<typename T::value_type>> ||
std::same_as<T, std::list<typename T::value_type>>;
template<typename T>
concept is_tuple = requires (T t)
{
std::tuple_cat(t, std::make_tuple(1, "tuple"));
};
template<class T>
concept is_string = std::is_convertible_v<T, std::string_view>;
template<class T>
concept is_map = std::same_as<T, std::map<typename T::key_type, typename T::mapped_type, typename T::key_compare, typename T::allocator_type>> ||
std::same_as<T, std::unordered_map<typename T::key_type, typename T::mapped_type, typename T::hasher, typename T::key_equal, typename T::allocator_type>>;
class log class log
{ {
public: public:
@@ -67,7 +50,7 @@ namespace hack
print(args...); print(args...);
} }
template<is_string T> template<concepts::is_string T>
static void print_t(const T& data) static void print_t(const T& data)
{ {
std::cout << data << (count != 0 ? devider : ""); std::cout << data << (count != 0 ? devider : "");
@@ -79,7 +62,7 @@ namespace hack
std::cout << data << (count != 0 ? devider : ""); std::cout << data << (count != 0 ? devider : "");
} }
template<is_sequence_container T> template<concepts::is_sequence_container T>
static void print_t(const T& data) static void print_t(const T& data)
{ {
std::cout << "{ "; std::cout << "{ ";
@@ -87,7 +70,7 @@ namespace hack
std::cout << " }" << (count != 0 ? devider : ""); std::cout << " }" << (count != 0 ? devider : "");
} }
template<is_map T> template<concepts::is_map T>
static void print_t(const T& data) static void print_t(const T& data)
{ {
std::cout << "{"; std::cout << "{";
@@ -95,7 +78,7 @@ namespace hack
std::cout << "}" << (count != 0 ? devider : ""); std::cout << "}" << (count != 0 ? devider : "");
} }
template<is_tuple T, typename std::size_t... idx> template<concepts::is_tuple T, typename std::size_t... idx>
static void print_t(const T& data) static void print_t(const T& data)
{ {
print_t(data, std::make_index_sequence<std::tuple_size<T>::value>{}); print_t(data, std::make_index_sequence<std::tuple_size<T>::value>{});