Viewing file: pycore_list.h (1.32 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#ifndef Py_INTERNAL_LIST_H #define Py_INTERNAL_LIST_H #ifdef __cplusplus extern "C" { #endif
#ifndef Py_BUILD_CORE # error "this header requires Py_BUILD_CORE define" #endif
#include "listobject.h" // _PyList_CAST()
/* runtime lifecycle */
extern void _PyList_Fini(PyInterpreterState *);
/* other API */
#ifndef WITH_FREELISTS // without freelists # define PyList_MAXFREELIST 0 #endif
/* Empty list reuse scheme to save calls to malloc and free */ #ifndef PyList_MAXFREELIST # define PyList_MAXFREELIST 80 #endif
struct _Py_list_state { #if PyList_MAXFREELIST > 0 PyListObject *free_list[PyList_MAXFREELIST]; int numfree; #endif };
#define _PyList_ITEMS(op) (_PyList_CAST(op)->ob_item)
extern int _PyList_AppendTakeRefListResize(PyListObject *self, PyObject *newitem);
static inline int _PyList_AppendTakeRef(PyListObject *self, PyObject *newitem) { assert(self != NULL && newitem != NULL); assert(PyList_Check(self)); Py_ssize_t len = PyList_GET_SIZE(self); Py_ssize_t allocated = self->allocated; assert((size_t)len + 1 < PY_SSIZE_T_MAX); if (allocated > len) { PyList_SET_ITEM(self, len, newitem); Py_SET_SIZE(self, len + 1); return 0; } return _PyList_AppendTakeRefListResize(self, newitem); }
#ifdef __cplusplus } #endif #endif /* !Py_INTERNAL_LIST_H */
|