package token
import "slices"
type serializedFile struct {
Name string
Base int
Size int
Lines []int
Infos []lineInfo
}
type serializedFileSet struct {
Base int
Files []serializedFile
}
func (s *FileSet ) Read (decode func (any ) error ) error {
var ss serializedFileSet
if err := decode (&ss ); err != nil {
return err
}
s .mutex .Lock ()
s .base = ss .Base
for _ , f := range ss .Files {
s .tree .add (&File {
name : f .Name ,
base : f .Base ,
size : f .Size ,
lines : f .Lines ,
infos : f .Infos ,
})
}
s .last .Store (nil )
s .mutex .Unlock ()
return nil
}
func (s *FileSet ) Write (encode func (any ) error ) error {
var ss serializedFileSet
s .mutex .Lock ()
ss .Base = s .base
var files []serializedFile
for f := range s .tree .all () {
f .mutex .Lock ()
files = append (files , serializedFile {
Name : f .name ,
Base : f .base ,
Size : f .size ,
Lines : slices .Clone (f .lines ),
Infos : slices .Clone (f .infos ),
})
f .mutex .Unlock ()
}
ss .Files = files
s .mutex .Unlock ()
return encode (ss )
}
The pages are generated with Golds v0.7.7-preview . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .