ATLAS Offline Software
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