Coverage Report

Created: 2022-07-08 09:39

/home/mdboom/Work/builds/cpython/Include/internal/pycore_global_objects.h
Line
Count
Source
1
#ifndef Py_INTERNAL_GLOBAL_OBJECTS_H
2
#define Py_INTERNAL_GLOBAL_OBJECTS_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
#include "pycore_gc.h"              // PyGC_Head
12
#include "pycore_global_strings.h"  // struct _Py_global_strings
13
14
15
// These would be in pycore_long.h if it weren't for an include cycle.
16
#define _PY_NSMALLPOSINTS           257
17
#define _PY_NSMALLNEGINTS           5
18
19
20
// Only immutable objects should be considered runtime-global.
21
// All others must be per-interpreter.
22
23
#define _Py_GLOBAL_OBJECT(NAME) \
24
    _PyRuntime.global_objects.NAME
25
#define _Py_SINGLETON(NAME) \
26
    _Py_GLOBAL_OBJECT(singletons.NAME)
27
28
struct _Py_global_objects {
29
    struct {
30
        /* Small integers are preallocated in this array so that they
31
         * can be shared.
32
         * The integers that are preallocated are those in the range
33
         * -_PY_NSMALLNEGINTS (inclusive) to _PY_NSMALLPOSINTS (exclusive).
34
         */
35
        PyLongObject small_ints[_PY_NSMALLNEGINTS + _PY_NSMALLPOSINTS];
36
37
        PyBytesObject bytes_empty;
38
        struct {
39
            PyBytesObject ob;
40
            char eos;
41
        } bytes_characters[256];
42
43
        struct _Py_global_strings strings;
44
45
        _PyGC_Head_UNUSED _tuple_empty_gc_not_used;
46
        PyTupleObject tuple_empty;
47
    } singletons;
48
};
49
50
51
#ifdef __cplusplus
52
}
53
#endif
54
#endif /* !Py_INTERNAL_GLOBAL_OBJECTS_H */