initial commit
This commit is contained in:
commit
4b60ece582
327 changed files with 28286 additions and 0 deletions
228
libjs/wType/address.js
Normal file
228
libjs/wType/address.js
Normal file
|
@ -0,0 +1,228 @@
|
|||
"use strict";
|
||||
var Object = require("./object");
|
||||
var String = require("./string");
|
||||
|
||||
var Address = Object.inherit({
|
||||
"className": "Address",
|
||||
"constructor": function(data) {
|
||||
Object.fn.constructor.call(this);
|
||||
|
||||
this._data = [];
|
||||
this._parseSource(data || []);
|
||||
},
|
||||
"destructor": function() {
|
||||
this.clear();
|
||||
|
||||
Object.fn.destructor.call(this);
|
||||
},
|
||||
"<": function(other) {
|
||||
if (!(other instanceof Address)) {
|
||||
throw new Error("Can compare Address only with Address");
|
||||
}
|
||||
var hopMe;
|
||||
var hopOt;
|
||||
|
||||
for (var i = 0; i < this._data.length; ++i) {
|
||||
hopMe = this._data[i];
|
||||
hopOt = other._data[i];
|
||||
|
||||
if (hopOt === undefined) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (hopMe["<"](hopOt)) {
|
||||
return true;
|
||||
}
|
||||
if (hopMe[">"](hopOt)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return this._data.length < other._data.length;
|
||||
},
|
||||
">": function(other) {
|
||||
if (!(other instanceof Address)) {
|
||||
throw new Error("Can compare Address only with Address");
|
||||
}
|
||||
var hopMe;
|
||||
var hopOt;
|
||||
|
||||
for (var i = 0; i < this._data.length; ++i) {
|
||||
hopMe = this._data[i];
|
||||
hopOt = other._data[i];
|
||||
|
||||
if (hopOt === undefined) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (hopMe[">"](hopOt)) {
|
||||
return true;
|
||||
}
|
||||
if (hopMe["<"](hopOt)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return this._data.length > other._data.length;
|
||||
},
|
||||
"==": function(other) {
|
||||
if (this.getType() !== other.getType()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (this._data.length !== other._data.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var hopMe;
|
||||
var hopOt;
|
||||
|
||||
for (var i = 0; i < this._data.length; ++i) {
|
||||
hopMe = this._data[i];
|
||||
hopOt = other._data[i];
|
||||
if ( !(hopMe["=="](hopOt)) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
"+": function(other) {
|
||||
var res = this.clone();
|
||||
res["+="](other);
|
||||
return res;
|
||||
},
|
||||
"+=": function(other) {
|
||||
if (other instanceof Address) {
|
||||
for (var i = 0; i < other._data.length; ++i) {
|
||||
this._data.push(other._data[i].clone());
|
||||
}
|
||||
} else {
|
||||
throw new Error("Can add to Address only Address");
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
"<<": function(n) {
|
||||
var res = new Address();
|
||||
for (var i = n; i < this._data.length; ++i) {
|
||||
res._data.push(this._data[i].clone());
|
||||
}
|
||||
return res;
|
||||
},
|
||||
">>": function(n) {
|
||||
var res = new Address();
|
||||
for (var i = 0; i < this._data.length - n; ++i) {
|
||||
res._data.push(this._data[i].clone());
|
||||
}
|
||||
return res;
|
||||
},
|
||||
"clear": function() {
|
||||
for (var i = 0; i < this._data.length; ++i) {
|
||||
this._data[i].destructor();
|
||||
}
|
||||
this._data = [];
|
||||
},
|
||||
"clone": function() {
|
||||
var clone = new Address();
|
||||
|
||||
for (var i = 0; i < this._data.length; ++i) {
|
||||
clone._data.push(this._data[i].clone());
|
||||
}
|
||||
|
||||
return clone;
|
||||
},
|
||||
"deserialize": function(ba) {
|
||||
this.clear()
|
||||
var length = ba.pop32();
|
||||
|
||||
for (var i = 0; i < length; ++i) {
|
||||
var hop = new String();
|
||||
hop.deserialize(ba);
|
||||
this._data.push(hop);
|
||||
}
|
||||
},
|
||||
"serialize": function(ba) {
|
||||
ba.push32(this._data.length)
|
||||
|
||||
for (var i = 0; i < this._data.length; ++i) {
|
||||
this._data[i].serialize(ba);
|
||||
}
|
||||
},
|
||||
"length": function() {
|
||||
return this._data.length;
|
||||
},
|
||||
"size": function() {
|
||||
var size = 4;
|
||||
for (var i = 0; i < this._data.length; ++i) {
|
||||
size += this._data[i].size();
|
||||
}
|
||||
|
||||
return size;
|
||||
},
|
||||
"toString": function() {
|
||||
var str = "";
|
||||
str += "["
|
||||
|
||||
for (var i = 0; i < this._data.length; ++i) {
|
||||
if (i !== 0) {
|
||||
str +=", ";
|
||||
}
|
||||
str += this._data[i].toString();
|
||||
}
|
||||
|
||||
str += "]";
|
||||
return str;
|
||||
},
|
||||
"begins": function(other) {
|
||||
var size = other._data.length;
|
||||
if (size > this._data.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (var i = 0; i < size; ++i) {
|
||||
var myHop = this._data[i];
|
||||
var othHop = other._data[i];
|
||||
|
||||
if (!myHop["=="](othHop)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
"ends": function(other) {
|
||||
var size = other._data.length;
|
||||
if (size > this._data.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (var i = 1; i <= size; ++i) {
|
||||
var myHop = this._data[this._data.length - i];
|
||||
var othHop = other._data[other._data.length - i];
|
||||
|
||||
if (!myHop["=="](othHop)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
"back": function() {
|
||||
return this._data[this._data.length - 1].clone();
|
||||
},
|
||||
"front": function() {
|
||||
return this._data[0].clone();
|
||||
},
|
||||
"toArray": function() {
|
||||
var arr = [];
|
||||
for (var i = 0; i < this._data.length; ++i) {
|
||||
arr.push(this._data[i].toString());
|
||||
}
|
||||
return arr;
|
||||
},
|
||||
"_parseSource": function(data) {
|
||||
for (var i = 0; i < data.length; ++i) {
|
||||
this._data.push(new String(data[i]));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = Address;
|
Loading…
Add table
Add a link
Reference in a new issue