• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef BASE_UTF_OFFSET_STRING_CONVERSIONS_H_
6 #define BASE_UTF_OFFSET_STRING_CONVERSIONS_H_
7 
8 #include <string>
9 
10 #include "base/string16.h"
11 
12 namespace base {
13 class StringPiece;
14 }
15 
16 // Like the conversions in utf_string_conversions.h, but also take offsets into
17 // the source strings, which will be adjusted to point at the same logical place
18 // in the result strings.  If this isn't possible because the offsets point past
19 // the end of the source strings or into the middle of multibyte sequences, they
20 // will be set to std::wstring::npos.  |offset_for_adjustment| may be NULL.
21 bool UTF8ToWideAndAdjustOffset(const char* src,
22                                size_t src_len,
23                                std::wstring* output,
24                                size_t* offset_for_adjustment);
25 std::wstring UTF8ToWideAndAdjustOffset(const base::StringPiece& utf8,
26                                        size_t* offset_for_adjustment);
27 
28 bool UTF16ToWideAndAdjustOffset(const char16* src,
29                                 size_t src_len,
30                                 std::wstring* output,
31                                 size_t* offset_for_adjustment);
32 std::wstring UTF16ToWideAndAdjustOffset(const string16& utf16,
33                                         size_t* offset_for_adjustment);
34 
35 #endif  // BASE_UTF_OFFSET_STRING_CONVERSIONS_H_
36