27 #ifndef CDPL_MATH_QUATERNIONADAPTER_HPP
28 #define CDPL_MATH_QUATERNIONADAPTER_HPP
31 #include <type_traits>
58 typedef typename std::conditional<std::is_const<Q>::value,
59 typename Q::ConstReference,
61 typedef typename std::conditional<std::is_const<Q>::value,
62 typename Q::ConstClosureType,
148 template <
typename E>
155 template <
typename E>
162 template <
typename E>
169 template <
typename T>
172 vectorAssignScalar<ScalarMultiplicationAssignment>(*
this, t);
176 template <
typename T>
179 vectorAssignScalar<ScalarDivisionAssignment>(*
this, t);
183 template <
typename E>
186 vectorAssignVector<ScalarAssignment>(*
this, e);
190 template <
typename E>
193 vectorAssignVector<ScalarAdditionAssignment>(*
this, e);
197 template <
typename E>
200 vectorAssignVector<ScalarSubtractionAssignment>(*
this, e);
219 template <
typename T, std::
size_t N>
221 template <
typename Q>
228 template <
typename Q>
235 template <
typename E>
242 template <
typename E>
243 QuaternionVectorAdapter<const E>
Definition of exception classes.
Definition of basic expression types.
Definition of various functors.
Definition of type traits.
Implementation of vector assignment routines.
Thrown to indicate that an index is out of range.
Definition: Base/Exceptions.hpp:152
Definition: Vector.hpp:1053
Definition: Expression.hpp:98
Definition: QuaternionAdapter.hpp:48
QuaternionVectorAdapter(QuaternionType &q)
Definition: QuaternionAdapter.hpp:67
const SelfType ConstClosureType
Definition: QuaternionAdapter.hpp:64
QuaternionVectorAdapter & assign(const VectorExpression< E > &e)
Definition: QuaternionAdapter.hpp:184
QuaternionClosureType & getData()
Definition: QuaternionAdapter.hpp:132
SizeType getSize() const
Definition: QuaternionAdapter.hpp:122
Q::ConstReference ConstReference
Definition: QuaternionAdapter.hpp:57
friend void swap(QuaternionVectorAdapter &a1, QuaternionVectorAdapter &a2)
Definition: QuaternionAdapter.hpp:210
Reference operator()(SizeType i)
Definition: QuaternionAdapter.hpp:70
ConstReference operator[](SizeType i) const
Definition: QuaternionAdapter.hpp:117
QuaternionVectorAdapter & minusAssign(const VectorExpression< E > &e)
Definition: QuaternionAdapter.hpp:198
std::conditional< std::is_const< Q >::value, typename Q::ConstClosureType, typename Q::ClosureType >::type QuaternionClosureType
Definition: QuaternionAdapter.hpp:63
QuaternionVectorAdapter & operator+=(const VectorExpression< E > &e)
Definition: QuaternionAdapter.hpp:156
bool isEmpty() const
Definition: QuaternionAdapter.hpp:127
std::enable_if< IsScalar< T >::value, QuaternionVectorAdapter >::type & operator/=(const T &t)
Definition: QuaternionAdapter.hpp:177
std::conditional< std::is_const< Q >::value, typename Q::ConstReference, typename Q::Reference >::type Reference
Definition: QuaternionAdapter.hpp:60
QuaternionVectorAdapter & operator-=(const VectorExpression< E > &e)
Definition: QuaternionAdapter.hpp:163
std::size_t SizeType
Definition: QuaternionAdapter.hpp:54
void swap(QuaternionVectorAdapter &a)
Definition: QuaternionAdapter.hpp:204
QuaternionVectorAdapter & plusAssign(const VectorExpression< E > &e)
Definition: QuaternionAdapter.hpp:191
SelfType ClosureType
Definition: QuaternionAdapter.hpp:65
std::ptrdiff_t DifferenceType
Definition: QuaternionAdapter.hpp:55
Reference operator[](SizeType i)
Definition: QuaternionAdapter.hpp:112
ConstReference operator()(SizeType i) const
Definition: QuaternionAdapter.hpp:91
QuaternionVectorAdapter & operator=(const QuaternionVectorAdapter &a)
Definition: QuaternionAdapter.hpp:142
Q::ValueType ValueType
Definition: QuaternionAdapter.hpp:56
const QuaternionClosureType & getData() const
Definition: QuaternionAdapter.hpp:137
std::enable_if< IsScalar< T >::value, QuaternionVectorAdapter >::type & operator*=(const T &t)
Definition: QuaternionAdapter.hpp:170
Q QuaternionType
Definition: QuaternionAdapter.hpp:53
QuaternionVectorAdapter & operator=(const VectorExpression< E > &e)
Definition: QuaternionAdapter.hpp:149
Definition: Expression.hpp:54
const ExpressionType & operator()() const
Definition: Expression.hpp:59
constexpr unsigned int T
Specifies Hydrogen (Tritium).
Definition: AtomType.hpp:67
constexpr unsigned int Q
A generic type that covers any element except hydrogen and carbon.
Definition: AtomType.hpp:647
QuaternionVectorAdapter< E > vec(QuaternionExpression< E > &e)
Definition: QuaternionAdapter.hpp:237
void vectorSwap(V &v, VectorExpression< E > &e)
Definition: VectorAssignment.hpp:72
The namespace of the Chemical Data Processing Library.
CVector< typename Q::ValueType, 4 > Type
Definition: QuaternionAdapter.hpp:225
CVector< typename Q::ValueType, 4 > Type
Definition: QuaternionAdapter.hpp:232
Definition: TypeTraits.hpp:179
V::VectorTemporaryType Type
Definition: TypeTraits.hpp:181