cisst-saw
Loading...
Searching...
No Matches
vctStoreBackBinaryOperations.h
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3
4/*
5
6 Author(s): Ofri Sadowsky, Anton Deguet
7 Created on: 2003-08-18
8
9 (C) Copyright 2003-2013 Johns Hopkins University (JHU), All Rights
10 Reserved.
11
12--- begin cisst license - do not edit ---
13
14This software is provided "as is" under an open source license, with
15no warranty. The complete license can be found in license.txt and
16http://www.cisst.org/cisst/license.txt.
17
18--- end cisst license ---
19*/
20
21#pragma once
22#ifndef _vctStoreBackBinaryOperations_h
23#define _vctStoreBackBinaryOperations_h
24
29
66template<class _inputOutputType, class _input2Type = _inputOutputType>
68 public:
69 typedef _inputOutputType InputOutputType;
70 typedef _input2Type Input2Type;
71
76 class Addition {
77 public:
83 static inline InputOutputType & Operate(InputOutputType & input1, const Input2Type & input2) {
84 input1 += input2;
85 return input1;
86 }
87 };
88
89
95 public:
101 static inline InputOutputType & Operate(InputOutputType & input1, const Input2Type & input2) {
102 input1 -= input2;
103 return input1;
104 }
105 };
106
107
113 public:
119 static inline InputOutputType & Operate(InputOutputType & input1, const Input2Type & input2) {
120 input1 *= input2;
121 return input1;
122 }
123 };
124
125
130 class Division {
131 public:
137 static inline InputOutputType & Operate(InputOutputType & input1, const Input2Type & input2) {
138 input1 /= input2;
139 return input1;
140 }
141 };
142
143
149 public:
155 static inline InputOutputType & Operate(InputOutputType & input1, const Input2Type & CMN_UNUSED(input2)) {
156 return (input1);
157 }
158 };
159
160
167 public:
173 static inline InputOutputType & Operate(InputOutputType & input1, const Input2Type & input2) {
174 input1 = input2;
175 return input1;
176 }
177 };
178
179
186 class Maximum {
187 public:
193 static inline const InputOutputType & Operate(InputOutputType & input1,
194 const InputOutputType & input2) {
195 input1 = (input1 > input2) ? input1 : input2;
196 return input1;
197 }
198 };
199
200
201
202 class ClipIn {
203 public:
209 static inline const InputOutputType & Operate(InputOutputType & input,
210 const InputOutputType & bound) {
211 if (input > bound) {
212 input = bound;
213 } else if (input < -bound) {
214 input = -bound;
215 }
216 return input;
217 }
218 };
219
220
227 class Minimum {
228 public:
234 static inline const InputOutputType & Operate(InputOutputType & input1,
235 const InputOutputType & input2) {
236 input1 = (input1 < input2) ? input1 : input2;
237 return input1;
238 }
239 };
240
247 class Swap {
248 public:
254 static inline void Operate(InputOutputType & input1,
255 InputOutputType & input2) {
256 const InputOutputType tmp(input1);
257 input1 = input2;
258 input2 = tmp;
259 }
260 };
261
262};
263
264
265#endif // _vctStoreBackBinaryOperations_h
266
Returns the sum of the two InputType object.
Definition vctStoreBackBinaryOperations.h:76
static InputOutputType & Operate(InputOutputType &input1, const Input2Type &input2)
Definition vctStoreBackBinaryOperations.h:83
Definition vctStoreBackBinaryOperations.h:202
static const InputOutputType & Operate(InputOutputType &input, const InputOutputType &bound)
Definition vctStoreBackBinaryOperations.h:209
Returns the ratio of the two InputType object.
Definition vctStoreBackBinaryOperations.h:130
static InputOutputType & Operate(InputOutputType &input1, const Input2Type &input2)
Definition vctStoreBackBinaryOperations.h:137
Return the first operand of (input1, input2), i.e., input1.
Definition vctStoreBackBinaryOperations.h:148
static InputOutputType & Operate(InputOutputType &input1, const Input2Type &CMN_UNUSED(input2))
Definition vctStoreBackBinaryOperations.h:155
Return the greater of (input1, input2).
Definition vctStoreBackBinaryOperations.h:186
static const InputOutputType & Operate(InputOutputType &input1, const InputOutputType &input2)
Definition vctStoreBackBinaryOperations.h:193
Return the of lesser (input1, input2).
Definition vctStoreBackBinaryOperations.h:227
static const InputOutputType & Operate(InputOutputType &input1, const InputOutputType &input2)
Definition vctStoreBackBinaryOperations.h:234
Returns the product of the two InputType object.
Definition vctStoreBackBinaryOperations.h:112
static InputOutputType & Operate(InputOutputType &input1, const Input2Type &input2)
Definition vctStoreBackBinaryOperations.h:119
Return the first operand of (input1, input2), i.e., input2.
Definition vctStoreBackBinaryOperations.h:166
static InputOutputType & Operate(InputOutputType &input1, const Input2Type &input2)
Definition vctStoreBackBinaryOperations.h:173
Returns the difference of the two InputType object.
Definition vctStoreBackBinaryOperations.h:94
static InputOutputType & Operate(InputOutputType &input1, const Input2Type &input2)
Definition vctStoreBackBinaryOperations.h:101
Swap the values of input1, input2.
Definition vctStoreBackBinaryOperations.h:247
static void Operate(InputOutputType &input1, InputOutputType &input2)
Definition vctStoreBackBinaryOperations.h:254
Define binary operations between objects as classes.
Definition vctStoreBackBinaryOperations.h:67
_input2Type Input2Type
Definition vctStoreBackBinaryOperations.h:70
_inputOutputType InputOutputType
Definition vctStoreBackBinaryOperations.h:69
#define CMN_UNUSED(argument)
Definition cmnPortability.h:497