mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
gob: beginning of support for GobEncoder/GobDecoder interfaces.
This allows a data item that can marshal itself to be transmitted by its own encoding, enabling some types to be handled that cannot be normally, plus providing a way to use gobs on data with unexported fields. In this CL, the necessary methods are protected by leading _, so only package gob can use the facilities (in its tests, of course); this code is not ready for real use yet. I could be talked into enabling it for experimentation, though. The main drawback is that the methods must be implemented by the actual type passed through, not by an indirection from it. For instance, if *T implements GobEncoder, you must send a *T, not a T. This will be addressed in due course. Also there is improved commentary and a couple of unrelated minor bug fixes. R=rsc CC=golang-dev https://golang.org/cl/4243056
This commit is contained in:
parent
7b563be516
commit
c91daefb24
9 changed files with 939 additions and 178 deletions
|
|
@ -303,7 +303,7 @@ func TestScalarEncInstructions(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func execDec(typ string, instr *decInstr, state *decodeState, t *testing.T, p unsafe.Pointer) {
|
||||
func execDec(typ string, instr *decInstr, state *decoderState, t *testing.T, p unsafe.Pointer) {
|
||||
defer testError(t)
|
||||
v := int(state.decodeUint())
|
||||
if v+state.fieldnum != 6 {
|
||||
|
|
@ -313,7 +313,7 @@ func execDec(typ string, instr *decInstr, state *decodeState, t *testing.T, p un
|
|||
state.fieldnum = 6
|
||||
}
|
||||
|
||||
func newDecodeStateFromData(data []byte) *decodeState {
|
||||
func newDecodeStateFromData(data []byte) *decoderState {
|
||||
b := bytes.NewBuffer(data)
|
||||
state := newDecodeState(nil, b)
|
||||
state.fieldnum = -1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue