mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-04 10:41:14 +00:00
38 lines
919 B
Go
38 lines
919 B
Go
package report
|
|
|
|
// IDList is a list of string IDs, which are always sorted and unique.
|
|
type IDList StringSet
|
|
|
|
var emptyIDList = IDList(MakeStringSet())
|
|
|
|
// MakeIDList makes a new IDList.
|
|
func MakeIDList(ids ...string) IDList {
|
|
if len(ids) == 0 {
|
|
return emptyIDList
|
|
}
|
|
return IDList(MakeStringSet(ids...))
|
|
}
|
|
|
|
// Add is the only correct way to add ids to an IDList.
|
|
func (a IDList) Add(ids ...string) IDList {
|
|
if len(ids) == 0 {
|
|
return a
|
|
}
|
|
return IDList(StringSet(a).Add(ids...))
|
|
}
|
|
|
|
// Merge all elements from a and b into a new list
|
|
func (a IDList) Merge(b IDList) IDList {
|
|
return IDList(StringSet(a).Merge(StringSet(b)))
|
|
}
|
|
|
|
// Contains returns true if id is in the list.
|
|
func (a IDList) Contains(id string) bool {
|
|
return StringSet(a).Contains(id)
|
|
}
|
|
|
|
// Intersection returns the intersection of a and b
|
|
func (a IDList) Intersection(b IDList) IDList {
|
|
return IDList(StringSet(a).Intersection(StringSet(b)))
|
|
}
|