Skip to content

Commit b2a1add

Browse files
committed
Add ability to skip decoding in deserializer
1 parent a126ec1 commit b2a1add

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

decoder.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ func (d *decoder) decodeToDeserializer(offset uint, dser deserializer, depth int
6565
return 0, err
6666
}
6767

68+
skip, err := dser.ShouldSkip(uintptr(offset))
69+
if err != nil {
70+
return 0, err
71+
}
72+
if skip {
73+
return d.nextValueOffset(offset, 1)
74+
}
75+
6876
return d.decodeFromTypeToDeserializer(typeNum, size, newOffset, dser, depth+1)
6977
}
7078

deserializer.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ import "math/big"
1414
// It is not currently covered by any Semantic Versioning guarantees.
1515
// Use at your own risk.
1616
type deserializer interface {
17-
StartSlice(uint) error
18-
StartMap(uint) error
17+
ShouldSkip(offset uintptr) (bool, error)
18+
StartSlice(size uint) error
19+
StartMap(size uint) error
1920
End() error
2021
String(string) error
2122
Float64(float64) error

0 commit comments

Comments
 (0)