-
Notifications
You must be signed in to change notification settings - Fork 0
/
jp-software-map.go
78 lines (67 loc) · 1.9 KB
/
jp-software-map.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package amiibo
import "fmt"
// JPNSoftwareMap is a map of JPNSoftware.
type JPNSoftwareMap (map[string]JPNSoftware)
// Add adds a JPNSoftware to the JPNSoftwareMap.
func (j *JPNSoftwareMap) Add(v *JPNSoftware) (ok bool) {
(*j)[v.GetID()] = *v
ok = j.Has(v.GetID())
return
}
// Del deletes a JPNSoftware from the JPNSoftwareMap.
func (j *JPNSoftwareMap) Del(ID string) (ok bool) {
delete(*j, ID)
ok = j.Has(ID) == false
return
}
// Each performs a for-each loop through the JPNSoftwareMap.
func (j *JPNSoftwareMap) Each(f func(string, JPNSoftware)) {
for k, v := range *j {
f(k, v)
}
}
// Get gets an JPNSoftware from the JPNSoftwareMap.
func (j *JPNSoftwareMap) Get(ID string) (v JPNSoftware, ok bool) {
v, ok = (*j)[ID]
return
}
// Has checks if the JPNSoftwareMap has a JPNSoftware with the corresponding ID.
func (j *JPNSoftwareMap) Has(ID string) (ok bool) {
_, ok = j.Get(ID)
return
}
// Len returns the length of the JPNSoftwareMap.
func (j *JPNSoftwareMap) Len() int { return len(*j) }
// NewJPNSoftwareMap returns a new JPNSoftwareMap.
func NewJPNSoftwareMap(JPNChartSoftware *JPNChartSoftware) (v JPNSoftwareMap, err error) {
v = (make(JPNSoftwareMap))
for _, JP := range JPNChartSoftware.Items {
ID := JP.GetID()
if _, ok := v[ID]; !ok {
v[ID] = JPNSoftware{}
}
var p, ok = v[ID]
if !ok {
err = fmt.Errorf("(JPNChartSoftware)[ID]: false")
}
if err != nil {
return
}
err = (&p).AddJPNChartSoftwareItem(&JP)
if err != nil {
return
}
v[ID] = p
}
return
}
// ReadJPNSoftwareMap reads a JPNSoftwareMap from disc.
func ReadJPNSoftwareMap(dir string, filename string) (v JPNSoftwareMap, err error) {
err = readJSONFile(dir, filename, &v)
return v, err
}
// WriteJPNSoftwareMap writes a JPNSoftwareMap to disc.
func WriteJPNSoftwareMap(dir string, filename string, v *JPNSoftwareMap) (fullpath string, err error) {
fullpath, err = writeJSONFile(dir, filename, &v)
return
}