• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef Py_INTERNAL_BYTESOBJECT_H
2 #define Py_INTERNAL_BYTESOBJECT_H
3 #ifdef __cplusplus
4 extern "C" {
5 #endif
6 
7 #ifndef Py_BUILD_CORE
8 #  error "this header requires Py_BUILD_CORE define"
9 #endif
10 
11 
12 /* runtime lifecycle */
13 
14 extern PyStatus _PyBytes_InitTypes(PyInterpreterState *);
15 
16 
17 /* Substring Search.
18 
19    Returns the index of the first occurrence of
20    a substring ("needle") in a larger text ("haystack").
21    If the needle is not found, return -1.
22    If the needle is found, add offset to the index.
23 */
24 
25 PyAPI_FUNC(Py_ssize_t)
26 _PyBytes_Find(const char *haystack, Py_ssize_t len_haystack,
27               const char *needle, Py_ssize_t len_needle,
28               Py_ssize_t offset);
29 
30 /* Same as above, but search right-to-left */
31 PyAPI_FUNC(Py_ssize_t)
32 _PyBytes_ReverseFind(const char *haystack, Py_ssize_t len_haystack,
33                      const char *needle, Py_ssize_t len_needle,
34                      Py_ssize_t offset);
35 
36 
37 /** Helper function to implement the repeat and inplace repeat methods on a buffer
38  *
39  * len_dest is assumed to be an integer multiple of len_src.
40  * If src equals dest, then assume the operation is inplace.
41  *
42  * This method repeately doubles the number of bytes copied to reduce
43  * the number of invocations of memcpy.
44  */
45 PyAPI_FUNC(void)
46 _PyBytes_Repeat(char* dest, Py_ssize_t len_dest,
47     const char* src, Py_ssize_t len_src);
48 
49 #ifdef __cplusplus
50 }
51 #endif
52 #endif /* !Py_INTERNAL_BYTESOBJECT_H */
53