Blender V4.3
GHOST_utildefines.hh File Reference

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__)
 
String Macros
#define STRINGIFY_ARG(x)   "" #x
 
#define STRINGIFY_APPEND(a, b)   "" a #b
 
#define STRINGIFY(x)   STRINGIFY_APPEND("", x)
 
#define STREQ(a, b)   (strcmp(a, b) == 0)
 
#define STRCASEEQ(a, b)   (strcasecmp(a, b) == 0)
 
#define STREQLEN(a, b, n)   (strncmp(a, b, n) == 0)
 
#define STRCASEEQLEN(a, b, n)   (strncasecmp(a, b, n) == 0)
 
#define STRPREFIX(a, b)   (strncmp((a), (b), strlen(b)) == 0)
 

Detailed Description

Utility defines (avoid depending on BLI_utildefines.h).

Definition in file GHOST_utildefines.hh.

Macro Definition Documentation

◆ _VA_ELEM10

#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))

Definition at line 84 of file GHOST_utildefines.hh.

◆ _VA_ELEM11

#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))

Definition at line 86 of file GHOST_utildefines.hh.

◆ _VA_ELEM12

#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))

Definition at line 88 of file GHOST_utildefines.hh.

◆ _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 90 of file GHOST_utildefines.hh.

◆ _VA_ELEM14

#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))

Definition at line 92 of file GHOST_utildefines.hh.

◆ _VA_ELEM15

#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))

Definition at line 94 of file GHOST_utildefines.hh.

◆ _VA_ELEM16

#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))

Definition at line 96 of file GHOST_utildefines.hh.

◆ _VA_ELEM17

#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))

Definition at line 98 of file GHOST_utildefines.hh.

◆ _VA_ELEM2

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

Definition at line 69 of file GHOST_utildefines.hh.

◆ _VA_ELEM3

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

Definition at line 70 of file GHOST_utildefines.hh.

◆ _VA_ELEM4

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

Definition at line 72 of file GHOST_utildefines.hh.

◆ _VA_ELEM5

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

Definition at line 74 of file GHOST_utildefines.hh.

◆ _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 76 of file GHOST_utildefines.hh.

◆ _VA_ELEM7

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

Definition at line 78 of file GHOST_utildefines.hh.

◆ _VA_ELEM8

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

Definition at line 80 of file GHOST_utildefines.hh.

◆ _VA_ELEM9

#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))

Definition at line 82 of file GHOST_utildefines.hh.

◆ ARRAY_SIZE

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

Definition at line 55 of file GHOST_utildefines.hh.

◆ ELEM

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

Definition at line 103 of file GHOST_utildefines.hh.

◆ LIKELY

#define LIKELY ( x)    (x)

Definition at line 24 of file GHOST_utildefines.hh.

◆ STRCASEEQ

#define STRCASEEQ ( a,
b )   (strcasecmp(a, b) == 0)

Definition at line 128 of file GHOST_utildefines.hh.

◆ STRCASEEQLEN

#define STRCASEEQLEN ( a,
b,
n )   (strncasecmp(a, b, n) == 0)

Definition at line 130 of file GHOST_utildefines.hh.

◆ STREQ

#define STREQ ( a,
b )   (strcmp(a, b) == 0)

Definition at line 127 of file GHOST_utildefines.hh.

◆ STREQLEN

#define STREQLEN ( a,
b,
n )   (strncmp(a, b, n) == 0)

Definition at line 129 of file GHOST_utildefines.hh.

◆ STRINGIFY

#define STRINGIFY ( x)    STRINGIFY_APPEND("", x)

Definition at line 119 of file GHOST_utildefines.hh.

◆ STRINGIFY_APPEND

#define STRINGIFY_APPEND ( a,
b )   "" a #b

Definition at line 118 of file GHOST_utildefines.hh.

◆ STRINGIFY_ARG

#define STRINGIFY_ARG ( x)    "" #x

Definition at line 117 of file GHOST_utildefines.hh.

◆ STRPREFIX

#define STRPREFIX ( a,
b )   (strncmp((a), (b), strlen(b)) == 0)

Definition at line 132 of file GHOST_utildefines.hh.

◆ UNLIKELY

#define UNLIKELY ( x)    (x)

Definition at line 25 of file GHOST_utildefines.hh.

◆ UNPACK2

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

Definition at line 35 of file GHOST_utildefines.hh.

◆ UNPACK2_EX

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

Definition at line 39 of file GHOST_utildefines.hh.

◆ UNPACK3

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

Definition at line 36 of file GHOST_utildefines.hh.

◆ UNPACK3_EX

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

Definition at line 40 of file GHOST_utildefines.hh.

◆ UNPACK4

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

Definition at line 37 of file GHOST_utildefines.hh.

◆ UNPACK4_EX

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

Definition at line 41 of file GHOST_utildefines.hh.