#pragma once #include #include /** * @brief Cast a variable to an unsigned 64 bit integer * * @tparam T Type of the variable to cast * @param vae Variable to cast * @return Casted variable */ template static constexpr uint64_t u64(const T var) noexcept { return static_cast(var); } /** * @brief Convert a given string to an unsigned 64 bit integer * * @param str Input string to convert * @param n Integer output * @return EXIT_SUCCESS if successful otherwise EXIT_FAILURE */ int32_t sstrtoull(const char* const str, uint64_t& n) noexcept; /** * @brief Swap two given memory values * * @tparam T Type of memory placeholder * @param a Firat memory pointer * @param b Second memory pointer */ inline void swap(char* const a, char* const b) noexcept; /** * @brief Convert a given number to string * * @param num Number to convert * @param offset of the string location to append * @param str String to append the number to * @return number of written bytes */ size_t ullstr(uint64_t num, const size_t offset, char* const str) noexcept; /** * @brief Convert a given number to string * * @param num Number to convert * @param str String to append the number to * @return number of written bytes */ size_t ullstr(uint64_t num, char* const str) noexcept; namespace AnsiColor { constexpr const char* const Reset = "\e[0m"; // Regular constexpr const char* const Black = "\e[0;30m"; constexpr const char* const Red = "\e[0;31m"; constexpr const char* const Green = "\e[0;32m"; constexpr const char* const Yellow = "\e[0;33m"; constexpr const char* const Blue = "\e[0;34m"; constexpr const char* const Purple = "\e[0;35m"; constexpr const char* const Cyan = "\e[0;36m"; constexpr const char* const White = "\e[0;37m"; // Bold constexpr const char* const BoldBlack = "\e[1;30m"; constexpr const char* const BoldRed = "\e[1;31m"; constexpr const char* const BoldGreen = "\e[1;32m"; constexpr const char* const BoldYellow = "\e[1;33m"; constexpr const char* const BoldBlue = "\e[1;34m"; constexpr const char* const BoldPurple = "\e[1;35m"; constexpr const char* const BoldCyan = "\e[1;36m"; constexpr const char* const BoldWhite = "\e[1;37m"; // Underline constexpr const char* const UnderBlack = "\e[4;30m"; constexpr const char* const UnderRed = "\e[4;31m"; constexpr const char* const UnderGreen = "\e[4;32m"; constexpr const char* const UnderYellow = "\e[4;33m"; constexpr const char* const UnderBlue = "\e[4;34m"; constexpr const char* const UnderPurple = "\e[4;35m"; constexpr const char* const UnderCyan = "\e[4;36m"; constexpr const char* const UnderWhite = "\e[4;37m"; // Background constexpr const char* const BgBlack = "\e[40m"; constexpr const char* const BgRed = "\e[41m"; constexpr const char* const BgGreen = "\e[42m"; constexpr const char* const BgYellow = "\e[43m"; constexpr const char* const BgBlue = "\e[44m"; constexpr const char* const BgPurple = "\e[45m"; constexpr const char* const BgCyan = "\e[46m"; constexpr const char* const BgWhite = "\e[47m"; // High Intensity constexpr const char* const HIBlack = "\e[0;90m"; constexpr const char* const HIRed = "\e[0;91m"; constexpr const char* const HIGreen = "\e[0;92m"; constexpr const char* const HIYellow = "\e[0;93m"; constexpr const char* const HIBlue = "\e[0;94m"; constexpr const char* const HIPurple = "\e[0;95m"; constexpr const char* const HICyan = "\e[0;96m"; constexpr const char* const HIWhite = "\e[0;97m"; // Bold High Intensity constexpr const char* const BoldHIBlack = "\e[1;90m"; constexpr const char* const BoldHIRed = "\e[1;91m"; constexpr const char* const BoldHIGreen = "\e[1;92m"; constexpr const char* const BoldHIYellow = "\e[1;93m"; constexpr const char* const BoldHIBlue = "\e[1;94m"; constexpr const char* const BoldHIPurple = "\e[1;95m"; constexpr const char* const BoldHICyan = "\e[1;96m"; constexpr const char* const BoldHIWhite = "\e[1;97m"; // High Intensity Background constexpr const char* const HIBgBlack = "\e[0;100m"; constexpr const char* const HIBgRed = "\e[0;101m"; constexpr const char* const HIBgGreen = "\e[0;102m"; constexpr const char* const HIBgYellow = "\e[0;103m"; constexpr const char* const HIBgBlue = "\e[0;104m"; constexpr const char* const HIBgPurple = "\e[0;105m"; constexpr const char* const HIBgCyan = "\e[0;106m"; constexpr const char* const HIBgWhite = "\e[0;107m"; };