blob: c8cdbc1d5ec9d2268f7b16ca22d15a92c7046ccd [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BSSL_FILLINS_UTF_STRING_CONVERSIONS
#define BSSL_FILLINS_UTF_STRING_CONVERSIONS
#include <openssl/base.h>
#include <string>
#define CBU_IS_SURROGATE(c) (((c)&0xfffff800) == 0xd800)
#define CBU_IS_UNICODE_NONCHAR(c) \
((c) >= 0xfdd0 && ((uint32_t)(c) <= 0xfdef || ((c)&0xfffe) == 0xfffe) && \
(uint32_t)(c) <= 0x10ffff)
#define CBU_IS_UNICODE_CHAR(c) \
((uint32_t)(c) < 0xd800 || \
((uint32_t)(c) > 0xdfff && (uint32_t)(c) <= 0x10ffff && \
!CBU_IS_UNICODE_NONCHAR(c)))
namespace bssl {
namespace fillins {
OPENSSL_EXPORT void WriteUnicodeCharacter(uint32_t codepoint,
std::string *append_to);
} // namespace fillins
} // namespace bssl
#endif // BSSL_FILLINS_UTF_STRING_CONVERSIONS