30#include <unordered_map> 
   32#define DEFINE_ENUM_FLAGS(ENUM_TYPE) \ 
   33inline constexpr ENUM_TYPE operator~(ENUM_TYPE a) noexcept { \ 
   34    using underlying = std::underlying_type_t<ENUM_TYPE>; \ 
   35    return static_cast<ENUM_TYPE>(~static_cast<underlying>(a)); \ 
   37inline constexpr ENUM_TYPE operator|(ENUM_TYPE lhs, ENUM_TYPE rhs) noexcept { \ 
   38    using underlying = std::underlying_type_t<ENUM_TYPE>; \ 
   39    return static_cast<ENUM_TYPE>(static_cast<underlying>(lhs) | static_cast<underlying>(rhs)); \ 
   41inline constexpr ENUM_TYPE operator&(ENUM_TYPE lhs, ENUM_TYPE rhs) noexcept { \ 
   42    using underlying = std::underlying_type_t<ENUM_TYPE>; \ 
   43    return static_cast<ENUM_TYPE>(static_cast<underlying>(lhs) & static_cast<underlying>(rhs)); \ 
   45inline constexpr ENUM_TYPE operator^(ENUM_TYPE lhs, ENUM_TYPE rhs) noexcept { \ 
   46    using underlying = std::underlying_type_t<ENUM_TYPE>; \ 
   47    return static_cast<ENUM_TYPE>(static_cast<underlying>(lhs) ^ static_cast<underlying>(rhs)); \ 
   49inline ENUM_TYPE& operator|=(ENUM_TYPE& lhs, ENUM_TYPE rhs) noexcept { \ 
   50    return lhs = (lhs | rhs); \ 
   52inline ENUM_TYPE& operator&=(ENUM_TYPE& lhs, ENUM_TYPE rhs) noexcept { \ 
   53    return lhs = (lhs & rhs); \ 
   55inline ENUM_TYPE& operator^=(ENUM_TYPE& lhs, ENUM_TYPE rhs) noexcept { \ 
   56    return lhs = (lhs ^ rhs); \ 
   73    std::vector<std::string> 
convertUrlMapToVector(
const std::unordered_map<std::string, std::string>& urls) 
noexcept;
 
   84    std::vector<std::
byte> 
readFileBytes(const std::filesystem::path& path) noexcept;
 
  102    bool writeFileBytes(
const std::filesystem::path& path, 
const std::vector<std::byte>& bytes, 
bool overwrite = 
true) noexcept;
 
 
Definition codehelpers.h:60
 
const T & unmove(T &&t) noexcept
Unmoves a value.
Definition codehelpers.h:91
 
std::string getLastSystemError() noexcept
Get the last system api call error message.
 
size_t combineHash(size_t a, size_t b) noexcept
Combines two hash values together.
 
std::vector< std::string > convertUrlMapToVector(const std::unordered_map< std::string, std::string > &urls) noexcept
Converts a map of URLs to a vector.
 
std::vector< std::byte > readFileBytes(const std::filesystem::path &path) noexcept
Reads a file as a vector of bytes.
 
bool writeFileBytes(const std::filesystem::path &path, const std::vector< std::byte > &bytes, bool overwrite=true) noexcept
Writes a vector of bytes to a file.