13 #ifndef INCLUDE_MOLASSEMBLER_SHAPES_DATA_H
14 #define INCLUDE_MOLASSEMBLER_SHAPES_DATA_H
16 #include "boost/optional/optional_fwd.hpp"
27 namespace Molassembler {
31 struct vertex_index_tag;
71 template<
size_t ... Inds>
72 constexpr
auto makeAllShapes(std::index_sequence<Inds...> ) {
73 return std::array<Shape, nShapes> {{
static_cast<Shape>(Inds)... }};
78 constexpr std::array<Shape, nShapes>
allShapes = Detail::makeAllShapes(
79 std::make_index_sequence<nShapes>()
const std::string & name(Shape shape)
Fetch the string name of a shape.
Shape nameFromString(const std::string &shapeNameString)
Fetch the shape name from its string.
std::array< boost::optional< Vertex >, 4 > Tetrahedron
This is a four-vertex tetrahedron definition.
Definition: Data.h:59
Helper class to create strongly typed indices.
unsigned size(Shape shape)
Fetch the number of vertices of a shape.
ShapeResult shape(const PositionCollection &normalizedPositions, Shape shape)
Forwarding function to calculate the continuous shape measure.
Eigen::Matrix< double, 3, Eigen::Dynamic > Coordinates
Representation of idealized shape coordinates (does not include centroid)
Definition: Data.h:68
std::vector< Tetrahedron > TetrahedronList
Definition: Data.h:65
PointGroup
Point groups.
Definition: PointGroups.h:20
AngleFunction angleFunction(Shape shape)
Gets a shape's angle function.
std::string spaceFreeName(Shape shape)
Fetch a space-free string of a shape for file naming.
const Permutation & mirror(Shape shape)
Fetches the mirror index mapping for a particular shape.
std::vector< Vertex > Permutation
Representation of a shape vertex permutation.
Definition: Data.h:36
Defines a set of useful preprocessor macros.
std::function< > AngleFunction
Function returning angle between vertices.
Definition: Data.h:52
bool threeDimensional(Shape shape)
Returns whether a shape is three dimensional.
const TetrahedronList & tetrahedra(Shape shape)
Fetches the list of tetrahedra defined in a shape.
const RotationsList & rotations(Shape shape)
Fetches a shape's list of rotations.
std::vector< Permutation > RotationsList
The type to store shape rotations.
Definition: Data.h:40
Defines symmetry names and total count.
Coordinates coordinates(Shape shape)
Fetch a shape's idealized coordiantes.
unsigned nameIndex(Shape shape)
Returns the index of a shape within allShapes.
Shape
Enumeration of all contained symmetry names.
Definition: Shapes.h:28
PointGroup pointGroup(Shape shape)
Get a shape's point group.
constexpr std::array< Shape, nShapes > allShapes
A list of all the enum class values.
Definition: Data.h:78