Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
util_internal.h File Reference

Misc utilities. More...

#include "util_loops.h"

Go to the source code of this file.

Macros

#define UTIL_CAT(a, ...)   UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
 
#define UTIL_PRIMITIVE_CAT(a, ...)   a##__VA_ARGS__
 
#define UTIL_CHECK_N(x, n, ...)   n
 
#define UTIL_CHECK(...)   UTIL_CHECK_N(__VA_ARGS__, 0,)
 
#define UTIL_NOT(x)   UTIL_CHECK(UTIL_PRIMITIVE_CAT(UTIL_NOT_, x))
 
#define UTIL_NOT_0   ~, 1,
 
#define UTIL_COMPL(b)   UTIL_PRIMITIVE_CAT(UTIL_COMPL_, b)
 
#define UTIL_COMPL_0   1
 
#define UTIL_COMPL_1   0
 
#define UTIL_BOOL(x)   UTIL_COMPL(UTIL_NOT(x))
 
#define UTIL_EVAL(...)   __VA_ARGS__
 
#define UTIL_EXPAND(...)   __VA_ARGS__
 
#define UTIL_REPEAT(...)   UTIL_LISTIFY(__VA_ARGS__)
 
#define NUM_VA_ARGS_LESS_1_IMPL( _ignored, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, N, ...)   N
 
#define MACRO_MAP_CAT_(...)
 
#define MACRO_MAP_CAT_N_(N, ...)   UTIL_CAT(MACRO_MC_, N)(__VA_ARGS__,)
 
#define MACRO_MC_0(...)
 
#define MACRO_MC_1(m, a, ...)   m(a)
 
#define MACRO_MC_2(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_1(m, __VA_ARGS__,))
 
#define MACRO_MC_3(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_2(m, __VA_ARGS__,))
 
#define MACRO_MC_4(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_3(m, __VA_ARGS__,))
 
#define MACRO_MC_5(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_4(m, __VA_ARGS__,))
 
#define MACRO_MC_6(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_5(m, __VA_ARGS__,))
 
#define MACRO_MC_7(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_6(m, __VA_ARGS__,))
 
#define MACRO_MC_8(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_7(m, __VA_ARGS__,))
 
#define MACRO_MC_9(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_8(m, __VA_ARGS__,))
 
#define MACRO_MC_10(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_9(m, __VA_ARGS__,))
 
#define MACRO_MC_11(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_10(m, __VA_ARGS__,))
 
#define MACRO_MC_12(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_11(m, __VA_ARGS__,))
 
#define MACRO_MC_13(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_12(m, __VA_ARGS__,))
 
#define MACRO_MC_14(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_13(m, __VA_ARGS__,))
 
#define MACRO_MC_15(m, a, ...)   UTIL_CAT(m(a), MACRO_MC_14(m, __VA_ARGS__,))
 

Detailed Description

Misc utilities.

Repetitive or obscure helper macros needed by sys/util.h.

Macro Definition Documentation

◆ MACRO_MAP_CAT_

#define MACRO_MAP_CAT_ (   ...)
Value:
/* To make sure it works also for 2 arguments in total */ \
MACRO_MAP_CAT_N(NUM_VA_ARGS_LESS_1(__VA_ARGS__), __VA_ARGS__)
#define NUM_VA_ARGS_LESS_1(...)
Number of arguments in the variable arguments list minus one.
Definition: util_macro.h:556

◆ MACRO_MAP_CAT_N_

#define MACRO_MAP_CAT_N_ (   N,
  ... 
)    UTIL_CAT(MACRO_MC_, N)(__VA_ARGS__,)

◆ MACRO_MC_0

#define MACRO_MC_0 (   ...)

◆ MACRO_MC_1

#define MACRO_MC_1 (   m,
  a,
  ... 
)    m(a)

◆ MACRO_MC_10

#define MACRO_MC_10 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_9(m, __VA_ARGS__,))

◆ MACRO_MC_11

#define MACRO_MC_11 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_10(m, __VA_ARGS__,))

◆ MACRO_MC_12

#define MACRO_MC_12 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_11(m, __VA_ARGS__,))

◆ MACRO_MC_13

#define MACRO_MC_13 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_12(m, __VA_ARGS__,))

◆ MACRO_MC_14

#define MACRO_MC_14 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_13(m, __VA_ARGS__,))

◆ MACRO_MC_15

#define MACRO_MC_15 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_14(m, __VA_ARGS__,))

◆ MACRO_MC_2

#define MACRO_MC_2 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_1(m, __VA_ARGS__,))

◆ MACRO_MC_3

#define MACRO_MC_3 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_2(m, __VA_ARGS__,))

◆ MACRO_MC_4

#define MACRO_MC_4 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_3(m, __VA_ARGS__,))

◆ MACRO_MC_5

#define MACRO_MC_5 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_4(m, __VA_ARGS__,))

◆ MACRO_MC_6

#define MACRO_MC_6 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_5(m, __VA_ARGS__,))

◆ MACRO_MC_7

#define MACRO_MC_7 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_6(m, __VA_ARGS__,))

◆ MACRO_MC_8

#define MACRO_MC_8 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_7(m, __VA_ARGS__,))

◆ MACRO_MC_9

#define MACRO_MC_9 (   m,
  a,
  ... 
)    UTIL_CAT(m(a), MACRO_MC_8(m, __VA_ARGS__,))

◆ NUM_VA_ARGS_LESS_1_IMPL

#define NUM_VA_ARGS_LESS_1_IMPL (   _ignored,
  _0,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  _10,
  _11,
  _12,
  _13,
  _14,
  _15,
  _16,
  _17,
  _18,
  _19,
  _20,
  _21,
  _22,
  _23,
  _24,
  _25,
  _26,
  _27,
  _28,
  _29,
  _30,
  _31,
  _32,
  _33,
  _34,
  _35,
  _36,
  _37,
  _38,
  _39,
  _40,
  _41,
  _42,
  _43,
  _44,
  _45,
  _46,
  _47,
  _48,
  _49,
  _50,
  _51,
  _52,
  _53,
  _54,
  _55,
  _56,
  _57,
  _58,
  _59,
  _60,
  _61,
  _62,
  N,
  ... 
)    N

◆ UTIL_BOOL

#define UTIL_BOOL (   x)    UTIL_COMPL(UTIL_NOT(x))

◆ UTIL_CAT

#define UTIL_CAT (   a,
  ... 
)    UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)

◆ UTIL_CHECK

#define UTIL_CHECK (   ...)    UTIL_CHECK_N(__VA_ARGS__, 0,)

◆ UTIL_CHECK_N

#define UTIL_CHECK_N (   x,
  n,
  ... 
)    n

◆ UTIL_COMPL

#define UTIL_COMPL (   b)    UTIL_PRIMITIVE_CAT(UTIL_COMPL_, b)

◆ UTIL_COMPL_0

#define UTIL_COMPL_0   1

◆ UTIL_COMPL_1

#define UTIL_COMPL_1   0

◆ UTIL_EVAL

#define UTIL_EVAL (   ...)    __VA_ARGS__

◆ UTIL_EXPAND

#define UTIL_EXPAND (   ...)    __VA_ARGS__

◆ UTIL_NOT

#define UTIL_NOT (   x)    UTIL_CHECK(UTIL_PRIMITIVE_CAT(UTIL_NOT_, x))

◆ UTIL_NOT_0

#define UTIL_NOT_0   ~, 1,

◆ UTIL_PRIMITIVE_CAT

#define UTIL_PRIMITIVE_CAT (   a,
  ... 
)    a##__VA_ARGS__

◆ UTIL_REPEAT

#define UTIL_REPEAT (   ...)    UTIL_LISTIFY(__VA_ARGS__)