| #version 450 |
| #extension GL_EXT_debug_printf : enable |
| |
| #define PASTE(arg) pasted_##arg |
| #define STRINGIFY(arg) #arg |
| #define STRINGIFY_TWICE(arg, regular) before, #arg, #arg, after, regular |
| #define STRINGIFY_WITH_SPACE(arg) debugPrintfEXT( # arg |
| #define PASTE_WITH_SPACE(arg) pasted_## arg |
| #define BOTH(arg1, arg2) debugPrintf##arg1( #arg2 |
| #define NOARGS(arg) 1 1 1 1 |
| |
| #define REGULAR(arg1, arg2) arg1 == arg2 ? arg2 :arg1 |
| #define STR(a) STRHELP(a) |
| #define STRHELP(a) #a |
| |
| #define LEGAL(arg) a######arg |
| |
| bool before, after; |
| |
| void main() { |
| REGULAR(8,9); |
| STRINGIFY(12 3); |
| debugPrintfEXT("%d", (STRINGIFY_TWICE(letters_too, 1))); |
| STRINGIFY_WITH_SPACE(aaa1)); |
| |
| int PASTE(symbol); |
| float PASTE_WITH_SPACE(symbol2); |
| BOTH(EXT, string)); |
| STRHELP(REGULAR(3, 4)); |
| STR(REGULAR(3, 4)); |
| STR(aaa ); |
| STR(STR(hello)); |
| debugPrintfEXT("regular string"); |
| debugPrintfEXT(""); |
| } |