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  }