Lines Matching refs:search
138 * @param strsrch string search data
280 * @param strsrch string search data
352 * @param strsrch string search data
532 * consideration. Forwards search will take the end accents into consideration
533 * for the default shift values and the backwards search will take the prefix
563 * @param strsrch string search data
572 UBreakIterator *breakiterator = strsrch->search->internalBreakIter;
594 * @param strsrch string search data
603 UBreakIterator *breakiterator = strsrch->search->breakIter;
624 const UChar *text = strsrch->search->text +
688 * Gets the next base character offset depending on the string search pattern
690 * @param strsrch string search data
692 * to search for.
700 int32_t textlength = strsrch->search->textLength;
704 const UChar *text = strsrch->search->text;
718 * @param text strsrch string search data
719 * @param textoffset start text position to do search
759 * @param strsrch string search data
765 strsrch->search->matchedIndex = USEARCH_DONE;
766 strsrch->search->matchedLength = 0;
767 if (strsrch->search->isForwardSearching) {
768 setColEIterOffset(strsrch->textIter, strsrch->search->textLength);
816 * @param strsrch string search data
833 const UChar *text = strsrch->search->text + start;
908 * @param strsrch string search data
947 // accent = (getFCD(strsrch->search->text, &temp,
948 // strsrch->search->textLength)
953 UBool accent = getFCD(strsrch->search->text, &temp,
954 strsrch->search->textLength) > 0xFF;
963 U16_BACK_1(strsrch->search->text, 0, temp);
964 if (getFCD(strsrch->search->text, &temp,
965 strsrch->search->textLength) & LAST_BYTE_MASK_) {
989 * @param strsrch string search data
1000 const UChar *text = strsrch->search->text;
1002 int32_t textlength = strsrch->search->textLength;
1063 * @param strsrch string search data
1081 UnicodeString(FALSE, strsrch->search->text + start, end - start), t2, status);
1091 * @param strsrch string search data
1101 int32_t lastmatchindex = strsrch->search->matchedIndex;
1106 if (strsrch->search->isForwardSearching) {
1112 if (!result && !strsrch->search->isOverlap) {
1113 if (strsrch->search->isForwardSearching) {
1114 result = start < lastmatchindex + strsrch->search->matchedLength;
1149 * @param strsrch string search data
1162 int32_t textlength = strsrch->search->textLength;
1165 const UChar *text = strsrch->search->text;
1173 // excess prefix characters has been included in the potential search
1236 * @param strsrch string search data
1239 * search offset.
1266 //Add breakiterator boundary check for primary strength search.
1267 if (!strsrch->search->breakIter && strsrch->strength == UCOL_PRIMARY) {
1272 strsrch->search->matchedIndex = start;
1273 strsrch->search->matchedLength = *textoffset - start;
1394 * pattern in string search data
1395 * @param strsrch string search data
1432 * @param strsrch string search match
1445 const UChar *text = strsrch->search->text;
1446 int32_t textlength = strsrch->search->textLength;
1491 strsrch->search->text + offset,
1540 * @param strsrch string search data
1564 * @param strsrch string search data
1575 const UChar *text = strsrch->search->text;
1697 * @param strsrch string search data
1708 const UChar *text = strsrch->search->text;
1730 // offset to the last base character in substring to search
1770 * Gets the previous base character offset depending on the string search
1772 * @param strsrch string search data
1782 const UChar *text = strsrch->search->text;
1784 if (getFCD(text, &offset, strsrch->search->textLength) >>
1799 * @param strsrch string search data
1812 int32_t textlength = strsrch->search->textLength;
1815 const UChar *text = strsrch->search->text;
1846 int32_t textlength = strsrch->search->textLength;
1896 * @param strsrch string search data
1899 * search offset.
1915 strsrch->search->matchedIndex = getPreviousUStringSearchBaseOffset(
1918 strsrch->search->matchedLength = *textoffset -
1919 strsrch->search->matchedIndex;
1935 *textoffset = getNextBaseOffset(strsrch->search->text, *textoffset,
1936 strsrch->search->textLength);
1940 strsrch->search->matchedIndex = start;
1941 strsrch->search->matchedLength = *textoffset - start;
1951 * @param text strsrch string search data
1952 * @param textoffset start text position to do search
1964 if (strsrch->search->isOverlap) {
1965 if (textoffset != strsrch->search->textLength) {
1997 * @param strsrch string search data
2009 int32_t textlength = strsrch->search->textLength;
2012 const UChar *text = strsrch->search->text;
2079 * @param strsrch string search data
2085 * search offset.
2109 *textoffset = getPreviousBaseOffset(strsrch->search->text,
2114 //Add breakiterator boundary check for primary strength search.
2115 if (!strsrch->search->breakIter && strsrch->strength == UCOL_PRIMARY) {
2119 strsrch->search->matchedIndex = *textoffset;
2120 strsrch->search
2136 * @param strsrch string search match
2149 const UChar *text = strsrch->search->text;
2153 if (!(getFCD(text, &tempend, strsrch->search->textLength) &
2158 end = getNextBaseOffset(text, end, strsrch->search->textLength);
2193 strsrch->search->text + start,
2224 * @param strsrch string search data
2235 const UChar *text = strsrch->search->text;
2248 strsrch->search->textLength);
2360 * @param strsrch string search data
2371 const UChar *text = strsrch->search->text;
2373 int32_t textlength = strsrch->search->textLength;
2393 // offset to the last base character in substring to search
2437 * @param strsrch string search data
2449 int32_t textlength = strsrch->search->textLength;
2452 const UChar *text = strsrch->search->text;
2534 * @param strsrch string search data
2537 * search offset.
2553 strsrch->search->matchedIndex = *textoffset;
2554 strsrch->search->matchedLength =
2574 *textoffset = getPreviousBaseOffset(strsrch->search->text,
2579 strsrch->search->matchedIndex = *textoffset;
2580 strsrch->search->matchedLength = end - *textoffset;
2650 // string search does not really work when numeric collation is turned on
2695 result->search = (USearch *)uprv_malloc(sizeof(USearch));
2696 if (result->search == NULL) {
2702 result->search->text = text;
2703 result->search->textLength = textlength;
2710 result->search->breakIter = breakiter;
2712 result->search->internalBreakIter = ubrk_open(UBRK_CHARACTER, ucol_getLocaleByType(result->collator, ULOC_VALID_LOCALE, status), text, textlength, status);
2719 result->search->matchedLength = 0;
2720 result->search->matchedIndex = USEARCH_DONE;
2730 result->search->isOverlap = FALSE;
2731 result->search->isCanonicalMatch = FALSE;
2732 result->search->elementComparisonType = 0;
2733 result->search->isForwardSearching = TRUE;
2734 result->search->reset = TRUE;
2770 if (strsrch->search->internalBreakIter) {
2771 ubrk_close(strsrch->search->internalBreakIter);
2775 uprv_free(strsrch->search);
2805 if (isOutOfBounds(strsrch->search->textLength, position)) {
2811 strsrch->search->matchedIndex = USEARCH_DONE;
2812 strsrch->search->matchedLength = 0;
2813 strsrch->search->reset = FALSE;
2821 if (isOutOfBounds(strsrch->search->textLength, result)) {
2838 strsrch->search->isOverlap = (value == USEARCH_ON ? TRUE : FALSE);
2841 strsrch->search->isCanonicalMatch = (value == USEARCH_ON ? TRUE :
2846 strsrch->search->elementComparisonType = (int16_t)value;
2848 strsrch->search->elementComparisonType = 0;
2868 return (strsrch->search->isOverlap == TRUE ? USEARCH_ON :
2871 return (strsrch->search->isCanonicalMatch == TRUE ? USEARCH_ON :
2875 int16_t value = strsrch->search->elementComparisonType;
2895 return strsrch->search->matchedIndex;
2913 int32_t copylength = strsrch->search->matchedLength;
2914 int32_t copyindex = strsrch->search->matchedIndex;
2924 uprv_memcpy(result, strsrch->search->text + copyindex,
2928 strsrch->search->matchedLength, status);
2935 return strsrch->search->matchedLength;
2947 strsrch->search->breakIter = breakiter;
2949 ubrk_setText(breakiter, strsrch->search->text,
2950 strsrch->search->textLength, status);
2959 return strsrch->search->breakIter;
2980 strsrch->search->text = text;
2981 strsrch->search->textLength = textlength;
2983 strsrch->search->matchedIndex = USEARCH_DONE;
2984 strsrch->search->matchedLength = 0;
2985 strsrch->search->reset = TRUE;
2987 if (strsrch->search->breakIter != NULL) {
2988 ubrk_setText(strsrch->search->breakIter, text,
2991 ubrk_setText(strsrch->search->internalBreakIter, text, textlength, status);
3001 *length = strsrch->search->textLength;
3002 return strsrch->search->text;
3031 ubrk_close(strsrch->search->internalBreakIter);
3032 strsrch->search->internalBreakIter = ubrk_open(UBRK_CHARACTER, ucol_getLocaleByType(collator, ULOC_VALID_LOCALE, status),
3033 strsrch->search->text, strsrch->search->textLength, status);
3042 strsrch->search->text,
3043 strsrch->search->textLength,
3110 strsrch->search->isForwardSearching = TRUE;
3124 strsrch->search->isForwardSearching = TRUE;
3138 strsrch->search->isForwardSearching = FALSE;
3139 usearch_setOffset(strsrch, strsrch->search->textLength, status);
3152 strsrch->search->isForwardSearching = FALSE;
3166 * string to continue the search in. Imagine when we are in the middle of the
3191 USearch *search = strsrch->search;
3192 search->reset = FALSE;
3193 int32_t textlength = search->textLength;
3194 if (search->isForwardSearching) {
3197 || (!search->isOverlap &&
3199 (search->matchedIndex != USEARCH_DONE &&
3200 offset + search->matchedLength >= textlength)))) {
3207 (! search->isOverlap &&
3208 (search->matchedIndex != USEARCH_DONE &&
3209 offset + search->matchedLength > textlength))) {
3222 search->isForwardSearching = TRUE;
3223 if (search->matchedIndex != USEARCH_DONE) {
3226 return search->matchedIndex;
3232 if (search->matchedIndex == USEARCH_DONE) {
3233 search->matchedIndex = offset;
3236 U16_FWD_1(search->text, search->matchedIndex, textlength);
3239 search->matchedLength = 0;
3240 setColEIterOffset(strsrch->textIter, search->matchedIndex);
3242 if (search->matchedIndex == textlength) {
3243 search->matchedIndex = USEARCH_DONE;
3247 if (search->matchedLength > 0) {
3249 if (search->isOverlap) {
3254 offset + search->matchedLength, status);
3260 // note search->matchedIndex will always be set to something
3262 search->matchedIndex = offset - 1;
3265 if (search->isCanonicalMatch) {
3279 if (search->matchedIndex == USEARCH_DONE) {
3280 ucol_setOffset(strsrch->textIter, search->textLength, status);
3282 ucol_setOffset(strsrch->textIter, search->matchedIndex, status);
3286 return search->matchedIndex;
3297 USearch *search = strsrch->search;
3298 if (search->reset) {
3299 offset = search->textLength;
3300 search->isForwardSearching = FALSE;
3301 search->reset = FALSE;
3308 int32_t matchedindex = search->matchedIndex;
3309 if (search->isForwardSearching == TRUE) {
3315 search->isForwardSearching = FALSE;
3323 (!search->isOverlap &&
3333 // linear search will do the right thing
3343 search->matchedIndex =
3345 if (search->matchedIndex == 0) {
3350 U16_BACK_1(search->text, 0, search->matchedIndex);
3351 setColEIterOffset(strsrch->textIter, search->matchedIndex);
3353 search->matchedLength = 0;
3357 if (strsrch->search->isCanonicalMatch) {
3372 return search->matchedIndex;
3384 string search, hence all attributes in the collator should
3425 ucol_setText(strsrch->textIter, strsrch->search->text,
3426 strsrch->search->textLength,
3428 strsrch->search->matchedLength = 0;
3429 strsrch->search->matchedIndex = USEARCH_DONE;
3430 strsrch->search->isOverlap = FALSE;
3431 strsrch->search->isCanonicalMatch = FALSE;
3432 strsrch->search->elementComparisonType = 0;
3433 strsrch->search->isForwardSearching = TRUE;
3434 strsrch->search->reset = TRUE;
3456 // Some typical max values to make buffer size more reasonable for asymmetric search.
3483 if (ss->search->elementComparisonType != 0) {
3619 const UChar *text = strsrch->search->text;
3620 int32_t textLen = strsrch->search->textLength;
3656 UBreakIterator *breakiterator = strsrch->search->breakIter;
3659 breakiterator = strsrch->search->internalBreakIter;
3681 const UChar *text = strsrch->search->text;
3682 int32_t textLen = strsrch->search->textLength;
3707 UBreakIterator *breakiterator = strsrch->search->breakIter;
3710 breakiterator = strsrch->search->internalBreakIter;
3724 UBreakIterator *breakiterator = strsrch->search->breakIter;
3818 // TODO: reject search patterns beginning with a combining char.
3835 startIdx > strsrch->search->textLength ||
3898 UCompareCEsResult ceMatch = compareCE64s(targetCEI->ce, patCE, strsrch->search->elementComparisonType);
3945 if (strsrch->search->elementComparisonType == 0) {
3963 UCompareCEsResult ceMatch = compareCE64s(nextCEI->ce, patCE, strsrch->search->elementComparisonType);
4085 // TODO: reject search patterns beginning with a combining char.
4102 startIdx > strsrch->search->textLength ||
4124 if (startIdx < strsrch->search->textLength) {
4125 UBreakIterator *bi = strsrch->search->internalBreakIter;
4180 UCompareCEsResult ceMatch = compareCE64s(targetCEI->ce, patCE, strsrch->search->elementComparisonType);
4337 int32_t textlength = strsrch->search->textLength;
4358 // for example: search for pattern A in text \u00C0
4420 setColEIterOffset(coleiter, strsrch->search->matchedIndex);
4432 strsrch->search->matchedIndex = start;
4433 strsrch->search->matchedLength = end - start;
4451 int32_t textlength = strsrch->search->textLength;
4474 // for example: search for pattern A in text \u00C0
4535 setColEIterOffset(coleiter, strsrch->search->matchedIndex);
4547 strsrch->search->matchedIndex = start;
4548 strsrch->search->matchedLength = end - start;
4573 if (strsrch->search->matchedIndex != USEARCH_DONE) {
4574 textoffset = strsrch->search->matchedIndex;
4592 // characters. for example: search for pattern \u0300 in text
4661 if (strsrch->search->isOverlap) {
4662 if (strsrch->search->matchedIndex != USEARCH_DONE) {
4663 textOffset = strsrch->search->matchedIndex + strsrch->search->matchedLength - 1;
4692 strsrch->search->matchedIndex = start;
4693 strsrch->search->matchedLength = end - start;
4721 if (strsrch->search->matchedIndex != USEARCH_DONE) {
4722 textoffset = strsrch->search->matchedIndex;
4740 // characters. for example: search for pattern \u0300 in text
4814 if (strsrch->search->isOverlap) {
4815 if (strsrch->search->matchedIndex != USEARCH_DONE) {
4816 textOffset = strsrch->search->matchedIndex + strsrch->search->matchedLength - 1;
4845 strsrch->search->matchedIndex = start;
4846 strsrch->search->matchedLength = end - start;