Definition Constraint.hpp:75
Data & operator=(const Data &other)
Data(const Constraint &other, const ConstraintStrength &strength)
Definition Constraint.hpp:80
Data(const ConstraintExpression &expr, const ConstraintRelationalOperator op, const ConstraintStrength &strength)
Definition Constraint.hpp:77
ConstraintRelationalOperator mOperator
Definition Constraint.hpp:87
ConstraintStrength mStrength
Definition Constraint.hpp:86
ConstraintExpression mExpression
Definition Constraint.hpp:85
Definition ConstraintExpression.hpp:58
Represents a constraint mathematical expression.
Definition ConstraintExpression.hpp:19
const Vector< Term > & getTerms() const
Definition ConstraintExpression.hpp:42
double getConstant() const
Definition ConstraintExpression.hpp:45
An equation or inequality involving one or more variables.
Definition Constraint.hpp:38
Constraint(const ConstraintExpression &expr, const ConstraintRelationalOperator op, const ConstraintStrength &strength=ConstraintStrength::required)
Definition Constraint.hpp:45
ConstraintRelationalOperator getOperator() const
Definition Constraint.hpp:58
friend bool operator!=(const Constraint &lhs, const Constraint &rhs)
Definition Constraint.hpp:97
bool isSatisfied() const noexcept
Definition Constraint.hpp:62
friend std::ostream & operator<<(std::ostream &stream, const Constraint &constraint)
Writes the constraint to the given stream.
static ConstraintExpression reduce(const ConstraintExpression &expr)
Constraint(const Constraint &other, const ConstraintStrength &strength)
Definition Constraint.hpp:46
bool operator!() const
Definition Constraint.hpp:63
const ConstraintExpression & getExpression() const
Definition Constraint.hpp:57
const ConstraintStrength & getStrength() const
Definition Constraint.hpp:59
friend bool operator<(const Constraint &lhs, const Constraint &rhs)
Definition Constraint.hpp:95
Constraint(Constraint &&) noexcept=default
String toString() const
Gets a string representation of the constraint.
Constraint(const Constraint &)=default
friend bool operator==(const Constraint &lhs, const Constraint &rhs)
Definition Constraint.hpp:96
RC< Data > mData
Definition Constraint.hpp:41
Constraint & operator=(const Constraint &)=default
Every constraint has a strength that determines where it sits in the hierarchy; strong constraints ar...
Definition ConstraintStrength.hpp:91
static const ConstraintStrength required
Constraints with this strength must be satisfied.
Definition ConstraintStrength.hpp:121
A variable as used in an expression.
Definition ConstraintVariable.hpp:50
A retain-release type of smart pointer.
Definition SmartPtr.hpp:132
A simple reference counter base class.
Definition SmartPtr.hpp:438
Definition Constraint.hpp:22
Constraint operator==(const ConstraintExpression &first, const ConstraintExpression &second)
Definition Constraint.hpp:183
ConstraintRelationalOperator
Specifies the relation operator of a constraint.
Definition Constraint.hpp:25
Constraint operator<=(const ConstraintExpression &first, const ConstraintExpression &second)
Definition Constraint.hpp:187
ConstraintExpression operator+(const ConstraintExpression &first, const ConstraintExpression &second)
Definition Constraint.hpp:131
Constraint operator>=(const ConstraintExpression &first, const ConstraintExpression &second)
Definition Constraint.hpp:191
ConstraintExpression::Term operator/(const ConstraintVariable &variable, const double denominator)
Definition Constraint.hpp:103
Constraint operator|(const Constraint &constraint, const ConstraintStrength &strength)
Definition Constraint.hpp:236
ConstraintExpression::Term operator*(const ConstraintVariable &variable, const double coefficient)
Definition Constraint.hpp:102
ConstraintExpression::Term operator-(const ConstraintVariable &variable)
Definition Constraint.hpp:104
std::vector< T, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > Vector
Vector is a sequence container that encapsulates dynamic size arrays.
Definition Vector.hpp:17
constexpr ReduceAlgorithmFunctor reduce
Sums up (or accumulate with a custom function) a range of elements, except out of order.
Definition Reduce.hpp:110
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25