MCPcopy Create free account
hub / github.com/apache/arrow / locate_utf8_utf8_int32

Function locate_utf8_utf8_int32

cpp/src/gandiva/precompiled/string_ops.cc:1813–1836  ·  view source on GitHub ↗

Search for a string within another string starting at position start-pos (1-indexed)

Source from the content-addressed store, hash-verified

1811
1812// Search for a string within another string starting at position start-pos (1-indexed)
1813FORCE_INLINE
1814gdv_int32 locate_utf8_utf8_int32(gdv_int64 context, const char* sub_str,
1815 gdv_int32 sub_str_len, const char* str,
1816 gdv_int32 str_len, gdv_int32 start_pos) {
1817 if (start_pos < 1) {
1818 gdv_fn_context_set_error_msg(context, "Start position must be greater than 0");
1819 return 0;
1820 }
1821
1822 if (str_len == 0 || sub_str_len == 0) {
1823 return 0;
1824 }
1825
1826 gdv_int32 byte_pos = utf8_byte_pos(context, str, str_len, start_pos - 1);
1827 if (byte_pos < 0 || byte_pos >= str_len) {
1828 return 0;
1829 }
1830 for (gdv_int32 i = byte_pos; i <= str_len - sub_str_len; ++i) {
1831 if (memcmp(str + i, sub_str, sub_str_len) == 0) {
1832 return utf8_length(context, str, i) + 1;
1833 }
1834 }
1835 return 0;
1836}
1837
1838FORCE_INLINE
1839const char* replace_with_max_len_utf8_utf8_utf8(gdv_int64 context, const char* text,

Callers 3

strpos_utf8_utf8Function · 0.85
locate_utf8_utf8Function · 0.85
TESTFunction · 0.85

Calls 3

utf8_byte_posFunction · 0.85
utf8_lengthFunction · 0.85

Tested by 1

TESTFunction · 0.68