diff options
Diffstat (limited to 'src/pkg/go/token/serialize.go')
-rw-r--r-- | src/pkg/go/token/serialize.go | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/src/pkg/go/token/serialize.go b/src/pkg/go/token/serialize.go index 042d6abdf..4adc8f9e3 100644 --- a/src/pkg/go/token/serialize.go +++ b/src/pkg/go/token/serialize.go @@ -4,11 +4,6 @@ package token -import ( - "encoding/gob" - "io" -) - type serializedFile struct { // fields correspond 1:1 to fields with same (lower-case) name in File Name string @@ -23,19 +18,10 @@ type serializedFileSet struct { Files []serializedFile } -func (s *serializedFileSet) Read(r io.Reader) error { - return gob.NewDecoder(r).Decode(s) -} - -func (s *serializedFileSet) Write(w io.Writer) error { - return gob.NewEncoder(w).Encode(s) -} - -// Read reads the fileset from r into s; s must not be nil. -// If r does not also implement io.ByteReader, it will be wrapped in a bufio.Reader. -func (s *FileSet) Read(r io.Reader) error { +// Read calls decode to deserialize a file set into s; s must not be nil. +func (s *FileSet) Read(decode func(interface{}) error) error { var ss serializedFileSet - if err := ss.Read(r); err != nil { + if err := decode(&ss); err != nil { return err } @@ -53,8 +39,8 @@ func (s *FileSet) Read(r io.Reader) error { return nil } -// Write writes the fileset s to w. -func (s *FileSet) Write(w io.Writer) error { +// Write calls encode to serialize the file set s. +func (s *FileSet) Write(encode func(interface{}) error) error { var ss serializedFileSet s.mutex.Lock() @@ -66,5 +52,5 @@ func (s *FileSet) Write(w io.Writer) error { ss.Files = files s.mutex.Unlock() - return ss.Write(w) + return encode(ss) } |