Token Metaprogramming module
This module provides various macros for metaprogramming on/with tokens/text
Defines
- #define CONCAT(...)
- Concatenates an arbitrary number of arguments.
- #define CONCAT_DEFERRED(...)
- Concatenates an arbitrary number of arguments, with one additional layer of indirection.
- #define CONCAT0(...)
- Concatenates zero arguments.
- #define CONCAT1(A)
- Concatenates nothing to one argument (returns the given argument)
- #define CONCAT2(A, B)
- Concatenates the two arguments.
- #define CONCAT2_DEFERRED(A, B)
- Concatenates the two arguments with one additional layer of indirection.
- #define CONCAT3(A, B, C)
- Concatenates the three arguments.
- #define CONCAT4(A, B, C, D)
- Concatenates the four arguments.
- #define CONCAT5(A, B, C, D, E)
- Concatenates the five arguments.
- #define CONCAT6(A, B, C, D, E, F)
- Concatenates the 6 arguments.
- #define CONCAT7(A, B, C, D, E, F, G)
- Concatenates the 7 arguments.
- #define CONCAT8(A, B, C, D, E, F, G, H)
- Concatenates the 8 arguments.
- #define CONCAT9(A, B, C, D, E, F, G, H, I)
- Concatenates the 9 arguments.
- #define CONCAT10(A, B, C, D, E, F, G, H, I, J)
- Concatenates the 10 arguments.
- #define CONCAT11(A, B, C, D, E, F, G, H, I, J, K)
- Concatenates the 11 arguments.
- #define CONCAT12(A, B, C, D, E, F, G, H, I, J, K, L)
- Concatenates the 12 arguments.
- #define CONCAT13(A, B, C, D, E, F, G, H, I, J, K, L, M)
- Concatenates the 13 arguments.
- #define AS_STRING(x)
- Stringifies the given textual argument.
Define documentation
#define CONCAT(...)
#include <include/Cnx/Def.h>
Concatenates an arbitrary number of arguments.
| Parameters | |
|---|---|
| ... | - The arguments to concatenate |
The arguments must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT_DEFERRED(...)
#include <include/Cnx/Def.h>
Concatenates an arbitrary number of arguments, with one additional layer of indirection.
| Parameters | |
|---|---|
| ... | - The arguments to concatenate |
The arguments must be alphanumeric, macro-concatenation compatible sequences of characters. This is useful for use in a macro chain when the result must be deferred through one-further stage of macro replacement than the normal CONCAT(...) provides
#define CONCAT0(...)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates zero arguments.
| Parameters | |
|---|---|
| ... | - The arguments that will not be concatenated |
| Returns | nothing |
#define CONCAT1(A)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates nothing to one argument (returns the given argument)
| Parameters | |
|---|---|
| A | - the argument to concatenate nothing to |
| Returns | A |
#define CONCAT2(A,
B)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the two arguments.
| Parameters | |
|---|---|
| A | - the left-side portion of the concatenation |
| B | - the right-side portion of the concatenation |
| Returns | the concatenation of A and B |
A and B must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT2_DEFERRED(A,
B)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the two arguments with one additional layer of indirection.
| Parameters | |
|---|---|
| A | - the left-side portion of the concatenation |
| B | - the right-side portion of the concatenation |
| Returns | the concatenation of A and B |
A and B must be alphanumeric, macro-concatenation compatible sequences of characters This is useful for use in a macro chain when the result must be deferred through one-further stage of macro replacement than the normal CONCAT2(A, B) provides
#define CONCAT3(A,
B,
C)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the three arguments.
| Parameters | |
|---|---|
| A | - the left-side portion of the concatenation |
| B | - the middle portion of the concatenation |
| C | - the right-side portion of the concatenation |
| Returns | the concatenation of A, B, and C |
A, B, and C must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT4(A,
B,
C,
D)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the four arguments.
| Parameters | |
|---|---|
| A | - the left-side portion of the concatenation |
| B | - the left-middle portion of the concatenation |
| C | - the right-middle portion of the concatenation |
| D | - the right-side portion of the concatenation |
| Returns | the concatenation of A, B, C, and D |
A, B, C, and D must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT5(A,
B,
C,
D,
E)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the five arguments.
| Parameters | |
|---|---|
| A | - the first portion of the concatenation |
| B | - the second portion of the concatenation |
| C | - the third portion of the concatenation |
| D | - the fourth portion of the concatenation |
| E | - the fifth portion of the concatenation |
| Returns | the concatenation of A, B, C, D, E |
A, B, C, D, E must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT6(A,
B,
C,
D,
E,
F)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the 6 arguments.
| Parameters | |
|---|---|
| A | - the first portion of the concatenation |
| B | - the second portion of the concatenation |
| C | - the third portion of the concatenation |
| D | - the fourth portion of the concatenation |
| E | - the fifth portion of the concatenation |
| F | - the sixth portion of the concatenation |
| Returns | the concatenation of A, B, C, D, E, F |
A, B, C, D, E, F must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT7(A,
B,
C,
D,
E,
F,
G)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the 7 arguments.
| Parameters | |
|---|---|
| A | - the first portion of the concatenation |
| B | - the second portion of the concatenation |
| C | - the third portion of the concatenation |
| D | - the fourth portion of the concatenation |
| E | - the fifth portion of the concatenation |
| F | - the sixth portion of the concatenation |
| G | - the seventh portion of the concatenation |
| Returns | the concatenation of A, B, C, D, E, F, G |
A, B, C, D, E, F, G must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT8(A,
B,
C,
D,
E,
F,
G,
H)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the 8 arguments.
| Parameters | |
|---|---|
| A | - the first portion of the concatenation |
| B | - the second portion of the concatenation |
| C | - the third portion of the concatenation |
| D | - the fourth portion of the concatenation |
| E | - the fifth portion of the concatenation |
| F | - the sixth portion of the concatenation |
| G | - the seventh portion of the concatenation |
| H | - the eight portion of the concatenation |
| Returns | the concatenation of A, B, C, D, E, F, G, H |
A, B, C, D, E, F, G, H must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT9(A,
B,
C,
D,
E,
F,
G,
H,
I)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the 9 arguments.
| Parameters | |
|---|---|
| A | - the first portion of the concatenation |
| B | - the second portion of the concatenation |
| C | - the third portion of the concatenation |
| D | - the fourth portion of the concatenation |
| E | - the fifth portion of the concatenation |
| F | - the sixth portion of the concatenation |
| G | - the seventh portion of the concatenation |
| H | - the eight portion of the concatenation |
| I | - the ninth portion of the concatenation |
| Returns | the concatenation of A, B, C, D, E, F, G, H, I |
A, B, C, D, E, F, G, H, I must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT10(A,
B,
C,
D,
E,
F,
G,
H,
I,
J)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the 10 arguments.
| Parameters | |
|---|---|
| A | - the first portion of the concatenation |
| B | - the second portion of the concatenation |
| C | - the third portion of the concatenation |
| D | - the fourth portion of the concatenation |
| E | - the fifth portion of the concatenation |
| F | - the sixth portion of the concatenation |
| G | - the seventh portion of the concatenation |
| H | - the eight portion of the concatenation |
| I | - the ninth portion of the concatenation |
| J | - the tenth portion of the concatenation |
| Returns | the concatenation of A, B, C, D, E, F, G, H, I, J |
A, B, C, D, E, F, G, H, I, J must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT11(A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the 11 arguments.
| Parameters | |
|---|---|
| A | - the first portion of the concatenation |
| B | - the second portion of the concatenation |
| C | - the third portion of the concatenation |
| D | - the fourth portion of the concatenation |
| E | - the fifth portion of the concatenation |
| F | - the sixth portion of the concatenation |
| G | - the seventh portion of the concatenation |
| H | - the eight portion of the concatenation |
| I | - the ninth portion of the concatenation |
| J | - the tenth portion of the concatenation |
| K | - the eleventh portion of the concatenation |
| Returns | the concatenation of A, B, C, D, E, F, G, H, I, J, K |
A, B, C, D, E, F, G, H, I, J, K must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT12(A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the 12 arguments.
| Parameters | |
|---|---|
| A | - the first portion of the concatenation |
| B | - the second portion of the concatenation |
| C | - the third portion of the concatenation |
| D | - the fourth portion of the concatenation |
| E | - the fifth portion of the concatenation |
| F | - the sixth portion of the concatenation |
| G | - the seventh portion of the concatenation |
| H | - the eight portion of the concatenation |
| I | - the ninth portion of the concatenation |
| J | - the tenth portion of the concatenation |
| K | - the eleventh portion of the concatenation |
| L | - the twelfth portion of the concatenation |
| Returns | the concatenation of A, B, C, D, E, F, G, H, I, J, K, L |
A, B, C, D, E, F, G, H, I, J, K, L must be alphanumeric, macro-concatenation compatible sequences of characters
#define CONCAT13(A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M)
#include <include/Cnx/mpl/PPStrings.h>
Concatenates the 13 arguments.
| Parameters | |
|---|---|
| A | - the first portion of the concatenation |
| B | - the second portion of the concatenation |
| C | - the third portion of the concatenation |
| D | - the fourth portion of the concatenation |
| E | - the fifth portion of the concatenation |
| F | - the sixth portion of the concatenation |
| G | - the seventh portion of the concatenation |
| H | - the eight portion of the concatenation |
| I | - the ninth portion of the concatenation |
| J | - the tenth portion of the concatenation |
| K | - the eleventh portion of the concatenation |
| L | - the twelfth portion of the concatenation |
| M | - the thirteenth portion of the concatenation |
| Returns | the concatenation of A, B, C, D, E, F, G, H, I, J, K, L, M |
A, B, C, D, E, F, G, H, I, J, K, L, M must be alphanumeric, macro-concatenation compatible sequences of characters
#define AS_STRING(x)
#include <include/Cnx/mpl/PPStrings.h>
Stringifies the given textual argument.
| Parameters | |
|---|---|
| x | - The text to stringify |
| Returns | x as a string literal |
Converts the given argument into a string literal, performing macro expansion if necessary