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
This commit is contained in:
@@ -114,6 +114,23 @@ MINLINE float sasqrt(float fac);
|
||||
MINLINE float interpf(float a, float b, float t);
|
||||
MINLINE double interpd(double a, double b, double t);
|
||||
|
||||
/* NOTE: Compilers will upcast all types smaller than int to int when performing arithmetic
|
||||
* operation. */
|
||||
MINLINE int square_s(short a);
|
||||
MINLINE int square_uchar(unsigned char a);
|
||||
MINLINE int cube_s(short a);
|
||||
MINLINE int cube_uchar(unsigned char a);
|
||||
|
||||
MINLINE int square_i(int a);
|
||||
MINLINE unsigned int square_uint(unsigned int a);
|
||||
MINLINE float square_f(float a);
|
||||
MINLINE double square_d(double a);
|
||||
|
||||
MINLINE int cube_i(int a);
|
||||
MINLINE unsigned int cube_uint(unsigned int a);
|
||||
MINLINE float cube_f(float a);
|
||||
MINLINE double cube_d(double a);
|
||||
|
||||
MINLINE float min_ff(float a, float b);
|
||||
MINLINE float max_ff(float a, float b);
|
||||
MINLINE float min_fff(float a, float b, float c);
|
||||
|
Reference in New Issue
Block a user