xref: /third_party/python/Objects/stringlib/count.h
  • Home
  • History
  • Annotate Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /third_party/python/Objects/stringlib/
17db96d56Sopenharmony_ci/* stringlib: count implementation */
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ci#ifndef STRINGLIB_FASTSEARCH_H
47db96d56Sopenharmony_ci#error must include "stringlib/fastsearch.h" before including this module
57db96d56Sopenharmony_ci#endif
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ciPy_LOCAL_INLINE(Py_ssize_t)
87db96d56Sopenharmony_ciSTRINGLIB(count)(const STRINGLIB_CHAR* str, Py_ssize_t str_len,
97db96d56Sopenharmony_ci                const STRINGLIB_CHAR* sub, Py_ssize_t sub_len,
107db96d56Sopenharmony_ci                Py_ssize_t maxcount)
117db96d56Sopenharmony_ci{
127db96d56Sopenharmony_ci    Py_ssize_t count;
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ci    if (str_len < 0)
157db96d56Sopenharmony_ci        return 0; /* start > len(str) */
167db96d56Sopenharmony_ci    if (sub_len == 0)
177db96d56Sopenharmony_ci        return (str_len < maxcount) ? str_len + 1 : maxcount;
187db96d56Sopenharmony_ci
197db96d56Sopenharmony_ci    count = FASTSEARCH(str, str_len, sub, sub_len, maxcount, FAST_COUNT);
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_ci    if (count < 0)
227db96d56Sopenharmony_ci        return 0; /* no match */
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci    return count;
257db96d56Sopenharmony_ci}
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ci
28

Indexes created Thu Nov 07 10:32:03 CST 2024