summaryrefslogtreecommitdiff
path: root/src/pkg/go/token/serialize.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/go/token/serialize.go')
-rw-r--r--src/pkg/go/token/serialize.go26
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)
}