AjxVector.js
Summary
No overview generated for 'AjxVector.js'
function AjxVector() {
this._array = new Array();
};
AjxVector.prototype.toString =
function(sep, compress) {
if (compress !== true)
return this._array.join(sep);
var a = new Array();
for (var i = 0; i < this._array.length; i++) {
var x = this._array[i];
if (x != undefined && x != null && x != "")
a.push(x);
}
return a.join(sep);
};
AjxVector.fromArray =
function(list) {
var vec = new AjxVector();
vec._array.length = 0;
if (list instanceof Array) {
vec._array = list;
}
return vec;
};
AjxVector.prototype.size =
function() {
return this._array.length;
};
AjxVector.prototype.add =
function(obj, index) {
if (index == null || index < 0 || index >= this._array.length) {
this._array.push(obj);
} else {
this._array.splice(index, 0, obj);
}
};
AjxVector.prototype.addList =
function(list) {
if (!list) return;
if ((list instanceof Array) && list.length)
this._array = this._array.concat(list);
else if ((list instanceof AjxVector) && list.size())
this._array = this._array.concat(list._array);
};
AjxVector.prototype.remove =
function(obj) {
for (var i = 0; i < this._array.length; i++) {
if (this._array[i] == obj) {
this._array.splice(i,1);
return true;
}
}
return false;
};
AjxVector.prototype.removeAt =
function(index) {
if (index >= this._array.length || index < 0)
return null;
var delArr = this._array.splice(index,1);
var ret = null;
if (delArr) {
ret = delArr[0];
}
return ret;
};
AjxVector.prototype.removeAll =
function() {
for (var i = 0; i < this._array.length; i++)
this._array[i] = null;
this._array.length = 0;
};
AjxVector.prototype.removeLast =
function() {
return this._array.length > 0 ? this._array.pop() : null;
};
AjxVector.prototype.replace =
function(index, newObj) {
var oldObj = this._array[index];
this._array[index] = newObj;
return oldObj;
};
AjxVector.prototype.indexOf =
function(obj) {
for (var i = 0; i < this._array.length; i++) {
if (this._array[i] == obj)
return i;
}
return -1;
};
AjxVector.prototype.clone =
function() {
var vec = new AjxVector();
vec.addList(this);
return vec;
};
AjxVector.prototype.contains =
function(obj) {
for (var i = 0; i < this._array.length; i++) {
if (this._array[i] == obj)
return true;
}
return false;
};
AjxVector.prototype.containsLike =
function(obj, compareFunc) {
var value = compareFunc.call(obj);
for (var i = 0; i < this._array.length; i++) {
var test = compareFunc.call(this._array[i]);
if (test == value)
return true;
}
return false;
};
AjxVector.prototype.get =
function(index) {
return index >= this._array.length || index < 0
? null : this._array[index];
};
AjxVector.prototype.getArray =
function() {
return this._array;
};
AjxVector.prototype.getLast =
function() {
return this._array.length == 0
? null : this._array[this._array.length-1];
};
AjxVector.prototype.sort =
function(sortFunc) {
if (!sortFunc) {
sortFunc = AjxVector._defaultArrayComparator;
}
this._array.sort(sortFunc);
};
AjxVector.prototype.binarySearch =
function(valueToFind, sortFunc) {
if (!sortFunc) {
sortFunc = AjxVector._defaultArrayComparator;
}
var l = 0;
var arr = this._array;
var u = arr.length - 1;
while(true) {
if (u < l) {
return -1;
}
var i = Math.floor((l + u)/ 2);
var comparisonResult = sortFunc(valueToFind, arr[i]);
if (comparisonResult < 0) {
u = i - 1;
} else if (comparisonResult > 0) {
l = i + 1;
} else {
return i;
}
}
};
AjxVector.prototype.merge =
function(offset, list) {
if (offset < 0)
return;
var rawList = list instanceof AjxVector ? list.getArray() : list;
var limit = this._array.length < (offset+rawList.length)
? this._array.length
: offset+rawList.length;
if (offset < this._array.length) {
var count = 0;
for (var i=offset; i<limit; i++)
this._array[i] = rawList[count++];
if (count < rawList.length)
this._array = this._array.concat(rawList.slice(count));
} else {
this._array = this._array.concat(rawList);
}
};
AjxVector._defaultArrayComparator =
function(a, b) {
return a < b ? -1 : (a > b ? 1 : 0);
};
Documentation generated by
JSDoc on Thu Apr 27 13:58:41 2006