Mercurial > cpython-lru_cache-weakref
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 |
| 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 */ |
