Files
toolbox/format_time/src/toolbox.hpp
2024-11-07 22:23:49 +01:00

127 lines
4.3 KiB
C++

#pragma once
#include <stdint.h>
#include <stddef.h>
/**
* @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<typename T>
static constexpr uint64_t u64(const T var) noexcept {
return static_cast<uint64_t>(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";
};