20#ifndef _vctDynamicVectorLoopEngines_h
21#define _vctDynamicVectorLoopEngines_h
71 std::stringstream message;
72 message <<
"vctDynamicVectorLoopEngines: Sizes of vectors don't match, expected: " << expected
73 <<
", received: " << received;
74 cmnThrow(std::runtime_error(message.str()));
97 template<
class _elementOperationType>
105 template<
class _outputVectorType,
class _input1VectorType,
class _input2VectorType>
106 static inline void Run(_outputVectorType & outputVector,
107 const _input1VectorType & input1Vector,
108 const _input2VectorType & input2Vector) {
110 typedef _outputVectorType OutputVectorType;
111 typedef typename OutputVectorType::OwnerType OutputOwnerType;
112 typedef typename OutputOwnerType::pointer OutputPointerType;
113 typedef typename OutputOwnerType::size_type size_type;
114 typedef typename OutputOwnerType::stride_type stride_type;
116 typedef _input1VectorType Input1VectorType;
117 typedef typename Input1VectorType::OwnerType Input1OwnerType;
118 typedef typename Input1OwnerType::const_pointer Input1PointerType;
120 typedef _input2VectorType Input2VectorType;
121 typedef typename Input2VectorType::OwnerType Input2OwnerType;
122 typedef typename Input2OwnerType::const_pointer Input2PointerType;
125 const Input1OwnerType & input1Owner = input1Vector.Owner();
126 const Input2OwnerType & input2Owner = input2Vector.Owner();
127 OutputOwnerType & outputOwner = outputVector.Owner();
129 const size_type
size = outputOwner.size();
130 if (
size != input1Owner.size()) {
132 }
else if (
size != input2Owner.size()) {
137 const stride_type outputStride = outputOwner.stride();
138 const stride_type input1Stride = input1Owner.stride();
139 const stride_type input2Stride = input2Owner.stride();
141 if ((outputStride == 1) && (input1Stride == 1) && (input2Stride == 1)) {
145 OutputPointerType outputPointer = outputOwner.Pointer();
146 const OutputPointerType outputEnd = outputPointer +
size * outputStride;
148 Input1PointerType input1Pointer = input1Owner.Pointer();
149 Input2PointerType input2Pointer = input2Owner.Pointer();
152 outputPointer != outputEnd;
153 outputPointer += outputStride,
154 input1Pointer += input1Stride,
155 input2Pointer += input2Stride) {
156 *outputPointer = _elementOperationType::Operate(*input1Pointer, *input2Pointer);
182 template<
class _elementOperationType>
190 template<
class _inputOutputVectorType,
class _inputVectorType>
191 static void Run(_inputOutputVectorType & inputOutputVector,
192 const _inputVectorType & inputVector) {
194 typedef _inputOutputVectorType InputOutputVectorType;
195 typedef typename InputOutputVectorType::OwnerType InputOutputOwnerType;
196 typedef typename InputOutputOwnerType::pointer InputOutputPointerType;
197 typedef typename InputOutputOwnerType::size_type size_type;
198 typedef typename InputOutputOwnerType::stride_type stride_type;
200 typedef _inputVectorType InputVectorType;
201 typedef typename InputVectorType::OwnerType InputOwnerType;
202 typedef typename InputOwnerType::const_pointer InputPointerType;
205 const InputOwnerType & inputOwner = inputVector.Owner();
206 InputOutputOwnerType & inputOutputOwner = inputOutputVector.Owner();
208 const size_type
size = inputOutputOwner.size();
209 if (
size != inputOwner.size()) {
213 const stride_type inputOutputStride = inputOutputOwner.stride();
214 const stride_type inputStride = inputOwner.stride();
216 if ((inputOutputStride == 1) && (inputStride == 1)) {
220 InputOutputPointerType inputOutputPointer = inputOutputOwner.Pointer();
221 const InputOutputPointerType inputOutputEnd = inputOutputPointer +
size * inputOutputStride;
223 InputPointerType inputPointer = inputOwner.Pointer();
226 inputOutputPointer != inputOutputEnd;
227 inputOutputPointer += inputOutputStride,
228 inputPointer += inputStride) {
229 *inputOutputPointer = _elementOperationType::Operate(*inputOutputPointer, *inputPointer);
256 template<
class _elementOperationType>
264 template<
class _inputOutput1VectorType,
class _inputOutput2VectorType>
265 static void Run(_inputOutput1VectorType & inputOutput1Vector,
266 _inputOutput2VectorType & inputOutput2Vector) {
268 typedef _inputOutput1VectorType InputOutput1VectorType;
269 typedef typename InputOutput1VectorType::OwnerType InputOutput1OwnerType;
270 typedef typename InputOutput1OwnerType::pointer InputOutput1PointerType;
271 typedef typename InputOutput1OwnerType::size_type size_type;
272 typedef typename InputOutput1OwnerType::stride_type stride_type;
274 typedef _inputOutput2VectorType InputOutput2VectorType;
275 typedef typename InputOutput2VectorType::OwnerType InputOutput2OwnerType;
276 typedef typename InputOutput2OwnerType::pointer InputOutput2PointerType;
279 InputOutput1OwnerType & inputOutput1Owner = inputOutput1Vector.Owner();
280 InputOutput2OwnerType & inputOutput2Owner = inputOutput2Vector.Owner();
282 const size_type
size = inputOutput1Owner.size();
283 if (
size != inputOutput2Owner.size()) {
287 const stride_type inputOutput1Stride = inputOutput1Owner.stride();
288 const stride_type inputOutput2Stride = inputOutput2Owner.stride();
290 if ((inputOutput1Stride == 1) && (inputOutput2Stride == 1)) {
294 InputOutput1PointerType inputOutput1Pointer = inputOutput1Owner.Pointer();
295 const InputOutput1PointerType inputOutput1End = inputOutput1Pointer +
size * inputOutput1Stride;
297 InputOutput2PointerType inputOutput2Pointer = inputOutput2Owner.Pointer();
300 inputOutput1Pointer != inputOutput1End;
301 inputOutput1Pointer += inputOutput1Stride,
302 inputOutput2Pointer += inputOutput2Stride) {
303 _elementOperationType::Operate(*inputOutput1Pointer, *inputOutput2Pointer);
329 template<
class _elementOperationType>
338 template<
class _outputVectorType,
class _inputVectorType,
class _inputScalarType>
339 static inline void Run(_outputVectorType & outputVector,
340 const _inputVectorType & inputVector,
341 const _inputScalarType inputScalar) {
343 typedef _outputVectorType OutputVectorType;
344 typedef typename OutputVectorType::OwnerType OutputOwnerType;
345 typedef typename OutputOwnerType::pointer OutputPointerType;
346 typedef typename OutputOwnerType::size_type size_type;
347 typedef typename OutputOwnerType::stride_type stride_type;
349 typedef _inputVectorType InputVectorType;
350 typedef typename InputVectorType::OwnerType InputOwnerType;
351 typedef typename InputOwnerType::const_pointer InputPointerType;
354 const InputOwnerType & inputOwner = inputVector.Owner();
355 OutputOwnerType & outputOwner = outputVector.Owner();
357 const size_type
size = outputOwner.size();
358 if (
size != inputOwner.size()) {
362 const stride_type outputStride = outputOwner.stride();
363 const stride_type inputStride = inputOwner.stride();
365 if ((outputStride == 1) && (inputStride == 1)) {
369 OutputPointerType outputPointer = outputOwner.Pointer();
370 const OutputPointerType outputEnd = outputPointer +
size * outputStride;
372 InputPointerType inputPointer = inputOwner.Pointer();
375 outputPointer != outputEnd;
376 outputPointer += outputStride,
377 inputPointer += inputStride) {
378 *outputPointer = _elementOperationType::Operate(*inputPointer, inputScalar);
404 template<
class _elementOperationType>
413 template<
class _outputVectorType,
class _inputScalarType,
class _inputVectorType>
414 static inline void Run(_outputVectorType & outputVector,
415 const _inputScalarType inputScalar,
416 const _inputVectorType & inputVector) {
418 typedef _outputVectorType OutputVectorType;
419 typedef typename OutputVectorType::OwnerType OutputOwnerType;
420 typedef typename OutputOwnerType::pointer OutputPointerType;
421 typedef typename OutputOwnerType::size_type size_type;
422 typedef typename OutputOwnerType::stride_type stride_type;
424 typedef _inputVectorType InputVectorType;
425 typedef typename InputVectorType::OwnerType InputOwnerType;
426 typedef typename InputOwnerType::const_pointer InputPointerType;
429 const InputOwnerType & inputOwner = inputVector.Owner();
430 OutputOwnerType & outputOwner = outputVector.Owner();
432 const size_type
size = outputOwner.size();
433 if (
size != inputOwner.size()) {
437 const stride_type outputStride = outputOwner.stride();
438 const stride_type inputStride = inputOwner.stride();
440 if ((outputStride == 1) && (inputStride == 1)) {
444 OutputPointerType outputPointer = outputOwner.Pointer();
445 const OutputPointerType outputEnd = outputPointer +
size * outputStride;
447 InputPointerType inputPointer = inputOwner.Pointer();
450 outputPointer != outputEnd;
451 outputPointer += outputStride,
452 inputPointer += inputStride) {
453 *outputPointer = _elementOperationType::Operate(inputScalar, *inputPointer);
480 template<
class _elementOperationType>
488 template<
class _inputOutputVectorType,
class _inputScalarType>
489 static void Run(_inputOutputVectorType & inputOutputVector,
490 const _inputScalarType inputScalar) {
492 typedef _inputOutputVectorType InputOutputVectorType;
493 typedef typename InputOutputVectorType::OwnerType InputOutputOwnerType;
494 typedef typename InputOutputOwnerType::pointer InputOutputPointerType;
495 typedef typename InputOutputOwnerType::size_type size_type;
496 typedef typename InputOutputOwnerType::stride_type stride_type;
498 InputOutputOwnerType & inputOutputOwner = inputOutputVector.Owner();
499 const size_type
size = inputOutputOwner.size();
500 const stride_type inputOutputStride = inputOutputOwner.stride();
502 if (inputOutputStride == 1) {
505 InputOutputPointerType inputOutputPointer = inputOutputOwner.Pointer();
506 const InputOutputPointerType inputOutputEnd = inputOutputPointer +
size * inputOutputStride;
509 inputOutputPointer != inputOutputEnd;
510 inputOutputPointer += inputOutputStride) {
511 _elementOperationType::Operate(*inputOutputPointer, inputScalar);
536 template<
class _elementOperationType>
544 template<
class _outputVectorType,
class _inputVectorType>
545 static inline void Run(_outputVectorType & outputVector,
546 const _inputVectorType & inputVector) {
548 typedef _outputVectorType OutputVectorType;
549 typedef typename OutputVectorType::OwnerType OutputOwnerType;
550 typedef typename OutputOwnerType::pointer OutputPointerType;
551 typedef typename OutputOwnerType::size_type size_type;
552 typedef typename OutputOwnerType::stride_type stride_type;
554 typedef _inputVectorType InputVectorType;
555 typedef typename InputVectorType::OwnerType InputOwnerType;
556 typedef typename InputOwnerType::const_pointer InputPointerType;
559 const InputOwnerType & inputOwner = inputVector.Owner();
560 OutputOwnerType & outputOwner = outputVector.Owner();
562 const size_type
size = outputOwner.size();
563 if (
size != inputOwner.size()) {
568 const stride_type outputStride = outputOwner.stride();
569 const stride_type inputStride = inputOwner.stride();
571 if ((outputStride == 1) && (inputStride == 1)) {
575 OutputPointerType outputPointer = outputOwner.Pointer();
576 const OutputPointerType outputEnd = outputPointer +
size * outputStride;
578 InputPointerType inputPointer = inputOwner.Pointer();
581 outputPointer != outputEnd;
582 outputPointer += outputStride,
583 inputPointer += inputStride) {
584 *outputPointer = _elementOperationType::Operate(*inputPointer);
610 template<
class _elementOperationType>
617 template<
class _inputOutputVectorType>
618 static inline void Run(_inputOutputVectorType & inputOutputVector) {
620 typedef _inputOutputVectorType InputOutputVectorType;
621 typedef typename InputOutputVectorType::OwnerType InputOutputOwnerType;
622 typedef typename InputOutputOwnerType::pointer InputOutputPointerType;
623 typedef typename InputOutputOwnerType::size_type size_type;
624 typedef typename InputOutputOwnerType::stride_type stride_type;
626 InputOutputOwnerType & inputOutputOwner = inputOutputVector.Owner();
627 const size_type
size = inputOutputOwner.size();
628 const stride_type inputOutputStride = inputOutputOwner.stride();
630 if (inputOutputStride == 1) {
633 InputOutputPointerType inputOutputPointer = inputOutputOwner.Pointer();
634 const InputOutputPointerType inputOutputEnd = inputOutputPointer +
size * inputOutputStride;
637 inputOutputPointer != inputOutputEnd;
638 inputOutputPointer += inputOutputStride) {
639 _elementOperationType::Operate(*inputOutputPointer);
668 template<
class _incrementalOperationType,
class _elementOperationType>
671 typedef typename _incrementalOperationType::OutputType
OutputType;
676 template<
class _inputVectorType>
679 typedef _inputVectorType InputVectorType;
680 typedef typename InputVectorType::OwnerType InputOwnerType;
681 typedef typename InputOwnerType::const_pointer InputPointerType;
682 typedef typename InputOwnerType::size_type size_type;
683 typedef typename InputOwnerType::stride_type stride_type;
685 const InputOwnerType & inputOwner = inputVector.Owner();
686 const size_type
size = inputOwner.size();
687 const stride_type inputStride = inputOwner.stride();
689 if (inputStride == 1) {
692 OutputType incrementalResult = _incrementalOperationType::NeutralElement();
693 InputPointerType inputPointer = inputOwner.Pointer();
694 const InputPointerType inputEnd = inputPointer +
size * inputStride;
697 inputPointer != inputEnd;
698 inputPointer += inputStride) {
699 incrementalResult = _incrementalOperationType::Operate(incrementalResult,
700 _elementOperationType::Operate(*inputPointer));
702 return incrementalResult;
733 template<
class _incrementalOperationType,
class _elementOperationType>
736 typedef typename _incrementalOperationType::OutputType
OutputType;
745 template<
class _input1VectorType,
class _input2VectorType>
747 const _input2VectorType & input2Vector) {
749 typedef _input1VectorType Input1VectorType;
750 typedef typename Input1VectorType::OwnerType Input1OwnerType;
751 typedef typename Input1OwnerType::const_pointer Input1PointerType;
752 typedef typename Input1OwnerType::size_type size_type;
753 typedef typename Input1OwnerType::stride_type stride_type;
755 typedef _input2VectorType Input2VectorType;
756 typedef typename Input2VectorType::OwnerType Input2OwnerType;
757 typedef typename Input2OwnerType::const_pointer Input2PointerType;
760 const Input1OwnerType & input1Owner = input1Vector.Owner();
761 const Input2OwnerType & input2Owner = input2Vector.Owner();
763 const size_type
size = input1Owner.size();
764 if (
size != input2Owner.size()) {
768 const stride_type input1Stride = input1Owner.stride();
769 const stride_type input2Stride = input2Owner.stride();
771 if ((input1Stride == 1) && (input2Stride == 1)) {
775 OutputType incrementalResult = _incrementalOperationType::NeutralElement();
776 Input1PointerType input1Pointer = input1Owner.Pointer();
777 const Input1PointerType input1End = input1Pointer +
size * input1Stride;
779 Input2PointerType input2Pointer = input2Owner.Pointer();
782 input1Pointer != input1End;
783 input1Pointer += input1Stride,
784 input2Pointer += input2Stride) {
785 incrementalResult = _incrementalOperationType::Operate(incrementalResult,
786 _elementOperationType::Operate(*input1Pointer,
789 return incrementalResult;
793#if (CISST_OS != CISST_WINDOWS)
795 return _incrementalOperationType::NeutralElement();
824 template<
class _ioElementOperationType,
class _scalarVectorElementOperationType>
827 template<
class _ioVectorType,
class _inputScalarType,
class _inputVectorType>
828 static inline void Run(_ioVectorType & ioVector,
829 const _inputScalarType inputScalar,
const _inputVectorType & inputVector)
832 typedef _ioVectorType IoVectorType;
833 typedef typename IoVectorType::OwnerType IoOwnerType;
834 typedef typename IoOwnerType::pointer IoPointerType;
835 typedef typename IoOwnerType::size_type size_type;
836 typedef typename IoOwnerType::stride_type stride_type;
838 typedef _inputVectorType InputVectorType;
839 typedef typename InputVectorType::OwnerType InputOwnerType;
840 typedef typename InputOwnerType::const_pointer InputPointerType;
843 IoOwnerType & ioOwner = ioVector.Owner();
844 const InputOwnerType & inputOwner = inputVector.Owner();
846 const size_type
size = ioOwner.size();
847 if (
size != inputOwner.size()) {
851 const stride_type ioStride = ioOwner.stride();
852 const stride_type inputStride = inputOwner.stride();
854 if ((ioStride == 1) && (inputStride == 1)) {
856 ::Run(ioOwner, inputScalar, inputOwner);
858 IoPointerType ioPointer = ioOwner.Pointer();
859 const IoPointerType ioEnd = ioPointer +
size * ioStride;
861 InputPointerType inputPointer = inputOwner.Pointer();
865 ioPointer += ioStride,
866 inputPointer += inputStride) {
867 _ioElementOperationType::Operate(*ioPointer,
868 _scalarVectorElementOperationType::Operate(inputScalar, *inputPointer)
899 template<
class _ioElementOperationType,
class _vectorElementOperationType>
902 template<
class _ioVectorType,
class _input1VectorType,
class _input2VectorType>
903 static inline void Run(_ioVectorType & ioVector,
904 const _input1VectorType & input1Vector,
const _input2VectorType & input2Vector)
907 typedef _ioVectorType IoVectorType;
908 typedef typename IoVectorType::OwnerType IoOwnerType;
909 typedef typename IoOwnerType::pointer IoPointerType;
910 typedef typename IoOwnerType::size_type size_type;
911 typedef typename IoOwnerType::stride_type stride_type;
913 typedef _input1VectorType Input1VectorType;
914 typedef typename Input1VectorType::OwnerType Input1OwnerType;
915 typedef typename Input1OwnerType::const_pointer Input1PointerType;
917 typedef _input2VectorType Input2VectorType;
918 typedef typename Input2VectorType::OwnerType Input2OwnerType;
919 typedef typename Input2OwnerType::const_pointer Input2PointerType;
922 IoOwnerType & ioOwner = ioVector.Owner();
923 const Input1OwnerType & input1Owner = input1Vector.Owner();
924 const Input2OwnerType & input2Owner = input2Vector.Owner();
926 const size_type
size = ioOwner.size();
927 if (
size != input1Owner.size()) {
929 }
else if (
size != input2Owner.size()) {
933 const stride_type ioStride = ioOwner.stride();
934 const stride_type input1Stride = input1Owner.stride();
935 const stride_type input2Stride = input2Owner.stride();
937 if ((ioStride == 1) && (input1Stride == 1) && (input2Stride == 1)) {
939 ::Run(ioOwner, input1Owner, input2Owner);
941 IoPointerType ioPointer = ioOwner.Pointer();
942 const IoPointerType ioEnd = ioPointer +
size * ioStride;
944 Input1PointerType input1Pointer = input1Owner.Pointer();
945 Input2PointerType input2Pointer = input2Owner.Pointer();
949 ioPointer += ioStride,
950 input1Pointer += input1Stride,
951 input2Pointer += input2Stride) {
952 _ioElementOperationType::Operate(*ioPointer,
953 _vectorElementOperationType::Operate(*input1Pointer, *input2Pointer)
986 template<
class _incrementalOperationType,
class _elementOperationType>
989 typedef typename _incrementalOperationType::OutputType
OutputType;
998 template<
class _inputVectorType,
class _inputScalarType>
1000 const _inputScalarType & inputScalar) {
1002 typedef _inputVectorType InputVectorType;
1003 typedef typename InputVectorType::OwnerType InputOwnerType;
1004 typedef typename InputOwnerType::const_pointer InputPointerType;
1005 typedef typename InputOwnerType::size_type size_type;
1006 typedef typename InputOwnerType::stride_type stride_type;
1008 const InputOwnerType & inputOwner = inputVector.Owner();
1009 const size_type
size = inputOwner.size();
1010 OutputType incrementalResult = _incrementalOperationType::NeutralElement();
1012 const stride_type inputStride = inputOwner.stride();
1014 if (inputStride == 1) {
1016 ::Run(inputOwner, inputScalar);
1018 InputPointerType inputPointer = inputOwner.Pointer();
1019 const InputPointerType inputEnd = inputPointer +
size * inputStride;
1022 inputPointer != inputEnd;
1023 inputPointer += inputStride) {
1024 incrementalResult = _incrementalOperationType::Operate(incrementalResult,
1025 _elementOperationType::Operate(*inputPointer, inputScalar));
1027 return incrementalResult;
1042 template<
class _inputVectorType>
1043 static void Run(
const _inputVectorType & inputVector,
typename _inputVectorType::value_type & minValue,
1044 typename _inputVectorType::value_type & maxValue)
1046 typedef _inputVectorType InputVectorType;
1047 typedef typename InputVectorType::OwnerType InputOwnerType;
1048 typedef typename InputOwnerType::const_pointer InputPointerType;
1049 typedef typename InputOwnerType::size_type size_type;
1050 typedef typename InputOwnerType::stride_type stride_type;
1051 typedef typename InputOwnerType::value_type
value_type;
1053 const InputOwnerType & inputOwner = inputVector.Owner();
1054 InputPointerType inputPointer = inputOwner.Pointer();
1056 if (inputPointer == 0)
1059 const stride_type inputStride = inputOwner.stride();
1060 if (inputStride == 1) {
1063 const size_type
size = inputOwner.size();
1064 const InputPointerType inputEnd = inputPointer +
size * inputStride;
1067 maxElement = minElement = *inputPointer;
1070 inputPointer != inputEnd;
1071 inputPointer += inputStride)
1074 if (element < minElement) {
1075 minElement = element;
1077 else if (maxElement < element) {
1078 maxElement = element;
1082 minValue = minElement;
1083 maxValue = maxElement;
1091 template <
class _outputVectorType,
class _inputVectorType,
class _indexVectorType>
1092 static void Run(_outputVectorType & output,
1093 const _inputVectorType & input,
1094 const _indexVectorType & index)
1097 typedef _outputVectorType OutputVectorType;
1098 typedef typename OutputVectorType::pointer OutputPointerType;
1099 typedef typename OutputVectorType::size_type size_type;
1100 typedef typename OutputVectorType::stride_type stride_type;
1102 typedef _inputVectorType InputVectorType;
1103 typedef typename InputVectorType::const_pointer InputPointerType;
1105 typedef _indexVectorType IndexVectorType;
1106 typedef typename IndexVectorType::const_pointer IndexPointerType;
1108 const size_type
size = output.size();
1109 if (
size != index.size()) {
1113 const stride_type outputStride = output.stride();
1114 const stride_type indexStride = index.stride();
1116 OutputPointerType outputPointer = output.Pointer();
1117 const OutputPointerType outputEnd = outputPointer +
size * outputStride;
1119 IndexPointerType indexPointer = index.Pointer();
1120 InputPointerType inputPointer;
1123 outputPointer != outputEnd;
1124 outputPointer += outputStride,
1125 indexPointer += indexStride) {
1126 inputPointer = input.Pointer(*indexPointer);
1127 *outputPointer = *inputPointer;
Implement operation of the form for compact containers.
Definition vctDynamicCompactLoopEngines.h:546
static void Run(_inputOutputOwnerType &inputOutputOwner, const _inputOwnerType &inputOwner)
Definition vctDynamicCompactLoopEngines.h:121
static void Run(_inputOutput1OwnerType &inputOutput1Owner, _inputOutput2OwnerType &inputOutput2Owner)
Definition vctDynamicCompactLoopEngines.h:163
static void Run(_inputOutputOwnerType &inputOutputOwner)
Definition vctDynamicCompactLoopEngines.h:367
Implement operation of the form for compact containers.
Definition vctDynamicCompactLoopEngines.h:497
static void Run(_inputOutputOwnerType &inputOutputOwner, const _inputScalarType inputScalar)
Definition vctDynamicCompactLoopEngines.h:289
static void Run(_outputOwnerType &outputOwner, const _input1OwnerType &input1Owner, const _input2OwnerType &input2Owner)
Definition vctDynamicCompactLoopEngines.h:75
static void Run(_outputOwnerType &outputOwner, const _inputOwnerType &inputOwner)
Definition vctDynamicCompactLoopEngines.h:325
static void Run(_outputOwnerType &outputOwner, const _inputOwnerType &inputOwner, const _inputScalarType inputScalar)
Definition vctDynamicCompactLoopEngines.h:204
static void Run(_outputOwnerType &outputOwner, const _inputScalarType inputScalar, const _inputOwnerType &inputOwner)
Definition vctDynamicCompactLoopEngines.h:246
static void Run(const _inputOwnerType &inputOwner, typename _inputOwnerType::value_type &minValue, typename _inputOwnerType::value_type &maxValue)
Definition vctDynamicCompactLoopEngines.h:630
static OutputType Run(const _input1OwnerType &input1Owner, const _input2OwnerType &input2Owner)
Definition vctDynamicCompactLoopEngines.h:450
static OutputType Run(const _inputOwnerType &inputOwner)
Definition vctDynamicCompactLoopEngines.h:406
Implement operation of the form for compact containers.
Definition vctDynamicCompactLoopEngines.h:598
Definition vctDynamicVectorLoopEngines.h:1032
static void Run(const _inputVectorType &inputVector, typename _inputVectorType::value_type &minValue, typename _inputVectorType::value_type &maxValue)
Definition vctDynamicVectorLoopEngines.h:1043
Definition vctDynamicVectorLoopEngines.h:1089
static void Run(_outputVectorType &output, const _inputVectorType &input, const _indexVectorType &index)
Definition vctDynamicVectorLoopEngines.h:1092
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:669
_incrementalOperationType::OutputType OutputType
Definition vctDynamicVectorLoopEngines.h:671
static OutputType Run(const _inputVectorType &inputVector)
Definition vctDynamicVectorLoopEngines.h:677
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:987
_incrementalOperationType::OutputType OutputType
Definition vctDynamicVectorLoopEngines.h:989
static OutputType Run(const _inputVectorType &inputVector, const _inputScalarType &inputScalar)
Definition vctDynamicVectorLoopEngines.h:999
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:734
static OutputType Run(const _input1VectorType &input1Vector, const _input2VectorType &input2Vector)
Definition vctDynamicVectorLoopEngines.h:746
_incrementalOperationType::OutputType OutputType
Definition vctDynamicVectorLoopEngines.h:736
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:611
static void Run(_inputOutputVectorType &inputOutputVector)
Definition vctDynamicVectorLoopEngines.h:618
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:481
static void Run(_inputOutputVectorType &inputOutputVector, const _inputScalarType inputScalar)
Definition vctDynamicVectorLoopEngines.h:489
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:825
static void Run(_ioVectorType &ioVector, const _inputScalarType inputScalar, const _inputVectorType &inputVector)
Definition vctDynamicVectorLoopEngines.h:828
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:183
static void Run(_inputOutputVectorType &inputOutputVector, const _inputVectorType &inputVector)
Definition vctDynamicVectorLoopEngines.h:191
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:900
static void Run(_ioVectorType &ioVector, const _input1VectorType &input1Vector, const _input2VectorType &input2Vector)
Definition vctDynamicVectorLoopEngines.h:903
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:257
static void Run(_inputOutput1VectorType &inputOutput1Vector, _inputOutput2VectorType &inputOutput2Vector)
Definition vctDynamicVectorLoopEngines.h:265
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:405
static void Run(_outputVectorType &outputVector, const _inputScalarType inputScalar, const _inputVectorType &inputVector)
Definition vctDynamicVectorLoopEngines.h:414
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:537
static void Run(_outputVectorType &outputVector, const _inputVectorType &inputVector)
Definition vctDynamicVectorLoopEngines.h:545
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:330
static void Run(_outputVectorType &outputVector, const _inputVectorType &inputVector, const _inputScalarType inputScalar)
Definition vctDynamicVectorLoopEngines.h:339
Implement operation of the form for dynamic vectors.
Definition vctDynamicVectorLoopEngines.h:98
static void Run(_outputVectorType &outputVector, const _input1VectorType &input1Vector, const _input2VectorType &input2Vector)
Definition vctDynamicVectorLoopEngines.h:106
Container class for the vector loop based engines.
Definition vctDynamicVectorLoopEngines.h:64
static void ThrowException(const size_t expected, const size_t received) CISST_THROW(std
Definition vctDynamicVectorLoopEngines.h:70
Portability across compilers and operating systems tools.
#define CISST_THROW(exceptionParameter)
Somewhat portable compilation warning message. This works with very recent versions of gcc (4....
Definition cmnPortability.h:559
Declaration of the template function cmnThrow.
void cmnThrow(const _exceptionType &except, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_ERROR)
Definition cmnThrow.h:76
Declaration of vctDynamicCompactLoopEngines.
size_type size(void) const
Definition vctDynamicConstMatrixBase.h:228