undefined/accessor.go: Drop unnecessary parameters from Decode()

for/master
Dustin Oprea 2020-01-05 22:55:24 -05:00
parent 6554f89879
commit e7e1e89ffb
6 changed files with 11 additions and 23 deletions

View File

@ -94,7 +94,7 @@ func TestVisit(t *testing.T) {
valueString := "" valueString := ""
if tagType == exifcommon.TypeUndefined { if tagType == exifcommon.TypeUndefined {
value, err := exifundefined.Decode(fqIfdPath, tagId, valueContext, valueContext.ByteOrder()) value, err := exifundefined.Decode(valueContext)
if err != nil { if err != nil {
if err == exifcommon.ErrUnhandledUnknownTypedTag { if err == exifcommon.ErrUnhandledUnknownTypedTag {
valueString = "!UNDEFINED!" valueString = "!UNDEFINED!"

View File

@ -1122,7 +1122,7 @@ func (ib *IfdBuilder) AddTagsFromExisting(ifd *Ifd, includeTagIds []uint16, excl
// cleanest way of using what we already have to both determine // cleanest way of using what we already have to both determine
// if we support this tag and producing the bytes for it. // if we support this tag and producing the bytes for it.
value, err := exifundefined.Decode(ite.IfdPath, ite.TagId, valueContext, ib.byteOrder) value, err := exifundefined.Decode(valueContext)
if err != nil { if err != nil {
if err == exifcommon.ErrUnhandledUnknownTypedTag { if err == exifcommon.ErrUnhandledUnknownTypedTag {
// It's an undefined-type tag that we don't handle. If // It's an undefined-type tag that we don't handle. If

View File

@ -1499,11 +1499,7 @@ func TestIfdBuilder_CreateIfdBuilderFromExistingChain_RealData(t *testing.T) {
originalIndex.RootIfd.addressableData, originalIndex.RootIfd.addressableData,
originalIndex.RootIfd.ByteOrder) originalIndex.RootIfd.ByteOrder)
value, err := exifundefined.Decode( value, err := exifundefined.Decode(valueContext)
originalIte.IfdPath,
originalIte.TagId,
valueContext,
originalIndex.RootIfd.ByteOrder)
log.PanicIf(err) log.PanicIf(err)
@ -1527,11 +1523,7 @@ func TestIfdBuilder_CreateIfdBuilderFromExistingChain_RealData(t *testing.T) {
recoveredIndex.RootIfd.addressableData, recoveredIndex.RootIfd.addressableData,
recoveredIndex.RootIfd.ByteOrder) recoveredIndex.RootIfd.ByteOrder)
value, err := exifundefined.Decode( value, err := exifundefined.Decode(valueContext)
recoveredIte.IfdPath,
recoveredIte.TagId,
valueContext,
recoveredIndex.RootIfd.ByteOrder)
log.PanicIf(err) log.PanicIf(err)

View File

@ -190,7 +190,7 @@ func (ie *IfdEnumerate) parseTag(fqIfdPath string, tagPosition int, enumerator *
valueContext := ie.GetValueContext(ite) valueContext := ie.GetValueContext(ite)
if ite.TagType == exifcommon.TypeUndefined { if ite.TagType == exifcommon.TypeUndefined {
value, err := exifundefined.Decode(ite.IfdPath, ite.TagId, valueContext, ie.byteOrder) value, err := exifundefined.Decode(valueContext)
if err != nil { if err != nil {
if err == exifcommon.ErrUnhandledUnknownTypedTag { if err == exifcommon.ErrUnhandledUnknownTypedTag {
ite.isUnhandledUnknown = true ite.isUnhandledUnknown = true

View File

@ -78,7 +78,7 @@ func (ite *IfdTagEntry) ValueString(addressableData []byte, byteOrder binary.Byt
if ite.TagType == exifcommon.TypeUndefined { if ite.TagType == exifcommon.TypeUndefined {
var err error var err error
value, err := exifundefined.Decode(ite.IfdPath, ite.TagId, valueContext, byteOrder) value, err := exifundefined.Decode(valueContext)
log.PanicIf(err) log.PanicIf(err)
s := value.(fmt.Stringer) s := value.(fmt.Stringer)
@ -114,7 +114,7 @@ func (ite *IfdTagEntry) ValueBytes(addressableData []byte, byteOrder binary.Byte
// (obviously). However, here, in order to produce the list of bytes, we // (obviously). However, here, in order to produce the list of bytes, we
// need to coerce whatever `Undefined()` returns. // need to coerce whatever `Undefined()` returns.
if ite.TagType == exifcommon.TypeUndefined { if ite.TagType == exifcommon.TypeUndefined {
value, err := exifundefined.Decode(ite.IfdPath, ite.TagId, valueContext, byteOrder) value, err := exifundefined.Decode(valueContext)
log.PanicIf(err) log.PanicIf(err)
ve := exifcommon.NewValueEncoder(byteOrder) ve := exifcommon.NewValueEncoder(byteOrder)
@ -148,7 +148,7 @@ func (ite *IfdTagEntry) Value(addressableData []byte, byteOrder binary.ByteOrder
if ite.TagType == exifcommon.TypeUndefined { if ite.TagType == exifcommon.TypeUndefined {
var err error var err error
value, err = exifundefined.Decode(ite.IfdPath, ite.TagId, valueContext, byteOrder) value, err = exifundefined.Decode(valueContext)
log.PanicIf(err) log.PanicIf(err)
} else { } else {
var err error var err error

View File

@ -29,7 +29,7 @@ func Encode(value EncodeableValue, byteOrder binary.ByteOrder) (encoded []byte,
} }
// UndefinedValue knows how to resolve the value for most unknown-type tags. // UndefinedValue knows how to resolve the value for most unknown-type tags.
func Decode(ifdPath string, tagId uint16, valueContext *exifcommon.ValueContext, byteOrder binary.ByteOrder) (value EncodeableValue, err error) { func Decode(valueContext *exifcommon.ValueContext) (value EncodeableValue, err error) {
defer func() { defer func() {
if state := recover(); state != nil { if state := recover(); state != nil {
err = log.Wrap(state.(error)) err = log.Wrap(state.(error))
@ -37,8 +37,8 @@ func Decode(ifdPath string, tagId uint16, valueContext *exifcommon.ValueContext,
}() }()
uth := UndefinedTagHandle{ uth := UndefinedTagHandle{
IfdPath: ifdPath, IfdPath: valueContext.IfdPath(),
TagId: tagId, TagId: valueContext.TagId(),
} }
decoder, found := decoders[uth] decoder, found := decoders[uth]
@ -48,10 +48,6 @@ func Decode(ifdPath string, tagId uint16, valueContext *exifcommon.ValueContext,
return nil, exifcommon.ErrUnhandledUnknownTypedTag return nil, exifcommon.ErrUnhandledUnknownTypedTag
} }
if valueContext.IfdPath() != ifdPath || valueContext.TagId() != tagId {
log.Panicf("IFD-path for codec does not match value-context: [%s] (0x%04x) != [%s] (0x%04x)", ifdPath, tagId, valueContext.IfdPath(), valueContext.TagId())
}
value, err = decoder.Decode(valueContext) value, err = decoder.Decode(valueContext)
log.PanicIf(err) log.PanicIf(err)