| @@ 149-162 (lines=14) @@ | ||
| 146 | * |
|
| 147 | * @return Set |
|
| 148 | */ |
|
| 149 | final public function union(self $set) |
|
| 150 | { |
|
| 151 | $bit = $this->bit; |
|
| 152 | foreach (func_get_args() as $arg) { |
|
| 153 | self::validateType($arg); |
|
| 154 | ||
| 155 | $bit |= $arg->bit; |
|
| 156 | } |
|
| 157 | ||
| 158 | $clone = new static(); |
|
| 159 | $clone->bit = $bit; |
|
| 160 | ||
| 161 | return $clone; |
|
| 162 | } |
|
| 163 | ||
| 164 | /** |
|
| 165 | * Produce a new set with enum common to both this and other (this & other). |
|
| @@ 171-184 (lines=14) @@ | ||
| 168 | * |
|
| 169 | * @return Set |
|
| 170 | */ |
|
| 171 | final public function intersect(self $set) |
|
| 172 | { |
|
| 173 | $bit = $this->bit; |
|
| 174 | foreach (func_get_args() as $arg) { |
|
| 175 | self::validateType($arg); |
|
| 176 | ||
| 177 | $bit &= $arg->bit; |
|
| 178 | } |
|
| 179 | ||
| 180 | $clone = new static(); |
|
| 181 | $clone->bit = $bit; |
|
| 182 | ||
| 183 | return $clone; |
|
| 184 | } |
|
| 185 | ||
| 186 | /** |
|
| 187 | * Produce a new set with enum in this but not in other (this - other). |
|
| @@ 193-206 (lines=14) @@ | ||
| 190 | * |
|
| 191 | * @return Set |
|
| 192 | */ |
|
| 193 | final public function diff(self $set) |
|
| 194 | { |
|
| 195 | $bit = 0; |
|
| 196 | foreach (func_get_args() as $arg) { |
|
| 197 | self::validateType($arg); |
|
| 198 | ||
| 199 | $bit |= $arg->bit; |
|
| 200 | } |
|
| 201 | ||
| 202 | $clone = new static(); |
|
| 203 | $clone->bit = $this->bit & ~$bit; |
|
| 204 | ||
| 205 | return $clone; |
|
| 206 | } |
|
| 207 | ||
| 208 | /** |
|
| 209 | * Produce a new set with enum in either this and other but not in both (this ^ (other | other)). |
|
| @@ 215-228 (lines=14) @@ | ||
| 212 | * |
|
| 213 | * @return Set |
|
| 214 | */ |
|
| 215 | final public function symDiff(self $set) |
|
| 216 | { |
|
| 217 | $bit = 0; |
|
| 218 | foreach (func_get_args() as $arg) { |
|
| 219 | self::validateType($arg); |
|
| 220 | ||
| 221 | $bit |= $arg->bit; |
|
| 222 | } |
|
| 223 | ||
| 224 | $clone = new static(); |
|
| 225 | $clone->bit = $this->bit ^ $bit; |
|
| 226 | ||
| 227 | return $clone; |
|
| 228 | } |
|
| 229 | ||
| 230 | /** |
|
| 231 | * Get choices for checkbox group. |
|