Replace unused entries with NaNs
This commit is contained in:
@@ -3,6 +3,12 @@ goog.provide('ol.structs.Buffer');
|
|||||||
goog.require('ol.structs.IntegerSet');
|
goog.require('ol.structs.IntegerSet');
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @define {boolean} Replace unused entries with NaNs.
|
||||||
|
*/
|
||||||
|
ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS = goog.DEBUG;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
@@ -37,6 +43,14 @@ ol.structs.Buffer = function(opt_arr, opt_used, opt_dirty) {
|
|||||||
if (opt_dirty && used !== 0) {
|
if (opt_dirty && used !== 0) {
|
||||||
this.dirtySet_.addRange(0, used);
|
this.dirtySet_.addRange(0, used);
|
||||||
}
|
}
|
||||||
|
if (ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS) {
|
||||||
|
var arr = this.arr_;
|
||||||
|
var n = arr.length;
|
||||||
|
var i;
|
||||||
|
for (i = used; i < n; ++i) {
|
||||||
|
arr[i] = NaN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -111,6 +125,13 @@ ol.structs.Buffer.prototype.getFreeSet = function() {
|
|||||||
ol.structs.Buffer.prototype.remove = function(index, size) {
|
ol.structs.Buffer.prototype.remove = function(index, size) {
|
||||||
this.freeSet_.addRange(index, index + size);
|
this.freeSet_.addRange(index, index + size);
|
||||||
this.dirtySet_.removeRange(index, index + size);
|
this.dirtySet_.removeRange(index, index + size);
|
||||||
|
if (ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS) {
|
||||||
|
var arr = this.arr_;
|
||||||
|
var i;
|
||||||
|
for (i = 0; i < size; ++i) {
|
||||||
|
arr[index + i] = NaN;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -247,28 +247,32 @@ describe('ol.structs.Buffer', function() {
|
|||||||
it('allows multiple adds and removes', function() {
|
it('allows multiple adds and removes', function() {
|
||||||
var b = new ol.structs.Buffer(new Array(8), 0);
|
var b = new ol.structs.Buffer(new Array(8), 0);
|
||||||
expect(b.add([0, 1])).to.be(0);
|
expect(b.add([0, 1])).to.be(0);
|
||||||
expect(b.getArray()).to.equalArray([
|
expect(b.getArray()).to.equalArray([0, 1, NaN, NaN, NaN, NaN, NaN, NaN]);
|
||||||
0, 1,
|
|
||||||
undefined, undefined,
|
|
||||||
undefined, undefined,
|
|
||||||
undefined, undefined
|
|
||||||
]);
|
|
||||||
expect(b.getCount()).to.be(2);
|
expect(b.getCount()).to.be(2);
|
||||||
expect(b.add([2, 3, 4, 5])).to.be(2);
|
expect(b.add([2, 3, 4, 5])).to.be(2);
|
||||||
|
expect(b.getArray()).to.equalArray([0, 1, 2, 3, 4, 5, NaN, NaN]);
|
||||||
expect(b.getCount()).to.be(6);
|
expect(b.getCount()).to.be(6);
|
||||||
expect(b.add([6, 7])).to.be(6);
|
expect(b.add([6, 7])).to.be(6);
|
||||||
expect(b.getCount()).to.be(8);
|
|
||||||
expect(b.getArray()).to.equalArray([0, 1, 2, 3, 4, 5, 6, 7]);
|
expect(b.getArray()).to.equalArray([0, 1, 2, 3, 4, 5, 6, 7]);
|
||||||
|
expect(b.getCount()).to.be(8);
|
||||||
b.remove(2, 2);
|
b.remove(2, 2);
|
||||||
|
expect(b.getArray()).to.equalArray([0, 1, NaN, NaN, 4, 5, 6, 7]);
|
||||||
expect(b.getCount()).to.be(6);
|
expect(b.getCount()).to.be(6);
|
||||||
expect(b.add([8, 9])).to.be(2);
|
expect(b.add([8, 9])).to.be(2);
|
||||||
expect(b.getArray()).to.equalArray([0, 1, 8, 9, 4, 5, 6, 7]);
|
expect(b.getArray()).to.equalArray([0, 1, 8, 9, 4, 5, 6, 7]);
|
||||||
|
expect(b.getCount()).to.be(8);
|
||||||
b.remove(1, 1);
|
b.remove(1, 1);
|
||||||
|
expect(b.getArray()).to.equalArray([0, NaN, 8, 9, 4, 5, 6, 7]);
|
||||||
|
expect(b.getCount()).to.be(7);
|
||||||
b.remove(4, 4);
|
b.remove(4, 4);
|
||||||
|
expect(b.getArray()).to.equalArray([0, NaN, 8, 9, NaN, NaN, NaN, NaN]);
|
||||||
|
expect(b.getCount()).to.be(3);
|
||||||
expect(b.add([10, 11, 12])).to.be(4);
|
expect(b.add([10, 11, 12])).to.be(4);
|
||||||
expect(b.getArray()).to.equalArray([0, 1, 8, 9, 10, 11, 12, 7]);
|
expect(b.getArray()).to.equalArray([0, NaN, 8, 9, 10, 11, 12, NaN]);
|
||||||
|
expect(b.getCount()).to.be(6);
|
||||||
expect(b.add([13])).to.be(1);
|
expect(b.add([13])).to.be(1);
|
||||||
expect(b.getArray()).to.equalArray([0, 13, 8, 9, 10, 11, 12, 7]);
|
expect(b.getArray()).to.equalArray([0, 13, 8, 9, 10, 11, 12, NaN]);
|
||||||
|
expect(b.getCount()).to.be(7);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user