1 // Copyright 2014 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 COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_TITLE_MATCH_H_ 6 #define COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_TITLE_MATCH_H_ 7 8 #include <cstddef> 9 #include <utility> 10 #include <vector> 11 12 class BookmarkNode; 13 14 namespace bookmarks { 15 16 struct BookmarkMatch { 17 // Each MatchPosition is the [begin, end) positions of a match within a 18 // string. 19 typedef std::pair<size_t, size_t> MatchPosition; 20 typedef std::vector<MatchPosition> MatchPositions; 21 22 BookmarkMatch(); 23 ~BookmarkMatch(); 24 25 // Extracts and returns the offsets from |match_positions|. 26 static std::vector<size_t> OffsetsFromMatchPositions( 27 const MatchPositions& match_positions); 28 29 // Replaces the offsets in |match_positions| with those given in |offsets|, 30 // deleting any which are npos, and returns the updated list of match 31 // positions. 32 static MatchPositions ReplaceOffsetsInMatchPositions( 33 const MatchPositions& match_positions, 34 const std::vector<size_t>& offsets); 35 36 // The matching node of a query. 37 const BookmarkNode* node; 38 39 // Location of the matching words in the title of the node. 40 MatchPositions title_match_positions; 41 42 // Location of the matching words in the URL of the node. 43 MatchPositions url_match_positions; 44 }; 45 46 } // namespace bookmarks 47 48 #endif // COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_TITLE_MATCH_H_ 49