Exemplo n.º 1
0
 int64_t ObStringSearch::fast_search(const ObString & pattern, const ObString & text)
 {
   const char* pat = pattern.ptr();
   const int64_t pat_len = pattern.length();
   const char* txt = text.ptr();
   const int64_t txt_len = text.length();
   return fast_search(pat, pat_len, txt, txt_len);
 }
Exemplo n.º 2
0
static inline ssize_t
sub_str_find(const char *str,
    ssize_t str_len,
    const char *sub,
    ssize_t sub_len,
    ssize_t offset)
{
    ssize_t pos;

    if (sub_len == 0)
        return offset;

    pos = fast_search(str, str_len, sub, sub_len, -1, FAST_SEARCH);

    if (pos >= 0)
        pos += offset;

    return pos;
}
Exemplo n.º 3
0
static inline ssize_t
sub_str_count(const char *str,
    size_t str_len,
    const char *sub,
    size_t sub_len,
    size_t max_count)
{
    ssize_t count;

    if (sub_len == 0)
        return (str_len < max_count) ? str_len + 1 : max_count;

    count = fast_search(str, str_len, sub, sub_len, max_count, FAST_COUNT);

    if (count < 0)
        return 0;  /* no match */

    return count;
}