-
Notifications
You must be signed in to change notification settings - Fork 31
/
versions_info.go
49 lines (38 loc) · 1.23 KB
/
versions_info.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package vinfo
import "github.com/wavesplatform/gowaves/pkg/ride/ast"
type ConstructorStructInfo struct {
RideName string
GoName string
ArgsNumber int
}
type VersionInfo struct {
Version ast.LibraryVersion
NewStructs []ConstructorStructInfo // new structs or modified structs
RemovedStructs []string // structs removed in this version
}
func NewVersionInfo(version ast.LibraryVersion) *VersionInfo {
return &VersionInfo{
Version: version,
NewStructs: make([]ConstructorStructInfo, 0),
RemovedStructs: make([]string, 0),
}
}
type VersionInfos map[ast.LibraryVersion]*VersionInfo
func (vInfos VersionInfos) AddNewStruct(version ast.LibraryVersion, info ConstructorStructInfo) {
if _, ok := vInfos[version]; !ok {
vInfos[version] = NewVersionInfo(version)
}
vInfo := vInfos[version]
vInfo.NewStructs = append(vInfo.NewStructs, info)
}
func (vInfos VersionInfos) AddRemoved(version ast.LibraryVersion, name string) {
if _, ok := vInfos[version]; !ok {
vInfos[version] = NewVersionInfo(version)
}
vInfo := vInfos[version]
vInfo.RemovedStructs = append(vInfo.RemovedStructs, name)
}
var globalVerInfos = make(VersionInfos)
func GetVerInfos() VersionInfos {
return globalVerInfos
}