127 lines
4.3 KiB
C++
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";
|
|
};
|