OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [go/] [token/] [serialize.go] - Blame information for rev 747

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
// Copyright 2011 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
 
5
package token
6
 
7
type serializedFile struct {
8
        // fields correspond 1:1 to fields with same (lower-case) name in File
9
        Name  string
10
        Base  int
11
        Size  int
12
        Lines []int
13
        Infos []lineInfo
14
}
15
 
16
type serializedFileSet struct {
17
        Base  int
18
        Files []serializedFile
19
}
20
 
21
// Read calls decode to deserialize a file set into s; s must not be nil.
22
func (s *FileSet) Read(decode func(interface{}) error) error {
23
        var ss serializedFileSet
24
        if err := decode(&ss); err != nil {
25
                return err
26
        }
27
 
28
        s.mutex.Lock()
29
        s.base = ss.Base
30
        files := make([]*File, len(ss.Files))
31
        for i := 0; i < len(ss.Files); i++ {
32
                f := &ss.Files[i]
33
                files[i] = &File{s, f.Name, f.Base, f.Size, f.Lines, f.Infos}
34
        }
35
        s.files = files
36
        s.last = nil
37
        s.mutex.Unlock()
38
 
39
        return nil
40
}
41
 
42
// Write calls encode to serialize the file set s.
43
func (s *FileSet) Write(encode func(interface{}) error) error {
44
        var ss serializedFileSet
45
 
46
        s.mutex.Lock()
47
        ss.Base = s.base
48
        files := make([]serializedFile, len(s.files))
49
        for i, f := range s.files {
50
                files[i] = serializedFile{f.name, f.base, f.size, f.lines, f.infos}
51
        }
52
        ss.Files = files
53
        s.mutex.Unlock()
54
 
55
        return encode(ss)
56
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.