MCPcopy Create free account
hub / github.com/chronoxor/FastBinaryEncoding / get

Method get

projects/JavaScript/proto/fbe.js:5008–5036  ·  view source on GitHub ↗

* Get the map * @this {!FinalModelMap} * @param {Map=} values Map values, defaults is new Map() * @returns {!object} Result map values and their size

(values = new Map())

Source from the content-addressed store, hash-verified

5006 * @returns {!object} Result map values and their size
5007 */
5008 get (values = new Map()) {
5009 values.clear()
5010
5011 console.assert(((this._buffer.offset + this.fbeOffset + 4) <= this._buffer.size), 'Model is broken!')
5012 if ((this._buffer.offset + this.fbeOffset + 4) > this._buffer.size) {
5013 return { value: values, size: 0 }
5014 }
5015
5016 let fbeMapSize = this.readUInt32(this.fbeOffset)
5017 if (fbeMapSize === 0) {
5018 return { value: values, size: 4 }
5019 }
5020
5021 let size = 4
5022 this._modelKey.fbeOffset = this.fbeOffset + 4
5023 this._modelValue.fbeOffset = this.fbeOffset + 4
5024 for (let i = 0; i < fbeMapSize; i++) {
5025 let key = this._modelKey.get()
5026 this._modelKey.fbeShift(key.size)
5027 this._modelValue.fbeShift(key.size)
5028 size += key.size
5029 let value = this._modelValue.get()
5030 this._modelKey.fbeShift(value.size)
5031 this._modelValue.fbeShift(value.size)
5032 size += value.size
5033 values.set(key.value, value.value)
5034 }
5035 return { value: values, size: size }
5036 }
5037
5038 /**
5039 * Set the map

Callers

nothing calls this directly

Calls 5

clearMethod · 0.80
readUInt32Method · 0.45
getMethod · 0.45
fbeShiftMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected