Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Macros
pputils.h File Reference

Preprocessor utilities. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define CXXUTILS_PP_FIRST(...)   CXXUTILS_PP_ARG1(__VA_ARGS__)
 
#define CXXUTILS_PP_ARG1(...)   __VA_OPT__(CXXUTILS_PP_ARG1_(__VA_ARGS__))
 
#define CXXUTILS_PP_ARG1_(A, ...)   , A
 
#define CXXUTILS_PP_SECOND(...)   CXXUTILS_PP_ARG2(__VA_ARGS__)
 
#define CXXUTILS_PP_ARG2(...)   __VA_OPT__(CXXUTILS_PP_ARG2_(__VA_ARGS__))
 
#define CXXUTILS_PP_ARG2_(A, ...)   CXXUTILS_PP_ARG1(__VA_ARGS__)
 
#define CXXUTILS_PP_THIRD(...)   CXXUTILS_PP_ARG3(__VA_ARGS__)
 
#define CXXUTILS_PP_ARG3(...)   __VA_OPT__(CXXUTILS_PP_ARG3_(__VA_ARGS__))
 
#define CXXUTILS_PP_ARG3_(A, ...)   CXXUTILS_PP_ARG2(__VA_ARGS__)
 
#define CXXUTILS_PP_FOURTH(...)   CXXUTILS_PP_ARG4(__VA_ARGS__)
 
#define CXXUTILS_PP_ARG4(...)   __VA_OPT__(CXXUTILS_PP_ARG4_(__VA_ARGS__))
 
#define CXXUTILS_PP_ARG4_(A, ...)   CXXUTILS_PP_ARG3(__VA_ARGS__)
 
#define CXXUTILS_PP_FIFTH(...)   CXXUTILS_PP_ARG5(__VA_ARGS__)
 
#define CXXUTILS_PP_ARG5(...)   __VA_OPT__(CXXUTILS_PP_ARG5_(__VA_ARGS__))
 
#define CXXUTILS_PP_ARG5_(A, ...)   CXXUTILS_PP_ARG4(__VA_ARGS__)
 

Detailed Description

Preprocessor utilities.

Author
scott snyder snyde.nosp@m.r@bn.nosp@m.l.gov
Date
May, 2024 Given an argument list of arbitrary length, CXXUTILS_PP_FIRST returns a comma followed by the first argument if it exists; otherwise, it expands to nothing. CXXUTILS_PP_SECOND does the same thing for the second argument, and so on through @CXXUTILS_PP_FIFTH.

That is:

CXXUTILS_PP_SECOND(a, b, c) -> , b

CXXUTILS_PP_ARG1 through CXXUTILS_PP_ARG5 are also available as synonyms that may be more useful if these are used through the expansion of other macros.

Definition in file pputils.h.

Macro Definition Documentation

◆ CXXUTILS_PP_ARG1

#define CXXUTILS_PP_ARG1 (   ...)    __VA_OPT__(CXXUTILS_PP_ARG1_(__VA_ARGS__))

Definition at line 36 of file pputils.h.

◆ CXXUTILS_PP_ARG1_

#define CXXUTILS_PP_ARG1_ (   A,
  ... 
)    , A

Definition at line 37 of file pputils.h.

◆ CXXUTILS_PP_ARG2

#define CXXUTILS_PP_ARG2 (   ...)    __VA_OPT__(CXXUTILS_PP_ARG2_(__VA_ARGS__))

Definition at line 40 of file pputils.h.

◆ CXXUTILS_PP_ARG2_

#define CXXUTILS_PP_ARG2_ (   A,
  ... 
)    CXXUTILS_PP_ARG1(__VA_ARGS__)

Definition at line 41 of file pputils.h.

◆ CXXUTILS_PP_ARG3

#define CXXUTILS_PP_ARG3 (   ...)    __VA_OPT__(CXXUTILS_PP_ARG3_(__VA_ARGS__))

Definition at line 44 of file pputils.h.

◆ CXXUTILS_PP_ARG3_

#define CXXUTILS_PP_ARG3_ (   A,
  ... 
)    CXXUTILS_PP_ARG2(__VA_ARGS__)

Definition at line 45 of file pputils.h.

◆ CXXUTILS_PP_ARG4

#define CXXUTILS_PP_ARG4 (   ...)    __VA_OPT__(CXXUTILS_PP_ARG4_(__VA_ARGS__))

Definition at line 48 of file pputils.h.

◆ CXXUTILS_PP_ARG4_

#define CXXUTILS_PP_ARG4_ (   A,
  ... 
)    CXXUTILS_PP_ARG3(__VA_ARGS__)

Definition at line 49 of file pputils.h.

◆ CXXUTILS_PP_ARG5

#define CXXUTILS_PP_ARG5 (   ...)    __VA_OPT__(CXXUTILS_PP_ARG5_(__VA_ARGS__))

Definition at line 52 of file pputils.h.

◆ CXXUTILS_PP_ARG5_

#define CXXUTILS_PP_ARG5_ (   A,
  ... 
)    CXXUTILS_PP_ARG4(__VA_ARGS__)

Definition at line 53 of file pputils.h.

◆ CXXUTILS_PP_FIFTH

#define CXXUTILS_PP_FIFTH (   ...)    CXXUTILS_PP_ARG5(__VA_ARGS__)

Definition at line 51 of file pputils.h.

◆ CXXUTILS_PP_FIRST

#define CXXUTILS_PP_FIRST (   ...)    CXXUTILS_PP_ARG1(__VA_ARGS__)

Definition at line 35 of file pputils.h.

◆ CXXUTILS_PP_FOURTH

#define CXXUTILS_PP_FOURTH (   ...)    CXXUTILS_PP_ARG4(__VA_ARGS__)

Definition at line 47 of file pputils.h.

◆ CXXUTILS_PP_SECOND

#define CXXUTILS_PP_SECOND (   ...)    CXXUTILS_PP_ARG2(__VA_ARGS__)

Definition at line 39 of file pputils.h.

◆ CXXUTILS_PP_THIRD

#define CXXUTILS_PP_THIRD (   ...)    CXXUTILS_PP_ARG3(__VA_ARGS__)

Definition at line 43 of file pputils.h.

CXXUTILS_PP_SECOND
#define CXXUTILS_PP_SECOND(...)
Definition: pputils.h:38
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
CXXUTILS_PP_FIRST
#define CXXUTILS_PP_FIRST(...)
Definition: pputils.h:34
a
TList * a
Definition: liststreamerinfos.cxx:10
python.compressB64.c
def c
Definition: compressB64.py:93