writeNullValueEntry writes a single entry where the value is null
(ctx *WriteContext, key reflect.Value, resolver *TypeResolver, trackRef bool)
| 120 | |
| 121 | // writeNullValueEntry writes a single entry where the value is null |
| 122 | func (s mapSerializer) writeNullValueEntry(ctx *WriteContext, key reflect.Value, resolver *TypeResolver, trackRef bool) { |
| 123 | buf := ctx.Buffer() |
| 124 | |
| 125 | if s.hasGenerics && s.keySerializer != nil { |
| 126 | if s.keyReferencable && trackRef { |
| 127 | buf.WriteInt8(NULL_VALUE_KEY_DECL_TYPE_TRACKING_REF) |
| 128 | s.keySerializer.Write(ctx, RefModeTracking, false, true, key) |
| 129 | } else { |
| 130 | buf.WriteInt8(NULL_VALUE_KEY_DECL_TYPE) |
| 131 | writeSerializerData(ctx, s.keySerializer, true, key) |
| 132 | } |
| 133 | return |
| 134 | } |
| 135 | |
| 136 | // Polymorphic key |
| 137 | keyTypeInfo, err := getTypeInfoForValue(key, resolver) |
| 138 | if err != nil { |
| 139 | ctx.SetError(FromError(err)) |
| 140 | return |
| 141 | } |
| 142 | |
| 143 | header := int8(VALUE_HAS_NULL) |
| 144 | writeKeyRef := trackRef && s.keyReferencable && keyTypeInfo.NeedWriteRef |
| 145 | if writeKeyRef { |
| 146 | header |= TRACKING_KEY_REF |
| 147 | } |
| 148 | buf.WriteInt8(header) |
| 149 | resolver.WriteTypeInfo(buf, keyTypeInfo, ctx.Err()) |
| 150 | |
| 151 | refMode := RefModeNone |
| 152 | if writeKeyRef { |
| 153 | refMode = RefModeTracking |
| 154 | } |
| 155 | keyTypeInfo.Serializer.Write(ctx, refMode, false, false, key) |
| 156 | } |
| 157 | |
| 158 | // writeNullKeyEntry writes a single entry where the key is null |
| 159 | func (s mapSerializer) writeNullKeyEntry(ctx *WriteContext, value reflect.Value, resolver *TypeResolver, trackRef bool) { |
no test coverage detected