-
-
Notifications
You must be signed in to change notification settings - Fork 68
/
sequence.clj
179 lines (135 loc) · 5.15 KB
/
sequence.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
(ns libpython-clj.jna.protocols.sequence
(:require [libpython-clj.jna.base
:refer [def-pylib-fn
ensure-pyobj
ensure-pytuple
ensure-pydict
size-t-type
*python-library*]
:as libpy-base]
[tech.jna :as jna])
(:import [com.sun.jna Pointer]
[libpython_clj.jna PyObject]))
(def-pylib-fn PySequence_Check
"Return 1 if the object provides sequence protocol, and 0 otherwise. Note that it
returns 1 for Python classes with a __getitem__() method unless they are dict
subclasses since in general case it is impossible to determine what the type of keys
it supports. This function always succeeds."
Integer
[o ensure-pyobj])
(def-pylib-fn PySequence_Length
"Returns the number of objects in sequence o on success, and -1 on failure. This is
equivalent to the Python expression len(o)."
size-t-type
[o ensure-pyobj])
(def-pylib-fn PySequence_Concat
"Return value: New reference.
Return the concatenation of o1 and o2 on success, and NULL on failure. This is the
equivalent of the Python expression o1 + o2."
Pointer
[o1 ensure-pyobj]
[o2 ensure-pyobj])
(def-pylib-fn PySequence_Repeat
"Return value: New reference.
Return the result of repeating sequence object o count times, or NULL on
failure. This is the equivalent of the Python expression o * count."
Pointer
[o ensure-pyobj]
[count jna/size-t])
(def-pylib-fn PySequence_InPlaceConcat
"Return value: New reference.
Return the concatenation of o1 and o2 on success, and NULL on failure. The operation
is done in-place when o1 supports it. This is the equivalent of the Python expression
o1 += o2."
Pointer
[o1 ensure-pyobj]
[o2 ensure-pyobj])
(def-pylib-fn PySequence_InPlaceRepeat
"Return value: New reference.
Return the result of repeating sequence object o count times, or NULL on failure. The
operation is done in-place when o supports it. This is the equivalent of the Python
expression o *= count."
Pointer
[o ensure-pyobj]
[count jna/size-t])
(def-pylib-fn PySequence_GetItem
"Return value: New reference.
Return the ith element of o, or NULL on failure. This is the equivalent of the Python
expression o[i]."
Pointer
[o ensure-pyobj]
[i jna/size-t])
(def-pylib-fn PySequence_GetSlice
"Return value: New reference.
Return the slice of sequence object o between i1 and i2, or NULL on failure. This is
the equivalent of the Python expression o[i1:i2]."
Pointer
[o ensure-pyobj]
[i1 jna/size-t]
[i2 jna/size-t])
(def-pylib-fn PySequence_SetItem
"Assign object v to the ith element of o. Raise an exception and return -1 on failure;
return 0 on success. This is the equivalent of the Python statement o[i] = v. This
function does not steal a reference to v.
If v is NULL, the element is deleted, however this feature is deprecated in favour
of using PySequence_DelItem()."
Integer
[o ensure-pyobj]
[i jna/size-t]
[v ensure-pyobj])
(def-pylib-fn PySequence_DelItem
"Delete the ith element of object o. Returns -1 on failure. This is the equivalent of
the Python statement del o[i]."
Integer
[o ensure-pyobj]
[i jna/size-t])
(def-pylib-fn PySequence_SetSlice
"Assign the sequence object v to the slice in sequence object o from i1 to i2. This is
the equivalent of the Python statement o[i1:i2] = v."
Integer
[o ensure-pyobj]
[i1 jna/size-t]
[i2 jna/size-t]
[v ensure-pyobj])
(def-pylib-fn PySequence_DelSlice
"Delete the slice in sequence object o from i1 to i2. Returns -1 on failure. This is
the equivalent of the Python statement del o[i1:i2]."
Integer
[o ensure-pyobj]
[i1 jna/size-t]
[i2 jna/size-t])
(def-pylib-fn PySequence_Count
"Return the number of occurrences of value in o, that is, return the number of keys
for which o[key] == value. On failure, return -1. This is equivalent to the Python
expression o.count(value)."
size-t-type
[o ensure-pyobj]
[value ensure-pyobj])
(def-pylib-fn PySequence_Contains
"Determine if o contains value. If an item in o is equal to value, return 1, otherwise
return 0. On error, return -1. This is equivalent to the Python expression value in
o."
Integer
[o ensure-pyobj]
[value ensure-pyobj])
(def-pylib-fn PySequence_Index
"Return the first index i for which o[i] == value. On error, return -1. This is
equivalent to the Python expression o.index(value)."
size-t-type
[o ensure-pyobj]
[value ensure-pyobj])
(def-pylib-fn PySequence_List
"Return value: New reference.
Return a list object with the same contents as the sequence or iterable o, or NULL on
failure. The returned list is guaranteed to be new. This is equivalent to the Python
expression list(o)."
Pointer
[o ensure-pyobj])
(def-pylib-fn PySequence_Tuple
"Return value: New reference.
Return a tuple object with the same contents as the sequence or iterable o, or NULL
on failure. If o is a tuple, a new reference will be returned, otherwise a tuple will
be constructed with the appropriate contents. This is equivalent to the Python
expression tuple(o)."
Pointer
[o ensure-pyobj])