1
1
import { NotImplementedError , IndexError , ValueError } from '@aureooms/js-error' ;
2
2
3
+ /**
4
+ * Deque.
5
+ */
3
6
export default function Deque ( ) { }
4
7
8
+ /**
9
+ * Deque.prototype.len.
10
+ *
11
+ * @return {Number }
12
+ */
5
13
Deque . prototype . len = function ( ) {
6
14
throw new NotImplementedError ( 'len' ) ;
7
15
} ;
8
16
17
+ /**
18
+ * Deque.prototype.capacity.
19
+ *
20
+ * @return {Number }
21
+ */
9
22
Deque . prototype . capacity = function ( ) {
10
23
throw new NotImplementedError ( 'capcity' ) ;
11
24
} ;
12
25
26
+ /**
27
+ * Deque.prototype.empty.
28
+ *
29
+ * @return {Boolean }
30
+ */
13
31
Deque . prototype . empty = function ( ) {
14
32
return this . len ( ) === 0 ;
15
33
} ;
16
34
35
+ /**
36
+ * Deque.prototype[Symbol.iterator].
37
+ *
38
+ * @return {Iterable<any> }
39
+ */
17
40
Deque . prototype [ Symbol . iterator ] = function ( ) {
18
41
return this . values ( ) ;
19
42
} ;
20
43
44
+ /**
45
+ * Deque.prototype.values.
46
+ *
47
+ * @return {Iterable<any> }
48
+ */
21
49
Deque . prototype . values = function ( ) {
22
50
throw new NotImplementedError ( 'values' ) ;
23
51
} ;
24
52
53
+ /**
54
+ * Deque.prototype.append.
55
+ *
56
+ * @param {any } _x
57
+ */
25
58
Deque . prototype . append = function ( _x ) {
26
59
throw new NotImplementedError ( 'append' ) ;
27
60
} ;
28
61
62
+ /**
63
+ * Deque.prototype.appendleft.
64
+ *
65
+ * @param {any } _x
66
+ */
29
67
Deque . prototype . appendleft = function ( _x ) {
30
68
throw new NotImplementedError ( 'appendleft' ) ;
31
69
} ;
32
70
71
+ /**
72
+ * Deque.prototype.clear.
73
+ *
74
+ * @return {Deque }
75
+ */
33
76
Deque . prototype . clear = function ( ) {
34
77
throw new NotImplementedError ( 'clear' ) ;
35
78
} ;
36
79
80
+ /**
81
+ * Deque.prototype.copy.
82
+ *
83
+ * @return {Deque }
84
+ */
37
85
Deque . prototype . copy = function ( ) {
38
86
throw new NotImplementedError ( 'copy' ) ;
39
87
} ;
40
88
89
+ /**
90
+ * Deque.prototype.count.
91
+ *
92
+ * @param {any } x
93
+ * @return {Number }
94
+ */
41
95
Deque . prototype . count = function ( x ) {
42
96
let c = 0 ;
43
97
@@ -50,6 +104,11 @@ Deque.prototype.count = function (x) {
50
104
return c ;
51
105
} ;
52
106
107
+ /**
108
+ * Deque.prototype.extend.
109
+ *
110
+ * @param {Iterable<any> } iterable
111
+ */
53
112
Deque . prototype . extend = function ( iterable ) {
54
113
for ( const x of iterable ) {
55
114
this . append ( x ) ;
@@ -58,6 +117,11 @@ Deque.prototype.extend = function (iterable) {
58
117
return this ;
59
118
} ;
60
119
120
+ /**
121
+ * Deque.prototype.extendleft.
122
+ *
123
+ * @param {Iterable<any> } iterable
124
+ */
61
125
Deque . prototype . extendleft = function ( iterable ) {
62
126
for ( const x of iterable ) {
63
127
this . appendleft ( x ) ;
@@ -66,22 +130,46 @@ Deque.prototype.extendleft = function (iterable) {
66
130
return this ;
67
131
} ;
68
132
133
+ /**
134
+ * Deque.prototype._checkbounds.
135
+ *
136
+ * @param {Number } i
137
+ */
69
138
Deque . prototype . _checkbounds = function ( i ) {
70
139
if ( i < 0 || i >= this . len ( ) ) {
71
140
throw new IndexError ( i ) ;
72
141
}
73
142
} ;
74
143
144
+ /**
145
+ * Deque.prototype._where.
146
+ *
147
+ * @param {Number } _i
148
+ * @return {Array }
149
+ */
75
150
Deque . prototype . _where = function ( _i ) {
76
151
throw new NotImplementedError ( '_where' ) ;
77
152
} ;
78
153
154
+ /**
155
+ * Deque.prototype.get.
156
+ *
157
+ * @param {Number } i
158
+ * @return {any }
159
+ */
79
160
Deque . prototype . get = function ( i ) {
80
161
const [ container , index ] = this . _where ( i ) ;
81
162
82
163
return container [ index ] ;
83
164
} ;
84
165
166
+ /**
167
+ * Deque.prototype.set.
168
+ *
169
+ * @param {Number } i
170
+ * @param {any } value
171
+ * @return {Deque }
172
+ */
85
173
Deque . prototype . set = function ( i , value ) {
86
174
const [ container , index ] = this . _where ( i ) ;
87
175
@@ -90,12 +178,26 @@ Deque.prototype.set = function (i, value) {
90
178
return this ;
91
179
} ;
92
180
181
+ /**
182
+ * Deque.prototype._range
183
+ *
184
+ * @param {Number } start
185
+ * @param {Number } stop
186
+ * @return {Iterable<any> }
187
+ */
93
188
Deque . prototype . _range = function * ( start , stop ) {
94
189
for ( let i = start ; i < stop ; ++ i ) {
95
190
yield [ i , this . get ( i ) ] ;
96
191
}
97
192
} ;
98
193
194
+ /**
195
+ * Deque.prototype.index.
196
+ *
197
+ * @param {any } x
198
+ * @param {Number } start
199
+ * @param {Number } stop
200
+ */
99
201
Deque . prototype . index = function ( x , start = 0 , stop = this . len ( ) ) {
100
202
for ( const [ i , element ] of this . _range ( start , stop ) ) {
101
203
if ( element === x ) {
@@ -106,14 +208,30 @@ Deque.prototype.index = function (x, start = 0, stop = this.len()) {
106
208
throw new ValueError ( 'not found' ) ;
107
209
} ;
108
210
211
+ /**
212
+ * Deque.prototype.pop.
213
+ *
214
+ * @return {any }
215
+ */
109
216
Deque . prototype . pop = function ( ) {
110
217
throw new NotImplementedError ( 'pop' ) ;
111
218
} ;
112
219
220
+ /**
221
+ * Deque.prototype.popleft.
222
+ *
223
+ * @return {any }
224
+ */
113
225
Deque . prototype . popleft = function ( ) {
114
226
throw new NotImplementedError ( 'popleft' ) ;
115
227
} ;
116
228
229
+ /**
230
+ * Deque.prototype.insert.
231
+ *
232
+ * @param {Number } i
233
+ * @param {any } x
234
+ */
117
235
Deque . prototype . insert = function ( i , x ) {
118
236
this . _checkbounds ( i ) ;
119
237
@@ -130,6 +248,11 @@ Deque.prototype.insert = function (i, x) {
130
248
return this ;
131
249
} ;
132
250
251
+ /**
252
+ * Deque.prototype.delete.
253
+ *
254
+ * @param {Number } i
255
+ */
133
256
Deque . prototype . delete = function ( i ) {
134
257
this . _checkbounds ( i ) ;
135
258
@@ -144,6 +267,11 @@ Deque.prototype.delete = function (i) {
144
267
return this ;
145
268
} ;
146
269
270
+ /**
271
+ * Deque.prototype.remove.
272
+ *
273
+ * @param {any } value
274
+ */
147
275
Deque . prototype . remove = function ( value ) {
148
276
const i = this . index ( value ) ;
149
277
@@ -152,6 +280,11 @@ Deque.prototype.remove = function (value) {
152
280
return this ;
153
281
} ;
154
282
283
+ /**
284
+ * Deque.prototype.reverse.
285
+ *
286
+ * @return {Deque }
287
+ */
155
288
Deque . prototype . reverse = function ( ) {
156
289
for ( let i = 0 , j = this . len ( ) ; i < -- j ; ++ i ) {
157
290
const a = this . get ( i ) ;
@@ -163,6 +296,11 @@ Deque.prototype.reverse = function () {
163
296
return this ;
164
297
} ;
165
298
299
+ /**
300
+ * Deque.prototype.rotate.
301
+ *
302
+ * @param {Number } n
303
+ */
166
304
Deque . prototype . rotate = function ( n ) {
167
305
if ( n > 0 ) {
168
306
while ( n -- > 0 ) {
0 commit comments