11import { NotImplementedError , IndexError , ValueError } from '@aureooms/js-error' ;
22
3+ /**
4+ * Deque.
5+ */
36export default function Deque ( ) { }
47
8+ /**
9+ * Deque.prototype.len.
10+ *
11+ * @return {Number }
12+ */
513Deque . prototype . len = function ( ) {
614 throw new NotImplementedError ( 'len' ) ;
715} ;
816
17+ /**
18+ * Deque.prototype.capacity.
19+ *
20+ * @return {Number }
21+ */
922Deque . prototype . capacity = function ( ) {
1023 throw new NotImplementedError ( 'capcity' ) ;
1124} ;
1225
26+ /**
27+ * Deque.prototype.empty.
28+ *
29+ * @return {Boolean }
30+ */
1331Deque . prototype . empty = function ( ) {
1432 return this . len ( ) === 0 ;
1533} ;
1634
35+ /**
36+ * Deque.prototype[Symbol.iterator].
37+ *
38+ * @return {Iterable<any> }
39+ */
1740Deque . prototype [ Symbol . iterator ] = function ( ) {
1841 return this . values ( ) ;
1942} ;
2043
44+ /**
45+ * Deque.prototype.values.
46+ *
47+ * @return {Iterable<any> }
48+ */
2149Deque . prototype . values = function ( ) {
2250 throw new NotImplementedError ( 'values' ) ;
2351} ;
2452
53+ /**
54+ * Deque.prototype.append.
55+ *
56+ * @param {any } _x
57+ */
2558Deque . prototype . append = function ( _x ) {
2659 throw new NotImplementedError ( 'append' ) ;
2760} ;
2861
62+ /**
63+ * Deque.prototype.appendleft.
64+ *
65+ * @param {any } _x
66+ */
2967Deque . prototype . appendleft = function ( _x ) {
3068 throw new NotImplementedError ( 'appendleft' ) ;
3169} ;
3270
71+ /**
72+ * Deque.prototype.clear.
73+ *
74+ * @return {Deque }
75+ */
3376Deque . prototype . clear = function ( ) {
3477 throw new NotImplementedError ( 'clear' ) ;
3578} ;
3679
80+ /**
81+ * Deque.prototype.copy.
82+ *
83+ * @return {Deque }
84+ */
3785Deque . prototype . copy = function ( ) {
3886 throw new NotImplementedError ( 'copy' ) ;
3987} ;
4088
89+ /**
90+ * Deque.prototype.count.
91+ *
92+ * @param {any } x
93+ * @return {Number }
94+ */
4195Deque . prototype . count = function ( x ) {
4296 let c = 0 ;
4397
@@ -50,6 +104,11 @@ Deque.prototype.count = function (x) {
50104 return c ;
51105} ;
52106
107+ /**
108+ * Deque.prototype.extend.
109+ *
110+ * @param {Iterable<any> } iterable
111+ */
53112Deque . prototype . extend = function ( iterable ) {
54113 for ( const x of iterable ) {
55114 this . append ( x ) ;
@@ -58,6 +117,11 @@ Deque.prototype.extend = function (iterable) {
58117 return this ;
59118} ;
60119
120+ /**
121+ * Deque.prototype.extendleft.
122+ *
123+ * @param {Iterable<any> } iterable
124+ */
61125Deque . prototype . extendleft = function ( iterable ) {
62126 for ( const x of iterable ) {
63127 this . appendleft ( x ) ;
@@ -66,22 +130,46 @@ Deque.prototype.extendleft = function (iterable) {
66130 return this ;
67131} ;
68132
133+ /**
134+ * Deque.prototype._checkbounds.
135+ *
136+ * @param {Number } i
137+ */
69138Deque . prototype . _checkbounds = function ( i ) {
70139 if ( i < 0 || i >= this . len ( ) ) {
71140 throw new IndexError ( i ) ;
72141 }
73142} ;
74143
144+ /**
145+ * Deque.prototype._where.
146+ *
147+ * @param {Number } _i
148+ * @return {Array }
149+ */
75150Deque . prototype . _where = function ( _i ) {
76151 throw new NotImplementedError ( '_where' ) ;
77152} ;
78153
154+ /**
155+ * Deque.prototype.get.
156+ *
157+ * @param {Number } i
158+ * @return {any }
159+ */
79160Deque . prototype . get = function ( i ) {
80161 const [ container , index ] = this . _where ( i ) ;
81162
82163 return container [ index ] ;
83164} ;
84165
166+ /**
167+ * Deque.prototype.set.
168+ *
169+ * @param {Number } i
170+ * @param {any } value
171+ * @return {Deque }
172+ */
85173Deque . prototype . set = function ( i , value ) {
86174 const [ container , index ] = this . _where ( i ) ;
87175
@@ -90,12 +178,26 @@ Deque.prototype.set = function (i, value) {
90178 return this ;
91179} ;
92180
181+ /**
182+ * Deque.prototype._range
183+ *
184+ * @param {Number } start
185+ * @param {Number } stop
186+ * @return {Iterable<any> }
187+ */
93188Deque . prototype . _range = function * ( start , stop ) {
94189 for ( let i = start ; i < stop ; ++ i ) {
95190 yield [ i , this . get ( i ) ] ;
96191 }
97192} ;
98193
194+ /**
195+ * Deque.prototype.index.
196+ *
197+ * @param {any } x
198+ * @param {Number } start
199+ * @param {Number } stop
200+ */
99201Deque . prototype . index = function ( x , start = 0 , stop = this . len ( ) ) {
100202 for ( const [ i , element ] of this . _range ( start , stop ) ) {
101203 if ( element === x ) {
@@ -106,14 +208,30 @@ Deque.prototype.index = function (x, start = 0, stop = this.len()) {
106208 throw new ValueError ( 'not found' ) ;
107209} ;
108210
211+ /**
212+ * Deque.prototype.pop.
213+ *
214+ * @return {any }
215+ */
109216Deque . prototype . pop = function ( ) {
110217 throw new NotImplementedError ( 'pop' ) ;
111218} ;
112219
220+ /**
221+ * Deque.prototype.popleft.
222+ *
223+ * @return {any }
224+ */
113225Deque . prototype . popleft = function ( ) {
114226 throw new NotImplementedError ( 'popleft' ) ;
115227} ;
116228
229+ /**
230+ * Deque.prototype.insert.
231+ *
232+ * @param {Number } i
233+ * @param {any } x
234+ */
117235Deque . prototype . insert = function ( i , x ) {
118236 this . _checkbounds ( i ) ;
119237
@@ -130,6 +248,11 @@ Deque.prototype.insert = function (i, x) {
130248 return this ;
131249} ;
132250
251+ /**
252+ * Deque.prototype.delete.
253+ *
254+ * @param {Number } i
255+ */
133256Deque . prototype . delete = function ( i ) {
134257 this . _checkbounds ( i ) ;
135258
@@ -144,6 +267,11 @@ Deque.prototype.delete = function (i) {
144267 return this ;
145268} ;
146269
270+ /**
271+ * Deque.prototype.remove.
272+ *
273+ * @param {any } value
274+ */
147275Deque . prototype . remove = function ( value ) {
148276 const i = this . index ( value ) ;
149277
@@ -152,6 +280,11 @@ Deque.prototype.remove = function (value) {
152280 return this ;
153281} ;
154282
283+ /**
284+ * Deque.prototype.reverse.
285+ *
286+ * @return {Deque }
287+ */
155288Deque . prototype . reverse = function ( ) {
156289 for ( let i = 0 , j = this . len ( ) ; i < -- j ; ++ i ) {
157290 const a = this . get ( i ) ;
@@ -163,6 +296,11 @@ Deque.prototype.reverse = function () {
163296 return this ;
164297} ;
165298
299+ /**
300+ * Deque.prototype.rotate.
301+ *
302+ * @param {Number } n
303+ */
166304Deque . prototype . rotate = function ( n ) {
167305 if ( n > 0 ) {
168306 while ( n -- > 0 ) {
0 commit comments