package token
type serializedFile struct {
Name string
Base int
Size int
Lines []int
Infos []lineInfo
}
type serializedFileSet struct {
Base int
Files []serializedFile
}
func ( *FileSet) ( func(any) error) error {
var serializedFileSet
if := (&); != nil {
return
}
.mutex.Lock()
.base = .Base
:= make([]*File, len(.Files))
for := 0; < len(.Files); ++ {
:= &.Files[]
[] = &File{
set: ,
name: .Name,
base: .Base,
size: .Size,
lines: .Lines,
infos: .Infos,
}
}
.files =
.last = nil
.mutex.Unlock()
return nil
}
func ( *FileSet) ( func(any) error) error {
var serializedFileSet
.mutex.Lock()
.Base = .base
:= make([]serializedFile, len(.files))
for , := range .files {
.mutex.Lock()
[] = serializedFile{
Name: .name,
Base: .base,
Size: .size,
Lines: append([]int(nil), .lines...),
Infos: append([]lineInfo(nil), .infos...),
}
.mutex.Unlock()
}
.Files =
.mutex.Unlock()
return ()
}