1 // Copyright (c) 2011 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_I18N_STRING_SEARCH_H_ 6 #define BASE_I18N_STRING_SEARCH_H_ 7 8 #include "base/i18n/base_i18n_export.h" 9 #include "base/strings/string16.h" 10 11 struct UStringSearch; 12 13 namespace base { 14 namespace i18n { 15 16 // Returns true if |in_this| contains |find_this|. If |match_index| or 17 // |match_length| are non-NULL, they are assigned the start position and total 18 // length of the match. 19 // 20 // Only differences between base letters are taken into consideration. Case and 21 // accent differences are ignored. Please refer to 'primary level' in 22 // http://userguide.icu-project.org/collation/concepts for additional details. 23 BASE_I18N_EXPORT 24 bool StringSearchIgnoringCaseAndAccents(const string16& find_this, 25 const string16& in_this, 26 size_t* match_index, 27 size_t* match_length); 28 29 // This class is for speeding up multiple StringSearchIgnoringCaseAndAccents() 30 // with the same |find_this| argument. |find_this| is passed as the constructor 31 // argument, and precomputation for searching is done only at that timing. 32 class BASE_I18N_EXPORT FixedPatternStringSearchIgnoringCaseAndAccents { 33 public: 34 explicit FixedPatternStringSearchIgnoringCaseAndAccents( 35 const string16& find_this); 36 ~FixedPatternStringSearchIgnoringCaseAndAccents(); 37 38 // Returns true if |in_this| contains |find_this|. If |match_index| or 39 // |match_length| are non-NULL, they are assigned the start position and total 40 // length of the match. 41 bool Search(const string16& in_this, 42 size_t* match_index, 43 size_t* match_length); 44 45 private: 46 string16 find_this_; 47 UStringSearch* search_; 48 }; 49 50 } // namespace i18n 51 } // namespace base 52 53 #endif // BASE_I18N_STRING_SEARCH_H_ 54