github.com/batchcorp/thrift-iterator@v0.0.0-20220918180557-4c4a158fc6e9/raw/raw_extension.go (about) 1 package raw 2 3 import ( 4 "reflect" 5 "github.com/batchcorp/thrift-iterator/spi" 6 ) 7 8 type Extension struct { 9 } 10 11 func (extension *Extension) DecoderOf(valType reflect.Type) spi.ValDecoder { 12 switch valType { 13 case reflect.TypeOf((*List)(nil)): 14 return &rawListDecoder{} 15 case reflect.TypeOf((*Map)(nil)): 16 return &rawMapDecoder{} 17 case reflect.TypeOf((*Struct)(nil)): 18 return &rawStructDecoder{} 19 } 20 return nil 21 } 22 23 func (extension *Extension) EncoderOf(valType reflect.Type) spi.ValEncoder { 24 switch valType { 25 case reflect.TypeOf((*List)(nil)).Elem(): 26 return &rawListEncoder{} 27 case reflect.TypeOf((*Map)(nil)).Elem(): 28 return &rawMapEncoder{} 29 case reflect.TypeOf((*Struct)(nil)).Elem(): 30 return &rawStructEncoder{} 31 } 32 return nil 33 }