MCPcopy Create free account
hub / github.com/apache/fory / write

Method write

javascript/packages/core/lib/gen/map.ts:191–254  ·  view source on GitHub ↗
(value: Map<any, any>)

Source from the content-addressed store, hash-verified

189 }
190
191 write(value: Map<any, any>) {
192 const mapChunkWriter = new MapChunkWriter(
193 this.writeContext,
194 this.keySerializer,
195 this.valueSerializer,
196 );
197 this.writeContext.writer.writeVarUint32Small7(value.size);
198 for (const [k, v] of value.entries()) {
199 const keySerializer
200 = this.keySerializer !== null
201 ? this.keySerializer
202 : this.writeContext.typeResolver.getSerializerByData(k);
203 const valueSerializer
204 = this.valueSerializer !== null
205 ? this.valueSerializer
206 : this.writeContext.typeResolver.getSerializerByData(v);
207
208 const header = mapChunkWriter.next(
209 new ElementInfo(
210 keySerializer || null,
211 k == null,
212 keySerializer?.needToWriteRef() || false,
213 ),
214 new ElementInfo(
215 valueSerializer || null,
216 v == null,
217 valueSerializer?.needToWriteRef() || false,
218 ),
219 );
220 const keyHeader = header & 0b111;
221 const valueHeader = header >> 3;
222 if (mapChunkWriter.isFirst()) {
223 if (
224 !(keyHeader & MapFlags.HAS_NULL)
225 && !(valueHeader & MapFlags.HAS_NULL)
226 ) {
227 if (!(keyHeader & MapFlags.DECL_ELEMENT_TYPE)) {
228 keySerializer?.writeTypeInfo(null);
229 }
230 if (!(valueHeader & MapFlags.DECL_ELEMENT_TYPE)) {
231 valueSerializer?.writeTypeInfo(null);
232 }
233 }
234 }
235
236 const includeNone
237 = keyHeader & MapFlags.HAS_NULL || valueHeader & MapFlags.HAS_NULL;
238 if (!this.writeFlag(keyHeader, k)) {
239 if (!includeNone) {
240 keySerializer!.write(k);
241 } else {
242 keySerializer!.writeNoRef(k);
243 }
244 }
245 if (!this.writeFlag(valueHeader, v)) {
246 if (!includeNone) {
247 valueSerializer!.write(v);
248 } else {

Callers

nothing calls this directly

Calls 10

nextMethod · 0.95
isFirstMethod · 0.95
writeFlagMethod · 0.95
endChunkMethod · 0.95
writeNoRefMethod · 0.80
needToWriteRefMethod · 0.65
writeTypeInfoMethod · 0.65
writeMethod · 0.65
writeVarUint32Small7Method · 0.45
getSerializerByDataMethod · 0.45

Tested by

no test coverage detected