Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <iosfwd>
7 : #include <string>
8 :
9 : namespace domain {
10 : /// Labels for the objects in a binary system.
11 1 : enum class ObjectLabel {
12 : /// The object along the positive x-axis in the grid frame
13 : A,
14 : /// The object along the negative x-axis in the grid frame
15 : B,
16 : /// A third object, typically centered at the origin.
17 : C,
18 : /// This object has no label
19 : None
20 : };
21 :
22 0 : std::string name(const ObjectLabel x);
23 :
24 0 : std::ostream& operator<<(std::ostream& s, const ObjectLabel x);
25 :
26 : /// \brief Similar to a `tmpl::list` but for `ObjectLabel`s.
27 : template <ObjectLabel... Objects>
28 1 : struct object_list {};
29 : } // namespace domain
|