This repository has been archived by the owner on Nov 22, 2018. It is now read-only.
/
gen.go
142 lines (138 loc) · 6.72 KB
/
gen.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
// generated by go generate; DO NOT EDIT
// Copyright (c) 2015 The Interval Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package interval
// Intersection returns the intersection of x and y.
func Intersection(x, y Interface) Interface {
x, y, h := hash(x, y)
switch h {
case 9590, 9654, 9591, 9655, 10546, 10547, 10290, 10291, 10102, 10166, 10103, 10167, 9846, 9910, 9847, 9911, 9334, 9398, 9335, 9399, 11076, 11140, 10820, 10884:
return setClass(x.Clone(), Open)
case 22020, 15798, 15862, 15799, 15863, 16516, 16580, 10230, 10231, 9462, 9463, 10948:
return setClass(setB(x.Clone(), y), Open)
case 16178, 16179, 15922, 15923, 15734, 15735, 15478, 15542, 15479, 15543, 16708, 16772, 16452:
return setClass(x.Clone(), LeftOpen)
case 22276, 15606, 15607, 16836, 9718, 9719, 9974, 9975, 11204:
return setClass(setB(x.Clone(), y), LeftOpen)
case 21762, 21763, 21506, 21507:
return setClass(x.Clone(), LeftBoundedOpen)
case 18737, 18738, 10289, 9845, 9909, 9333, 9397:
return setClass(setB(y.Clone(), x), Open)
case 9461, 768:
return setClass(y.Clone(), Open)
case 13105, 13106, 12661, 12725, 12662, 12726, 15921, 15477, 15541:
return setClass(setB(y.Clone(), x), LeftOpen)
case 12789, 12790, 15605, 9973, 1280:
return setClass(y.Clone(), LeftOpen)
case 21505, 1792:
return setClass(y.Clone(), LeftBoundedOpen)
case 18994, 18995, 18739, 18550, 18614, 18551, 18615, 19524, 19588, 19268, 19332:
return setClass(x.Clone(), LeftClosed)
case 12982, 13046, 12983, 13047, 13700, 13764, 24836, 18678, 18679, 19396:
return setClass(setB(x.Clone(), y), LeftClosed)
case 12539, 12795, 14024, 6662, 6663, 6667, 6146, 7682, 7683, 7427, 7174, 7175, 6919, 6923, 6407, 8196, 8200, 7940, 25096, 19656:
return setClass(x.Clone(), Degenerate)
case 12406, 12470, 12407, 12471, 13362, 13363, 13107, 12918, 12919, 12663, 12727, 13892, 13956, 13636:
return setClass(x.Clone(), Closed)
case 12534, 12535, 12791, 14020, 25092, 19652:
return setClass(setB(x.Clone(), y), Closed)
case 24578, 24579:
return setClass(x.Clone(), LeftBoundedClosed)
case 12389, 13345, 12901, 16161, 15717:
return setClass(setAB(x.Clone()), Degenerate)
case 18993, 18549, 18613, 9589, 9653, 10545, 10101, 10165:
return setClass(setB(y.Clone(), x), LeftClosed)
case 12981, 13045, 18677, 15797, 15861, 10229, 1536:
return setClass(y.Clone(), LeftClosed)
case 12405, 12469, 13361, 12917, 16177, 15733:
return setClass(setB(y.Clone(), x), Closed)
case 512:
return setClass(y.Clone(), Degenerate)
case 12533, 9717, 1024:
return setClass(y.Clone(), Closed)
case 24577, 21761, 2048:
return setClass(y.Clone(), LeftBoundedClosed)
case 27968, 28032, 27712, 27776:
return setClass(x.Clone(), RightBoundedOpen)
case 27840, 2304:
return setClass(y.Clone(), RightBoundedOpen)
case 30784, 30848:
return setClass(x.Clone(), RightBoundedClosed)
case 30912, 28096, 2560:
return setClass(y.Clone(), RightBoundedClosed)
case 0:
return setClass(x.Clone(), Unbounded)
}
return setClass(x.Clone(), Empty)
}
// Union returns the union of x and y. If the union is not an interval, nil is
// returned instead. The union is not an interval if it is a disjoint set.
func Union(x, y Interface) Interface {
x, y, h := hash(x, y)
switch h {
case 12373, 12543, 13329, 13073, 12885, 13055, 12629, 12799, 14028, 13772, 6661, 6671, 6145, 6147, 7681, 7425, 7173, 7183, 6917, 6927, 6405, 6415, 8204, 7948, 25100, 24844, 22284, 22024, 22028, 18961, 18705, 18721, 18517, 18687, 19660, 19404, 16145, 15889, 15701, 15867, 15871, 15445, 15615, 16844, 16584, 16588, 9557, 9727, 10513, 10257, 10273, 10069, 10235, 10239, 9813, 9829, 9983, 9301, 9317, 9467, 9471, 11212, 10952, 10956:
return nil
case 9717, 10165, 10229, 9973, 9974, 9397, 9461, 9398, 9462:
return setClass(x.Clone(), Open)
case 15717, 15733, 10085, 10101, 9333, 9334:
return setClass(setB(x.Clone(), y), Open)
case 15797, 15861, 15541, 15605, 15542, 15606:
return setClass(x.Clone(), LeftOpen)
case 15461, 15477, 15478, 9573, 9589, 9653, 9845, 9909, 9846, 9910:
return setClass(setB(x.Clone(), y), LeftOpen)
case 21761, 21505, 21506, 16161, 16177, 15905, 15921, 15922, 10529, 10545, 10289, 10290:
return setClass(x.Clone(), LeftBoundedOpen)
case 9975, 9979, 9399, 9463:
return setClass(setB(y.Clone(), x), Open)
case 6407, 3584, 9335:
return setClass(y.Clone(), Open)
case 6923, 6411:
return setClass(setBA(y.Clone(), x), LeftOpen)
case 12727, 12791, 12795, 15543, 15607, 15611:
return setClass(setB(y.Clone(), x), LeftOpen)
case 12663, 6919, 4096, 15479, 9847, 9911:
return setClass(y.Clone(), LeftOpen)
case 13107, 7427, 4608, 21507, 18739, 15923, 10291:
return setClass(y.Clone(), LeftBoundedOpen)
case 18613, 18677, 18614, 18678:
return setClass(x.Clone(), LeftClosed)
case 12901, 12917, 12918, 7174, 6406, 18533, 18549, 18550:
return setClass(setB(x.Clone(), y), LeftClosed)
case 6146:
return setClass(x.Clone(), Degenerate)
case 12469, 12533, 12470, 12534, 12981, 13045, 12982, 13046, 12725, 12789, 12726, 12790:
return setClass(x.Clone(), Closed)
case 12389, 12405, 12406, 12645, 12661, 12662, 6662, 6918:
return setClass(setB(x.Clone(), y), Closed)
case 13345, 13361, 13362, 13089, 13105, 13106, 7682, 7426, 24577, 24578, 18977, 18993, 18994, 18737, 18738:
return setClass(x.Clone(), LeftBoundedClosed)
case 18615, 18679, 18683, 9718, 9719, 9723, 10166, 10230, 10167, 10231:
return setClass(setB(y.Clone(), x), LeftClosed)
case 12919, 7175, 4352, 18551, 15734, 15735, 10102, 10103:
return setClass(y.Clone(), LeftClosed)
case 6667, 7179:
return setClass(setBA(y.Clone(), x), Closed)
case 12471, 12535, 12539, 12983, 13047, 13051, 15798, 15862, 15799, 15863:
return setClass(setB(y.Clone(), x), Closed)
case 3328:
return setClass(y.Clone(), Degenerate)
case 12407, 6663, 3840, 9590, 9654, 9591, 9655:
return setClass(y.Clone(), Closed)
case 13363, 7683, 4864, 24579, 21762, 21763, 18995, 16178, 16179, 10546, 10547:
return setClass(y.Clone(), LeftBoundedClosed)
case 19652, 19656, 19332, 19396, 19400, 11204, 11208, 10884, 10948, 28096, 27776, 27840:
return setClass(x.Clone(), RightBoundedOpen)
case 13636, 7940, 5120, 19268, 16452, 10820, 27712:
return setClass(y.Clone(), RightBoundedOpen)
case 8200, 7944:
return setClass(setBA(x.Clone(), x), RightBoundedClosed)
case 13956, 14020, 14024, 13700, 13764, 13768, 16772, 16836, 16840, 16516, 16580, 30848, 30912:
return setClass(x.Clone(), RightBoundedClosed)
case 13892, 8196, 5376, 19524, 19588, 16708, 11076, 11140, 30784, 27968, 28032:
return setClass(y.Clone(), RightBoundedClosed)
case 25092, 25096, 24836, 24840, 22276, 22280, 22020, 1024, 512, 256, 2048, 1792, 1536, 1280, 768, 2560, 2304, 0:
return setClass(x.Clone(), Unbounded)
}
return setClass(x.Clone(), Empty)
}