lsst.sphgeom 22.0.1-8-gfb2c8f9+f3d053c481
Relationship.h
Go to the documentation of this file.
1/*
2 * LSST Data Management System
3 * Copyright 2014-2016 AURA/LSST.
4 *
5 * This product includes software developed by the
6 * LSST Project (http://www.lsst.org/).
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the LSST License Statement and
19 * the GNU General Public License along with this program. If not,
20 * see <https://www.lsstcorp.org/LegalNotices/>.
21 */
22
23#ifndef LSST_SPHGEOM_RELATIONSHIP_H_
24#define LSST_SPHGEOM_RELATIONSHIP_H_
25
26#include <bitset>
27
30
31namespace lsst {
32namespace sphgeom {
33
35using Relationship = std::bitset<3>;
36
38static constexpr Relationship DISJOINT(1);
39
44static constexpr Relationship INTERSECTS(0);
45
47static constexpr Relationship CONTAINS(2);
48
50static constexpr Relationship WITHIN(4);
51
56 // If A is disjoint from B, then B is disjoint from A. But if A contains B
57 // then B is within A, so the corresponding bits must be swapped.
58 return (r & DISJOINT) | ((r & CONTAINS) << 1) | ((r & WITHIN) >> 1);
59}
60
61}} // namespace lsst::sphgeom
62
63#endif // LSST_SPHGEOM_RELATIONSHIP_H_
std::bitset< 3 > Relationship
Relationship describes how two sets are related.
Definition: Relationship.h:35
Relationship invert(Relationship r)
Definition: Relationship.h:55