PeriDyno 1.0.0
Loading...
Searching...
No Matches
Functional.h
Go to the documentation of this file.
1#pragma once
2#include "Platform.h"
3#include "Math/SimpleMath.h"
4
5
6namespace dyno
7{
8 template<typename T>
9 struct PlusFunc
10 {
13 DYN_FUNC inline T operator()(const T lhs, const T rhs) const { return lhs + rhs; }
14 }; // end plus
15
16 template<typename T>
17 struct MinusFunc
18 {
21 DYN_FUNC inline T operator()(const T lhs, const T rhs) const { return lhs - rhs; }
22 }; // end minus
23
24 template<typename T>
26 {
29 DYN_FUNC inline T operator()(const T lhs, const T rhs) const { return lhs * rhs; }
30 }; // end multiplies
31
32 template<typename T>
34 {
37 DYN_FUNC inline T operator()(const T lhs, const T rhs) const { return lhs / rhs; }
38 }; // end divides
39
40 template<typename T>
42 {
45 DYN_FUNC inline T operator()(const T lhs, const T rhs) const { return lhs % rhs; }
46 }; // end modulus
47
48 template<typename T>
50 {
53 DYN_FUNC inline T operator()(const T x) const { return -x; }
54 }; // end negate
55
56 template<typename T>
57 struct EqualFunc
58 {
61 DYN_FUNC inline bool operator()(const T lhs, const T rhs) const { return lhs == rhs; }
62 }; // end equal_to
63
64 template<typename T>
66 {
69 DYN_FUNC inline bool operator()(const T lhs, const T rhs) const { return lhs != rhs; }
70 }; // end not_equal_to
71
72 template<typename T>
74 {
77 DYN_FUNC inline bool operator()(const T lhs, const T rhs) const { return lhs > rhs; }
78 }; // end greater
79
80 template<typename T>
81 struct LessFunc
82 {
85 DYN_FUNC inline bool operator()(const T lhs, const T rhs) const { return lhs < rhs; }
86 }; // end less
87
88 template<typename T>
90 {
93 DYN_FUNC inline bool operator()(const T lhs, const T rhs) const { return lhs >= rhs; }
94 }; // end greater_equal
95
96 template<typename T>
98 {
101 DYN_FUNC inline bool operator()(const T lhs, const T rhs) const { return lhs <= rhs; }
102 }; // end less_equal
103
104 template<typename T>
106 {
109 DYN_FUNC inline bool operator()(const T lhs, const T rhs) const { return lhs && rhs; }
110 }; // end logical_and
111
112 template<typename T>
114 {
117 DYN_FUNC inline bool operator()(const T lhs, const T rhs) const { return lhs || rhs; }
118 }; // end logical_or
119
120 template<typename T>
122 {
125 DYN_FUNC inline bool operator()(const T &x) const { return !x; }
126 }; // end logical_not
127
128 template<typename T>
130 {
133 DYN_FUNC inline T operator()(const T lhs, const T rhs) const { return lhs & rhs; }
134 }; // end bit_and
135
136 template<typename T>
138 {
141 DYN_FUNC inline T operator()(const T lhs, const T rhs) const { return lhs | rhs; }
142 }; // end bit_or
143
144 template<typename T>
146 {
149 DYN_FUNC inline T operator()(const T lhs, const T rhs) const { return lhs ^ rhs; }
150 }; // end bit_xor
151
152 template<typename T>
154 {
157 DYN_FUNC inline T operator()(const T lhs, const T rhs) const { return maximum(lhs, rhs); }
158 }; // end maximum
159
160 template<typename T>
162 {
165 DYN_FUNC inline T operator()(const T lhs, const T rhs) const { return minimum(lhs, rhs); }
166 }; // end minimum
167}
#define T(t)
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
DYN_FUNC T minimum(const T &v0, const T &v1)
Definition SimpleMath.h:120
DYN_FUNC T maximum(const T &v0, const T &v1)
Definition SimpleMath.h:160
DYN_FUNC T operator()(const T lhs, const T rhs) const
Definition Functional.h:133
DYN_FUNC T operator()(const T lhs, const T rhs) const
Definition Functional.h:141
DYN_FUNC T operator()(const T lhs, const T rhs) const
Definition Functional.h:149
DYN_FUNC T operator()(const T lhs, const T rhs) const
Definition Functional.h:37
DYN_FUNC bool operator()(const T lhs, const T rhs) const
Definition Functional.h:61
DYN_FUNC bool operator()(const T lhs, const T rhs) const
Definition Functional.h:93
DYN_FUNC bool operator()(const T lhs, const T rhs) const
Definition Functional.h:77
DYN_FUNC bool operator()(const T lhs, const T rhs) const
Definition Functional.h:101
DYN_FUNC bool operator()(const T lhs, const T rhs) const
Definition Functional.h:85
DYN_FUNC bool operator()(const T lhs, const T rhs) const
Definition Functional.h:109
DYN_FUNC bool operator()(const T &x) const
Definition Functional.h:125
DYN_FUNC bool operator()(const T lhs, const T rhs) const
Definition Functional.h:117
DYN_FUNC T operator()(const T lhs, const T rhs) const
Definition Functional.h:157
DYN_FUNC T operator()(const T lhs, const T rhs) const
Definition Functional.h:165
DYN_FUNC T operator()(const T lhs, const T rhs) const
Definition Functional.h:21
DYN_FUNC T operator()(const T lhs, const T rhs) const
Definition Functional.h:45
DYN_FUNC T operator()(const T lhs, const T rhs) const
Definition Functional.h:29
DYN_FUNC T operator()(const T x) const
Definition Functional.h:53
DYN_FUNC bool operator()(const T lhs, const T rhs) const
Definition Functional.h:69
DYN_FUNC T operator()(const T lhs, const T rhs) const
Definition Functional.h:13