diff options
Diffstat (limited to 'Objects/stringlib')
| -rw-r--r-- | Objects/stringlib/README.txt | 29 | ||||
| -rw-r--r-- | Objects/stringlib/find.h | 33 |
2 files changed, 62 insertions, 0 deletions
diff --git a/Objects/stringlib/README.txt b/Objects/stringlib/README.txt index 051197c..82a8774 100644 --- a/Objects/stringlib/README.txt +++ b/Objects/stringlib/README.txt @@ -3,3 +3,32 @@ possibly other modules, in a not too distant future). the stuff in here is included into relevant places; see the individual source files for details. + +-------------------------------------------------------------------- +the following defines used by the different modules: + +STRINGLIB_CHAR + + the type used to hold a character (char or Py_UNICODE) + +STRINGLIB_EMPTY + + a PyObject representing the empty string + +int STRINGLIB_CMP(STRINGLIB_CHAR*, STRINGLIB_CHAR*, Py_ssize_t) + + compares two strings. returns 0 if they match, and non-zero if not. + +Py_ssize_t STRINGLIB_LEN(PyObject*) + + returns the length of the given string object (which must be of the + right type) + +PyObject* STRINGLIB_NEW(STRINGLIB_CHAR*, Py_ssize_t) + + creates a new string object + +STRINGLIB_CHAR* STRINGLIB_STR(PyObject*) + + returns the pointer to the character data for the given string + object (which must be of the right type) diff --git a/Objects/stringlib/find.h b/Objects/stringlib/find.h index d5394b4..9db633d 100644 --- a/Objects/stringlib/find.h +++ b/Objects/stringlib/find.h @@ -48,6 +48,39 @@ stringlib_rfind(const STRINGLIB_CHAR* str, Py_ssize_t str_len, return pos; } +#ifdef STRINGLIB_STR + +Py_LOCAL(Py_ssize_t) +stringlib_find_obj(PyObject* str, PyObject* sub, + Py_ssize_t start, Py_ssize_t end) +{ + return stringlib_find( + STRINGLIB_STR(str) + start, end - start, + STRINGLIB_STR(sub), STRINGLIB_LEN(sub), start + ); +} + +Py_LOCAL(int) +stringlib_contains_obj(PyObject* str, PyObject* sub) +{ + return stringlib_find( + STRINGLIB_STR(str), STRINGLIB_LEN(str), + STRINGLIB_STR(sub), STRINGLIB_LEN(sub), 0 + ) != -1; +} + +Py_LOCAL(Py_ssize_t) +stringlib_rfind_obj(PyObject* str, PyObject* sub, + Py_ssize_t start, Py_ssize_t end) +{ + return stringlib_rfind( + STRINGLIB_STR(str) + start, end - start, + STRINGLIB_STR(sub), STRINGLIB_LEN(sub), start + ); +} + +#endif + #endif /* |
