Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2020-03-06 19:18:10 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2020-03-09 16:47:59 +0300
commit598ab525da3df3fef2033c159c570688c7282a8f (patch)
treeba2bd0b8fc6ee5d264512bf655def1a6ee5d7b31 /source/blender/blenlib/intern/math_base_inline.c
parentee5d7bc16b243f309c84bce5deddf3a86b7f4c14 (diff)
Cleanup: Replace ABS/SQUARE/CUBE with function calls
While it might be handy to have type-less functionality which is similar to how C++ math is implemented it can not be easily achieved with just preprocessor in a way which does not have side-effects on wrong usage. There macros where often used on a non-trivial expression, and there was at least one usage where it was causing an actual side effect/bug on Windows (see change around square_f(sh[index++]) in studiolight.c). For such cases it is handy to have a function which is guaranteed to have zero side-effects. The motivation behind actually removing the macros is that there is already a way to do similar calculation. Also, not having such macros is a way to guarantee that its usage is not changed in a way which have side-effects and that it's not used as an inspiration for cases where it should not be used. Differential Revision: https://developer.blender.org/D7051
Diffstat (limited to 'source/blender/blenlib/intern/math_base_inline.c')
-rw-r--r--source/blender/blenlib/intern/math_base_inline.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/source/blender/blenlib/intern/math_base_inline.c b/source/blender/blenlib/intern/math_base_inline.c
index c0ee658d434..a293695154a 100644
--- a/source/blender/blenlib/intern/math_base_inline.c
+++ b/source/blender/blenlib/intern/math_base_inline.c
@@ -375,6 +375,72 @@ MINLINE float wrapf(float value, float max, float min)
return (range != 0.0f) ? value - (range * floorf((value - min) / range)) : min;
}
+// Square.
+
+MINLINE int square_s(short a)
+{
+ return a * a;
+}
+
+MINLINE int square_i(int a)
+{
+ return a * a;
+}
+
+MINLINE unsigned int square_uint(unsigned int a)
+{
+ return a * a;
+}
+
+MINLINE int square_uchar(unsigned char a)
+{
+ return a * a;
+}
+
+MINLINE float square_f(float a)
+{
+ return a * a;
+}
+
+MINLINE double square_d(double a)
+{
+ return a * a;
+}
+
+// Cube.
+
+MINLINE int cube_s(short a)
+{
+ return a * a * a;
+}
+
+MINLINE int cube_i(int a)
+{
+ return a * a * a;
+}
+
+MINLINE unsigned int cube_uint(unsigned int a)
+{
+ return a * a * a;
+}
+
+MINLINE int cube_uchar(unsigned char a)
+{
+ return a * a * a;
+}
+
+MINLINE float cube_f(float a)
+{
+ return a * a * a;
+}
+
+MINLINE double cube_d(double a)
+{
+ return a * a * a;
+}
+
+// Min/max
+
MINLINE float min_ff(float a, float b)
{
return (a < b) ? a : b;