// Copyright (c) 2011 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 BASE_UTF_OFFSET_STRING_CONVERSIONS_H_ #define BASE_UTF_OFFSET_STRING_CONVERSIONS_H_ #pragma once #include #include "base/base_api.h" #include "base/string16.h" namespace base { class StringPiece; } // Like the conversions in utf_string_conversions.h, but also take offsets into // the source strings, which will be adjusted to point at the same logical place // in the result strings. If this isn't possible because the offsets point past // the end of the source strings or into the middle of multibyte sequences, they // will be set to std::wstring::npos. |offset_for_adjustment| may be NULL. BASE_API bool UTF8ToWideAndAdjustOffset(const char* src, size_t src_len, std::wstring* output, size_t* offset_for_adjustment); BASE_API std::wstring UTF8ToWideAndAdjustOffset(const base::StringPiece& utf8, size_t* offset_for_adjustment); BASE_API bool UTF16ToWideAndAdjustOffset(const char16* src, size_t src_len, std::wstring* output, size_t* offset_for_adjustment); BASE_API std::wstring UTF16ToWideAndAdjustOffset(const string16& utf16, size_t* offset_for_adjustment); #endif // BASE_UTF_OFFSET_STRING_CONVERSIONS_H_