20 #ifndef _vctFixedSizeVectorBase_h
21 #define _vctFixedSizeVectorBase_h
43 _resultElementType, _matrixDataPtrType> & matrix,
54 _resultElementType, _matrixDataPtrType> & matrix);
57 template <vct::
size_type _size, vct::str
ide_type _str
ide,
class _elementType,
class _dataPtrType,
class _vectorOwnerType>
75 template <vct::
size_type _size, vct::str
ide_type _str
ide,
class _elementType,
class _dataPtrType>
191 const_reference
at(
size_type index)
const throw(std::out_of_range) {
241 inline value_type
SetAll(
const value_type & value) {
243 SoVoSi<typename vctBinaryOperations<value_type>::SecondOperand>::
244 Unfold(*
this, value);
258 memset(this->
Pointer(), 0, this->
size() *
sizeof(value_type));
261 this->
SetAll(static_cast<value_type>(0));
273 template <str
ide_type __str
ide,
class __elementType,
class __dataPtrType>
276 VoVi< typename vctUnaryOperations<value_type, __elementType>::Identity >::
277 Unfold(*
this, other);
281 template <str
ide_type __str
ide,
class __elementType,
class __dataPtrType>
283 return this->
Assign(other);
301 if (this->
size() != 1) {
302 cmnThrow(std::runtime_error(
"Mismatch between number of arguments assigned (1) and vector size"));
304 (*this)[0] = element0;
308 inline ThisType &
Assign(
const value_type element0,
const value_type element1)
throw(std::runtime_error)
310 if (this->
size() != 2) {
311 cmnThrow(std::runtime_error(
"Mismatch between number of arguments assigned (2) and vector size"));
313 (*this)[0] = element0;
314 (*this)[1] = element1;
319 const value_type element2)
throw(std::runtime_error)
321 if (this->
size() != 3) {
322 cmnThrow(std::runtime_error(
"Mismatch between number of arguments assigned (3) and vector size"));
324 (*this)[0] = element0;
325 (*this)[1] = element1;
326 (*this)[2] = element2;
331 const value_type element2,
const value_type element3)
throw(std::runtime_error)
333 if (this->
size() != 4) {
334 cmnThrow(std::runtime_error(
"Mismatch between number of arguments assigned (4) and vector size"));
336 (*this)[0] = element0;
337 (*this)[1] = element1;
338 (*this)[2] = element2;
339 (*this)[3] = element3;
358 const value_type element2,
const value_type element3,
const value_type element4, ...)
360 (*this)[0] = element0;
361 (*this)[1] = element1;
362 (*this)[2] = element2;
363 (*this)[3] = element3;
364 (*this)[4] = element4;
366 va_start(nextArg, element4);
368 for (i = 5; i < _size; ++i) {
391 VoVi< typename vctUnaryOperations<value_type>::Identity >::
392 Unfold(*
this, elements);
407 template <
class __vectorOwnerType>
432 template <str
ide_type __str
ide,
class __elementType,
class __dataPtrType>
434 return this->
Assign(other);
437 template <
class __vectorOwnerType>
439 return this->
Assign(other);
503 template <
class __vectorOwnerType>
505 bool performSafetyChecks =
true)
506 throw(std::runtime_error)
511 template <
class __dataPtrType>
513 bool performSafetyChecks =
true)
514 throw(std::runtime_error)
526 template <str
ide_type __str
ide,
class __elementTypeVector,
class __dataPtrType,
class __elementType>
528 __elementType last) {
531 VoVi<typename vctUnaryOperations<value_type, __elementTypeVector>::Identity>::
532 Unfold(*
this, other);
559 value_type &
X(
void) {
565 const value_type &
X(
void)
const {
572 value_type &
Y(
void) {
578 const value_type &
Y(
void)
const {
585 value_type &
Z(
void) {
591 const value_type &
Z(
void)
const {
597 value_type &
W(
void) {
603 const value_type &
W(
void)
const {
749 template <vct::
size_type __subSize>
751 Ref(
const size_type startPosition = 0)
const throw (std::out_of_range) {
755 template <vct::
size_type __subSize>
769 stride_type __indexStride,
class __indexDataPtrType>
781 template <str
ide_type __str
ide1,
class __dataPtr1Type, str
ide_type __str
ide2,
class __dataPtr2Type>
786 (*this)[0] = inputVector1[1] * inputVector2[2] - inputVector1[2] * inputVector2[1];
787 (*this)[1] = inputVector1[2] * inputVector2[0] - inputVector1[0] * inputVector2[2];
788 (*this)[2] = inputVector1[0] * inputVector2[1] - inputVector1[1] * inputVector2[0];
808 template <str
ide_type __str
ide1,
class __dataPtrType1, str
ide_type __str
ide2,
class __dataPtrType2>
812 VoViVi< typename vctBinaryOperations<value_type>::Addition >
813 ::Unfold(*
this, vector1, vector2);
819 template <str
ide_type __str
ide1,
class __dataPtrType1, str
ide_type __str
ide2,
class __dataPtrType2>
823 VoViVi< typename vctBinaryOperations<value_type>::Subtraction >
824 ::Unfold(*
this, vector1, vector2);
829 template <str
ide_type __str
ide1,
class __dataPtrType1, str
ide_type __str
ide2,
class __dataPtrType2>
833 VoViVi< typename vctBinaryOperations<value_type>::Multiplication >
834 ::Unfold(*
this, vector1, vector2);
839 template <str
ide_type __str
ide1,
class __dataPtrType1, str
ide_type __str
ide2,
class __dataPtrType2>
843 VoViVi< typename vctBinaryOperations<value_type>::Division >
844 ::Unfold(*
this, vector1, vector2);
849 template <str
ide_type __str
ide1,
class __dataPtrType1, str
ide_type __str
ide2,
class __dataPtrType2>
853 VoViVi< typename vctBinaryOperations<value_type>::Minimum >
854 ::Unfold(*
this, vector1, vector2);
859 template <str
ide_type __str
ide1,
class __dataPtrType1, str
ide_type __str
ide2,
class __dataPtrType2>
863 VoViVi< typename vctBinaryOperations<value_type>::Maximum >
864 ::Unfold(*
this, vector1, vector2);
885 template <str
ide_type __str
ide,
class __dataPtrType>
888 VioVi< typename vctStoreBackBinaryOperations<value_type>::Addition >::
889 Unfold(*
this, otherVector);
894 template <str
ide_type __str
ide,
class __dataPtrType>
897 VioVi< typename vctStoreBackBinaryOperations<value_type>::Subtraction >::
898 Unfold(*
this, otherVector);
903 template <str
ide_type __str
ide,
class __dataPtrType>
906 VioVi< typename vctStoreBackBinaryOperations<value_type>::Multiplication >::
907 Unfold(*
this, otherVector);
912 template <str
ide_type __str
ide,
class __dataPtrType>
915 VioVi< typename vctStoreBackBinaryOperations<value_type>::Division >::
916 Unfold(*
this, otherVector);
921 template <str
ide_type __str
ide,
class __dataPtrType>
924 VioVi< typename vctStoreBackBinaryOperations<value_type>::Minimum >::
925 Unfold(*
this, otherVector);
930 template <str
ide_type __str
ide,
class __dataPtrType>
933 VioVi< typename vctStoreBackBinaryOperations<value_type>::Maximum >::
934 Unfold(*
this, otherVector);
939 template <str
ide_type __str
ide,
class __dataPtrType>
941 return this->
Add(otherVector);
945 template <str
ide_type __str
ide,
class __dataPtrType>
957 template <str
ide_type __str
ide,
class __dataPtrType>
960 VioVio< typename vctStoreBackBinaryOperations<value_type>::Swap >::
961 Unfold(*
this, otherVector);
982 template <str
ide_type __str
ide,
class __dataPtrType>
984 const value_type scalar) {
986 VoViSi< typename vctBinaryOperations<value_type>::Addition >::
987 Unfold(*
this, vector, scalar);
992 template <str
ide_type __str
ide,
class __dataPtrType>
994 const value_type scalar) {
996 VoViSi< typename vctBinaryOperations<value_type>::Subtraction >::
997 Unfold(*
this, vector, scalar);
1002 template <str
ide_type __str
ide,
class __dataPtrType>
1004 const value_type scalar) {
1006 VoViSi< typename vctBinaryOperations<value_type>::Multiplication >::
1007 Unfold(*
this, vector, scalar);
1012 template <str
ide_type __str
ide,
class __dataPtrType>
1014 const value_type scalar) {
1016 VoViSi< typename vctBinaryOperations<value_type>::Division >::
1017 Unfold(*
this, vector, scalar);
1022 template <str
ide_type __str
ide,
class __dataPtrType>
1024 const value_type upperBound) {
1026 VoViSi<typename vctBinaryOperations<value_type>::Minimum>::
1027 Unfold(*
this, vector, upperBound);
1032 template <str
ide_type __str
ide,
class __dataPtrType>
1034 const value_type lowerBound) {
1036 VoViSi< typename vctBinaryOperations<value_type>::Maximum >::
1037 Unfold(*
this, vector, lowerBound);
1059 template <str
ide_type __str
ide,
class __dataPtrType>
1063 VoSiVi< typename vctBinaryOperations<value_type>::Addition >::
1064 Unfold(*
this, scalar, vector);
1069 template <str
ide_type __str
ide,
class __dataPtrType>
1073 VoSiVi< typename vctBinaryOperations<value_type>::Subtraction >::
1074 Unfold(*
this, scalar, vector);
1079 template <str
ide_type __str
ide,
class __dataPtrType>
1083 VoSiVi< typename vctBinaryOperations<value_type>::Multiplication >::
1084 Unfold(*
this, scalar, vector);
1089 template <str
ide_type __str
ide,
class __dataPtrType>
1093 VoSiVi< typename vctBinaryOperations<value_type>::Division >::
1094 Unfold(*
this, scalar, vector);
1099 template <str
ide_type __str
ide,
class __dataPtrType>
1103 VoSiVi< typename vctBinaryOperations<value_type>::Minimum >::
1104 Unfold(*
this, upperBound, vector);
1109 template <str
ide_type __str
ide,
class __dataPtrType>
1113 VoSiVi< typename vctBinaryOperations<value_type>::Maximum >::
1114 Unfold(*
this, lowerBound, vector);
1137 VioSi< typename vctStoreBackBinaryOperations<value_type>::Addition >::
1138 Unfold(*
this, scalar);
1145 VioSi< typename vctStoreBackBinaryOperations<value_type>::Subtraction >::
1146 Unfold(*
this, scalar);
1153 VioSi< typename vctStoreBackBinaryOperations<value_type>::Multiplication >::
1154 Unfold(*
this, scalar);
1161 VioSi< typename vctStoreBackBinaryOperations<value_type>::Division >::
1162 Unfold(*
this, scalar);
1169 VioSi< typename vctStoreBackBinaryOperations<value_type>::Minimum >::
1170 Unfold(*
this, upperBound);
1177 VioSi< typename vctStoreBackBinaryOperations<value_type>::Maximum >::
1178 Unfold(*
this, lowerBound);
1184 return this->
Add(scalar);
1199 return this->
Divide(scalar);
1204 template <str
ide_type __str
ide,
class __dataPtrType>
1212 Unfold(*
this, scalar, otherVector);
1216 template <
stride_type __stride1,
class __dataPtrType1,
1226 Unfold(*
this, vector1, vector2);
1243 stride_type __vectorStride,
class __vectorDataPtrType>
1276 template <str
ide_type __str
ide,
class __dataPtrType>
1279 VoVi< typename vctUnaryOperations<value_type>::AbsValue >::
1280 Unfold(*
this, otherVector);
1285 template <str
ide_type __str
ide,
class __dataPtrType>
1288 VoVi< typename vctUnaryOperations<value_type>::Negation >::
1289 Unfold(*
this, otherVector);
1294 template <str
ide_type __str
ide,
class __dataPtrType>
1297 VoVi< typename vctUnaryOperations<value_type>::Floor >::
1298 Unfold(*
this, otherVector);
1303 template <str
ide_type __str
ide,
class __dataPtrType>
1306 VoVi< typename vctUnaryOperations<value_type>::Ceil>::
1307 Unfold(*
this, otherVector);
1312 template <str
ide_type __str
ide,
class __dataPtrType>
1314 *
this = otherVector;
1333 Vio< typename vctStoreBackUnaryOperations<value_type>::MakeAbs >::
1341 Vio< typename vctStoreBackUnaryOperations<value_type>::MakeNegation >::
1349 Vio< typename vctStoreBackUnaryOperations<value_type>::MakeFloor >::
1357 Vio< typename vctStoreBackUnaryOperations<value_type>::MakeCeil >::
1364 value_type norm = value_type(this->
Norm());
1368 cmnThrow(std::runtime_error(
"Division by quasi zero detected in vctFixedSizeVector NormalizedSelf()"));
1375 #if 0 // eliminating definition of GetSubsequence and GetConstSubsequence methods
1383 template <
class _subsequenceType>
1384 void GetSubsequence(
size_type position, _subsequenceType & result) {
1387 ((_subsequenceType::SIZE-1) * (_subsequenceType::STRIDE /
ThisType::STRIDE))
1389 result.SetRef(
Pointer(position) );
1392 template <
class _subsequenceType>
1393 void GetConstSubsequence(
size_type position, _subsequenceType & result) {
1394 BaseType::GetConstSubsequence(position, result);
1396 #endif // eliminate definition
1415 template <
size_type _subSize>
1424 #endif // _vctFixedSizeVectorBase_h
size_t index_type
Definition: vctContainerTraits.h:36
ThisType & Assign(const value_type element0, const value_type element1, const value_type element2, const value_type element3)
Definition: vctFixedSizeVectorBase.h:330
value_type & Y(void)
Definition: vctFixedSizeVectorBase.h:572
A template for a fixed size matrix with fixed spacing in memory.
Definition: vctFixedSizeConstMatrixBase.h:103
cmnTypeTraits< value_type > TypeTraits
Definition: vctFixedSizeVectorBase.h:91
Definition: vctFixedStrideVectorIterator.h:224
ColConstMatrixRefType AsColMatrix(void) const
Definition: vctFixedSizeVectorBase.h:736
ThisType & SumOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector, const value_type scalar)
Definition: vctFixedSizeVectorBase.h:983
ThisType & CeilOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:1304
vctFixedSizeConstVectorRef< _elementType, 4, _stride > XYZW(void) const
Definition: vctFixedSizeConstVectorBase.h:388
ThisType & AbsSelf(void)
Definition: vctFixedSizeVectorBase.h:1331
vctFixedSizeConstVectorRef< _elementType, 3, _stride > XYZ(void) const
Definition: vctFixedSizeConstVectorBase.h:372
const_iterator end(void) const
Definition: vctFixedSizeConstVectorBase.h:184
#define CMN_ASSERT(expr)
Definition: cmnAssert.h:90
NormType Norm(void) const
Definition: vctFixedSizeConstVectorBase.h:453
const_reverse_iterator rend(void) const
Definition: vctFixedSizeVectorBase.h:162
const_reference operator[](size_type index) const
Definition: vctFixedSizeVectorBase.h:175
vctFixedSizeVectorRef< _elementType, 2, 2 *_stride > YW(void)
Definition: vctFixedSizeVectorBase.h:638
const_reverse_iterator rbegin(void) const
Definition: vctFixedSizeVectorBase.h:149
ThisType & AddElementwiseProductOf(const vctFixedSizeConstVectorBase< _size, __stride1, value_type, __dataPtrType1 > &vector1, const vctFixedSizeConstVectorBase< _size, __stride2, value_type, __dataPtrType2 > &vector2)
Definition: vctFixedSizeVectorBase.h:1218
const_reference operator()(size_type index) const
Definition: vctFixedSizeVectorBase.h:203
VectorTraits::reverse_iterator reverse_iterator
Definition: vctFixedSizeVectorBase.h:97
vctFixedSizeConstVectorRef< _elementType, 2, 2 *_stride > YW(void) const
Definition: vctFixedSizeVectorBase.h:671
const_reference at(size_type index) const
Definition: vctFixedSizeConstVectorBase.h:241
const_reference at(size_type index) const
Definition: vctFixedSizeVectorBase.h:191
ThisType & NormalizedOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:1313
ThisType & ElementwiseDivide(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:913
vctFixedSizeConstVectorRef< _elementType, 2, _stride > ZW(void) const
Definition: vctFixedSizeConstVectorBase.h:363
ThisType & ElementwiseMax(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:931
ThisType & AddProductOf(const value_type scalar, const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:1205
BaseType::RowMatrixRefType RowMatrixRefType
Definition: vctFixedSizeVectorBase.h:103
An implementation of the ``abstract'' vctFixedSizeVectorBase.
Definition: vctFixedSizeVectorRef.h:46
const value_type & W(void) const
Definition: vctFixedSizeVectorBase.h:603
ThisType & Assign(const value_type element0, const value_type element1, const value_type element2)
Definition: vctFixedSizeVectorBase.h:318
vctFixedSizeVectorRef< _elementType, 3, _stride > YZW(void)
Definition: vctFixedSizeVectorBase.h:692
ThisType & ClipAbove(const value_type upperBound)
Definition: vctFixedSizeVectorBase.h:1167
ThisType & DifferenceOf(const value_type scalar, const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector)
Definition: vctFixedSizeVectorBase.h:1070
ThisType & ForceAssign(const vctFixedSizeConstVectorBase< _size, __stride, __elementType, __dataPtrType > &other)
Definition: vctFixedSizeVectorBase.h:433
ThisType & SwapElementsWith(vctFixedSizeVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:958
static Type Tolerance(void)
Definition: cmnTypeTraits.h:170
BaseType::CopyType CopyType
Definition: vctFixedSizeVectorBase.h:90
ThisType & ElementwiseMin(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:922
RowMatrixRefType AsRowMatrix(void)
Definition: vctFixedSizeVectorBase.h:731
vctFixedSizeConstVectorRef< _elementType, 2, _stride > YZ(void) const
Definition: vctFixedSizeConstVectorBase.h:349
static bool VectorCopy(_destinationVectorType &destination, const _sourceVectorType &source, bool performSafetyChecks)
Definition: vctFastCopy.h:165
ThisType & ClippedAboveOf(const value_type upperBound, const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector)
Definition: vctFixedSizeVectorBase.h:1100
const value_type & Y(void) const
Definition: vctFixedSizeConstVectorBase.h:306
ThisType & ElementwiseProductOf(const vctFixedSizeConstVectorBase< _size, __stride1, value_type, __dataPtrType1 > &vector1, const vctFixedSizeConstVectorBase< _size, __stride2, value_type, __dataPtrType2 > &vector2)
Definition: vctFixedSizeVectorBase.h:830
ThisType & ElementwiseMinOf(const vctFixedSizeConstVectorBase< _size, __stride1, value_type, __dataPtrType1 > &vector1, const vctFixedSizeConstVectorBase< _size, __stride2, value_type, __dataPtrType2 > &vector2)
Definition: vctFixedSizeVectorBase.h:850
Definition: vctFixedSizeVectorBase.h:1416
bool FastCopyOf(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &source, bool performSafetyChecks=true)
Definition: vctFixedSizeVectorBase.h:504
bool IsCompact(void) const
Definition: vctFixedSizeConstVectorBase.h:625
cmnVaArgPromotion< _elementType >::Type VaArgPromotion
Definition: cmnTypeTraits.h:167
ThisType & operator/=(const value_type scalar)
Definition: vctFixedSizeVectorBase.h:1198
ThisType & Add(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:886
An implementation of the ``abstract'' vctFixedSizeConstVectorBase.
Definition: vctFixedSizeConstVectorRef.h:50
ThisType & NormalizedSelf(void)
Definition: vctFixedSizeVectorBase.h:1363
ThisType & CeilSelf(void)
Definition: vctFixedSizeVectorBase.h:1355
size_t size_type
Definition: vctContainerTraits.h:35
ThisType & Subtract(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:895
const_iterator end(void) const
Definition: vctFixedSizeVectorBase.h:136
ThisType & Assign(const value_type element0, const value_type element1, const value_type element2, const value_type element3, const value_type element4,...)
Definition: vctFixedSizeVectorBase.h:357
ThisType & Assign(const value_type *elements)
Definition: vctFixedSizeVectorBase.h:388
vctFixedSizeConstVectorRef< _elementType, 3, _stride > YZW(void) const
Definition: vctFixedSizeVectorBase.h:703
ThisType & Assign(const value_type element0, const value_type element1)
Definition: vctFixedSizeVectorBase.h:308
ThisType & DifferenceOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector, const value_type scalar)
Definition: vctFixedSizeVectorBase.h:993
ThisType & FloorSelf(void)
Definition: vctFixedSizeVectorBase.h:1347
iterator begin(void)
Definition: vctFixedSizeVectorBase.h:117
void SelectFrom(const vctFixedSizeConstVectorBase< __inputSize, __inputStride, _elementType, __inputDataPtrType > &input, const vctFixedSizeConstVectorBase< _size, __indexStride, index_type, __indexDataPtrType > &index)
Definition: vctFixedSizeVectorBase.h:770
vctFixedSizeVectorRef< _elementType, 2, _stride > XY(void)
Definition: vctFixedSizeVectorBase.h:610
Definition: vctFixedSizeConstVectorBase.h:146
ThisType & ProductOf(const vctFixedSizeConstVectorBase< __vectorSize, __vectorStride, _elementType, __vectorDataPtrType > &inputVector, const vctFixedSizeConstMatrixBase< __vectorSize, _size, __matrixRowStride, __matrixColStride, _elementType, __matrixDataPtrType > &inputMatrix)
Definition: vctFixedSizeVectorBase.h:1253
vctFixedSizeConstVectorRef< _elementType, 3, _stride > XYZ(void) const
Definition: vctFixedSizeVectorBase.h:698
Definition: vctFixedSizeVectorBase.h:113
ThisType & Add(const value_type scalar)
Definition: vctFixedSizeVectorBase.h:1135
VectorTraits::iterator iterator
Definition: vctFixedSizeVectorBase.h:95
ThisType & Divide(const value_type scalar)
Definition: vctFixedSizeVectorBase.h:1159
vctFixedSizeVectorRef< value_type, _subSize, STRIDE > Type
Definition: vctFixedSizeVectorBase.h:1418
Returns the sum of the two InputType object.
Definition: vctStoreBackBinaryOperations.h:76
ThisType & Assign(const vctFixedSizeConstVectorBase< _size, __stride, __elementType, __dataPtrType > &other)
Definition: vctFixedSizeVectorBase.h:274
ThisType & AbsOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:1277
Implementation of a fixed-size vector using template metaprogramming.
Definition: vctFixedSizeVector.h:52
ThisType & operator*=(const value_type scalar)
Definition: vctFixedSizeVectorBase.h:1193
VCT_CONTAINER_TRAITS_TYPEDEFS(_elementType)
Definition: vctFixedSizeVectorBase.h:112
reverse_iterator rbegin(void)
Definition: vctFixedSizeVectorBase.h:143
ThisType & SumOf(const value_type scalar, const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector)
Definition: vctFixedSizeVectorBase.h:1060
Definition: vctFixedSizeConstVectorBase.h:149
bool FastCopyOf(const vctFixedSizeConstVectorBase< SIZE, STRIDE, value_type, __dataPtrType > &source, bool performSafetyChecks=true)
Definition: vctFixedSizeVectorBase.h:512
Definition: vctFixedStrideVectorIterator.h:62
vctFixedSizeVectorRef< _elementType, 3, _stride > XYZ(void)
Definition: vctFixedSizeVectorBase.h:684
ThisType & NegationOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:1286
value_type & X(void)
Definition: vctFixedSizeVectorBase.h:559
ThisType & Assign(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &other)
Definition: vctFixedSizeVectorBase.h:408
ThisType & ElementwiseRatioOf(const vctFixedSizeConstVectorBase< _size, __stride1, value_type, __dataPtrType1 > &vector1, const vctFixedSizeConstVectorBase< _size, __stride2, value_type, __dataPtrType2 > &vector2)
Definition: vctFixedSizeVectorBase.h:840
const_reference Element(size_type index) const
Definition: vctFixedSizeConstVectorBase.h:260
const value_type & Z(void) const
Definition: vctFixedSizeVectorBase.h:591
vctFixedSizeVectorBase< _size, _stride, _elementType, _dataPtrType > ThisType
Definition: vctFixedSizeVectorBase.h:87
BaseType::RowConstMatrixRefType RowConstMatrixRefType
Definition: vctFixedSizeVectorBase.h:102
iterator end(void)
Definition: vctFixedSizeVectorBase.h:130
vctFixedSizeConstVectorRef< _elementType, __subSize, _stride > Ref(const size_type startPosition=0) const
Definition: vctFixedSizeConstVectorBase.h:413
ColMatrixRefType AsColMatrix(void)
Definition: vctFixedSizeVectorBase.h:741
BaseType::ColMatrixRefType ColMatrixRefType
Definition: vctFixedSizeVectorBase.h:108
ThisType & operator-=(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:946
vctFixedSizeVectorRef< _elementType, __subSize, _stride > Ref(const size_type startPosition=0)
Definition: vctFixedSizeVectorBase.h:757
vctFixedSizeConstVectorRef< _elementType, 2, 2 *_stride > YW(void) const
Definition: vctFixedSizeConstVectorBase.h:356
const_pointer Pointer(size_type index=0) const
Definition: vctFixedSizeVectorBase.h:232
ThisType & ClippedAboveOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector, const value_type upperBound)
Definition: vctFixedSizeVectorBase.h:1023
const value_type & X(void) const
Definition: vctFixedSizeVectorBase.h:565
ThisType & ProductOf(const vctFixedSizeConstMatrixBase< _size, __matrixCols, __matrixRowStride, __matrixColStride, _elementType, __matrixDataPtrType > &inputMatrix, const vctFixedSizeConstVectorBase< __matrixCols, __vectorStride, _elementType, __vectorDataPtrType > &inputVector)
Definition: vctFixedSizeVectorBase.h:1244
void ThrowUnlessValidIndex(size_type index) const
Definition: vctFixedSizeConstVectorBase.h:168
ThisType & operator+=(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:940
Define common container related types based on the properties of a fixed size container.
Definition: vctFixedSizeVectorTraits.h:45
const_reverse_iterator rend(void) const
Definition: vctFixedSizeConstVectorBase.h:198
RowConstMatrixRefType AsRowMatrix(void) const
Definition: vctFixedSizeConstVectorBase.h:399
An implementation of the ``abstract'' vctFixedSizeMatrixBase.
Definition: vctFixedSizeMatrixRef.h:46
size_type size(void) const
Definition: vctFixedSizeConstVectorBase.h:205
Definition: vctFixedSizeVectorBase.h:111
_dataPtrType Data
Definition: vctFixedSizeConstVectorBase.h:164
ThisType & ElementwiseMaxOf(const vctFixedSizeConstVectorBase< _size, __stride1, value_type, __dataPtrType1 > &vector1, const vctFixedSizeConstVectorBase< _size, __stride2, value_type, __dataPtrType2 > &vector2)
Definition: vctFixedSizeVectorBase.h:860
const_pointer Pointer(size_type index=0) const
Definition: vctFixedSizeConstVectorBase.h:268
vctFixedSizeConstVectorRef< _elementType, 2, _stride > XY(void) const
Definition: vctFixedSizeConstVectorBase.h:328
ThisType & operator=(const vctFixedSizeConstVectorBase< _size, __stride, __elementType, __dataPtrType > &other)
Definition: vctFixedSizeVectorBase.h:282
void vctFixedSizeVectorBaseAssignDynamicConstVectorBase(vctFixedSizeVectorBase< _size, _stride, _elementType, _dataPtrType > &fixedSizeVector, const vctDynamicConstVectorBase< _vectorOwnerType, _elementType > &dynamicVector)
Definition: vctDynamicConstVectorBase.h:1124
vctFixedSizeConstVectorRef< _elementType, 2, _stride > YZ(void) const
Definition: vctFixedSizeVectorBase.h:666
const value_type & X(void) const
Definition: vctFixedSizeConstVectorBase.h:298
ThisType & Multiply(const value_type scalar)
Definition: vctFixedSizeVectorBase.h:1151
ThisType & ClippedBelowOf(const value_type lowerBound, const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector)
Definition: vctFixedSizeVectorBase.h:1110
const_iterator begin(void) const
Definition: vctFixedSizeConstVectorBase.h:177
#define cmnThrow(a)
Definition: MinimalCmn.h:4
vctFixedSizeVectorRef< _elementType, 2, _stride > YZ(void)
Definition: vctFixedSizeVectorBase.h:631
reference operator[](size_type index)
Definition: vctFixedSizeVectorBase.h:169
vctFixedSizeVectorRef< _elementType, 2, 2 *_stride > XZ(void)
Definition: vctFixedSizeVectorBase.h:617
vctFixedSizeConstVectorRef< _elementType, 4, _stride > XYZW(void) const
Definition: vctFixedSizeVectorBase.h:717
reverse_iterator rend(void)
Definition: vctFixedSizeVectorBase.h:156
const value_type & W(void) const
Definition: vctFixedSizeConstVectorBase.h:321
ThisType & ForceAssign(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &other)
Definition: vctFixedSizeVectorBase.h:438
RowConstMatrixRefType AsRowMatrix(void) const
Definition: vctFixedSizeVectorBase.h:726
bool Zeros(void)
Definition: vctFixedSizeVectorBase.h:256
value_type SetAll(const value_type &value)
Definition: vctFixedSizeVectorBase.h:241
const value_type & Y(void) const
Definition: vctFixedSizeVectorBase.h:578
const_reverse_iterator rbegin(void) const
Definition: vctFixedSizeConstVectorBase.h:191
vctFixedSizeConstVectorBase< _size, _stride, _elementType, _dataPtrType > BaseType
Definition: vctFixedSizeVectorBase.h:89
A template for a fixed length vector with fixed spacing in memory.
Definition: vctFixedSizeVectorBase.h:76
vctFixedSizeVectorTraits< _elementType, _size, _stride > VectorTraits
Definition: vctFixedSizeVectorBase.h:85
Declaration of vctFixedSizeConstVectorBase.
BaseType::ColConstMatrixRefType ColConstMatrixRefType
Definition: vctFixedSizeVectorBase.h:107
vctFixedSizeVectorRef< _elementType, 2, _stride > ZW(void)
Definition: vctFixedSizeVectorBase.h:645
static void Unfold(_outputVectorType &output, const _inputVectorType &input, const _indexVectorType &index)
Definition: vctFixedSizeVectorRecursiveEngines.h:918
void CrossProductOf(const vctFixedSizeConstVectorBase< 3, __stride1, _elementType, __dataPtr1Type > &inputVector1, const vctFixedSizeConstVectorBase< 3, __stride2, _elementType, __dataPtr2Type > &inputVector2)
Definition: vctFixedSizeVectorBase.h:782
reference operator()(size_type index)
Definition: vctFixedSizeVectorBase.h:198
ThisType & RatioOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector, const value_type scalar)
Definition: vctFixedSizeVectorBase.h:1013
ptrdiff_t stride_type
Definition: vctContainerTraits.h:37
ThisType & ProductOf(const value_type scalar, const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector)
Definition: vctFixedSizeVectorBase.h:1080
vctFixedSizeConstVectorRef< _elementType, 3, _stride > YZW(void) const
Definition: vctFixedSizeConstVectorBase.h:379
void MultiplyVectorMatrix(vctFixedSizeVectorBase< _resultSize, _resultStride, _resultElementType, _resultDataPtrType > &result, const vctFixedSizeConstVectorBase< _vectorSize, _vectorStride, _resultElementType, _vectorDataPtrType > &vector, const vctFixedSizeConstMatrixBase< _vectorSize, _resultSize, _matrixRowStride, _matrixColStride, _resultElementType, _matrixDataPtrType > &matrix)
Definition: vctFixedSizeMatrixRef.h:227
ThisType & NegationSelf(void)
Definition: vctFixedSizeVectorBase.h:1339
ThisType & SumOf(const vctFixedSizeConstVectorBase< _size, __stride1, value_type, __dataPtrType1 > &vector1, const vctFixedSizeConstVectorBase< _size, __stride2, value_type, __dataPtrType2 > &vector2)
Definition: vctFixedSizeVectorBase.h:809
ThisType & ClipBelow(const value_type lowerBound)
Definition: vctFixedSizeVectorBase.h:1175
reference Element(size_type index)
Definition: vctFixedSizeVectorBase.h:213
Definition: vctDynamicConstVectorBase.h:77
An implementation of the ``abstract'' vctFixedSizeConstMatrixBase.
Definition: vctFixedSizeConstMatrixRef.h:50
const value_type & Z(void) const
Definition: vctFixedSizeConstVectorBase.h:314
A template for a fixed length vector with fixed spacing in memory.
Definition: vctFixedSizeConstVectorBase.h:107
VectorTraits::const_iterator const_iterator
Definition: vctFixedSizeVectorBase.h:96
pointer Pointer(size_type index=0)
Definition: vctFixedSizeVectorBase.h:226
ThisType & ConcatenationOf(const vctFixedSizeConstVectorBase< SIZEMINUSONE, __stride, __elementTypeVector, __dataPtrType > &other, __elementType last)
Definition: vctFixedSizeVectorBase.h:527
Declaration of cmnDeSerializer and functions cmnDeSerializeRaw.
ThisType & ClippedBelowOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector, const value_type lowerBound)
Definition: vctFixedSizeVectorBase.h:1033
value_type & Z(void)
Definition: vctFixedSizeVectorBase.h:585
const_reference operator()(size_type index) const
Definition: vctFixedSizeConstVectorBase.h:250
void MultiplyMatrixVector(vctFixedSizeVectorBase< _resultSize, _resultStride, _resultElementType, _resultDataPtrType > &result, const vctFixedSizeConstMatrixBase< _resultSize, _matrixCols, _matrixRowStride, _matrixColStride, _resultElementType, _matrixDataPtrType > &matrix, const vctFixedSizeConstVectorBase< _matrixCols, _vectorStride, _resultElementType, _vectorDataPtrType > &vector)
Definition: vctFixedSizeMatrixRef.h:207
vctFixedSizeVectorRef< _elementType, 2, 3 *_stride > XW(void)
Definition: vctFixedSizeVectorBase.h:624
const_reference operator[](size_type index) const
Definition: vctFixedSizeConstVectorBase.h:232
vctFixedSizeConstVectorRef< _elementType, 2, 3 *_stride > XW(void) const
Definition: vctFixedSizeConstVectorBase.h:342
A collection of useful information about the C++ basic types, represented in a generic programming wa...
Definition: cmnTypeTraits.h:155
const_reference Element(size_type index) const
Definition: vctFixedSizeVectorBase.h:218
ThisType & FloorOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:1295
Returns the product of the two InputType object.
Definition: vctBinaryOperations.h:116
ThisType & ElementwiseMultiply(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector)
Definition: vctFixedSizeVectorBase.h:904
ThisType & RatioOf(const value_type scalar, const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector)
Definition: vctFixedSizeVectorBase.h:1090
vctFixedSizeConstVectorRef< _elementType, 2, _stride > ZW(void) const
Definition: vctFixedSizeVectorBase.h:676
vctFixedSizeConstVectorRef< _elementType, 2, 2 *_stride > XZ(void) const
Definition: vctFixedSizeVectorBase.h:656
vctFixedSizeConstVectorRef< _elementType, 2, 2 *_stride > XZ(void) const
Definition: vctFixedSizeConstVectorBase.h:335
ThisType & DifferenceOf(const vctFixedSizeConstVectorBase< _size, __stride1, value_type, __dataPtrType1 > &vector1, const vctFixedSizeConstVectorBase< _size, __stride2, value_type, __dataPtrType2 > &vector2)
Definition: vctFixedSizeVectorBase.h:820
vctFixedSizeConstVectorRef< _elementType, 2, 3 *_stride > XW(void) const
Definition: vctFixedSizeVectorBase.h:661
reference at(size_type index)
Definition: vctFixedSizeVectorBase.h:185
vctFixedSizeConstVectorRef< _elementType, 2, _stride > XY(void) const
Definition: vctFixedSizeVectorBase.h:651
vctFixedSizeConstVectorRef< _elementType, __subSize, _stride > Ref(const size_type startPosition=0) const
Definition: vctFixedSizeVectorBase.h:751
ThisType & Assign(const value_type element0)
Definition: vctFixedSizeVectorBase.h:299
Container class for the recursive engines.
Definition: vctFixedSizeVectorRecursiveEngines.h:76
VectorTraits::const_reverse_iterator const_reverse_iterator
Definition: vctFixedSizeVectorBase.h:98
ThisType & Subtract(const value_type scalar)
Definition: vctFixedSizeVectorBase.h:1143
value_type & W(void)
Definition: vctFixedSizeVectorBase.h:597
ColConstMatrixRefType AsColMatrix(void) const
Definition: vctFixedSizeConstVectorBase.h:404
ThisType & ProductOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector, const value_type scalar)
Definition: vctFixedSizeVectorBase.h:1003
vctFixedSizeVectorRef< _elementType, 4, _stride > XYZW(void)
Definition: vctFixedSizeVectorBase.h:711
const_iterator begin(void) const
Definition: vctFixedSizeVectorBase.h:123