annotate Include/sliceobject.h @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents e9af9b1ca67e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 #ifndef Py_SLICEOBJECT_H
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 #define Py_SLICEOBJECT_H
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 #ifdef __cplusplus
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 extern "C" {
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 #endif
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
4403
3b3f7c3f6da2 Ellipses -> Ellipsis rename (the dictionary really says that it should
Guido van Rossum <guido@python.org>
parents: 3834
diff changeset
7 /* The unique ellipsis object "..." */
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
8
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 23778
diff changeset
9 PyAPI_DATA(PyObject) _Py_EllipsisObject; /* Don't use this directly */
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
10
4403
3b3f7c3f6da2 Ellipses -> Ellipsis rename (the dictionary really says that it should
Guido van Rossum <guido@python.org>
parents: 3834
diff changeset
11 #define Py_Ellipsis (&_Py_EllipsisObject)
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 /* Slice object interface */
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
14
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 /*
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 A slice object containing start, stop, and step data members (the
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 names are from range). After much talk with Guido, it was decided to
33856
60c60dc75c77 Wrote down the invariants of some common objects whose structure is
Armin Rigo <arigo@tunes.org>
parents: 24752
diff changeset
19 let these be any arbitrary python type. Py_None stands for omitted values.
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 */
66664
62b61abd02b8 Merge branches/pep-0384.
Martin v. Löwis <martin@v.loewis.de>
parents: 53368
diff changeset
21 #ifndef Py_LIMITED_API
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 typedef struct {
13445
091ca6b9348f ANSI-fication and Py_PROTO extermination.
Fred Drake <fdrake@acm.org>
parents: 9586
diff changeset
23 PyObject_HEAD
33856
60c60dc75c77 Wrote down the invariants of some common objects whose structure is
Armin Rigo <arigo@tunes.org>
parents: 24752
diff changeset
24 PyObject *start, *stop, *step; /* not NULL */
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 } PySliceObject;
66664
62b61abd02b8 Merge branches/pep-0384.
Martin v. Löwis <martin@v.loewis.de>
parents: 53368
diff changeset
26 #endif
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
27
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 23778
diff changeset
28 PyAPI_DATA(PyTypeObject) PySlice_Type;
53368
b5e2bcbbfa74 Merged revisions 71757 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 44351
diff changeset
29 PyAPI_DATA(PyTypeObject) PyEllipsis_Type;
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
30
44351
86a2679dca46 #1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT.
Christian Heimes <christian@cheimes.de>
parents: 42334
diff changeset
31 #define PySlice_Check(op) (Py_TYPE(op) == &PySlice_Type)
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
32
24752
c1eb668525e1 Excise DL_EXPORT from Include.
Mark Hammond <mhammond@skippinet.com.au>
parents: 23778
diff changeset
33 PyAPI_FUNC(PyObject *) PySlice_New(PyObject* start, PyObject* stop,
13445
091ca6b9348f ANSI-fication and Py_PROTO extermination.
Fred Drake <fdrake@acm.org>
parents: 9586
diff changeset
34 PyObject* step);
66664
62b61abd02b8 Merge branches/pep-0384.
Martin v. Löwis <martin@v.loewis.de>
parents: 53368
diff changeset
35 #ifndef Py_LIMITED_API
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36501
diff changeset
36 PyAPI_FUNC(PyObject *) _PySlice_FromIndices(Py_ssize_t start, Py_ssize_t stop);
80477
e9af9b1ca67e Issue #16451: Refactor to remove duplication between range and slice in slice index computations.
Mark Dickinson <mdickinson@enthought.com>
parents: 66664
diff changeset
37 PyAPI_FUNC(int) _PySlice_GetLongIndices(PySliceObject *self, PyObject *length,
e9af9b1ca67e Issue #16451: Refactor to remove duplication between range and slice in slice index computations.
Mark Dickinson <mdickinson@enthought.com>
parents: 66664
diff changeset
38 PyObject **start_ptr, PyObject **stop_ptr,
e9af9b1ca67e Issue #16451: Refactor to remove duplication between range and slice in slice index computations.
Mark Dickinson <mdickinson@enthought.com>
parents: 66664
diff changeset
39 PyObject **step_ptr);
66664
62b61abd02b8 Merge branches/pep-0384.
Martin v. Löwis <martin@v.loewis.de>
parents: 53368
diff changeset
40 #endif
62b61abd02b8 Merge branches/pep-0384.
Martin v. Löwis <martin@v.loewis.de>
parents: 53368
diff changeset
41 PyAPI_FUNC(int) PySlice_GetIndices(PyObject *r, Py_ssize_t length,
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 33856
diff changeset
42 Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step);
66664
62b61abd02b8 Merge branches/pep-0384.
Martin v. Löwis <martin@v.loewis.de>
parents: 53368
diff changeset
43 PyAPI_FUNC(int) PySlice_GetIndicesEx(PyObject *r, Py_ssize_t length,
36501
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 33856
diff changeset
44 Py_ssize_t *start, Py_ssize_t *stop,
7fdc639bc5b4 Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents: 33856
diff changeset
45 Py_ssize_t *step, Py_ssize_t *slicelength);
3834
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
46
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 #ifdef __cplusplus
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 }
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 #endif
77d912f2abcb Slice and ellipses interface
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 #endif /* !Py_SLICEOBJECT_H */