// Copyright 2009 The Chromium Authors. All rights reserved.
|
// Use of this source code is governed by a BSD-style license that can be
|
// found in the LICENSE file.
|
|
#ifndef MINI_CHROMIUM_BASE_STRINGS_UTF_STRING_CONVERSION_UTILS_H_
|
#define MINI_CHROMIUM_BASE_STRINGS_UTF_STRING_CONVERSION_UTILS_H_
|
|
#include "base/strings/string16.h"
|
|
namespace base {
|
|
inline bool IsValidCodepoint(uint32_t code_point) {
|
return code_point < 0xD800u ||
|
(code_point >= 0xE000u && code_point <= 0x10FFFFu);
|
}
|
|
bool ReadUnicodeCharacter(const char* src,
|
int32_t src_len,
|
int32_t* char_index,
|
uint32_t* code_point_out);
|
|
bool ReadUnicodeCharacter(const char16* src,
|
int32_t src_len,
|
int32_t* char_index,
|
uint32_t* code_point);
|
|
size_t WriteUnicodeCharacter(uint32_t code_point, std::string* output);
|
|
size_t WriteUnicodeCharacter(uint32_t code_point, string16* output);
|
|
template<typename CHAR>
|
void PrepareForUTF8Output(const CHAR* src, size_t src_len, std::string* output);
|
|
template<typename STRING>
|
void PrepareForUTF16Or32Output(const char* src, size_t src_len, STRING* output);
|
|
} // namespace base
|
|
#endif // MINI_CHROMIUM_BASE_STRINGS_UTF_STRING_CONVERSION_UTILS_H_
|