82 #define ZAKERO_CONCAT_(thing_1_, thing_2_) thing_1_ ## thing_2_
101 #define ZAKERO_CONCAT(thing_1_, thing_2_) ZAKERO_CONCAT_(thing_1_, thing_2_)
117 #define ZAKERO_DELETE(ptr_) \
119 auto*& var##__LINE__ = ptr_; \
120 delete var##__LINE__; \
121 var##__LINE__ = nullptr; \
138 #define ZAKERO_FREE(ptr_) \
140 auto*& var##__LINE__ = ptr_; \
141 free(var##__LINE__); \
142 var##__LINE__ = nullptr; \
164 #define ZAKERO_MACRO_HAS_VALUE(define_) \
165 ~(~define_ + 0) == 0 && ~(~define_ + 1) == 1
183 # include <sys/types.h>
185 # define ZAKERO_PID getpid()
187 # define ZAKERO_PID (pid_t)-1
205 #define ZAKERO_STEADY_TIME_NOW(unit_) \
206 std::chrono::duration_cast<std::chrono::unit_>( \
207 std::chrono::steady_clock::now().time_since_epoch() \
225 #define ZAKERO_SYSTEM_TIME_NOW(unit_) \
226 std::chrono::duration_cast<std::chrono::unit_>( \
227 std::chrono::steady_clock::now().time_since_epoch() \
236 #define ZAKERO_UNUSED(var_) \
249 {
Byte = 0x0000'0000'0000'0001
255 ,
Exabyte = 0x1000'0000'0000'0000
297 return size *
static_cast<uint64_t
>(from) /
static_cast<uint64_t
>(to);
333 return size *
static_cast<uint64_t
>(from) /
static_cast<uint64_t
>(to);
353 return (std::abs(a - b) < delta);
373 c = std::tolower(c, locale);
408 return (std::find(std::begin(vector), std::end(vector), value) != std::end(vector));
442 template <
class InputIter
451 return (std::find(first, last, value) != last);
480 return vector.erase(std::remove(std::begin(vector), std::end(vector), value), std::end(vector));
509 inline bool stob(
const std::string_view str
512 static std::vector<std::string> v =
539 return std::string(
"true");
542 return std::string(
"false");
556 inline std::string
to_string(std::chrono::nanoseconds nanoseconds
559 typedef std::chrono::duration<int64_t, std::ratio<86400>> duration_days;
561 const auto days = std::chrono::duration_cast<duration_days>(nanoseconds);
564 const auto hours = std::chrono::duration_cast<std::chrono::hours>(nanoseconds);
565 nanoseconds -= hours;
567 const auto minutes = std::chrono::duration_cast<std::chrono::minutes>(nanoseconds);
568 nanoseconds -= minutes;
570 const auto seconds = std::chrono::duration_cast<std::chrono::seconds>(nanoseconds);
571 nanoseconds -= seconds;
573 return "{ \"days\": " + std::to_string((int64_t)days.count())
574 +
", \"hours\": " + std::to_string((int64_t)hours.count())
575 +
", \"minutes\": " + std::to_string((int64_t)minutes.count())
576 +
", \"seconds\": " + std::to_string((int64_t)seconds.count())
577 +
", \"nanoseconds\": " + std::to_string((int64_t)nanoseconds.count())
590 inline std::string
to_string(
const std::error_code& error
594 +
"{ \"category\": \"" + error.category().name() +
"\""
595 +
", \"value\": " + std::to_string(error.value())
596 +
", \"message\": \"" + error.message() +
"\""
609 ,
const std::error_code& error
613 <<
"{ \"category\": \"" << error.category().name() <<
"\""
614 <<
", \"value\": " << std::to_string(error.value())
615 <<
", \"message\": \"" << error.message() <<
"\""
std::string to_string(const bool value) noexcept
Convert a bool into a string.
Definition: Zakero_Base.h:534
bool stob(const std::string_view str) noexcept
Convert a string into a boolean value.
Definition: Zakero_Base.h:509
auto vectorErase(std::vector< Type > &vector, const Type &value) noexcept
Erase the contents of a std::vector.
Definition: Zakero_Base.h:476
std::ostream & operator<<(std::ostream &stream, const std::error_code &error) noexcept
Insert std::error_code into an output stream.
Definition: Zakero_Base.h:608
Storage
Conversion Type.
Definition: Zakero_Base.h:249
bool vectorContains(const std::vector< Type > &vector, const Type &value) noexcept
Check the contents of a std::vector.
Definition: Zakero_Base.h:404
uint64_t convert(const uint64_t size, const zakero::Storage from, const zakero::Storage to) noexcept
Convert storage sizes.
Definition: Zakero_Base.h:292
bool equalish(const float a, const float b, const float delta) noexcept
Compare two floats.
Definition: Zakero_Base.h:348
std::string tolower(std::string str) noexcept
Convert a string to lower case.
Definition: Zakero_Base.h:366