50 lines
792 B
Go
50 lines
792 B
Go
|
package versions
|
||
|
|
||
|
// All is an infinite set containing all possible versions.
|
||
|
var All Set
|
||
|
|
||
|
// None is a finite set containing no versions.
|
||
|
var None Set
|
||
|
|
||
|
type setExtreme bool
|
||
|
|
||
|
func (s setExtreme) Has(v Version) bool {
|
||
|
return bool(s)
|
||
|
}
|
||
|
|
||
|
func (s setExtreme) AllRequested() Set {
|
||
|
// The extreme sets request nothing.
|
||
|
return None
|
||
|
}
|
||
|
|
||
|
func (s setExtreme) GoString() string {
|
||
|
switch bool(s) {
|
||
|
case true:
|
||
|
return "versions.All"
|
||
|
case false:
|
||
|
return "versions.None"
|
||
|
default:
|
||
|
panic("strange new boolean value")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var _ setFinite = setExtreme(false)
|
||
|
|
||
|
func (s setExtreme) isFinite() bool {
|
||
|
// Only None is finite
|
||
|
return !bool(s)
|
||
|
}
|
||
|
|
||
|
func (s setExtreme) listVersions() List {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func init() {
|
||
|
All = Set{
|
||
|
setI: setExtreme(true),
|
||
|
}
|
||
|
None = Set{
|
||
|
setI: setExtreme(false),
|
||
|
}
|
||
|
}
|