fix(front, back) -> undefined exception; feat(resize)
This commit is contained in:
15
src/List.js
15
src/List.js
@ -35,6 +35,16 @@ export class List {
|
||||
return this._end.clone()
|
||||
}
|
||||
|
||||
resize(size, value) {
|
||||
if (this._size > size)
|
||||
while (this._size !== size)
|
||||
this.popBack()
|
||||
|
||||
else
|
||||
while (this._size !== size)
|
||||
this.pushBack(value)
|
||||
}
|
||||
|
||||
_shiftRight(dest, generator) {
|
||||
let prev, res, new_item, item = dest.deref()
|
||||
|
||||
@ -75,7 +85,7 @@ export class List {
|
||||
}
|
||||
}
|
||||
|
||||
List.from = function (obj) {
|
||||
List.from = function(obj) {
|
||||
const list = new List()
|
||||
for (const value of obj) {
|
||||
list.pushBack(value)
|
||||
@ -98,6 +108,7 @@ export class ListItem {
|
||||
}
|
||||
|
||||
export class ListIterator {
|
||||
|
||||
constructor(item) {
|
||||
this._item = item
|
||||
}
|
||||
@ -130,4 +141,4 @@ export class ListIterator {
|
||||
}
|
||||
}
|
||||
|
||||
mixinClasses(ListIterator, BidirectionalIterator)
|
||||
mixinClasses(ListIterator, BidirectionalIterator)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { BidirectionalIterator } from "../iterators/Bidirectional"
|
||||
import { satisfiesConcept } from "../utils/concept"
|
||||
import { getCloneFunc, satisfiesConcept } from "../utils/concept"
|
||||
|
||||
export class SequenceContainer {
|
||||
clone() {
|
||||
@ -16,6 +16,9 @@ export class SequenceContainer {
|
||||
}
|
||||
|
||||
get front() {
|
||||
if (this.empty())
|
||||
throw new Error('front element is undefined')
|
||||
|
||||
return this.begin().value
|
||||
}
|
||||
|
||||
@ -24,6 +27,9 @@ export class SequenceContainer {
|
||||
}
|
||||
|
||||
get back() {
|
||||
if (this.empty())
|
||||
throw new Error('back element is undefined')
|
||||
|
||||
return this.end().dec().value
|
||||
}
|
||||
|
||||
@ -151,10 +157,11 @@ export class SequenceContainer {
|
||||
}
|
||||
}
|
||||
|
||||
SequenceContainer.is = function (obj, ...args) {
|
||||
SequenceContainer.is = function(obj, ...args) {
|
||||
const pure_virtual = [
|
||||
'move',
|
||||
'size',
|
||||
'resize',
|
||||
'begin',
|
||||
'end',
|
||||
'_shiftRight',
|
||||
@ -179,4 +186,4 @@ SequenceContainer.is = function (obj, ...args) {
|
||||
'toString',
|
||||
]
|
||||
return satisfiesConcept(obj, pure_virtual, virtual, ...args)
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ export class ForwardIterator {
|
||||
}
|
||||
|
||||
get value() {
|
||||
return this.deref()?.value
|
||||
return this.deref().value
|
||||
}
|
||||
|
||||
set value(value) {
|
||||
@ -32,4 +32,4 @@ ForwardIterator.is = function (obj, ...args) {
|
||||
'neq',
|
||||
]
|
||||
return satisfiesConcept(obj, pure_virtual, virtual, ...args)
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,4 +31,4 @@ export function satisfiesConcept(obj, pure_virtual, virtual, debug) {
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,4 +4,4 @@ export function mixinClasses(dest, ...sources) {
|
||||
delete properties.constructor
|
||||
Object.defineProperties(dest.prototype, properties)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user