#ifndef Py_INTERNAL_GLOBAL_OBJECTS_H #define Py_INTERNAL_GLOBAL_OBJECTS_H #ifdef __cplusplus extern "C" { #endif #ifndef Py_BUILD_CORE # error "this header requires Py_BUILD_CORE define" #endif #include "pycore_global_strings.h" // struct _Py_global_strings // These would be in pycore_long.h if it weren't for an include cycle. #define _PY_NSMALLPOSINTS 257 #define _PY_NSMALLNEGINTS 5 // Only immutable objects should be considered runtime-global. // All others must be per-interpreter. #define _Py_GLOBAL_OBJECT(NAME) \ _PyRuntime.global_objects.NAME #define _Py_SINGLETON(NAME) \ _Py_GLOBAL_OBJECT(singletons.NAME) struct _Py_global_objects { struct { /* Small integers are preallocated in this array so that they * can be shared. * The integers that are preallocated are those in the range * -_PY_NSMALLNEGINTS (inclusive) to _PY_NSMALLPOSINTS (exclusive). */ PyLongObject small_ints[_PY_NSMALLNEGINTS + _PY_NSMALLPOSINTS]; PyBytesObject bytes_empty; struct { PyBytesObject ob; char eos; } bytes_characters[256]; struct _Py_global_strings strings; } singletons; }; #ifdef __cplusplus } #endif #endif /* !Py_INTERNAL_GLOBAL_OBJECTS_H */