cinap_lenrekadd hg and python4bb9e2215 years agoHistory
67 lines · 2.5 KB · C
RawDownload
 /* List object interface */ /*Another generally useful object type is an list of object pointers.This is a mutable type: the list items can be changed, and items can beadded or removed.  Out-of-range indices or non-list objects are ignored. *** WARNING *** PyList_SetItem does not increment the new item's referencecount, but does decrement the reference count of the item it replaces,if not nil.  It does *decrement* the reference count if it is *not*inserted in the list.  Similarly, PyList_GetItem does not increment thereturned item's reference count.*/ #ifndef Py_LISTOBJECT_H#define Py_LISTOBJECT_H#ifdef __cplusplusextern "C" {#endif typedef struct {    PyObject_VAR_HEAD    /* Vector of pointers to list elements.  list[0] is ob_item[0], etc. */    PyObject **ob_item;     /* ob_item contains space for 'allocated' elements.  The number     * currently in use is ob_size.     * Invariants:     *     0 <= ob_size <= allocated     *     len(list) == ob_size     *     ob_item == NULL implies ob_size == allocated == 0     * list.sort() temporarily sets allocated to -1 to detect mutations.     *     * Items must normally not be NULL, except during construction when     * the list is not yet visible outside the function that builds it.     */    Py_ssize_t allocated;} PyListObject; PyAPI_DATA(PyTypeObject) PyList_Type; #define PyList_Check(op) PyObject_TypeCheck(op, &PyList_Type)#define PyList_CheckExact(op) ((op)->ob_type == &PyList_Type) PyAPI_FUNC(PyObject *) PyList_New(Py_ssize_t size);PyAPI_FUNC(Py_ssize_t) PyList_Size(PyObject *);PyAPI_FUNC(PyObject *) PyList_GetItem(PyObject *, Py_ssize_t);PyAPI_FUNC(int) PyList_SetItem(PyObject *, Py_ssize_t, PyObject *);PyAPI_FUNC(int) PyList_Insert(PyObject *, Py_ssize_t, PyObject *);PyAPI_FUNC(int) PyList_Append(PyObject *, PyObject *);PyAPI_FUNC(PyObject *) PyList_GetSlice(PyObject *, Py_ssize_t, Py_ssize_t);PyAPI_FUNC(int) PyList_SetSlice(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *);PyAPI_FUNC(int) PyList_Sort(PyObject *);PyAPI_FUNC(int) PyList_Reverse(PyObject *);PyAPI_FUNC(PyObject *) PyList_AsTuple(PyObject *);PyAPI_FUNC(PyObject *) _PyList_Extend(PyListObject *, PyObject *); /* Macro, trading safety for speed */#define PyList_GET_ITEM(op, i) (((PyListObject *)(op))->ob_item[i])#define PyList_SET_ITEM(op, i, v) (((PyListObject *)(op))->ob_item[i] = (v))#define PyList_GET_SIZE(op)    (((PyListObject *)(op))->ob_size) #ifdef __cplusplus}#endif#endif /* !Py_LISTOBJECT_H */