diff options
Diffstat (limited to 'js/src/Ice/StreamHelpers.js')
-rw-r--r-- | js/src/Ice/StreamHelpers.js | 483 |
1 files changed, 238 insertions, 245 deletions
diff --git a/js/src/Ice/StreamHelpers.js b/js/src/Ice/StreamHelpers.js index 6fcce91a4d0..ec38fac1d75 100644 --- a/js/src/Ice/StreamHelpers.js +++ b/js/src/Ice/StreamHelpers.js @@ -7,321 +7,314 @@ // // ********************************************************************** -(function(global){ - require("Ice/Class"); - require("Ice/HashMap"); - require("Ice/OptionalFormat"); +var Ice = require("../Ice/ModuleRegistry").Ice; +Ice.__M.require(module, "Ice", ["../Ice/Class", "../Ice/HashMap", "../Ice/OptionalFormat"]); - var Ice = global.Ice || {}; +var Class = Ice.Class; +var defineProperty = Object.defineProperty; +var HashMap = Ice.HashMap; +var OptionalFormat = Ice.OptionalFormat; - var Class = Ice.Class; - var defineProperty = Object.defineProperty; +var StreamHelpers = {}; - var HashMap = Ice.HashMap; - var OptionalFormat = Ice.OptionalFormat; - - var StreamHelpers = {}; - - StreamHelpers.FSizeOptHelper = function() +StreamHelpers.FSizeOptHelper = function() +{ + this.writeOpt = function(os, tag, v) { - this.writeOpt = function(os, tag, v) + if(v !== undefined && os.writeOpt(tag, OptionalFormat.FSize)) { - if(v !== undefined && os.writeOpt(tag, OptionalFormat.FSize)) - { - var pos = os.startSize(); - this.write(os, v); - os.endSize(pos); - } - }; + var pos = os.startSize(); + this.write(os, v); + os.endSize(pos); + } + }; - this.readOpt = function(is, tag) + this.readOpt = function(is, tag) + { + var v; + if(is.readOpt(tag, OptionalFormat.FSize)) { - var v; - if(is.readOpt(tag, OptionalFormat.FSize)) - { - is.skip(4); - v = this.read(is); - } - return v; - }; + is.skip(4); + v = this.read(is); + } + return v; }; +}; - StreamHelpers.VSizeOptHelper = function() +StreamHelpers.VSizeOptHelper = function() +{ + this.writeOpt = function(os, tag, v) { - this.writeOpt = function(os, tag, v) + if(v !== undefined && os.writeOpt(tag, OptionalFormat.VSize)) { - if(v !== undefined && os.writeOpt(tag, OptionalFormat.VSize)) - { - os.writeSize(this.minWireSize); - this.write(os, v); - } - }; + os.writeSize(this.minWireSize); + this.write(os, v); + } + }; - this.readOpt = function(is, tag) + this.readOpt = function(is, tag) + { + var v; + if(is.readOpt(tag, OptionalFormat.VSize)) { - var v; - if(is.readOpt(tag, OptionalFormat.VSize)) - { - is.skipSize(); - v = this.read(is); - } - return v; - }; + is.skipSize(); + v = this.read(is); + } + return v; }; +}; - StreamHelpers.VSizeContainerOptHelper = function(elementSize) +StreamHelpers.VSizeContainerOptHelper = function(elementSize) +{ + this.writeOpt = function(os, tag, v) { - this.writeOpt = function(os, tag, v) + if(v !== undefined && os.writeOpt(tag, OptionalFormat.VSize)) { - if(v !== undefined && os.writeOpt(tag, OptionalFormat.VSize)) - { - var sz = this.size(v); - os.writeSize(sz > 254 ? sz * elementSize + 5 : sz * elementSize + 1); - this.write(os, v); - } - }; + var sz = this.size(v); + os.writeSize(sz > 254 ? sz * elementSize + 5 : sz * elementSize + 1); + this.write(os, v); + } + }; - this.readOpt = function(is, tag) + this.readOpt = function(is, tag) + { + var v; + if(is.readOpt(tag, OptionalFormat.VSize)) { - var v; - if(is.readOpt(tag, OptionalFormat.VSize)) - { - is.skipSize(); - v = this.read(is); - } - return v; - }; + is.skipSize(); + v = this.read(is); + } + return v; }; +}; - StreamHelpers.VSizeContainer1OptHelper = function() +StreamHelpers.VSizeContainer1OptHelper = function() +{ + this.writeOpt = function(os, tag, v) { - this.writeOpt = function(os, tag, v) + if(v !== undefined && os.writeOpt(tag, OptionalFormat.VSize)) { - if(v !== undefined && os.writeOpt(tag, OptionalFormat.VSize)) - { - this.write(os, v); - } - }; + this.write(os, v); + } + }; - this.readOpt = function(is, tag) + this.readOpt = function(is, tag) + { + var v; + if(is.readOpt(tag, OptionalFormat.VSize)) { - var v; - if(is.readOpt(tag, OptionalFormat.VSize)) - { - v = this.read(is); - } - return v; - }; + v = this.read(is); + } + return v; }; +}; - // - // Sequence helper to write sequences - // - var SequenceHelper = Class({ - write: function(os, v) +// +// Sequence helper to write sequences +// +var SequenceHelper = Class({ + write: function(os, v) + { + if(v === null || v.length === 0) { - if(v === null || v.length === 0) - { - os.writeSize(0); - } - else - { - var helper = this.elementHelper; - os.writeSize(v.length); - for(var i = 0; i < v.length; ++i) - { - helper.write(os, v[i]); - } - } - }, - read: function(is) + os.writeSize(0); + } + else { - var helper = this.elementHelper; // Cache the element helper. - var sz = is.readAndCheckSeqSize(helper.minWireSize); - var v = []; - v.length = sz; - for(var i = 0; i < sz; ++i) + var helper = this.elementHelper; + os.writeSize(v.length); + for(var i = 0; i < v.length; ++i) { - v[i] = helper.read(is); + helper.write(os, v[i]); } - return v; - }, - size: function(v) - { - return (v === null || v === undefined) ? 0 : v.length; } - }); - - defineProperty(SequenceHelper.prototype, "minWireSize", { - get: function(){ return 1; } - }); - - // Speacialization optimized for ByteSeq - var byteSeqHelper = new SequenceHelper(); - byteSeqHelper.write = function(os, v) { return os.writeByteSeq(v); }; - byteSeqHelper.read = function(is) { return is.readByteSeq(); }; - defineProperty(byteSeqHelper, "elementHelper", { - get: function(){ return Ice.ByteHelper; } - }); - StreamHelpers.VSizeContainer1OptHelper.call(byteSeqHelper); - - // Read method for object sequences - var objectSequenceHelperRead = function(is) + }, + read: function(is) { - var sz = is.readAndCheckSeqSize(1); + var helper = this.elementHelper; // Cache the element helper. + var sz = is.readAndCheckSeqSize(helper.minWireSize); var v = []; v.length = sz; - var elementType = this.elementType; - var readObjectAtIndex = function(idx) - { - is.readObject(function(obj) { v[idx] = obj; }, elementType); - }; - for(var i = 0; i < sz; ++i) { - readObjectAtIndex(i); + v[i] = helper.read(is); } return v; + }, + size: function(v) + { + return (v === null || v === undefined) ? 0 : v.length; + } +}); + +defineProperty(SequenceHelper.prototype, "minWireSize", { + get: function(){ return 1; } +}); + +// Speacialization optimized for ByteSeq +var byteSeqHelper = new SequenceHelper(); +byteSeqHelper.write = function(os, v) { return os.writeByteSeq(v); }; +byteSeqHelper.read = function(is) { return is.readByteSeq(); }; +defineProperty(byteSeqHelper, "elementHelper", { + get: function(){ return Ice.ByteHelper; } +}); +StreamHelpers.VSizeContainer1OptHelper.call(byteSeqHelper); + +// Read method for object sequences +var objectSequenceHelperRead = function(is) +{ + var sz = is.readAndCheckSeqSize(1); + var v = []; + v.length = sz; + var elementType = this.elementType; + var readObjectAtIndex = function(idx) + { + is.readObject(function(obj) { v[idx] = obj; }, elementType); }; - StreamHelpers.generateSeqHelper = function(elementHelper, fixed, elementType) + for(var i = 0; i < sz; ++i) { - if(elementHelper === Ice.ByteHelper) - { - return byteSeqHelper; - } + readObjectAtIndex(i); + } + return v; +}; + +StreamHelpers.generateSeqHelper = function(elementHelper, fixed, elementType) +{ + if(elementHelper === Ice.ByteHelper) + { + return byteSeqHelper; + } - var helper = new SequenceHelper(); - if(fixed) + var helper = new SequenceHelper(); + if(fixed) + { + if(elementHelper.minWireSize === 1) { - if(elementHelper.minWireSize === 1) - { - StreamHelpers.VSizeContainer1OptHelper.call(helper); - } - else - { - StreamHelpers.VSizeContainerOptHelper.call(helper, elementHelper.minWireSize); - } + StreamHelpers.VSizeContainer1OptHelper.call(helper); } else { - StreamHelpers.FSizeOptHelper.call(helper); + StreamHelpers.VSizeContainerOptHelper.call(helper, elementHelper.minWireSize); } + } + else + { + StreamHelpers.FSizeOptHelper.call(helper); + } - defineProperty(helper, "elementHelper", { - get: function(){ return elementHelper; } - }); + defineProperty(helper, "elementHelper", { + get: function(){ return elementHelper; } + }); - if(elementHelper == Ice.ObjectHelper) - { - defineProperty(helper, "elementType", { - get: function(){ return elementType; } - }); - helper.read = objectSequenceHelperRead; - } + if(elementHelper == Ice.ObjectHelper) + { + defineProperty(helper, "elementType", { + get: function(){ return elementType; } + }); + helper.read = objectSequenceHelperRead; + } - return helper; - }; + return helper; +}; - // - // Dictionary helper to write dictionaries - // - var DictionaryHelper = Class({ - write: function(os, v) +// +// Dictionary helper to write dictionaries +// +var DictionaryHelper = Class({ + write: function(os, v) + { + if(v === null || v.size === 0) { - if(v === null || v.size === 0) - { - os.writeSize(0); - } - else - { - var keyHelper = this.keyHelper; - var valueHelper = this.valueHelper; - os.writeSize(v.size); - for(var e = v.entries; e !== null; e = e.next) - { - keyHelper.write(os, e.key); - valueHelper.write(os, e.value); - } - } - }, - read: function(is) + os.writeSize(0); + } + else { - var mapType = this.mapType; - var v = new mapType(); - var sz = is.readSize(); var keyHelper = this.keyHelper; var valueHelper = this.valueHelper; - for(var i = 0; i < sz; ++i) + os.writeSize(v.size); + for(var e = v.entries; e !== null; e = e.next) { - v.set(keyHelper.read(is), valueHelper.read(is)); + keyHelper.write(os, e.key); + valueHelper.write(os, e.value); } - return v; - }, - size: function(v) - { - return (v === null || v === undefined) ? 0 : v.size; } - }); - - Object.defineProperty(DictionaryHelper.prototype, "minWireSize", { - get: function(){ return 1; } - }); - - // Read method for dictionaries of objects - var objectDictionaryHelperRead = function(is) + }, + read: function(is) { - var sz = is.readSize(); var mapType = this.mapType; var v = new mapType(); - var valueType = this.valueType; - - var readObjectForKey = function(key) - { - is.readObject(function(obj) { v.set(key, obj); }, valueType); - }; - + var sz = is.readSize(); var keyHelper = this.keyHelper; + var valueHelper = this.valueHelper; for(var i = 0; i < sz; ++i) { - readObjectForKey(keyHelper.read(is)); + v.set(keyHelper.read(is), valueHelper.read(is)); } return v; + }, + size: function(v) + { + return (v === null || v === undefined) ? 0 : v.size; + } +}); + +Object.defineProperty(DictionaryHelper.prototype, "minWireSize", { + get: function(){ return 1; } +}); + +// Read method for dictionaries of objects +var objectDictionaryHelperRead = function(is) +{ + var sz = is.readSize(); + var mapType = this.mapType; + var v = new mapType(); + var valueType = this.valueType; + + var readObjectForKey = function(key) + { + is.readObject(function(obj) { v.set(key, obj); }, valueType); }; - StreamHelpers.generateDictHelper = function(keyHelper, valueHelper, fixed, valueType, mapType) + var keyHelper = this.keyHelper; + for(var i = 0; i < sz; ++i) { - var helper = new DictionaryHelper(); - if(fixed) - { - StreamHelpers.VSizeContainerOptHelper.call(helper, keyHelper.minWireSize + valueHelper.minWireSize); - } - else - { - StreamHelpers.FSizeOptHelper.call(helper); - } - defineProperty(helper, "mapType", { - get: function(){ return mapType; } - }); - defineProperty(helper, "keyHelper", { - get: function(){ return keyHelper; } - }); - defineProperty(helper, "valueHelper", { - get: function(){ return valueHelper; } - }); - - if(valueHelper == Ice.ObjectHelper) - { - defineProperty(helper, "valueType", { - get: function(){ return valueType; } - }); - helper.read = objectDictionaryHelperRead; - } + readObjectForKey(keyHelper.read(is)); + } + return v; +}; + +StreamHelpers.generateDictHelper = function(keyHelper, valueHelper, fixed, valueType, mapType) +{ + var helper = new DictionaryHelper(); + if(fixed) + { + StreamHelpers.VSizeContainerOptHelper.call(helper, keyHelper.minWireSize + valueHelper.minWireSize); + } + else + { + StreamHelpers.FSizeOptHelper.call(helper); + } + defineProperty(helper, "mapType", { + get: function(){ return mapType; } + }); + defineProperty(helper, "keyHelper", { + get: function(){ return keyHelper; } + }); + defineProperty(helper, "valueHelper", { + get: function(){ return valueHelper; } + }); - return helper; - }; + if(valueHelper == Ice.ObjectHelper) + { + defineProperty(helper, "valueType", { + get: function(){ return valueType; } + }); + helper.read = objectDictionaryHelperRead; + } - Ice.StreamHelpers = StreamHelpers; + return helper; +}; - global.Ice = Ice; -}(typeof (global) === "undefined" ? window : global)); +Ice.StreamHelpers = StreamHelpers; +module.exports.Ice = Ice; |