1 | /* stringlib: count implementation */ |
---|---|
2 | |
3 | #ifndef STRINGLIB_FASTSEARCH_H |
4 | #error must include "stringlib/fastsearch.h" before including this module |
5 | #endif |
6 | |
7 | Py_LOCAL_INLINE(Py_ssize_t) |
8 | STRINGLIB(count)(const STRINGLIB_CHAR* str, Py_ssize_t str_len, |
9 | const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, |
10 | Py_ssize_t maxcount) |
11 | { |
12 | Py_ssize_t count; |
13 | |
14 | if (str_len < 0) |
15 | return 0; /* start > len(str) */ |
16 | if (sub_len == 0) |
17 | return (str_len < maxcount) ? str_len + 1 : maxcount; |
18 | |
19 | count = FASTSEARCH(str, str_len, sub, sub_len, maxcount, FAST_COUNT); |
20 | |
21 | if (count < 0) |
22 | return 0; /* no match */ |
23 | |
24 | return count; |
25 | } |
26 | |
27 | |
28 |