diff options
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/assert.h | 5 | ||||
| -rw-r--r-- | src/common/string_util.cpp | 9 | ||||
| -rw-r--r-- | src/common/string_util.h | 8 | 
3 files changed, 21 insertions, 1 deletions
| diff --git a/src/common/assert.h b/src/common/assert.h index 0d4eddc19..6002f7ab1 100644 --- a/src/common/assert.h +++ b/src/common/assert.h @@ -52,5 +52,8 @@ __declspec(noinline, noreturn)  #define DEBUG_ASSERT_MSG(_a_, _desc_, ...)  #endif -#define UNIMPLEMENTED() LOG_CRITICAL(Debug, "Unimplemented code!") +#define UNIMPLEMENTED() ASSERT_MSG(false, "Unimplemented code!")  #define UNIMPLEMENTED_MSG(...) ASSERT_MSG(false, __VA_ARGS__) + +#define UNIMPLEMENTED_IF(cond) ASSERT_MSG(!(cond), "Unimplemented code!") +#define UNIMPLEMENTED_IF_MSG(cond, ...) ASSERT_MSG(!(cond), __VA_ARGS__) diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index 14f7037d8..959f278aa 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp @@ -214,6 +214,15 @@ std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, std::size_t      return std::string(buffer, len);  } +std::u16string UTF16StringFromFixedZeroTerminatedBuffer(std::u16string_view buffer, +                                                        std::size_t max_len) { +    std::size_t len = 0; +    while (len < max_len && buffer[len] != '\0') +        ++len; + +    return std::u16string(buffer.begin(), buffer.begin() + len); +} +  const char* TrimSourcePath(const char* path, const char* root) {      const char* p = path; diff --git a/src/common/string_util.h b/src/common/string_util.h index 08f96533b..583fd05e6 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h @@ -67,6 +67,14 @@ bool ComparePartialString(InIt begin, InIt end, const char* other) {  std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, std::size_t max_len);  /** + * Creates a UTF-16 std::u16string from a fixed-size NUL-terminated char buffer. If the buffer isn't + * null-terminated, then the string ends at the greatest multiple of two less then or equal to + * max_len_bytes. + */ +std::u16string UTF16StringFromFixedZeroTerminatedBuffer(std::u16string_view buffer, +                                                        std::size_t max_len); + +/**   * Attempts to trim an arbitrary prefix from `path`, leaving only the part starting at `root`. It's   * intended to be used to strip a system-specific build directory from the `__FILE__` macro,   * leaving only the path relative to the sources root. | 
