4 #ifndef INDIGOX_UTILS_COMMON_HPP 5 #define INDIGOX_UTILS_COMMON_HPP 11 #include <type_traits> 16 class PortableBinaryInputArchive;
17 class PortableBinaryOutputArchive;
18 class JSONInputArchive;
19 class JSONOutputArchive;
36 using under = std::underlying_type<Option>::type;
37 return static_cast<Option>(static_cast<under>(l) | static_cast<under>(r));
41 using under = std::underlying_type<Option>::type;
42 return static_cast<Option>(static_cast<under>(l) & static_cast<under>(r));
48 std::string
ToUpper(
const std::string &s);
53 std::string
ToLower(
const std::string &s);
77 template <
typename T,
typename __Iter>
80 std::is_same<
typename std::weak_ptr<T>,
81 typename std::iterator_traits<__Iter>::value_type>::value,
82 "__Iter must be iterator over std::weak_ptr<T>.");
84 return std::find_if(b, e,
85 [x](std::weak_ptr<T> _x) {
return _x.lock() == x; });
Option
Definition: common.hpp:25
Definition: common.hpp:20
Definition: common.hpp:24
std::string ToUpperFirst(const std::string &s)
Convert a string to lower case with a single leading upper case.
std::string ToUpper(const std::string &s)
Convert a string to upper case.
Option operator|(Option l, Option r)
Definition: common.hpp:35
Definition: common.hpp:14
Option operator &(Option l, Option r)
Definition: common.hpp:40
std::string ToLower(const std::string &s)
Convert a string to lower case.
std::string GetRandomString(size_t length, size_t seed=0)
Generate a random string.
__Iter WeakContainsShared(__Iter b, __Iter e, std::shared_ptr< T > x)
Check if a given shared_ptr<T> is in a weak_ptr<T> container.
Definition: common.hpp:78