mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	Use it where appropriate: the repeat functions of `array.array`, `bytes`, `bytearray`, and `str`.
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef Py_INTERNAL_BYTESOBJECT_H
 | 
						|
#define Py_INTERNAL_BYTESOBJECT_H
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef Py_BUILD_CORE
 | 
						|
#  error "this header requires Py_BUILD_CORE define"
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
/* runtime lifecycle */
 | 
						|
 | 
						|
extern PyStatus _PyBytes_InitTypes(PyInterpreterState *);
 | 
						|
 | 
						|
 | 
						|
/* Substring Search.
 | 
						|
 | 
						|
   Returns the index of the first occurrence of
 | 
						|
   a substring ("needle") in a larger text ("haystack").
 | 
						|
   If the needle is not found, return -1.
 | 
						|
   If the needle is found, add offset to the index.
 | 
						|
*/
 | 
						|
 | 
						|
PyAPI_FUNC(Py_ssize_t)
 | 
						|
_PyBytes_Find(const char *haystack, Py_ssize_t len_haystack,
 | 
						|
              const char *needle, Py_ssize_t len_needle,
 | 
						|
              Py_ssize_t offset);
 | 
						|
 | 
						|
/* Same as above, but search right-to-left */
 | 
						|
PyAPI_FUNC(Py_ssize_t)
 | 
						|
_PyBytes_ReverseFind(const char *haystack, Py_ssize_t len_haystack,
 | 
						|
                     const char *needle, Py_ssize_t len_needle,
 | 
						|
                     Py_ssize_t offset);
 | 
						|
 | 
						|
 | 
						|
/** Helper function to implement the repeat and inplace repeat methods on a buffer
 | 
						|
 *
 | 
						|
 * len_dest is assumed to be an integer multiple of len_src.
 | 
						|
 * If src equals dest, then assume the operation is inplace.
 | 
						|
 *
 | 
						|
 * This method repeately doubles the number of bytes copied to reduce
 | 
						|
 * the number of invocations of memcpy.
 | 
						|
 */
 | 
						|
PyAPI_FUNC(void)
 | 
						|
_PyBytes_Repeat(char* dest, Py_ssize_t len_dest,
 | 
						|
    const char* src, Py_ssize_t len_src);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
#endif /* !Py_INTERNAL_BYTESOBJECT_H */
 |