starlit  Diff

Differences From Artifact [ec9d9f2682]:

To Artifact [670a4be42e]:


201
202
203
204
205
206
207

208
209
210
211
212
213
214
	report('defining struct name=%q fields=%s', name, dump(def))
	return {
		name = name;
		enc = function(obj)
			local enc = m.streamEncoder()
			local n = 0
			for k,ty in pairs(def) do n=n+1

				local encoded = ty.enc(obj[k])
				enc.push(T.u8.enc(#k), size.enc(#encoded), k, encoded)
			end
			return size.enc(n) .. enc.peek()
		end;
		dec = debugger.wrap(function(blob)
			if blob == '' then







>







201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
	report('defining struct name=%q fields=%s', name, dump(def))
	return {
		name = name;
		enc = function(obj)
			local enc = m.streamEncoder()
			local n = 0
			for k,ty in pairs(def) do n=n+1
				if obj[k] == nil then error('missing key '..dump(k)..' for type '..ty.name) end
				local encoded = ty.enc(obj[k])
				enc.push(T.u8.enc(#k), size.enc(#encoded), k, encoded)
			end
			return size.enc(n) .. enc.peek()
		end;
		dec = debugger.wrap(function(blob)
			if blob == '' then