mirror of https://github.com/python/cpython
gh-97982: Remove asciilib_count() (#98164)
asciilib_count() is the same than ucs1lib_count(): the code is not specialized for ASCII strings, so it's not worth it to have a separated function. Remove asciilib_count() function.
This commit is contained in:
parent
7ec2e279fe
commit
df3a6d9beb
|
@ -4,6 +4,11 @@
|
||||||
#error must include "stringlib/fastsearch.h" before including this module
|
#error must include "stringlib/fastsearch.h" before including this module
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// gh-97982: Implementing asciilib_count() is not worth it, FASTSEARCH() does
|
||||||
|
// not specialize the code for ASCII strings. Use ucs1lib_count() for ASCII and
|
||||||
|
// UCS1 strings: it's the same than asciilib_count().
|
||||||
|
#if !STRINGLIB_IS_UNICODE || STRINGLIB_MAX_CHAR > 0x7Fu
|
||||||
|
|
||||||
Py_LOCAL_INLINE(Py_ssize_t)
|
Py_LOCAL_INLINE(Py_ssize_t)
|
||||||
STRINGLIB(count)(const STRINGLIB_CHAR* str, Py_ssize_t str_len,
|
STRINGLIB(count)(const STRINGLIB_CHAR* str, Py_ssize_t str_len,
|
||||||
const STRINGLIB_CHAR* sub, Py_ssize_t sub_len,
|
const STRINGLIB_CHAR* sub, Py_ssize_t sub_len,
|
||||||
|
@ -24,4 +29,4 @@ STRINGLIB(count)(const STRINGLIB_CHAR* str, Py_ssize_t str_len,
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -9000,16 +9000,10 @@ PyUnicode_Count(PyObject *str,
|
||||||
|
|
||||||
switch (kind1) {
|
switch (kind1) {
|
||||||
case PyUnicode_1BYTE_KIND:
|
case PyUnicode_1BYTE_KIND:
|
||||||
if (PyUnicode_IS_ASCII(str) && PyUnicode_IS_ASCII(substr))
|
result = ucs1lib_count(
|
||||||
result = asciilib_count(
|
((const Py_UCS1*)buf1) + start, end - start,
|
||||||
((const Py_UCS1*)buf1) + start, end - start,
|
buf2, len2, PY_SSIZE_T_MAX
|
||||||
buf2, len2, PY_SSIZE_T_MAX
|
);
|
||||||
);
|
|
||||||
else
|
|
||||||
result = ucs1lib_count(
|
|
||||||
((const Py_UCS1*)buf1) + start, end - start,
|
|
||||||
buf2, len2, PY_SSIZE_T_MAX
|
|
||||||
);
|
|
||||||
break;
|
break;
|
||||||
case PyUnicode_2BYTE_KIND:
|
case PyUnicode_2BYTE_KIND:
|
||||||
result = ucs2lib_count(
|
result = ucs2lib_count(
|
||||||
|
@ -9904,10 +9898,7 @@ anylib_count(int kind, PyObject *sstr, const void* sbuf, Py_ssize_t slen,
|
||||||
{
|
{
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
case PyUnicode_1BYTE_KIND:
|
case PyUnicode_1BYTE_KIND:
|
||||||
if (PyUnicode_IS_ASCII(sstr) && PyUnicode_IS_ASCII(str1))
|
return ucs1lib_count(sbuf, slen, buf1, len1, maxcount);
|
||||||
return asciilib_count(sbuf, slen, buf1, len1, maxcount);
|
|
||||||
else
|
|
||||||
return ucs1lib_count(sbuf, slen, buf1, len1, maxcount);
|
|
||||||
case PyUnicode_2BYTE_KIND:
|
case PyUnicode_2BYTE_KIND:
|
||||||
return ucs2lib_count(sbuf, slen, buf1, len1, maxcount);
|
return ucs2lib_count(sbuf, slen, buf1, len1, maxcount);
|
||||||
case PyUnicode_4BYTE_KIND:
|
case PyUnicode_4BYTE_KIND:
|
||||||
|
|
Loading…
Reference in New Issue