github.com/batchcorp/thrift-iterator@v0.0.0-20220918180557-4c4a158fc6e9/general/encode_list.go (about) 1 package general 2 3 import ( 4 "github.com/batchcorp/thrift-iterator/spi" 5 "github.com/batchcorp/thrift-iterator/protocol" 6 ) 7 8 type generalListEncoder struct { 9 } 10 11 func (encoder *generalListEncoder) Encode(val interface{}, stream spi.Stream) { 12 writeList(val, stream) 13 } 14 15 func (encoder *generalListEncoder) ThriftType() protocol.TType { 16 return protocol.TypeList 17 } 18 19 func writeList(val interface{}, stream spi.Stream) { 20 obj := val.(List) 21 length := len(obj) 22 if length == 0 { 23 stream.WriteListHeader(protocol.TypeI64, 0) 24 return 25 } 26 elemType, generalWriter := generalWriterOf(obj[0]) 27 stream.WriteListHeader(elemType, length) 28 for _, elem := range obj { 29 generalWriter(elem, stream) 30 } 31 }