package token
import
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
for , := range .Files {
.tree.add(&File{
name: .Name,
base: .Base,
size: .Size,
lines: .Lines,
infos: .Infos,
})
}
.last.Store(nil)
.mutex.Unlock()
return nil
}
func ( *FileSet) ( func(any) error) error {
var serializedFileSet
.mutex.Lock()
.Base = .base
var []serializedFile
for := range .tree.all() {
.mutex.Lock()
= append(, serializedFile{
Name: .name,
Base: .base,
Size: .size,
Lines: slices.Clone(.lines),
Infos: slices.Clone(.infos),
})
.mutex.Unlock()
}
.Files =
.mutex.Unlock()
return ()
}