mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	Change PyAPI_FUNC(type), PyAPI_DATA(type) and PyMODINIT_FUNC macros of pyport.h when Py_BUILD_CORE_MODULE is defined. The Py_BUILD_CORE_MODULE define must be now be used to build a C extension as a dynamic library accessing Python internals: export the PyInit_xxx() function in DLL exports on Windows. Changes: * Py_BUILD_CORE_BUILTIN and Py_BUILD_CORE_MODULE now imply Py_BUILD_CORE directy in pyport.h. * ceval.c compilation now fails with an error if Py_BUILD_CORE is not defined, just to ensure that Python is build with the correct defines. * setup.py now compiles _pickle.c with Py_BUILD_CORE_MODULE define. * setup.py compiles _json.c with Py_BUILD_CORE_MODULE define, rather than Py_BUILD_CORE_BUILTIN define * PCbuild/pythoncore.vcxproj: Add Py_BUILD_CORE_BUILTIN define.
		
			
				
	
	
		
			39 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef Py_LIMITED_API
 | 
						|
#ifndef Py_INTERNAL_ACCU_H
 | 
						|
#define Py_INTERNAL_ACCU_H
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
/*** This is a private API for use by the interpreter and the stdlib.
 | 
						|
 *** Its definition may be changed or removed at any moment.
 | 
						|
 ***/
 | 
						|
 | 
						|
#ifndef Py_BUILD_CORE
 | 
						|
#  error "this header requires Py_BUILD_CORE define"
 | 
						|
#endif
 | 
						|
 | 
						|
/*
 | 
						|
 * A two-level accumulator of unicode objects that avoids both the overhead
 | 
						|
 * of keeping a huge number of small separate objects, and the quadratic
 | 
						|
 * behaviour of using a naive repeated concatenation scheme.
 | 
						|
 */
 | 
						|
 | 
						|
#undef small /* defined by some Windows headers */
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    PyObject *large;  /* A list of previously accumulated large strings */
 | 
						|
    PyObject *small;  /* Pending small strings */
 | 
						|
} _PyAccu;
 | 
						|
 | 
						|
PyAPI_FUNC(int) _PyAccu_Init(_PyAccu *acc);
 | 
						|
PyAPI_FUNC(int) _PyAccu_Accumulate(_PyAccu *acc, PyObject *unicode);
 | 
						|
PyAPI_FUNC(PyObject *) _PyAccu_FinishAsList(_PyAccu *acc);
 | 
						|
PyAPI_FUNC(PyObject *) _PyAccu_Finish(_PyAccu *acc);
 | 
						|
PyAPI_FUNC(void) _PyAccu_Destroy(_PyAccu *acc);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
#endif /* !Py_INTERNAL_ACCU_H */
 | 
						|
#endif /* !Py_LIMITED_API */
 |