pputl  0.2.1
pputl Preprocessor Utilities
Macros
join

Macros

#define PPUTL_JOIN_ANY(joining_fn, ...)
 
#define PPUTL_JOIN_DOT(...)   PPUTL_DETAIL_JOIN_DOT_CHOOSER(__VA_OPT__(, ) SIZEY, EMPTY)(__VA_ARGS__)
 
#define PPUTL_JOIN_GLUE(glue, ...)
 
#define PPUTL_JOIN_HYPHEN(...)   PPUTL_DETAIL_JOIN_HYPHEN_CHOOSER(__VA_OPT__(, ) SIZEY, EMPTY)(__VA_ARGS__)
 
#define PPUTL_JOIN_SLASH(...)   PPUTL_DETAIL_JOIN_SLASH_CHOOSER(__VA_OPT__(, ) SIZEY, EMPTY)(__VA_ARGS__)
 
#define PPUTL_JOIN_SPACE(...)   PPUTL_DETAIL_JOIN_SPACE_CHOOSER(__VA_OPT__(, ) SIZEY, EMPTY)(__VA_ARGS__)
 

Detailed Description

Macro Definition Documentation

◆ PPUTL_JOIN_ANY

#define PPUTL_JOIN_ANY (   joining_fn,
  ... 
)
Value:
1, PPUTL_DETAIL_JOIN_REDUCE( \
PPUTL_DETAIL_JOIN_REDUCER, \
(joining_fn, PPUTL_FIRST(__VA_ARGS__)), PPUTL_REST(__VA_ARGS__)))

joins [0, 256) args using a joining function

Parameters
joining_fnmacro in the form of F(a, b) -> [joined token]
...args to join
Returns
a single token of all joined arguments
#include <pputl/join/any.h>
#include <pputl/cat.h>
// the following two examples are for demonstration purposes only;
// use the listed preset specializations instead of PPUTL_JOIN_ANY
#define JOIN_DOT(a, b) a.b // equiv. PPUTL_JOIN_DOT
#define JOIN_SLASH(a, b) a/b // equiv. PPUTL_JOIN_SLASH
#define JOIN_SPACE(a, b) a b // equiv. PPUTL_JOIN_SPACE
#define JOIN_CAT(a, b) PPUTL_CAT(a, b) // equiv. PPUTL_CAT
// the following form is generalized as PPUTL_JOIN_GLUE(glue_token, ...)
#define JOIN_UNDERSCORE(a, b) PPUTL_CAT(a, _, b)
PPUTL_JOIN_ANY(JOIN_DOT) // [expands to nothing]
PPUTL_JOIN_ANY(JOIN_DOT, foo) // foo
PPUTL_JOIN_ANY(JOIN_DOT, foo, bar) // foo.bar
PPUTL_JOIN_ANY(JOIN_SLASH, foo, bar) // foo/bar
PPUTL_JOIN_ANY(JOIN_SPACE, foo, bar) // foo bar
PPUTL_JOIN_ANY(JOIN_CAT, foo, bar) // foobar
PPUTL_JOIN_ANY(JOIN_UNDERSCORE, foo, bar) // foo_bar
See also
PPUTL_JOIN_DOT
PPUTL_JOIN_GLUE
PPUTL_JOIN_HYPHEN
PPUTL_JOIN_SLASH
PPUTL_JOIN_SPACE
PPUTL_CAT

◆ PPUTL_JOIN_DOT

#define PPUTL_JOIN_DOT (   ...)    PPUTL_DETAIL_JOIN_DOT_CHOOSER(__VA_OPT__(, ) SIZEY, EMPTY)(__VA_ARGS__)

joins [0, 256) args using a dot (.)

Parameters
...args to join
Returns
a single token of all joined arguments
#include <pputl/join/dot.h>
PPUTL_JOIN_DOT() // [expands to nothing]
PPUTL_JOIN_DOT(foo) // foo
PPUTL_JOIN_DOT(foo, bar) // foo.bar
See also
PPUTL_JOIN_ANY
PPUTL_JOIN_GLUE
PPUTL_JOIN_HYPHEN
PPUTL_JOIN_SLASH
PPUTL_JOIN_SPACE
PPUTL_CAT

◆ PPUTL_JOIN_GLUE

#define PPUTL_JOIN_GLUE (   glue,
  ... 
)
Value:
1, PPUTL_DETAIL_JOIN_GLUE_REDUCE( \
PPUTL_DETAIL_JOIN_GLUE_REDUCER, (glue, PPUTL_FIRST(__VA_ARGS__)), \
PPUTL_REST(__VA_ARGS__)))

joins [0, 256) args using a non-separatory glue token

Parameters
glue- token to insert between joined args
...- args to join
Returns
a single token of all joined arguments
PPUTL_JOIN_GLUE(_) // [expands to nothing]
PPUTL_JOIN_GLUE(_, foo) // foo
PPUTL_JOIN_GLUE(_, foo, bar) // foo_bar
See also
PPUTL_JOIN_ANY
PPUTL_JOIN_DOT
PPUTL_JOIN_HYPHEN
PPUTL_JOIN_SLASH
PPUTL_JOIN_SPACE
PPUTL_CAT

◆ PPUTL_JOIN_HYPHEN

#define PPUTL_JOIN_HYPHEN (   ...)    PPUTL_DETAIL_JOIN_HYPHEN_CHOOSER(__VA_OPT__(, ) SIZEY, EMPTY)(__VA_ARGS__)

joins [0, 256) args using a hyphen (-)

Parameters
...args to join
Returns
a single token of all joined arguments
PPUTL_JOIN_HYPHEN() // [expands to nothing]
PPUTL_JOIN_HYPHEN(foo) // foo
PPUTL_JOIN_HYPHEN(foo, bar) // foo-bar
See also
PPUTL_JOIN_ANY
PPUTL_JOIN_DOT
PPUTL_JOIN_GLUE
PPUTL_JOIN_SLASH
PPUTL_JOIN_SPACE
PPUTL_CAT

◆ PPUTL_JOIN_SLASH

#define PPUTL_JOIN_SLASH (   ...)    PPUTL_DETAIL_JOIN_SLASH_CHOOSER(__VA_OPT__(, ) SIZEY, EMPTY)(__VA_ARGS__)

joins [0, 256) args using a slash (/)

Parameters
...args to join
Returns
a single token of all joined arguments
PPUTL_JOIN_SLASH() // [expands to nothing]
PPUTL_JOIN_SLASH(foo) // foo
PPUTL_JOIN_SLASH(foo, bar) // foo/bar
See also
PPUTL_JOIN_ANY
PPUTL_JOIN_DOT
PPUTL_JOIN_GLUE
PPUTL_JOIN_HYPHEN
PPUTL_JOIN_SPACE
PPUTL_CAT

◆ PPUTL_JOIN_SPACE

#define PPUTL_JOIN_SPACE (   ...)    PPUTL_DETAIL_JOIN_SPACE_CHOOSER(__VA_OPT__(, ) SIZEY, EMPTY)(__VA_ARGS__)

joins [0, 256) args using a space ( )

Parameters
...args to join
Returns
a single token of all joined arguments
PPUTL_JOIN_SPACE() // [expands to nothing]
PPUTL_JOIN_SPACE(foo) // foo
PPUTL_JOIN_SPACE(foo, bar) // foo bar
See also
PPUTL_JOIN_ANY
PPUTL_JOIN_DOT
PPUTL_JOIN_GLUE
PPUTL_JOIN_HYPHEN
PPUTL_JOIN_SLASH
PPUTL_CAT

glue.h
PPUTL_JOIN_GLUE - joins [0, 256) args using a non-separatory glue token
PPUTL_JOIN_SLASH
#define PPUTL_JOIN_SLASH(...)
Definition: slash.h:59
PPUTL_JOIN_SPACE
#define PPUTL_JOIN_SPACE(...)
Definition: space.h:59
PPUTL_JOIN_GLUE
#define PPUTL_JOIN_GLUE(glue,...)
Definition: glue.h:61
PPUTL_TUPLE_ELEM
#define PPUTL_TUPLE_ELEM(idx, tup)
Definition: elem.h:41
space.h
PPUTL_JOIN_SPACE - joins [0, 256) args using a space ( )
dot.h
PPUTL_JOIN_DOT - joins [0, 256) args using a dot (.)
PPUTL_REST
#define PPUTL_REST(...)
Definition: rest.h:49
cat.h
PPUTL_CAT - concatenate [0, 256) args
slash.h
PPUTL_JOIN_SLASH - joins [0, 256) args using a slash (/)
any.h
PPUTL_JOIN_ANY - joins [0, 256) args using a joining function
hyphen.h
PPUTL_JOIN_HYPHEN - joins [0, 256) args using a hyphen (-)
PPUTL_JOIN_HYPHEN
#define PPUTL_JOIN_HYPHEN(...)
Definition: hyphen.h:59
PPUTL_FIRST
#define PPUTL_FIRST(...)
Definition: first.h:48
PPUTL_JOIN_DOT
#define PPUTL_JOIN_DOT(...)
Definition: dot.h:59
PPUTL_JOIN_ANY
#define PPUTL_JOIN_ANY(joining_fn,...)
Definition: any.h:76