(sink *common.ZeroCopySink, list []interface{})
| 241 | } |
| 242 | |
| 243 | func 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 | } |
no test coverage detected