43 lines
888 B
Go
43 lines
888 B
Go
|
package exifundefined
|
||
|
|
||
|
import (
|
||
|
"github.com/dsoprea/go-logging"
|
||
|
)
|
||
|
|
||
|
// UndefinedTagHandle defines one undefined-type tag with a corresponding
|
||
|
// decoder.
|
||
|
type UndefinedTagHandle struct {
|
||
|
IfdPath string
|
||
|
TagId uint16
|
||
|
}
|
||
|
|
||
|
func registerEncoder(entity EncodeableValue, encoder UndefinedValueEncoder) {
|
||
|
typeName := entity.EncoderName()
|
||
|
|
||
|
_, found := encoders[typeName]
|
||
|
if found == true {
|
||
|
log.Panicf("encoder already registered: %v", typeName)
|
||
|
}
|
||
|
|
||
|
encoders[typeName] = encoder
|
||
|
}
|
||
|
|
||
|
func registerDecoder(ifdPath string, tagId uint16, decoder UndefinedValueDecoder) {
|
||
|
uth := UndefinedTagHandle{
|
||
|
IfdPath: ifdPath,
|
||
|
TagId: tagId,
|
||
|
}
|
||
|
|
||
|
_, found := decoders[uth]
|
||
|
if found == true {
|
||
|
log.Panicf("decoder already registered: %v", uth)
|
||
|
}
|
||
|
|
||
|
decoders[uth] = decoder
|
||
|
}
|
||
|
|
||
|
var (
|
||
|
encoders = make(map[string]UndefinedValueEncoder)
|
||
|
decoders = make(map[UndefinedTagHandle]UndefinedValueDecoder)
|
||
|
)
|