diff options
author | crupest <crupest@outlook.com> | 2020-10-18 21:09:21 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-10-18 21:09:21 +0800 |
commit | 5729a5aa1b443e3e25f3e14dee29636d3b31a6f8 (patch) | |
tree | 264efb8b0abdbbe1bcff813d9f10288f78cab905 /include/cru/common | |
parent | 58af3c346e7dd72be077bf5231bb7bf193591288 (diff) | |
download | cru-5729a5aa1b443e3e25f3e14dee29636d3b31a6f8.tar.gz cru-5729a5aa1b443e3e25f3e14dee29636d3b31a6f8.tar.bz2 cru-5729a5aa1b443e3e25f3e14dee29636d3b31a6f8.zip |
...
Diffstat (limited to 'include/cru/common')
-rw-r--r-- | include/cru/common/Format.hpp | 23 | ||||
-rw-r--r-- | include/cru/common/Logger.hpp | 2 |
2 files changed, 25 insertions, 0 deletions
diff --git a/include/cru/common/Format.hpp b/include/cru/common/Format.hpp new file mode 100644 index 00000000..59f34036 --- /dev/null +++ b/include/cru/common/Format.hpp @@ -0,0 +1,23 @@ +#pragma once +#include "Base.hpp" + +#include "StringUtil.hpp" + +#include <array> +#include <charconv> +#include <string> +#include <string_view> +#include <system_error> +#include <type_traits> + +namespace cru { +template <typename T, typename = std::enable_if_t<std::is_arithmetic_v<T>>> +std::u16string ToUtf16String(T number) { + std::array<char, 40> buffer; + auto result = + std::to_chars(buffer.data(), buffer.data() + buffer.size(), number); + Ensures(result.ec == std::errc()); + std::string_view utf8_result(buffer.data(), result.ptr - buffer.data()); + return ToUtf16(utf8_result); +} +} // namespace cru diff --git a/include/cru/common/Logger.hpp b/include/cru/common/Logger.hpp index 4ea17c09..daf2e7d2 100644 --- a/include/cru/common/Logger.hpp +++ b/include/cru/common/Logger.hpp @@ -40,6 +40,7 @@ class Logger : public Object { std::list<std::unique_ptr<ILogSource>> sources_; }; +// TODO: Remove argument evaluation in Debug. template <typename... TArgs> void Debug([[maybe_unused]] TArgs&&... args) { #ifdef CRU_DEBUG @@ -66,6 +67,7 @@ void Error(TArgs&&... args) { fmt::format(std::forward<TArgs>(args)...)); } +// TODO: Remove argument evaluation in Debug. template <typename... TArgs> void TagDebug([[maybe_unused]] std::u16string_view tag, [[maybe_unused]] TArgs&&... args) { |