22
22
cdef extern from "python-compat.h":
25
from cpython.dict cimport (
29
from cpython.list cimport (
37
from cpython.object cimport (
41
PyObject_RichCompareBool,
43
from cpython.ref cimport (
46
from cpython.tuple cimport (
25
54
cdef extern from "Python.h":
26
ctypedef int Py_ssize_t
27
ctypedef struct PyObject:
29
55
ctypedef struct PyListObject:
31
int PyList_CheckExact(object)
32
PyObject *PyList_GET_ITEM(object, Py_ssize_t o)
33
Py_ssize_t PyList_GET_SIZE(object)
34
int PyList_Append(object, object) except -1
35
int PyList_SetItem(object, Py_ssize_t o, object) except -1
36
int PyList_Sort(object) except -1
38
int PyTuple_CheckExact(object)
39
object PyTuple_New(Py_ssize_t len)
40
void PyTuple_SET_ITEM(object, Py_ssize_t pos, object)
41
58
void PyTuple_SET_ITEM_ptr "PyTuple_SET_ITEM" (object, Py_ssize_t,
43
int PyTuple_Resize(PyObject **, Py_ssize_t newlen)
44
PyObject *PyTuple_GET_ITEM(object, Py_ssize_t o)
45
Py_ssize_t PyTuple_GET_SIZE(object)
47
PyObject *PyDict_GetItem(object d, object k)
48
int PyDict_SetItem(object d, object k, object v) except -1
50
void Py_INCREF(object)
51
61
void Py_INCREF_ptr "Py_INCREF" (PyObject *)
52
62
void Py_DECREF_ptr "Py_DECREF" (PyObject *)
56
int PyObject_RichCompareBool(object, object, int opid) except -1
57
64
int PyObject_RichCompareBool_ptr "PyObject_RichCompareBool" (
58
65
PyObject *, PyObject *, int opid)
104
111
"""Combine the annotations from both sides."""
105
112
cdef Py_ssize_t pos_one, pos_two, len_one, len_two
106
113
cdef Py_ssize_t out_pos
107
cdef PyObject *temp, *left, *right
109
118
if (PyObject_RichCompareBool(ann_one, ann_two, Py_LT)):
110
119
cache_key = (ann_one, ann_two)
171
180
matching_blocks defines the ranges that match.
173
182
cdef Py_ssize_t parent_idx, lines_idx, match_len, idx
174
cdef PyListObject *par_list, *ann_list
175
cdef PyObject **par_temp, **ann_temp
183
cdef PyListObject *par_list
184
cdef PyListObject *ann_list
185
cdef PyObject **par_temp
186
cdef PyObject **ann_temp
177
188
_check_annotations_are_lists(annotations, parent_annotations)
178
189
par_list = <PyListObject *>parent_annotations
197
208
matching_blocks, ann_cache) except -1:
198
209
cdef Py_ssize_t parent_idx, ann_idx, lines_idx, match_len, idx
199
210
cdef Py_ssize_t pos
200
cdef PyObject *ann_temp, *par_temp
211
cdef PyObject *ann_temp
212
cdef PyObject *par_temp
202
214
_check_annotations_are_lists(annotations, parent_annotations)