Tizen Native API
Functions
Usearch
i18n

Functions

int i18n_usearch_create (const i18n_uchar *pattern, int32_t pattern_len, const i18n_uchar *text, int32_t text_len, const char *locale, i18n_ubreak_iterator_s *breakiter, i18n_usearch_h *searchiter)
 Creates an i18n_usearch_h using the argument locale language rule set.
int i18n_usearch_destroy (i18n_usearch_h searchiter)
 Destroys and cleans up the i18n_usearch_h.
int i18n_usearch_get_matched_text (const i18n_usearch_h strsrch, i18n_uchar *result, int32_t result_capacity, int32_t *len_matched_text)
 Returns the text that matches by the most recent call to i18n_usearch_first(), or so on.
int i18n_usearch_get_collator (const i18n_usearch_h strsrch, i18n_ucollator_h *collator)
 Gets the collator used for the language rules.
int i18n_usearch_first (i18n_usearch_h strsrch, int32_t *index_first)
 Returns the first index at which the string text matches the search pattern.

The Usearch module provides language-sensitive text searching based on the comparison rules defined in a ucollator data struct.

Required Header

#include <utils_i18n.h>

Overview

The Usearch module provides language-sensitive text searching based on the comparison rules defined in a ucollator data struct.

Sample Code 1

Searches the pattern and gets the matched text.

    char *string = "TIZEN";
    char *keyword = "ZE";
    i18n_uchar target[16] = {0,};
    i18n_uchar pattern[16] = {0,};
    i18n_uchar u_matched[16] = {0,};
    char tmp[1] = {0};
    i18n_usearch_h search = NULL;
    int pos = 0;
    int matched_text_len = 0;
    int i = 0;
    i18n_error_code_e error_code;

    i18n_ustring_from_UTF8( target, 16, NULL, string, -1, &error_code );
    i18n_ustring_from_UTF8( pattern, 16, NULL, keyword, -1, &error_code );

    // creates a search
    i18n_usearch_create( pattern, -1, target, -1, "en_US", NULL, &search );

    // gets the first index of the target that matches with the pattern
    i18n_usearch_first( search, &pos );
    dlog_print(DLOG_INFO, LOG_TAG, "the first index = %d", pos );    // The first index = 2

    // gets the matched text
    i18n_usearch_get_matched_text( search, u_matched, 16, &matched_text_len );
    for ( i = 0; i < matched_text_len; i++) {
        i18n_ustring_copy_au_n( tmp, &u_matched[i], 1 );
        dlog_print(DLOG_INFO, LOG_TAG, "u_matched[%d] = %c", i, tmp[0] );    // u_matched[0] = Z, u_matched[1] = E
    }
    i18n_usearch_destroy( search );

Function Documentation

int i18n_usearch_create ( const i18n_uchar *  pattern,
int32_t  pattern_len,
const i18n_uchar *  text,
int32_t  text_len,
const char *  locale,
i18n_ubreak_iterator_s *  breakiter,
i18n_usearch_h *  searchiter 
)

Creates an i18n_usearch_h using the argument locale language rule set.

A collator will be created in the process, which will be owned by this search and will be deleted in i18n_usearch_destroy().

Since :
2.3
Remarks:
Must release searchiter using i18n_usearch_destroy().
Parameters:
[in]patternThe pattern for matching
[in]pattern_lenThe length of the pattern, otherwise -1 for null-termination
[in]textThe text string
[in]text_lenThe length of the text string, otherwise -1 for null-termination
[in]localeThe name of the locale for the rules to be used
[in]breakiterA BreakIterator that will be used to restrict the points at which matches are detected If a match is found,
but the match's start or end index is not a boundary as determined by the i18n_ubreak_iterator_s, the match will be rejected and another will be searched If this parameter is NULL,
no break detection is attempted.
[out]searchiterThe i18n_usearch_h, otherwise NULL if there is an error
Return values:
I18N_ERROR_NONESuccessful
I18N_ERROR_INVALID_PARAMETERInvalid function parameter
int i18n_usearch_destroy ( i18n_usearch_h  searchiter)

Destroys and cleans up the i18n_usearch_h.

If a collator is created in i18n_usearch_create(), it will be destroyed here.

Since :
2.3
Parameters:
[in]searchiterThe i18n_usearch_h to clean up
Return values:
I18N_ERROR_NONESuccessful
I18N_ERROR_INVALID_PARAMETERInvalid function parameter
int i18n_usearch_first ( i18n_usearch_h  strsrch,
int32_t *  index_first 
)

Returns the first index at which the string text matches the search pattern.

The iterator is adjusted so that its current index is the match position if one is found. If a match is not found, I18N_USEARCH_DONE will be returned and the iterator will be adjusted to the index I18N_USEARCH_DONE.

Since :
2.3
Parameters:
[in]strsrchThe search iterator data struct
[out]index_firstThe character index of the first match, otherwise I18N_USEARCH_DONE if there are no matches.
Return values:
I18N_ERROR_NONESuccessful
I18N_ERROR_INVALID_PARAMETERInvalid function parameter
int i18n_usearch_get_collator ( const i18n_usearch_h  strsrch,
i18n_ucollator_h *  collator 
)

Gets the collator used for the language rules.

Deleting the returned i18n_ucollator_h before calling i18n_usearch_destroy() would cause the string search to fail. i18n_usearch_destroy() will delete the collator if this search owns it.

Since :
2.3
Parameters:
[in]strsrchThe search iterator data struct
[out]collatorThe collator
Return values:
I18N_ERROR_NONESuccessful
I18N_ERROR_INVALID_PARAMETERInvalid function parameter
int i18n_usearch_get_matched_text ( const i18n_usearch_h  strsrch,
i18n_uchar *  result,
int32_t  result_capacity,
int32_t *  len_matched_text 
)

Returns the text that matches by the most recent call to i18n_usearch_first(), or so on.

If the iterator is not pointing at a valid match (e.g. just after construction or after I18N_USEARCH_DONE has been returned, it returns an empty string. If the result is not large enough to store the matched text, the result will be filled with the partial text and an I18N_ERROR_BUFFER_OVERFLOW will be returned in status. The result will be null-terminated whenever possible. If the buffer fits the matched text exactly, a null-termination is not possible.

Since :
2.3
Parameters:
[in]strsrchThe search iterator data struct
[out]resulti18n_uchar The buffer to store the matched string
[in]result_capacityThe length of the result buffer
[out]len_matched_textThe exact length of the matched text, not counting the null-termination
Return values:
I18N_ERROR_NONESuccessful
I18N_ERROR_INVALID_PARAMETERInvalid function parameter
I18N_ERROR_BUFFER_OVERFLOWA result would not fit in the supplied buffer

Except as noted, this content - excluding the Code Examples - is licensed under Creative Commons Attribution 3.0 and all of the Code Examples contained herein are licensed under BSD-3-Clause.
For details, see the Content License