88 #define ZAKERO_CONCAT_(thing_1_, thing_2_) thing_1_ ## thing_2_
107 #define ZAKERO_CONCAT(thing_1_, thing_2_) ZAKERO_CONCAT_(thing_1_, thing_2_)
123 #define ZAKERO_DELETE(ptr_) \
125 auto*& var##__LINE__ = ptr_; \
126 delete var##__LINE__; \
127 var##__LINE__ = nullptr; \
144 #define ZAKERO_FREE(ptr_) \
146 auto*& var##__LINE__ = ptr_; \
147 free(var##__LINE__); \
148 var##__LINE__ = nullptr; \
164 #define ZAKERO_DISABLE_IMPLICIT_CASTS(func_name_) \
165 template <typename... T> \
166 void func_name_(T...) = delete \
188 #define ZAKERO_MACRO_HAS_VALUE(define_) \
189 ~(~define_ + 0) == 0 && ~(~define_ + 1) == 1
208 # include <sys/types.h>
210 # define ZAKERO_PID getpid()
212 # define ZAKERO_PID (pid_t)-1
231 #define ZAKERO_STEADY_TIME_NOW(unit_) \
232 std::chrono::duration_cast<std::chrono::unit_>( \
233 std::chrono::steady_clock::now().time_since_epoch() \
252 #define ZAKERO_SYSTEM_TIME_NOW(unit_) \
253 std::chrono::duration_cast<std::chrono::unit_>( \
254 std::chrono::steady_clock::now().time_since_epoch() \
263 #define ZAKERO_UNUSED(var_) \
276 {
Byte = 0x0000'0000'0000'0001
282 ,
Exabyte = 0x1000'0000'0000'0000
324 return size *
static_cast<uint64_t
>(from) /
static_cast<uint64_t
>(to);
360 return size *
static_cast<uint64_t
>(from) /
static_cast<uint64_t
>(to);
380 return (std::abs(a - b) < delta);
400 c = std::tolower(c, locale);
435 return (std::find(std::begin(vector), std::end(vector), value) != std::end(vector));
469 template <
class InputIter
478 return (std::find(first, last, value) != last);
507 return vector.erase(std::remove(std::begin(vector), std::end(vector), value), std::end(vector));
536 inline bool stob(
const std::string_view str
539 static std::vector<std::string> v =
566 return std::string(
"true");
569 return std::string(
"false");
583 inline std::string
to_string(std::chrono::nanoseconds nanoseconds
586 typedef std::chrono::duration<int64_t, std::ratio<86400>> duration_days;
588 const auto days = std::chrono::duration_cast<duration_days>(nanoseconds);
591 const auto hours = std::chrono::duration_cast<std::chrono::hours>(nanoseconds);
592 nanoseconds -= hours;
594 const auto minutes = std::chrono::duration_cast<std::chrono::minutes>(nanoseconds);
595 nanoseconds -= minutes;
597 const auto seconds = std::chrono::duration_cast<std::chrono::seconds>(nanoseconds);
598 nanoseconds -= seconds;
600 return "{ \"days\": " + std::to_string((int64_t)days.count())
601 +
", \"hours\": " + std::to_string((int64_t)hours.count())
602 +
", \"minutes\": " + std::to_string((int64_t)minutes.count())
603 +
", \"seconds\": " + std::to_string((int64_t)seconds.count())
604 +
", \"nanoseconds\": " + std::to_string((int64_t)nanoseconds.count())
617 inline std::string
to_string(
const std::error_code& error
621 +
"{ \"category\": \"" + error.category().name() +
"\""
622 +
", \"value\": " + std::to_string(error.value())
623 +
", \"message\": \"" + error.message() +
"\""
636 ,
const std::error_code& error
640 <<
"{ \"category\": \"" << error.category().name() <<
"\""
641 <<
", \"value\": " << std::to_string(error.value())
642 <<
", \"message\": \"" << error.message() <<
"\""
std::string to_string(const bool value) noexcept
Convert a bool into a string.
Definition: Zakero_Base.h:561
bool stob(const std::string_view str) noexcept
Convert a string into a boolean value.
Definition: Zakero_Base.h:536
auto vectorErase(std::vector< Type > &vector, const Type &value) noexcept
Erase the contents of a std::vector.
Definition: Zakero_Base.h:503
std::ostream & operator<<(std::ostream &stream, const std::error_code &error) noexcept
Insert std::error_code into an output stream.
Definition: Zakero_Base.h:635
Storage
Conversion Type.
Definition: Zakero_Base.h:276
bool vectorContains(const std::vector< Type > &vector, const Type &value) noexcept
Check the contents of a std::vector.
Definition: Zakero_Base.h:431
uint64_t convert(const uint64_t size, const zakero::Storage from, const zakero::Storage to) noexcept
Convert storage sizes.
Definition: Zakero_Base.h:319
bool equalish(const float a, const float b, const float delta) noexcept
Compare two floats.
Definition: Zakero_Base.h:375
std::string tolower(std::string str) noexcept
Convert a string to lower case.
Definition: Zakero_Base.h:393