diff options
Diffstat (limited to 'Objects/stringlib/count.h')
-rw-r--r-- | Objects/stringlib/count.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Objects/stringlib/count.h b/Objects/stringlib/count.h new file mode 100644 index 0000000..0bd02b5 --- /dev/null +++ b/Objects/stringlib/count.h @@ -0,0 +1,34 @@ +/* stringlib: count implementation */ + +#ifndef STRINGLIB_COUNT_H +#define STRINGLIB_COUNT_H + +#ifndef STRINGLIB_FASTSEARCH_H +#error must include "stringlib/fastsearch.h" before including this module +#endif + +Py_LOCAL_INLINE(Py_ssize_t) +stringlib_count(const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR* sub, Py_ssize_t sub_len) +{ + Py_ssize_t count; + + if (sub_len == 0) + return str_len + 1; + + count = fastsearch(str, str_len, sub, sub_len, FAST_COUNT); + + if (count < 0) + count = 0; /* no match */ + + return count; +} + +#endif + +/* +Local variables: +c-basic-offset: 4 +indent-tabs-mode: nil +End: +*/ |