1#ifndef PRDC_SYMMETRY_GROUP_H
2#define PRDC_SYMMETRY_GROUP_H
35 template <
class Symmetry>
72 bool add(Symmetry& symmetry);
92 const Symmetry*
find(
const Symmetry& symmetry)
const;
146 std::vector<Symmetry> elements_;
159 template <
class Symmetry>
162 {
return elements_.size(); }
167 template <
class Symmetry>
170 {
return identity_; }
175 template <
class Symmetry>
178 {
return elements_[i]; }
183 template <
class Symmetry>
186 {
return elements_[i]; }
188 #ifndef PRDC_SYMMETRY_GROUP_TPP
A SpaceSymmetry represents a crystallographic space group symmetry.
Class template for a group of elements.
bool operator==(SymmetryGroup< Symmetry > const &other) const
Equality operator.
void makeCompleteGroup()
Generate a complete group from the current elements.
bool operator!=(SymmetryGroup< Symmetry > const &other) const
Inequality operator.
const Symmetry * find(const Symmetry &symmetry) const
Find a symmetry within a group.
bool add(Symmetry &symmetry)
Add a new element to the group.
SymmetryGroup< Symmetry > & operator=(const SymmetryGroup< Symmetry > &other)
Assignment operator.
~SymmetryGroup()
Destructor.
void clear()
Remove all elements except the identity.
Symmetry & operator[](int i)
Element access operator (by reference).
bool isValid() const
Return true if valid complete group, or throw an Exception.
SymmetryGroup()
Default constructor.
int size() const
Return number of elements in group (i.e., the order of the group).
const Symmetry & identity() const
Return a reference to the identity element.
PSCF package top-level namespace.