MCPcopy Create free account
hub / github.com/aesthetic0001/js-virtualizer / encodeArray

Function encodeArray

src/utils/assembler.js:183–222  ·  view source on GitHub ↗
(array, offset)

Source from the content-addressed store, hash-verified

181}
182
183function encodeArray(array, offset) {
184 const length = array.length;
185 // register, value
186 const references = []
187 const dependencies = {}
188
189 let register = offset + 1;
190 for (let i = 0; i < length; i++) {
191 const value = array[i];
192 if (Buffer.isBuffer(value)) {
193 // buffer to register
194 const register = value.readUInt8(0);
195 references.push(register);
196 continue
197 }
198 switch (typeof value) {
199 case 'string': {
200 references.push(register);
201 dependencies[register] = encodeString(value);
202 break;
203 }
204 case 'number': {
205 const encodedValue = Number.isInteger(value) ? encodeDWORD(value) : encodeFloat(value);
206 references.push(register);
207 dependencies[register] = encodedValue;
208 break;
209 }
210 case 'object':
211 // todo: handle later, need to encode object, preload references in advance
212 break;
213 }
214 register++;
215 }
216
217 const lengthBuffer = encodeDWORD(length);
218 const data = Buffer.concat(references);
219 return {
220 encoded: Buffer.concat([lengthBuffer, data]), dependencies
221 }
222}
223
224function encodeArrayRegisters(array) {
225 const length = array.length;

Callers

nothing calls this directly

Calls 3

encodeStringFunction · 0.85
encodeDWORDFunction · 0.85
encodeFloatFunction · 0.85

Tested by

no test coverage detected