--!strict --!optimize 2 --!native local Types = require("../Types") return function(keysolver: Types.DataTypeInterface, valuesolver: Types.DataTypeInterface) return { write = function(self: Types.Writer, map: { [unknown]: unknown }) local count = 0 for _ in map do count+=1 end buffer.writeu16(self._data, self._cursor, count) self._cursor += 2 for key, value in map do keysolver.write(self, key) valuesolver.write(self, value) end end, read = function(self: Types.Writer) local count = buffer.readu16(self._data, self._cursor) self._cursor += 2 local map = {} for _ = 1, count do map[keysolver.read(self)] = valuesolver.read(self) end return map end, length = function(map) local size = 2 for key, value in map do size += keysolver.length(key) + valuesolver.length(value) end return size end, } end