22 #ifndef _vctDynamicVectorLoopEngines_h
23 #define _vctDynamicVectorLoopEngines_h
73 cmnThrow(std::runtime_error(
"vctDynamicVectorLoopEngines: Sizes of vectors don't match"));
96 template<
class _elementOperationType>
104 template<
class _outputVectorType,
class _input1VectorType,
class _input2VectorType>
105 static inline void Run(_outputVectorType & outputVector,
106 const _input1VectorType & input1Vector,
107 const _input2VectorType & input2Vector) {
109 typedef _outputVectorType OutputVectorType;
110 typedef typename OutputVectorType::OwnerType OutputOwnerType;
111 typedef typename OutputOwnerType::pointer OutputPointerType;
115 typedef _input1VectorType Input1VectorType;
116 typedef typename Input1VectorType::OwnerType Input1OwnerType;
117 typedef typename Input1OwnerType::const_pointer Input1PointerType;
119 typedef _input2VectorType Input2VectorType;
120 typedef typename Input2VectorType::OwnerType Input2OwnerType;
121 typedef typename Input2OwnerType::const_pointer Input2PointerType;
124 const Input1OwnerType & input1Owner = input1Vector.Owner();
125 const Input2OwnerType & input2Owner = input2Vector.Owner();
126 OutputOwnerType & outputOwner = outputVector.Owner();
128 const size_type size = outputOwner.size();
129 if ((size != input1Owner.size())
130 || (size != input2Owner.size())) {
135 const stride_type outputStride = outputOwner.stride();
136 const stride_type input1Stride = input1Owner.stride();
137 const stride_type input2Stride = input2Owner.stride();
139 if ((outputStride == 1) && (input1Stride == 1) && (input2Stride == 1)) {
143 OutputPointerType outputPointer = outputOwner.Pointer();
144 const OutputPointerType outputEnd = outputPointer + size * outputStride;
146 Input1PointerType input1Pointer = input1Owner.Pointer();
147 Input2PointerType input2Pointer = input2Owner.Pointer();
150 outputPointer != outputEnd;
151 outputPointer += outputStride,
152 input1Pointer += input1Stride,
153 input2Pointer += input2Stride) {
154 *outputPointer = _elementOperationType::Operate(*input1Pointer, *input2Pointer);
180 template<
class _elementOperationType>
188 template<
class _inputOutputVectorType,
class _inputVectorType>
189 static void Run(_inputOutputVectorType & inputOutputVector,
190 const _inputVectorType & inputVector) {
192 typedef _inputOutputVectorType InputOutputVectorType;
193 typedef typename InputOutputVectorType::OwnerType InputOutputOwnerType;
194 typedef typename InputOutputOwnerType::pointer InputOutputPointerType;
198 typedef _inputVectorType InputVectorType;
199 typedef typename InputVectorType::OwnerType InputOwnerType;
200 typedef typename InputOwnerType::const_pointer InputPointerType;
203 const InputOwnerType & inputOwner = inputVector.Owner();
204 InputOutputOwnerType & inputOutputOwner = inputOutputVector.Owner();
206 const size_type size = inputOutputOwner.size();
207 if (size != inputOwner.size()) {
211 const stride_type inputOutputStride = inputOutputOwner.stride();
212 const stride_type inputStride = inputOwner.stride();
214 if ((inputOutputStride == 1) && (inputStride == 1)) {
218 InputOutputPointerType inputOutputPointer = inputOutputOwner.Pointer();
219 const InputOutputPointerType inputOutputEnd = inputOutputPointer + size * inputOutputStride;
221 InputPointerType inputPointer = inputOwner.Pointer();
224 inputOutputPointer != inputOutputEnd;
225 inputOutputPointer += inputOutputStride,
226 inputPointer += inputStride) {
227 *inputOutputPointer = _elementOperationType::Operate(*inputOutputPointer, *inputPointer);
254 template<
class _elementOperationType>
262 template<
class _inputOutput1VectorType,
class _inputOutput2VectorType>
263 static void Run(_inputOutput1VectorType & inputOutput1Vector,
264 _inputOutput2VectorType & inputOutput2Vector) {
266 typedef _inputOutput1VectorType InputOutput1VectorType;
267 typedef typename InputOutput1VectorType::OwnerType InputOutput1OwnerType;
268 typedef typename InputOutput1OwnerType::pointer InputOutput1PointerType;
272 typedef _inputOutput2VectorType InputOutput2VectorType;
273 typedef typename InputOutput2VectorType::OwnerType InputOutput2OwnerType;
274 typedef typename InputOutput2OwnerType::pointer InputOutput2PointerType;
277 InputOutput1OwnerType & inputOutput1Owner = inputOutput1Vector.Owner();
278 InputOutput2OwnerType & inputOutput2Owner = inputOutput2Vector.Owner();
280 const size_type size = inputOutput1Owner.size();
281 if (size != inputOutput2Owner.size()) {
285 const stride_type inputOutput1Stride = inputOutput1Owner.stride();
286 const stride_type inputOutput2Stride = inputOutput2Owner.stride();
288 if ((inputOutput1Stride == 1) && (inputOutput2Stride == 1)) {
292 InputOutput1PointerType inputOutput1Pointer = inputOutput1Owner.Pointer();
293 const InputOutput1PointerType inputOutput1End = inputOutput1Pointer + size * inputOutput1Stride;
295 InputOutput2PointerType inputOutput2Pointer = inputOutput2Owner.Pointer();
298 inputOutput1Pointer != inputOutput1End;
299 inputOutput1Pointer += inputOutput1Stride,
300 inputOutput2Pointer += inputOutput2Stride) {
301 _elementOperationType::Operate(*inputOutput1Pointer, *inputOutput2Pointer);
327 template<
class _elementOperationType>
336 template<
class _outputVectorType,
class _inputVectorType,
class _inputScalarType>
337 static inline void Run(_outputVectorType & outputVector,
338 const _inputVectorType & inputVector,
339 const _inputScalarType inputScalar) {
341 typedef _outputVectorType OutputVectorType;
342 typedef typename OutputVectorType::OwnerType OutputOwnerType;
343 typedef typename OutputOwnerType::pointer OutputPointerType;
347 typedef _inputVectorType InputVectorType;
348 typedef typename InputVectorType::OwnerType InputOwnerType;
349 typedef typename InputOwnerType::const_pointer InputPointerType;
352 const InputOwnerType & inputOwner = inputVector.Owner();
353 OutputOwnerType & outputOwner = outputVector.Owner();
355 const size_type size = outputOwner.size();
356 if (size != inputOwner.size()) {
360 const stride_type outputStride = outputOwner.stride();
361 const stride_type inputStride = inputOwner.stride();
363 if ((outputStride == 1) && (inputStride == 1)) {
367 OutputPointerType outputPointer = outputOwner.Pointer();
368 const OutputPointerType outputEnd = outputPointer + size * outputStride;
370 InputPointerType inputPointer = inputOwner.Pointer();
373 outputPointer != outputEnd;
374 outputPointer += outputStride,
375 inputPointer += inputStride) {
376 *outputPointer = _elementOperationType::Operate(*inputPointer, inputScalar);
402 template<
class _elementOperationType>
411 template<
class _outputVectorType,
class _inputScalarType,
class _inputVectorType>
412 static inline void Run(_outputVectorType & outputVector,
413 const _inputScalarType inputScalar,
414 const _inputVectorType & inputVector) {
416 typedef _outputVectorType OutputVectorType;
417 typedef typename OutputVectorType::OwnerType OutputOwnerType;
418 typedef typename OutputOwnerType::pointer OutputPointerType;
422 typedef _inputVectorType InputVectorType;
423 typedef typename InputVectorType::OwnerType InputOwnerType;
424 typedef typename InputOwnerType::const_pointer InputPointerType;
427 const InputOwnerType & inputOwner = inputVector.Owner();
428 OutputOwnerType & outputOwner = outputVector.Owner();
430 const size_type size = outputOwner.size();
431 if (size != inputOwner.size()) {
435 const stride_type outputStride = outputOwner.stride();
436 const stride_type inputStride = inputOwner.stride();
438 if ((outputStride == 1) && (inputStride == 1)) {
442 OutputPointerType outputPointer = outputOwner.Pointer();
443 const OutputPointerType outputEnd = outputPointer + size * outputStride;
445 InputPointerType inputPointer = inputOwner.Pointer();
448 outputPointer != outputEnd;
449 outputPointer += outputStride,
450 inputPointer += inputStride) {
451 *outputPointer = _elementOperationType::Operate(inputScalar, *inputPointer);
478 template<
class _elementOperationType>
486 template<
class _inputOutputVectorType,
class _inputScalarType>
487 static void Run(_inputOutputVectorType & inputOutputVector,
488 const _inputScalarType inputScalar) {
490 typedef _inputOutputVectorType InputOutputVectorType;
491 typedef typename InputOutputVectorType::OwnerType InputOutputOwnerType;
492 typedef typename InputOutputOwnerType::pointer InputOutputPointerType;
496 InputOutputOwnerType & inputOutputOwner = inputOutputVector.Owner();
497 const size_type size = inputOutputOwner.size();
498 const stride_type inputOutputStride = inputOutputOwner.stride();
500 if (inputOutputStride == 1) {
503 InputOutputPointerType inputOutputPointer = inputOutputOwner.Pointer();
504 const InputOutputPointerType inputOutputEnd = inputOutputPointer + size * inputOutputStride;
507 inputOutputPointer != inputOutputEnd;
508 inputOutputPointer += inputOutputStride) {
509 _elementOperationType::Operate(*inputOutputPointer, inputScalar);
534 template<
class _elementOperationType>
542 template<
class _outputVectorType,
class _inputVectorType>
543 static inline void Run(_outputVectorType & outputVector,
544 const _inputVectorType & inputVector) {
546 typedef _outputVectorType OutputVectorType;
547 typedef typename OutputVectorType::OwnerType OutputOwnerType;
548 typedef typename OutputOwnerType::pointer OutputPointerType;
552 typedef _inputVectorType InputVectorType;
553 typedef typename InputVectorType::OwnerType InputOwnerType;
554 typedef typename InputOwnerType::const_pointer InputPointerType;
557 const InputOwnerType & inputOwner = inputVector.Owner();
558 OutputOwnerType & outputOwner = outputVector.Owner();
560 const size_type size = outputOwner.size();
561 if (size != inputOwner.size()) {
566 const stride_type outputStride = outputOwner.stride();
567 const stride_type inputStride = inputOwner.stride();
569 if ((outputStride == 1) && (inputStride == 1)) {
573 OutputPointerType outputPointer = outputOwner.Pointer();
574 const OutputPointerType outputEnd = outputPointer + size * outputStride;
576 InputPointerType inputPointer = inputOwner.Pointer();
579 outputPointer != outputEnd;
580 outputPointer += outputStride,
581 inputPointer += inputStride) {
582 *outputPointer = _elementOperationType::Operate(*inputPointer);
608 template<
class _elementOperationType>
615 template<
class _inputOutputVectorType>
616 static inline void Run(_inputOutputVectorType & inputOutputVector) {
618 typedef _inputOutputVectorType InputOutputVectorType;
619 typedef typename InputOutputVectorType::OwnerType InputOutputOwnerType;
620 typedef typename InputOutputOwnerType::pointer InputOutputPointerType;
624 InputOutputOwnerType & inputOutputOwner = inputOutputVector.Owner();
625 const size_type size = inputOutputOwner.size();
626 const stride_type inputOutputStride = inputOutputOwner.stride();
628 if (inputOutputStride == 1) {
631 InputOutputPointerType inputOutputPointer = inputOutputOwner.Pointer();
632 const InputOutputPointerType inputOutputEnd = inputOutputPointer + size * inputOutputStride;
635 inputOutputPointer != inputOutputEnd;
636 inputOutputPointer += inputOutputStride) {
637 _elementOperationType::Operate(*inputOutputPointer);
666 template<
class _incrementalOperationType,
class _elementOperationType>
669 typedef typename _incrementalOperationType::OutputType
OutputType;
674 template<
class _inputVectorType>
677 typedef _inputVectorType InputVectorType;
678 typedef typename InputVectorType::OwnerType InputOwnerType;
679 typedef typename InputOwnerType::const_pointer InputPointerType;
683 const InputOwnerType & inputOwner = inputVector.Owner();
684 const size_type size = inputOwner.size();
685 const stride_type inputStride = inputOwner.stride();
687 if (inputStride == 1) {
690 OutputType incrementalResult = _incrementalOperationType::NeutralElement();
691 InputPointerType inputPointer = inputOwner.Pointer();
692 const InputPointerType inputEnd = inputPointer + size * inputStride;
695 inputPointer != inputEnd;
696 inputPointer += inputStride) {
697 incrementalResult = _incrementalOperationType::Operate(incrementalResult,
698 _elementOperationType::Operate(*inputPointer));
700 return incrementalResult;
731 template<
class _incrementalOperationType,
class _elementOperationType>
734 typedef typename _incrementalOperationType::OutputType
OutputType;
743 template<
class _input1VectorType,
class _input2VectorType>
745 const _input2VectorType & input2Vector) {
747 typedef _input1VectorType Input1VectorType;
748 typedef typename Input1VectorType::OwnerType Input1OwnerType;
749 typedef typename Input1OwnerType::const_pointer Input1PointerType;
753 typedef _input2VectorType Input2VectorType;
754 typedef typename Input2VectorType::OwnerType Input2OwnerType;
755 typedef typename Input2OwnerType::const_pointer Input2PointerType;
758 const Input1OwnerType & input1Owner = input1Vector.Owner();
759 const Input2OwnerType & input2Owner = input2Vector.Owner();
761 const size_type size = input1Owner.size();
762 if (size != input2Owner.size()) {
766 const stride_type input1Stride = input1Owner.stride();
767 const stride_type input2Stride = input2Owner.stride();
769 if ((input1Stride == 1) && (input2Stride == 1)) {
773 OutputType incrementalResult = _incrementalOperationType::NeutralElement();
774 Input1PointerType input1Pointer = input1Owner.Pointer();
775 const Input1PointerType input1End = input1Pointer + size * input1Stride;
777 Input2PointerType input2Pointer = input2Owner.Pointer();
780 input1Pointer != input1End;
781 input1Pointer += input1Stride,
782 input2Pointer += input2Stride) {
783 incrementalResult = _incrementalOperationType::Operate(incrementalResult,
784 _elementOperationType::Operate(*input1Pointer,
787 return incrementalResult;
791 return _incrementalOperationType::NeutralElement();
819 template<
class _ioElementOperationType,
class _scalarVectorElementOperationType>
822 template<
class _ioVectorType,
class _inputScalarType,
class _inputVectorType>
823 static inline void Run(_ioVectorType & ioVector,
824 const _inputScalarType inputScalar,
const _inputVectorType & inputVector)
827 typedef _ioVectorType IoVectorType;
828 typedef typename IoVectorType::OwnerType IoOwnerType;
829 typedef typename IoOwnerType::pointer IoPointerType;
833 typedef _inputVectorType InputVectorType;
834 typedef typename InputVectorType::OwnerType InputOwnerType;
835 typedef typename InputOwnerType::const_pointer InputPointerType;
838 IoOwnerType & ioOwner = ioVector.Owner();
839 const InputOwnerType & inputOwner = inputVector.Owner();
841 const size_type size = ioOwner.size();
842 if (size != inputOwner.size()) {
846 const stride_type ioStride = ioOwner.stride();
847 const stride_type inputStride = inputOwner.stride();
849 if ((ioStride == 1) && (inputStride == 1)) {
851 ::Run(ioOwner, inputScalar, inputOwner);
853 IoPointerType ioPointer = ioOwner.Pointer();
854 const IoPointerType ioEnd = ioPointer + size * ioStride;
856 InputPointerType inputPointer = inputOwner.Pointer();
860 ioPointer += ioStride,
861 inputPointer += inputStride) {
862 _ioElementOperationType::Operate(*ioPointer,
863 _scalarVectorElementOperationType::Operate(inputScalar, *inputPointer)
894 template<
class _ioElementOperationType,
class _vectorElementOperationType>
897 template<
class _ioVectorType,
class _input1VectorType,
class _input2VectorType>
898 static inline void Run(_ioVectorType & ioVector,
899 const _input1VectorType & input1Vector,
const _input2VectorType & input2Vector)
902 typedef _ioVectorType IoVectorType;
903 typedef typename IoVectorType::OwnerType IoOwnerType;
904 typedef typename IoOwnerType::pointer IoPointerType;
908 typedef _input1VectorType Input1VectorType;
909 typedef typename Input1VectorType::OwnerType Input1OwnerType;
910 typedef typename Input1OwnerType::const_pointer Input1PointerType;
912 typedef _input2VectorType Input2VectorType;
913 typedef typename Input2VectorType::OwnerType Input2OwnerType;
914 typedef typename Input2OwnerType::const_pointer Input2PointerType;
917 IoOwnerType & ioOwner = ioVector.Owner();
918 const Input1OwnerType & input1Owner = input1Vector.Owner();
919 const Input2OwnerType & input2Owner = input2Vector.Owner();
921 const size_type size = ioOwner.size();
922 if ((size != input1Owner.size())
923 || (size != input2Owner.size())) {
927 const stride_type ioStride = ioOwner.stride();
928 const stride_type input1Stride = input1Owner.stride();
929 const stride_type input2Stride = input2Owner.stride();
931 if ((ioStride == 1) && (input1Stride == 1) && (input2Stride == 1)) {
933 ::Run(ioOwner, input1Owner, input2Owner);
935 IoPointerType ioPointer = ioOwner.Pointer();
936 const IoPointerType ioEnd = ioPointer + size * ioStride;
938 Input1PointerType input1Pointer = input1Owner.Pointer();
939 Input2PointerType input2Pointer = input2Owner.Pointer();
943 ioPointer += ioStride,
944 input1Pointer += input1Stride,
945 input2Pointer += input2Stride) {
946 _ioElementOperationType::Operate(*ioPointer,
947 _vectorElementOperationType::Operate(*input1Pointer, *input2Pointer)
980 template<
class _incrementalOperationType,
class _elementOperationType>
983 typedef typename _incrementalOperationType::OutputType
OutputType;
992 template<
class _inputVectorType,
class _inputScalarType>
994 const _inputScalarType & inputScalar) {
996 typedef _inputVectorType InputVectorType;
997 typedef typename InputVectorType::OwnerType InputOwnerType;
998 typedef typename InputOwnerType::const_pointer InputPointerType;
1002 const InputOwnerType & inputOwner = inputVector.Owner();
1003 const size_type size = inputOwner.size();
1004 OutputType incrementalResult = _incrementalOperationType::NeutralElement();
1006 const stride_type inputStride = inputOwner.stride();
1008 if (inputStride == 1) {
1010 ::Run(inputOwner, inputScalar);
1012 InputPointerType inputPointer = inputOwner.Pointer();
1013 const InputPointerType inputEnd = inputPointer + size * inputStride;
1016 inputPointer != inputEnd;
1017 inputPointer += inputStride) {
1018 incrementalResult = _incrementalOperationType::Operate(incrementalResult,
1019 _elementOperationType::Operate(*inputPointer, inputScalar));
1021 return incrementalResult;
1036 template<
class _inputVectorType>
1037 static void Run(
const _inputVectorType & inputVector,
typename _inputVectorType::value_type & minValue,
1038 typename _inputVectorType::value_type & maxValue)
1040 typedef _inputVectorType InputVectorType;
1041 typedef typename InputVectorType::OwnerType InputOwnerType;
1042 typedef typename InputOwnerType::const_pointer InputPointerType;
1045 typedef typename InputOwnerType::value_type value_type;
1047 const InputOwnerType & inputOwner = inputVector.Owner();
1048 InputPointerType inputPointer = inputOwner.Pointer();
1050 if (inputPointer == 0)
1053 const stride_type inputStride = inputOwner.stride();
1054 if (inputStride == 1) {
1057 const size_type size = inputOwner.size();
1058 const InputPointerType inputEnd = inputPointer + size * inputStride;
1060 value_type minElement, maxElement;
1061 maxElement = minElement = *inputPointer;
1064 inputPointer != inputEnd;
1065 inputPointer += inputStride)
1067 const value_type element = *inputPointer;
1068 if (element < minElement) {
1069 minElement = element;
1071 else if (maxElement < element) {
1072 maxElement = element;
1076 minValue = minElement;
1077 maxValue = maxElement;
1085 template <
class _outputVectorType,
class _inputVectorType,
class _indexVectorType>
1086 static void Run(_outputVectorType & output,
1087 const _inputVectorType & input,
1088 const _indexVectorType & index)
1091 typedef _outputVectorType OutputVectorType;
1092 typedef typename OutputVectorType::pointer OutputPointerType;
1096 typedef _inputVectorType InputVectorType;
1097 typedef typename InputVectorType::const_pointer InputPointerType;
1099 typedef _indexVectorType IndexVectorType;
1100 typedef typename IndexVectorType::const_pointer IndexPointerType;
1102 const size_type size = output.size();
1103 if (size != index.size()) {
1107 const stride_type outputStride = output.stride();
1108 const stride_type indexStride = index.stride();
1110 OutputPointerType outputPointer = output.Pointer();
1111 const OutputPointerType outputEnd = outputPointer + size * outputStride;
1113 IndexPointerType indexPointer = index.Pointer();
1114 InputPointerType inputPointer;
1117 outputPointer != outputEnd;
1118 outputPointer += outputStride,
1119 indexPointer += indexStride) {
1120 inputPointer = input.Pointer(*indexPointer);
1121 *outputPointer = *inputPointer;
1130 #endif // _vctDynamicVectorLoopEngines_h
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:667
static OutputType Run(const _inputVectorType &inputVector, const _inputScalarType &inputScalar)
Definition: vctDynamicVectorLoopEngines.h:993
static OutputType Run(const _inputOwnerType &inputOwner)
Definition: vctDynamicCompactLoopEngines.h:406
static void Run(_inputOutputOwnerType &inputOutputOwner)
Definition: vctDynamicCompactLoopEngines.h:367
static void Run(_outputOwnerType &outputOwner, const _inputOwnerType &inputOwner)
Definition: vctDynamicCompactLoopEngines.h:325
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:328
Definition: vctDynamicVectorLoopEngines.h:1026
static void Run(_outputVectorType &outputVector, const _inputVectorType &inputVector, const _inputScalarType inputScalar)
Definition: vctDynamicVectorLoopEngines.h:337
static void Run(_outputVectorType &outputVector, const _input1VectorType &input1Vector, const _input2VectorType &input2Vector)
Definition: vctDynamicVectorLoopEngines.h:105
Portability across compilers and operating systems tools.
static void Run(_outputOwnerType &outputOwner, const _inputScalarType inputScalar, const _inputOwnerType &inputOwner)
Definition: vctDynamicCompactLoopEngines.h:246
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:479
static void Run(_inputOutputOwnerType &inputOutputOwner, const _inputScalarType inputScalar)
Definition: vctDynamicCompactLoopEngines.h:289
_incrementalOperationType::OutputType OutputType
Definition: vctDynamicVectorLoopEngines.h:983
_incrementalOperationType::OutputType OutputType
Definition: vctDynamicVectorLoopEngines.h:669
static OutputType Run(const _input1VectorType &input1Vector, const _input2VectorType &input2Vector)
Definition: vctDynamicVectorLoopEngines.h:744
static OutputType Run(const _input1OwnerType &input1Owner, const _input2OwnerType &input2Owner)
Definition: vctDynamicCompactLoopEngines.h:450
static void Run(_inputOutputOwnerType &inputOutputOwner, const _inputOwnerType &inputOwner)
Definition: vctDynamicCompactLoopEngines.h:121
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:609
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:535
static void Run(_ioVectorType &ioVector, const _input1VectorType &input1Vector, const _input2VectorType &input2Vector)
Definition: vctDynamicVectorLoopEngines.h:898
size_t size_type
Definition: vctContainerTraits.h:35
Declaration of vctDynamicCompactLoopEngines.
static void Run(_outputVectorType &outputVector, const _inputScalarType inputScalar, const _inputVectorType &inputVector)
Definition: vctDynamicVectorLoopEngines.h:412
static void Run(_inputOutput1OwnerType &inputOutput1Owner, _inputOutput2OwnerType &inputOutput2Owner)
Definition: vctDynamicCompactLoopEngines.h:163
static void Run(_inputOutputVectorType &inputOutputVector)
Definition: vctDynamicVectorLoopEngines.h:616
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:895
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:820
static void Run(_ioOwnerType &ioOwner, const _input1OwnerType &input1Owner, const _input2OwnerType &input2Owner)
Definition: vctDynamicCompactLoopEngines.h:549
static OutputType Run(const _inputVectorType &inputVector)
Definition: vctDynamicVectorLoopEngines.h:675
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:255
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:981
static void Run(_inputOutput1VectorType &inputOutput1Vector, _inputOutput2VectorType &inputOutput2Vector)
Definition: vctDynamicVectorLoopEngines.h:263
_incrementalOperationType::OutputType OutputType
Definition: vctDynamicVectorLoopEngines.h:734
#define cmnThrow(a)
Definition: MinimalCmn.h:4
static void Run(_outputOwnerType &outputOwner, const _input1OwnerType &input1Owner, const _input2OwnerType &input2Owner)
Definition: vctDynamicCompactLoopEngines.h:75
static void Run(_outputVectorType &output, const _inputVectorType &input, const _indexVectorType &index)
Definition: vctDynamicVectorLoopEngines.h:1086
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:97
Definition: vctDynamicVectorLoopEngines.h:1083
static void Run(_inputOutputVectorType &inputOutputVector, const _inputVectorType &inputVector)
Definition: vctDynamicVectorLoopEngines.h:189
ptrdiff_t stride_type
Definition: vctContainerTraits.h:37
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:403
static void Run(_outputOwnerType &outputOwner, const _inputOwnerType &inputOwner, const _inputScalarType inputScalar)
Definition: vctDynamicCompactLoopEngines.h:204
static void Run(_inputOutputVectorType &inputOutputVector, const _inputScalarType inputScalar)
Definition: vctDynamicVectorLoopEngines.h:487
static void ThrowException(void)
Definition: vctDynamicVectorLoopEngines.h:72
Declaration of the template function cmnThrow.
static OutputType Run(const _inputOwnerType &inputOwner, const _inputScalarType &inputScalar)
Definition: vctDynamicCompactLoopEngines.h:603
static void Run(_outputVectorType &outputVector, const _inputVectorType &inputVector)
Definition: vctDynamicVectorLoopEngines.h:543
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:181
static void Run(const _inputOwnerType &inputOwner, typename _inputOwnerType::value_type &minValue, typename _inputOwnerType::value_type &maxValue)
Definition: vctDynamicCompactLoopEngines.h:630
Container class for the vector loop based engines.
Definition: vctDynamicVectorLoopEngines.h:66
static void Run(_ioOwnerType &ioOwner, const _inputScalarType inputScalar, const _inputOwnerType &inputOwner)
Definition: vctDynamicCompactLoopEngines.h:500
Implement operation of the form for dynamic vectors.
Definition: vctDynamicVectorLoopEngines.h:732
static void Run(const _inputVectorType &inputVector, typename _inputVectorType::value_type &minValue, typename _inputVectorType::value_type &maxValue)
Definition: vctDynamicVectorLoopEngines.h:1037
static void Run(_ioVectorType &ioVector, const _inputScalarType inputScalar, const _inputVectorType &inputVector)
Definition: vctDynamicVectorLoopEngines.h:823