1635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/* 2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project********************************************************************** 3635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Copyright (C) 2001-2005 IBM and others. All rights reserved. 4635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project********************************************************************** 5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Date Name Description 6635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* 06/28/2001 synwee Creation. 7635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project********************************************************************** 8635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#ifndef USEARCH_H 10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#define USEARCH_H 11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "unicode/utypes.h" 13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if !UCONFIG_NO_COLLATION 15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 16635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "unicode/ucol.h" 17635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "unicode/ucoleitr.h" 18635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "unicode/ubrk.h" 19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * \file 22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * \brief C API: StringSearch 23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * C Apis for an engine that provides language-sensitive text searching based 25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * on the comparison rules defined in a <tt>UCollator</tt> data struct, 26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * see <tt>ucol.h</tt>. This ensures that language eccentricity can be 27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * handled, e.g. for the German collator, characters ß and SS will be matched 28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * if case is chosen to be ignored. 29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * See the <a href="http://dev.icu-project.org/cgi-bin/viewcvs.cgi/~checkout~/icuhtml/design/collation/ICU_collation_design.htm"> 30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * "ICU Collation Design Document"</a> for more information. 31635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <p> 32635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * The algorithm implemented is a modified form of the Boyer Moore's search. 33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * For more information see 34635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <a href="http://icu.sourceforge.net/docs/papers/efficient_text_searching_in_java.html"> 35635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * "Efficient Text Searching in Java"</a>, published in <i>Java Report</i> 36635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * in February, 1999, for further information on the algorithm. 37635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <p> 38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * There are 2 match options for selection:<br> 39635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Let S' be the sub-string of a text string S between the offsets start and 40635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * end <start, end>. 41635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <br> 42635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * A pattern string P matches a text string S at the offsets <start, end> 43635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * if 44635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <pre> 45635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * option 1. Some canonical equivalent of P matches some canonical equivalent 46635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * of S' 47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * option 2. P matches S' and if P starts or ends with a combining mark, 48635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * there exists no non-ignorable combining mark before or after S' 49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * in S respectively. 50635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * </pre> 51635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Option 2. will be the default. 52635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <p> 53635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * This search has APIs similar to that of other text iteration mechanisms 54635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * such as the break iterators in <tt>ubrk.h</tt>. Using these 55635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * APIs, it is easy to scan through text looking for all occurances of 56635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * a given pattern. This search iterator allows changing of direction by 57635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * calling a <tt>reset</tt> followed by a <tt>next</tt> or <tt>previous</tt>. 58635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Though a direction change can occur without calling <tt>reset</tt> first, 59635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * this operation comes with some speed penalty. 60635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Generally, match results in the forward direction will match the result 61635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * matches in the backwards direction in the reverse order 62635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <p> 63635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <tt>usearch.h</tt> provides APIs to specify the starting position 64635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * within the text string to be searched, e.g. <tt>usearch_setOffset</tt>, 65635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <tt>usearch_preceding</tt> and <tt>usearch_following</tt>. Since the 66635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * starting position will be set as it is specified, please take note that 67635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * there are some dangerous positions which the search may render incorrect 68635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * results: 69635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <ul> 70635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <li> The midst of a substring that requires normalization. 71635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <li> If the following match is to be found, the position should not be the 72635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * second character which requires to be swapped with the preceding 73635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * character. Vice versa, if the preceding match is to be found, 74635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * position to search from should not be the first character which 75635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * requires to be swapped with the next character. E.g certain Thai and 76635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Lao characters require swapping. 77635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <li> If a following pattern match is to be found, any position within a 78635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * contracting sequence except the first will fail. Vice versa if a 79635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * preceding pattern match is to be found, a invalid starting point 80635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * would be any character within a contracting sequence except the last. 81635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * </ul> 82635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <p> 83635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * A breakiterator can be used if only matches at logical breaks are desired. 84635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Using a breakiterator will only give you results that exactly matches the 85635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * boundaries given by the breakiterator. For instance the pattern "e" will 86635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * not be found in the string "\u00e9" if a character break iterator is used. 87635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <p> 88635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Options are provided to handle overlapping matches. 89635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * E.g. In English, overlapping matches produces the result 0 and 2 90635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * for the pattern "abab" in the text "ababab", where else mutually 91635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * exclusive matches only produce the result of 0. 92635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <p> 93635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Though collator attributes will be taken into consideration while 94635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * performing matches, there are no APIs here for setting and getting the 95635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * attributes. These attributes can be set by getting the collator 96635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * from <tt>usearch_getCollator</tt> and using the APIs in <tt>ucol.h</tt>. 97635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Lastly to update String Search to the new collator attributes, 98635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * usearch_reset() has to be called. 99635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <p> 100635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Restriction: <br> 101635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Currently there are no composite characters that consists of a 102635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * character with combining class > 0 before a character with combining 103635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * class == 0. However, if such a character exists in the future, the 104635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * search mechanism does not guarantee the results for option 1. 105635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 106635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <p> 107635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Example of use:<br> 108635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <pre><code> 109635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * char *tgtstr = "The quick brown fox jumped over the lazy fox"; 110635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * char *patstr = "fox"; 111635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * UChar target[64]; 112635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * UChar pattern[16]; 113635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * UErrorCode status = U_ZERO_ERROR; 114635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * u_uastrcpy(target, tgtstr); 115635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * u_uastrcpy(pattern, patstr); 116635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 117635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * UStringSearch *search = usearch_open(pattern, -1, target, -1, "en_US", 118635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * &status); 119635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * if (U_SUCCESS(status)) { 120635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * for (int pos = usearch_first(search, &status); 121635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * pos != USEARCH_DONE; 122635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * pos = usearch_next(search, &status)) { 123635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * printf("Found match at %d pos, length is %d\n", pos, 124635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * usearch_getMatchLength(search)); 125635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * } 126635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * } 127635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * </code></pre> 128635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @stable ICU 2.4 129635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 130635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 131635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 132635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* DONE is returned by previous() and next() after all valid matches have 133635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* been returned, and by first() and last() if there are no matches at all. 134635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 135635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 136635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#define USEARCH_DONE -1 137635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 138635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 139635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Data structure for searching 140635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 141635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 142635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectstruct UStringSearch; 143635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 144635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Data structure for searching 145635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 146635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 147635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projecttypedef struct UStringSearch UStringSearch; 148635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 149635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 150635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 151635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 152635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projecttypedef enum { 153635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project /** Option for overlapping matches */ 154635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project USEARCH_OVERLAP, 155635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project /** 156635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Option for canonical matches. option 1 in header documentation. 157635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project The default value will be USEARCH_OFF 158635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 159635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project USEARCH_CANONICAL_MATCH, 160635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project USEARCH_ATTRIBUTE_COUNT 161635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} USearchAttribute; 162635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 163635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 164635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 165635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 166635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projecttypedef enum { 167635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project /** default value for any USearchAttribute */ 168635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project USEARCH_DEFAULT = -1, 169635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project /** value for USEARCH_OVERLAP and USEARCH_CANONICAL_MATCH */ 170635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project USEARCH_OFF, 171635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project /** value for USEARCH_OVERLAP and USEARCH_CANONICAL_MATCH */ 172635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project USEARCH_ON, 173635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project USEARCH_ATTRIBUTE_VALUE_COUNT 174635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} USearchAttributeValue; 175635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 176635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/* open and close ------------------------------------------------------ */ 177635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 178635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 179635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Creating a search iterator data struct using the argument locale language 180635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* rule set. A collator will be created in the process, which will be owned by 181635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* this search and will be deleted in <tt>usearch_close</tt>. 182635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param pattern for matching 183635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param patternlength length of the pattern, -1 for null-termination 184635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param text text string 185635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param textlength length of the text string, -1 for null-termination 186635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param locale name of locale for the rules to be used 187635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param breakiter A BreakIterator that will be used to restrict the points 188635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* at which matches are detected. If a match is found, but 189635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* the match's start or end index is not a boundary as 190635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* determined by the <tt>BreakIterator</tt>, the match will 191635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* be rejected and another will be searched for. 192635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If this parameter is <tt>NULL</tt>, no break detection is 193635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* attempted. 194635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs. If pattern or text is NULL, or if 195635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* patternlength or textlength is 0 then an 196635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* U_ILLEGAL_ARGUMENT_ERROR is returned. 197635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return search iterator data structure, or NULL if there is an error. 198635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 199635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 200635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE UStringSearch * U_EXPORT2 usearch_open(const UChar *pattern, 201635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t patternlength, 202635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UChar *text, 203635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t textlength, 204635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const char *locale, 205635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UBreakIterator *breakiter, 206635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 207635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 208635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 209635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Creating a search iterator data struct using the argument collator language 210635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* rule set. Note, user retains the ownership of this collator, thus the 211635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* responsibility of deletion lies with the user. 212635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* NOTE: string search cannot be instantiated from a collator that has 213635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* collate digits as numbers (CODAN) turned on. 214635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param pattern for matching 215635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param patternlength length of the pattern, -1 for null-termination 216635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param text text string 217635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param textlength length of the text string, -1 for null-termination 218635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param collator used for the language rules 219635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param breakiter A BreakIterator that will be used to restrict the points 220635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* at which matches are detected. If a match is found, but 221635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* the match's start or end index is not a boundary as 222635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* determined by the <tt>BreakIterator</tt>, the match will 223635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* be rejected and another will be searched for. 224635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If this parameter is <tt>NULL</tt>, no break detection is 225635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* attempted. 226635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs. If collator, pattern or text is NULL, 227635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* or if patternlength or textlength is 0 then an 228635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* U_ILLEGAL_ARGUMENT_ERROR is returned. 229635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return search iterator data structure, or NULL if there is an error. 230635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 231635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 232635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE UStringSearch * U_EXPORT2 usearch_openFromCollator( 233635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UChar *pattern, 234635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t patternlength, 235635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UChar *text, 236635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t textlength, 237635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UCollator *collator, 238635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UBreakIterator *breakiter, 239635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 240635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 241635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 242635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Destroying and cleaning up the search iterator data struct. 243635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If a collator is created in <tt>usearch_open</tt>, it will be destroyed here. 244635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param searchiter data struct to clean up 245635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 246635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 247635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE void U_EXPORT2 usearch_close(UStringSearch *searchiter); 248635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 249635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/* get and set methods -------------------------------------------------- */ 250635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 251635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 252635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Sets the current position in the text string which the next search will 253635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* start from. Clears previous states. 254635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* This method takes the argument index and sets the position in the text 255635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* string accordingly without checking if the index is pointing to a 256635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* valid starting point to begin searching. 257635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Search positions that may render incorrect results are highlighted in the 258635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* header comments 259635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 260635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param position position to start next search from. If position is less 261635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* than or greater than the text range for searching, 262635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* an U_INDEX_OUTOFBOUNDS_ERROR will be returned 263635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status error status if any. 264635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 265635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 266635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch, 267635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t position, 268635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 269635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 270635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 271635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Return the current index in the string text being searched. 272635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If the iteration has gone past the end of the text (or past the beginning 273635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* for a backwards search), <tt>USEARCH_DONE</tt> is returned. 274635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 275635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #USEARCH_DONE 276635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 277635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 278635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch); 279635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 280635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 281635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Sets the text searching attributes located in the enum USearchAttribute 282635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* with values from the enum USearchAttributeValue. 283635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>USEARCH_DEFAULT</tt> can be used for all attributes for resetting. 284635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 285635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param attribute text attribute to be set 286635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param value text attribute value 287635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs 288635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_getAttribute 289635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 290635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 291635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE void U_EXPORT2 usearch_setAttribute(UStringSearch *strsrch, 292635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project USearchAttribute attribute, 293635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project USearchAttributeValue value, 294635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 295635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 296635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 297635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Gets the text searching attributes. 298635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 299635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param attribute text attribute to be retrieve 300635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return text attribute value 301635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_setAttribute 302635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 303635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 304635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE USearchAttributeValue U_EXPORT2 usearch_getAttribute( 305635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UStringSearch *strsrch, 306635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project USearchAttribute attribute); 307635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 308635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 309635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Returns the index to the match in the text string that was searched. 310635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* This call returns a valid result only after a successful call to 311635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 312635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* or <tt>usearch_last</tt>. 313635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Just after construction, or after a searching method returns 314635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>USEARCH_DONE</tt>, this method will return <tt>USEARCH_DONE</tt>. 315635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <p> 316635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Use <tt>usearch_getMatchedLength</tt> to get the matched string length. 317635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 318635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return index to a substring within the text string that is being 319635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* searched. 320635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_first 321635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_next 322635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_previous 323635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_last 324635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #USEARCH_DONE 325635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 326635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 327635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE int32_t U_EXPORT2 usearch_getMatchedStart( 328635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UStringSearch *strsrch); 329635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 330635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 331635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Returns the length of text in the string which matches the search pattern. 332635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* This call returns a valid result only after a successful call to 333635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 334635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* or <tt>usearch_last</tt>. 335635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Just after construction, or after a searching method returns 336635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>USEARCH_DONE</tt>, this method will return 0. 337635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 338635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return The length of the match in the string text, or 0 if there is no 339635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* match currently. 340635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_first 341635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_next 342635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_previous 343635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_last 344635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #USEARCH_DONE 345635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 346635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 347635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE int32_t U_EXPORT2 usearch_getMatchedLength( 348635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UStringSearch *strsrch); 349635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 350635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 351635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Returns the text that was matched by the most recent call to 352635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>usearch_first</tt>, <tt>usearch_next</tt>, <tt>usearch_previous</tt>, 353635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* or <tt>usearch_last</tt>. 354635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If the iterator is not pointing at a valid match (e.g. just after 355635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* construction or after <tt>USEARCH_DONE</tt> has been returned, returns 356635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* an empty string. If result is not large enough to store the matched text, 357635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* result will be filled with the partial text and an U_BUFFER_OVERFLOW_ERROR 358635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* will be returned in status. result will be null-terminated whenever 359635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* possible. If the buffer fits the matched text exactly, a null-termination 360635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* is not possible, then a U_STRING_NOT_TERMINATED_ERROR set in status. 361635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Pre-flighting can be either done with length = 0 or the API 362635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>usearch_getMatchLength</tt>. 363635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 364635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param result UChar buffer to store the matched string 365635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param resultCapacity length of the result buffer 366635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status error returned if result is not large enough 367635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return exact length of the matched text, not counting the null-termination 368635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_first 369635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_next 370635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_previous 371635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_last 372635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #USEARCH_DONE 373635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 374635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 375635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, 376635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UChar *result, 377635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t resultCapacity, 378635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 379635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 380635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if !UCONFIG_NO_BREAK_ITERATION 381635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 382635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 383635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Set the BreakIterator that will be used to restrict the points at which 384635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* matches are detected. 385635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 386635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param breakiter A BreakIterator that will be used to restrict the points 387635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* at which matches are detected. If a match is found, but 388635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* the match's start or end index is not a boundary as 389635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* determined by the <tt>BreakIterator</tt>, the match will 390635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* be rejected and another will be searched for. 391635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If this parameter is <tt>NULL</tt>, no break detection is 392635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* attempted. 393635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs 394635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_getBreakIterator 395635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 396635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 397635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE void U_EXPORT2 usearch_setBreakIterator(UStringSearch *strsrch, 398635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UBreakIterator *breakiter, 399635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 400635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 401635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 402635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Returns the BreakIterator that is used to restrict the points at which 403635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* matches are detected. This will be the same object that was passed to the 404635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* constructor or to <tt>usearch_setBreakIterator</tt>. Note that 405635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>NULL</tt> 406635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* is a legal value; it means that break detection should not be attempted. 407635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 408635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return break iterator used 409635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_setBreakIterator 410635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 411635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 412635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE const UBreakIterator * U_EXPORT2 usearch_getBreakIterator( 413635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UStringSearch *strsrch); 414635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 415635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 416635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 417635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 418635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Set the string text to be searched. Text iteration will hence begin at the 419635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* start of the text string. This method is useful if you want to re-use an 420635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* iterator to search for the same pattern within a different body of text. 421635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 422635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param text new string to look for match 423635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param textlength length of the new string, -1 for null-termination 424635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs. If text is NULL, or textlength is 0 425635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* then an U_ILLEGAL_ARGUMENT_ERROR is returned with no change 426635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* done to strsrch. 427635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_getText 428635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 429635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 430635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE void U_EXPORT2 usearch_setText( UStringSearch *strsrch, 431635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UChar *text, 432635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t textlength, 433635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 434635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 435635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 436635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Return the string text to be searched. 437635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 438635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param length returned string text length 439635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return string text 440635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_setText 441635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 442635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 443635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, 444635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t *length); 445635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 446635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 447635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Gets the collator used for the language rules. 448635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <p> 449635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Deleting the returned <tt>UCollator</tt> before calling 450635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>usearch_close</tt> would cause the string search to fail. 451635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>usearch_close</tt> will delete the collator if this search owns it. 452635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 453635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return collator 454635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 455635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 456635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE UCollator * U_EXPORT2 usearch_getCollator( 457635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UStringSearch *strsrch); 458635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 459635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 460635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Sets the collator used for the language rules. User retains the ownership 461635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* of this collator, thus the responsibility of deletion lies with the user. 462635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* This method causes internal data such as Boyer-Moore shift tables to 463635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* be recalculated, but the iterator's position is unchanged. 464635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 465635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param collator to be used 466635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs 467635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 468635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 469635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch, 470635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UCollator *collator, 471635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 472635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 473635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 474635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Sets the pattern used for matching. 475635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Internal data like the Boyer Moore table will be recalculated, but the 476635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* iterator's position is unchanged. 477635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 478635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param pattern string 479635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param patternlength pattern length, -1 for null-terminated string 480635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs. If text is NULL, or textlength is 0 481635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* then an U_ILLEGAL_ARGUMENT_ERROR is returned with no change 482635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* done to strsrch. 483635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 484635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 485635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch, 486635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UChar *pattern, 487635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t patternlength, 488635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 489635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 490635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 491635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Gets the search pattern 492635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 493635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param length return length of the pattern, -1 indicates that the pattern 494635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* is null-terminated 495635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return pattern string 496635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 497635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 498635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE const UChar * U_EXPORT2 usearch_getPattern( 499635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project const UStringSearch *strsrch, 500635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t *length); 501635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 502635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/* methods ------------------------------------------------------------- */ 503635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 504635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 505635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Returns the first index at which the string text matches the search 506635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* pattern. 507635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* The iterator is adjusted so that its current index (as returned by 508635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>usearch_getOffset</tt>) is the match position if one was found. 509635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and 510635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>. 511635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 512635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs 513635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return The character index of the first match, or 514635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>USEARCH_DONE</tt> if there are no matches. 515635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_getOffset 516635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #USEARCH_DONE 517635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 518635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 519635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, 520635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 521635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 522635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 523635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Returns the first index greater than <tt>position</tt> at which the string 524635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* text 525635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* matches the search pattern. The iterator is adjusted so that its current 526635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 527635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* one was found. 528635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and 529635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt> 530635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <p> 531635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Search positions that may render incorrect results are highlighted in the 532635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* header comments. If position is less than or greater than the text range 533635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* for searching, an U_INDEX_OUTOFBOUNDS_ERROR will be returned 534635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 535635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param position to start the search at 536635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs 537635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return The character index of the first match following <tt>pos</tt>, 538635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* or <tt>USEARCH_DONE</tt> if there are no matches. 539635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_getOffset 540635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #USEARCH_DONE 541635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 542635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 543635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, 544635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t position, 545635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 546635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 547635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 548635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Returns the last index in the target text at which it matches the search 549635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* pattern. The iterator is adjusted so that its current 550635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 551635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* one was found. 552635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and 553635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt>. 554635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 555635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs 556635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return The index of the first match, or <tt>USEARCH_DONE</tt> if there 557635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* are no matches. 558635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_getOffset 559635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #USEARCH_DONE 560635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 561635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 562635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, 563635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 564635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 565635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 566635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Returns the first index less than <tt>position</tt> at which the string text 567635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* matches the search pattern. The iterator is adjusted so that its current 568635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 569635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* one was found. 570635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and 571635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt> 572635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <p> 573635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Search positions that may render incorrect results are highlighted in the 574635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* header comments. If position is less than or greater than the text range 575635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* for searching, an U_INDEX_OUTOFBOUNDS_ERROR will be returned 576635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 577635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param position index position the search is to begin at 578635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs 579635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return The character index of the first match preceding <tt>pos</tt>, 580635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* or <tt>USEARCH_DONE</tt> if there are no matches. 581635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_getOffset 582635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #USEARCH_DONE 583635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 584635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 585635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, 586635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int32_t position, 587635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 588635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 589635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 590635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Returns the index of the next point at which the string text matches the 591635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* search pattern, starting from the current position. 592635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* The iterator is adjusted so that its current 593635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 594635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* one was found. 595635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and 596635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt> 597635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 598635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs 599635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return The index of the next match after the current position, or 600635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* <tt>USEARCH_DONE</tt> if there are no more matches. 601635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_first 602635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_getOffset 603635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #USEARCH_DONE 604635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 605635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 606635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, 607635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 608635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 609635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 610635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Returns the index of the previous point at which the string text matches 611635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* the search pattern, starting at the current position. 612635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* The iterator is adjusted so that its current 613635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* index (as returned by <tt>usearch_getOffset</tt>) is the match position if 614635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* one was found. 615635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* If a match is not found, <tt>USEARCH_DONE</tt> will be returned and 616635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* the iterator will be adjusted to the index <tt>USEARCH_DONE</tt> 617635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 618635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param status for errors if it occurs 619635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @return The index of the previous match before the current position, 620635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* or <tt>USEARCH_DONE</tt> if there are no more matches. 621635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_last 622635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_getOffset 623635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #USEARCH_DONE 624635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 625635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 626635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, 627635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project UErrorCode *status); 628635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 629635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 630635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Reset the iteration. 631635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* Search will begin at the start of the text string if a forward iteration 632635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* is initiated before a backwards iteration. Otherwise if a backwards 633635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* iteration is initiated before a forwards iteration, the search will begin 634635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* at the end of the text string. 635635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @param strsrch search iterator data struct 636635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @see #usearch_first 637635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project* @stable ICU 2.4 638635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project*/ 639635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source ProjectU_STABLE void U_EXPORT2 usearch_reset(UStringSearch *strsrch); 640635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 641635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif /* #if !UCONFIG_NO_COLLATION */ 642635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 643635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 644