// Copyright 2011 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_STRINGS_UTF_OFFSET_STRING_CONVERSIONS_H_ #define BASE_STRINGS_UTF_OFFSET_STRING_CONVERSIONS_H_ #include <stddef.h> #include <string> #include <string_view> #include <vector> #include "base/base_export.h" namespace base { // A helper class and associated data structures to adjust offsets into a // string in response to various adjustments one might do to that string // (e.g., eliminating a range). For details on offsets, see the comments by // the AdjustOffsets() function below. class BASE_EXPORT OffsetAdjuster { … }; // Like the conversions in utf_string_conversions.h, but also fills in an // |adjustments| parameter that reflects the alterations done to the string. // It may be NULL. BASE_EXPORT bool UTF8ToUTF16WithAdjustments( const char* src, size_t src_len, std::u16string* output, base::OffsetAdjuster::Adjustments* adjustments); [[nodiscard]] BASE_EXPORT std::u16string UTF8ToUTF16WithAdjustments( std::string_view utf8, base::OffsetAdjuster::Adjustments* adjustments); // As above, but instead internally examines the adjustments and applies them // to |offsets_for_adjustment|. Input offsets greater than the length of the // input string will be set to std::u16string::npos. See comments by // AdjustOffsets(). BASE_EXPORT std::u16string UTF8ToUTF16AndAdjustOffsets( std::string_view utf8, std::vector<size_t>* offsets_for_adjustment); BASE_EXPORT std::string UTF16ToUTF8AndAdjustOffsets( std::u16string_view utf16, std::vector<size_t>* offsets_for_adjustment); } // namespace base #endif // BASE_STRINGS_UTF_OFFSET_STRING_CONVERSIONS_H_