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 11struct UStringSearch; 12 13namespace base { 14namespace 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. 23BASE_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. 32class 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