extern const PyConfig* _PyInterpreterState_GetConfig(PyInterpreterState *interp);
-/* Get a copy of the current interpreter configuration.
-
- Return 0 on success. Raise an exception and return -1 on error.
-
- The caller must initialize 'config', using PyConfig_InitPythonConfig()
- for example.
-
- Python must be preinitialized to call this method.
- The caller must hold the GIL.
-
- Once done with the configuration, PyConfig_Clear() must be called to clear
- it.
-
- Export for '_testinternalcapi' shared extension. */
+// Get a copy of the current interpreter configuration.
+//
+// Return 0 on success. Raise an exception and return -1 on error.
+//
+// The caller must initialize 'config', using PyConfig_InitPythonConfig()
+// for example.
+//
+// Python must be preinitialized to call this method.
+// The caller must hold the GIL.
+//
+// Once done with the configuration, PyConfig_Clear() must be called to clear
+// it.
+//
+// Export for '_testinternalcapi' shared extension.
PyAPI_FUNC(int) _PyInterpreterState_GetConfigCopy(
struct PyConfig *config);
-/* Set the configuration of the current interpreter.
-
- This function should be called during or just after the Python
- initialization.
-
- Update the sys module with the new configuration. If the sys module was
- modified directly after the Python initialization, these changes are lost.
-
- Some configuration like faulthandler or warnoptions can be updated in the
- configuration, but don't reconfigure Python (don't enable/disable
- faulthandler and don't reconfigure warnings filters).
-
- Return 0 on success. Raise an exception and return -1 on error.
-
- The configuration should come from _PyInterpreterState_GetConfigCopy().
-
- Export for '_testinternalcapi' shared extension. */
+// Set the configuration of the current interpreter.
+//
+// This function should be called during or just after the Python
+// initialization.
+//
+// Update the sys module with the new configuration. If the sys module was
+// modified directly after the Python initialization, these changes are lost.
+//
+// Some configuration like faulthandler or warnoptions can be updated in the
+// configuration, but don't reconfigure Python (don't enable/disable
+// faulthandler and don't reconfigure warnings filters).
+//
+// Return 0 on success. Raise an exception and return -1 on error.
+//
+// The configuration should come from _PyInterpreterState_GetConfigCopy().
+//
+// Export for '_testinternalcapi' shared extension.
PyAPI_FUNC(int) _PyInterpreterState_SetConfig(
const struct PyConfig *config);
extern PyObject *_PyLong_Multiply(PyLongObject *left, PyLongObject *right);
extern PyObject *_PyLong_Subtract(PyLongObject *left, PyLongObject *right);
-// Used by _PyBytes_FromHex(), _PyBytes_DecodeEscape(), Python/mystrtoul.c.
// Export for 'binascii' shared extension.
PyAPI_DATA(unsigned char) _PyLong_DigitValue[256];
.ob_size = size \
},
-PyAPI_FUNC(void) _Py_NO_RETURN _Py_FatalRefcountErrorFunc(
+extern void _Py_NO_RETURN _Py_FatalRefcountErrorFunc(
const char *func,
const char *message);
(meth)((self), (args), (kw))
#endif // __EMSCRIPTEN__ && PY_CALL_TRAMPOLINE
-// Export for '_pickle' shared extension
+// Export these 2 symbols for '_pickle' shared extension
PyAPI_DATA(PyTypeObject) _PyNone_Type;
-// Export for '_pickle' shared extension
PyAPI_DATA(PyTypeObject) _PyNotImplemented_Type;
// Maps Py_LT to Py_GT, ..., Py_GE to Py_LE.
-// Defined in Objects/object.c.
// Export for the stable ABI.
PyAPI_DATA(int) _Py_SwappedOp[];
#ifdef WITH_PYMALLOC
-// Export the symbol for the 3rd party guppy3 project
+// Export the symbol for the 3rd party 'guppy3' project
PyAPI_FUNC(int) _PyObject_DebugMallocStats(FILE *out);
#endif
// Export for '_testinternalcapi' shared extension
PyAPI_FUNC(void) _PyPathConfig_ClearGlobal(void);
+
extern PyStatus _PyPathConfig_ReadGlobal(PyConfig *config);
extern PyStatus _PyPathConfig_UpdateGlobal(const PyConfig *config);
extern const wchar_t * _PyPathConfig_GetGlobalModuleSearchPath(void);
XXX block_new(DEFAULT_BLOCK_SIZE) returns NULL, that's passed on but
XXX an exception is not set in that case).
*/
-PyAPI_FUNC(PyArena*) _PyArena_New(void);
-PyAPI_FUNC(void) _PyArena_Free(PyArena *);
+extern PyArena* _PyArena_New(void);
+extern void _PyArena_Free(PyArena *);
/* Mostly like malloc(), return the address of a block of memory spanning
* `size` bytes, or return NULL (without setting an exception) if enough
* until _PyArena_Free(ar) is called, at which point all pointers obtained
* from the arena `ar` become invalid simultaneously.
*/
-PyAPI_FUNC(void*) _PyArena_Malloc(PyArena *, size_t size);
+extern void* _PyArena_Malloc(PyArena *, size_t size);
/* This routine isn't a proper arena allocation routine. It takes
* a PyObject* and records it so that it can be DECREFed when the
* arena is freed.
*/
-PyAPI_FUNC(int) _PyArena_AddPyObject(PyArena *, PyObject *);
+extern int _PyArena_AddPyObject(PyArena *, PyObject *);
#ifdef __cplusplus
}
extern void _Py_DumpExtensionModules(int fd, PyInterpreterState *interp);
extern PyObject* _Py_CalculateSuggestions(PyObject *dir, PyObject *name);
extern PyObject* _Py_Offer_Suggestions(PyObject* exception);
+
// Export for '_testinternalcapi' shared extension
PyAPI_FUNC(Py_ssize_t) _Py_UTF8_Edit_Cost(PyObject *str_a, PyObject *str_b,
Py_ssize_t max_cost);
/* Helpers for hash functions */
extern Py_hash_t _Py_HashDouble(PyObject *, double);
-// _decimal shared extensions uses _Py_HashPointer()
+
+// Export for '_decimal' shared extension
PyAPI_FUNC(Py_hash_t) _Py_HashPointer(const void*);
+
// Similar to _Py_HashPointer(), but don't replace -1 with -2
extern Py_hash_t _Py_HashPointerRaw(const void*);
-// _datetime shared extension uses _Py_HashBytes()
+
+// Export for '_datetime' shared extension
PyAPI_FUNC(Py_hash_t) _Py_HashBytes(const void*, Py_ssize_t);
/* Prime multiplier used in string and various other hashes. */