Blender  V3.3
GHOST_utildefines.h File Reference
#include "GHOST_utildefines_variadic.h"

Go to the source code of this file.

Macros

Branch Prediction Macros
#define LIKELY(x)   (x)
 
#define UNLIKELY(x)   (x)
 
Array Unpacking Macros
#define UNPACK2(a)   ((a)[0]), ((a)[1])
 
#define UNPACK3(a)   UNPACK2(a), ((a)[2])
 
#define UNPACK4(a)   UNPACK3(a), ((a)[3])
 
#define UNPACK2_EX(pre, a, post)   (pre((a)[0]) post), (pre((a)[1]) post)
 
#define UNPACK3_EX(pre, a, post)   UNPACK2_EX(pre, a, post), (pre((a)[2]) post)
 
#define UNPACK4_EX(pre, a, post)   UNPACK3_EX(pre, a, post), (pre((a)[3]) post)
 
Array Macros
#define ARRAY_SIZE(arr)   (sizeof(arr) / sizeof(*(arr)))
 
Equal to Any Element (ELEM) Macro
#define _VA_ELEM2(v, a)   ((v) == (a))
 
#define _VA_ELEM3(v, a, b)    (_VA_ELEM2(v, a) || _VA_ELEM2(v, b))
 
#define _VA_ELEM4(v, a, b, c)    (_VA_ELEM3(v, a, b) || _VA_ELEM2(v, c))
 
#define _VA_ELEM5(v, a, b, c, d)    (_VA_ELEM4(v, a, b, c) || _VA_ELEM2(v, d))
 
#define _VA_ELEM6(v, a, b, c, d, e)    (_VA_ELEM5(v, a, b, c, d) || _VA_ELEM2(v, e))
 
#define _VA_ELEM7(v, a, b, c, d, e, f)    (_VA_ELEM6(v, a, b, c, d, e) || _VA_ELEM2(v, f))
 
#define _VA_ELEM8(v, a, b, c, d, e, f, g)    (_VA_ELEM7(v, a, b, c, d, e, f) || _VA_ELEM2(v, g))
 
#define _VA_ELEM9(v, a, b, c, d, e, f, g, h)    (_VA_ELEM8(v, a, b, c, d, e, f, g) || _VA_ELEM2(v, h))
 
#define _VA_ELEM10(v, a, b, c, d, e, f, g, h, i)    (_VA_ELEM9(v, a, b, c, d, e, f, g, h) || _VA_ELEM2(v, i))
 
#define _VA_ELEM11(v, a, b, c, d, e, f, g, h, i, j)    (_VA_ELEM10(v, a, b, c, d, e, f, g, h, i) || _VA_ELEM2(v, j))
 
#define _VA_ELEM12(v, a, b, c, d, e, f, g, h, i, j, k)    (_VA_ELEM11(v, a, b, c, d, e, f, g, h, i, j) || _VA_ELEM2(v, k))
 
#define _VA_ELEM13(v, a, b, c, d, e, f, g, h, i, j, k, l)    (_VA_ELEM12(v, a, b, c, d, e, f, g, h, i, j, k) || _VA_ELEM2(v, l))
 
#define _VA_ELEM14(v, a, b, c, d, e, f, g, h, i, j, k, l, m)    (_VA_ELEM13(v, a, b, c, d, e, f, g, h, i, j, k, l) || _VA_ELEM2(v, m))
 
#define _VA_ELEM15(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n)    (_VA_ELEM14(v, a, b, c, d, e, f, g, h, i, j, k, l, m) || _VA_ELEM2(v, n))
 
#define _VA_ELEM16(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)    (_VA_ELEM15(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n) || _VA_ELEM2(v, o))
 
#define _VA_ELEM17(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)    (_VA_ELEM16(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) || _VA_ELEM2(v, p))
 
#define ELEM(...)   VA_NARGS_CALL_OVERLOAD(_VA_ELEM, __VA_ARGS__)
 
Clamp Macros
#define CLAMPIS(a, b, c)   ((a) < (b) ? (b) : (a) > (c) ? (c) : (a))
 
#define CLAMP(a, b, c)
 
#define CLAMP_MAX(a, c)
 
#define CLAMP_MIN(a, b)
 
#define CLAMP2(vec, b, c)
 
#define CLAMP2_MIN(vec, b)
 
#define CLAMP2_MAX(vec, b)
 
#define CLAMP3(vec, b, c)
 
#define CLAMP3_MIN(vec, b)
 
#define CLAMP3_MAX(vec, b)
 
#define CLAMP4(vec, b, c)
 
#define CLAMP4_MIN(vec, b)
 
#define CLAMP4_MAX(vec, b)
 

Detailed Description

Utility defines (avoid depending on BLI_utildefines.h).

Definition in file GHOST_utildefines.h.

Macro Definition Documentation

◆ _VA_ELEM10

#define _VA_ELEM10 (   v,
  a,
  b,
  c,
  d,
  e,
  f,
  g,
  h,
 
)     (_VA_ELEM9(v, a, b, c, d, e, f, g, h) || _VA_ELEM2(v, i))

Definition at line 82 of file GHOST_utildefines.h.

◆ _VA_ELEM11

#define _VA_ELEM11 (   v,
  a,
  b,
  c,
  d,
  e,
  f,
  g,
  h,
  i,
 
)     (_VA_ELEM10(v, a, b, c, d, e, f, g, h, i) || _VA_ELEM2(v, j))

Definition at line 84 of file GHOST_utildefines.h.

◆ _VA_ELEM12

#define _VA_ELEM12 (   v,
  a,
  b,
  c,
  d,
  e,
  f,
  g,
  h,
  i,
  j,
 
)     (_VA_ELEM11(v, a, b, c, d, e, f, g, h, i, j) || _VA_ELEM2(v, k))

Definition at line 86 of file GHOST_utildefines.h.

◆ _VA_ELEM13

#define _VA_ELEM13 (   v,
  a,
  b,
  c,
  d,
  e,
  f,
  g,
  h,
  i,
  j,
  k,
  l 
)     (_VA_ELEM12(v, a, b, c, d, e, f, g, h, i, j, k) || _VA_ELEM2(v, l))

Definition at line 88 of file GHOST_utildefines.h.

◆ _VA_ELEM14

#define _VA_ELEM14 (   v,
  a,
  b,
  c,
  d,
  e,
  f,
  g,
  h,
  i,
  j,
  k,
  l,
 
)     (_VA_ELEM13(v, a, b, c, d, e, f, g, h, i, j, k, l) || _VA_ELEM2(v, m))

Definition at line 90 of file GHOST_utildefines.h.

◆ _VA_ELEM15

#define _VA_ELEM15 (   v,
  a,
  b,
  c,
  d,
  e,
  f,
  g,
  h,
  i,
  j,
  k,
  l,
  m,
 
)     (_VA_ELEM14(v, a, b, c, d, e, f, g, h, i, j, k, l, m) || _VA_ELEM2(v, n))

Definition at line 92 of file GHOST_utildefines.h.

◆ _VA_ELEM16

#define _VA_ELEM16 (   v,
  a,
  b,
  c,
  d,
  e,
  f,
  g,
  h,
  i,
  j,
  k,
  l,
  m,
  n,
 
)     (_VA_ELEM15(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n) || _VA_ELEM2(v, o))

Definition at line 94 of file GHOST_utildefines.h.

◆ _VA_ELEM17

#define _VA_ELEM17 (   v,
  a,
  b,
  c,
  d,
  e,
  f,
  g,
  h,
  i,
  j,
  k,
  l,
  m,
  n,
  o,
 
)     (_VA_ELEM16(v, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) || _VA_ELEM2(v, p))

Definition at line 96 of file GHOST_utildefines.h.

◆ _VA_ELEM2

#define _VA_ELEM2 (   v,
 
)    ((v) == (a))

Definition at line 67 of file GHOST_utildefines.h.

◆ _VA_ELEM3

#define _VA_ELEM3 (   v,
  a,
 
)     (_VA_ELEM2(v, a) || _VA_ELEM2(v, b))

Definition at line 68 of file GHOST_utildefines.h.

◆ _VA_ELEM4

#define _VA_ELEM4 (   v,
  a,
  b,
 
)     (_VA_ELEM3(v, a, b) || _VA_ELEM2(v, c))

Definition at line 70 of file GHOST_utildefines.h.

◆ _VA_ELEM5

#define _VA_ELEM5 (   v,
  a,
  b,
  c,
 
)     (_VA_ELEM4(v, a, b, c) || _VA_ELEM2(v, d))

Definition at line 72 of file GHOST_utildefines.h.

◆ _VA_ELEM6

#define _VA_ELEM6 (   v,
  a,
  b,
  c,
  d,
  e 
)     (_VA_ELEM5(v, a, b, c, d) || _VA_ELEM2(v, e))

Definition at line 74 of file GHOST_utildefines.h.

◆ _VA_ELEM7

#define _VA_ELEM7 (   v,
  a,
  b,
  c,
  d,
  e,
 
)     (_VA_ELEM6(v, a, b, c, d, e) || _VA_ELEM2(v, f))

Definition at line 76 of file GHOST_utildefines.h.

◆ _VA_ELEM8

#define _VA_ELEM8 (   v,
  a,
  b,
  c,
  d,
  e,
  f,
 
)     (_VA_ELEM7(v, a, b, c, d, e, f) || _VA_ELEM2(v, g))

Definition at line 78 of file GHOST_utildefines.h.

◆ _VA_ELEM9

#define _VA_ELEM9 (   v,
  a,
  b,
  c,
  d,
  e,
  f,
  g,
 
)     (_VA_ELEM8(v, a, b, c, d, e, f, g) || _VA_ELEM2(v, h))

Definition at line 80 of file GHOST_utildefines.h.

◆ ARRAY_SIZE

#define ARRAY_SIZE (   arr)    (sizeof(arr) / sizeof(*(arr)))

Definition at line 53 of file GHOST_utildefines.h.

◆ CLAMP

#define CLAMP (   a,
  b,
 
)
Value:
{ \
if ((a) < (b)) { \
(a) = (b); \
} \
else if ((a) > (c)) { \
(a) = (c); \
} \
} \
(void)0
SyclQueue void void size_t num_bytes void
static unsigned c
Definition: RandGen.cpp:83
static unsigned a[3]
Definition: RandGen.cpp:78
static const pxr::TfToken b("b", pxr::TfToken::Immortal)

Definition at line 111 of file GHOST_utildefines.h.

◆ CLAMP2

#define CLAMP2 (   vec,
  b,
 
)
Value:
{ \
CLAMP((vec)[0], b, c); \
CLAMP((vec)[1], b, c); \
} \
(void)0

Definition at line 138 of file GHOST_utildefines.h.

◆ CLAMP2_MAX

#define CLAMP2_MAX (   vec,
 
)
Value:
{ \
CLAMP_MAX((vec)[0], b); \
CLAMP_MAX((vec)[1], b); \
} \
(void)0

Definition at line 152 of file GHOST_utildefines.h.

◆ CLAMP2_MIN

#define CLAMP2_MIN (   vec,
 
)
Value:
{ \
CLAMP_MIN((vec)[0], b); \
CLAMP_MIN((vec)[1], b); \
} \
(void)0

Definition at line 145 of file GHOST_utildefines.h.

◆ CLAMP3

#define CLAMP3 (   vec,
  b,
 
)
Value:
{ \
CLAMP((vec)[0], b, c); \
CLAMP((vec)[1], b, c); \
CLAMP((vec)[2], b, c); \
} \
(void)0

Definition at line 159 of file GHOST_utildefines.h.

◆ CLAMP3_MAX

#define CLAMP3_MAX (   vec,
 
)
Value:
{ \
CLAMP_MAX((vec)[0], b); \
CLAMP_MAX((vec)[1], b); \
CLAMP_MAX((vec)[2], b); \
} \
(void)0

Definition at line 175 of file GHOST_utildefines.h.

◆ CLAMP3_MIN

#define CLAMP3_MIN (   vec,
 
)
Value:
{ \
CLAMP_MIN((vec)[0], b); \
CLAMP_MIN((vec)[1], b); \
CLAMP_MIN((vec)[2], b); \
} \
(void)0

Definition at line 167 of file GHOST_utildefines.h.

◆ CLAMP4

#define CLAMP4 (   vec,
  b,
 
)
Value:
{ \
CLAMP((vec)[0], b, c); \
CLAMP((vec)[1], b, c); \
CLAMP((vec)[2], b, c); \
CLAMP((vec)[3], b, c); \
} \
(void)0

Definition at line 183 of file GHOST_utildefines.h.

◆ CLAMP4_MAX

#define CLAMP4_MAX (   vec,
 
)
Value:
{ \
CLAMP_MAX((vec)[0], b); \
CLAMP_MAX((vec)[1], b); \
CLAMP_MAX((vec)[2], b); \
CLAMP_MAX((vec)[3], b); \
} \
(void)0

Definition at line 201 of file GHOST_utildefines.h.

◆ CLAMP4_MIN

#define CLAMP4_MIN (   vec,
 
)
Value:
{ \
CLAMP_MIN((vec)[0], b); \
CLAMP_MIN((vec)[1], b); \
CLAMP_MIN((vec)[2], b); \
CLAMP_MIN((vec)[3], b); \
} \
(void)0

Definition at line 192 of file GHOST_utildefines.h.

◆ CLAMP_MAX

#define CLAMP_MAX (   a,
 
)
Value:
{ \
if ((a) > (c)) { \
(a) = (c); \
} \
} \
(void)0

Definition at line 122 of file GHOST_utildefines.h.

◆ CLAMP_MIN

#define CLAMP_MIN (   a,
 
)
Value:
{ \
if ((a) < (b)) { \
(a) = (b); \
} \
} \
(void)0

Definition at line 130 of file GHOST_utildefines.h.

◆ CLAMPIS

#define CLAMPIS (   a,
  b,
 
)    ((a) < (b) ? (b) : (a) > (c) ? (c) : (a))

Definition at line 109 of file GHOST_utildefines.h.

◆ ELEM

#define ELEM (   ...)    VA_NARGS_CALL_OVERLOAD(_VA_ELEM, __VA_ARGS__)

Definition at line 101 of file GHOST_utildefines.h.

◆ LIKELY

#define LIKELY (   x)    (x)

Definition at line 22 of file GHOST_utildefines.h.

◆ UNLIKELY

#define UNLIKELY (   x)    (x)

Definition at line 23 of file GHOST_utildefines.h.

◆ UNPACK2

#define UNPACK2 (   a)    ((a)[0]), ((a)[1])

Definition at line 33 of file GHOST_utildefines.h.

◆ UNPACK2_EX

#define UNPACK2_EX (   pre,
  a,
  post 
)    (pre((a)[0]) post), (pre((a)[1]) post)

Definition at line 37 of file GHOST_utildefines.h.

◆ UNPACK3

#define UNPACK3 (   a)    UNPACK2(a), ((a)[2])

Definition at line 34 of file GHOST_utildefines.h.

◆ UNPACK3_EX

#define UNPACK3_EX (   pre,
  a,
  post 
)    UNPACK2_EX(pre, a, post), (pre((a)[2]) post)

Definition at line 38 of file GHOST_utildefines.h.

◆ UNPACK4

#define UNPACK4 (   a)    UNPACK3(a), ((a)[3])

Definition at line 35 of file GHOST_utildefines.h.

◆ UNPACK4_EX

#define UNPACK4_EX (   pre,
  a,
  post 
)    UNPACK3_EX(pre, a, post), (pre((a)[3]) post)

Definition at line 39 of file GHOST_utildefines.h.