MCPcopy Create free account
hub / github.com/DNAProject/DNA / EncodeList

Function EncodeList

vm/crossvm_codec/codec.go:243–281  ·  view source on GitHub ↗
(sink *common.ZeroCopySink, list []interface{})

Source from the content-addressed store, hash-verified

241}
242
243func EncodeList(sink *common.ZeroCopySink, list []interface{}) error {
244 sink.WriteByte(ListType)
245 sink.WriteUint32(uint32(len(list)))
246 for _, elem := range list {
247 switch val := elem.(type) {
248 case []byte:
249 EncodeBytes(sink, val)
250 case string:
251 EncodeString(sink, val)
252 case bool:
253 EncodeBool(sink, val)
254 case int:
255 EncodeInt128(sink, common.I128FromInt64(int64(val)))
256 case int64:
257 EncodeInt128(sink, common.I128FromInt64(val))
258 case int32:
259 EncodeInt128(sink, common.I128FromInt64(int64(val)))
260 case uint32:
261 EncodeInt128(sink, common.I128FromInt64(int64(val)))
262 case *big.Int:
263 err := EncodeBigInt(sink, val)
264 if err != nil {
265 return err
266 }
267 case common.Address:
268 EncodeAddress(sink, val)
269 case common.Uint256:
270 EncodeH256(sink, val)
271 case []interface{}:
272 err := EncodeList(sink, val)
273 if err != nil {
274 return err
275 }
276 default:
277 return fmt.Errorf("encode list: unsupported type: %v", reflect.TypeOf(val).String())
278 }
279 }
280 return nil
281}

Callers 1

EncodeValueFunction · 0.85

Calls 12

I128FromInt64Function · 0.92
EncodeBytesFunction · 0.85
EncodeStringFunction · 0.85
EncodeBoolFunction · 0.85
EncodeInt128Function · 0.85
EncodeBigIntFunction · 0.85
EncodeH256Function · 0.85
WriteByteMethod · 0.80
WriteUint32Method · 0.80
ErrorfMethod · 0.80
EncodeAddressFunction · 0.70
StringMethod · 0.45

Tested by

no test coverage detected