1 #ifndef Py_INTERNAL_FLOATOBJECT_H
2 #define Py_INTERNAL_FLOATOBJECT_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 
12 /* runtime lifecycle */
13 
14 extern void _PyFloat_InitState(PyInterpreterState *);
15 extern PyStatus _PyFloat_InitTypes(PyInterpreterState *);
16 extern void _PyFloat_Fini(PyInterpreterState *);
17 extern void _PyFloat_FiniType(PyInterpreterState *);
18 
19 
20 /* other API */
21 
22 #ifndef WITH_FREELISTS
23 // without freelists
24 #  define PyFloat_MAXFREELIST 0
25 #endif
26 
27 #ifndef PyFloat_MAXFREELIST
28 #  define PyFloat_MAXFREELIST   100
29 #endif
30 
31 struct _Py_float_state {
32 #if PyFloat_MAXFREELIST > 0
33     /* Special free list
34        free_list is a singly-linked list of available PyFloatObjects,
35        linked via abuse of their ob_type members. */
36     int numfree;
37     PyFloatObject *free_list;
38 #endif
39 };
40 
41 void _PyFloat_ExactDealloc(PyObject *op);
42 
43 
44 PyAPI_FUNC(void) _PyFloat_DebugMallocStats(FILE* out);
45 
46 
47 /* Format the object based on the format_spec, as defined in PEP 3101
48    (Advanced String Formatting). */
49 PyAPI_FUNC(int) _PyFloat_FormatAdvancedWriter(
50     _PyUnicodeWriter *writer,
51     PyObject *obj,
52     PyObject *format_spec,
53     Py_ssize_t start,
54     Py_ssize_t end);
55 
56 #ifdef __cplusplus
57 }
58 #endif
59 #endif /* !Py_INTERNAL_FLOATOBJECT_H */
60