github.com/batchcorp/thrift-iterator@v0.0.0-20220918180557-4c4a158fc6e9/general/decode_map.go (about) 1 package general 2 3 import "github.com/batchcorp/thrift-iterator/spi" 4 5 type generalMapDecoder struct { 6 } 7 8 func (decoder *generalMapDecoder) Decode(val interface{}, iter spi.Iterator) { 9 *val.(*Map) = readMap(iter).(Map) 10 } 11 12 func readMap(iter spi.Iterator) interface{} { 13 keyType, elemType, length := iter.ReadMapHeader() 14 generalMap := Map{} 15 if length == 0 { 16 return generalMap 17 } 18 keyReader := generalReaderOf(keyType) 19 elemReader := generalReaderOf(elemType) 20 for i := 0; i < length; i++ { 21 key := keyReader(iter) 22 elem := elemReader(iter) 23 generalMap[key] = elem 24 } 25 return generalMap 26 }