1#pragma once
2
3#define TH_CONCAT_STRING_2(x, y) TH_CONCAT_STRING_2_EXPAND(x, y)
4#define TH_CONCAT_STRING_2_EXPAND(x, y) #x #y
5
6#define TH_CONCAT_STRING_3(x, y, z) TH_CONCAT_STRING_3_EXPAND(x, y, z)
7#define TH_CONCAT_STRING_3_EXPAND(x, y, z) #x #y #z
8
9#define TH_CONCAT_STRING_4(x, y, z, w) TH_CONCAT_STRING_4_EXPAND(x, y, z, w)
10#define TH_CONCAT_STRING_4_EXPAND(x, y, z, w) #x #y #z #w
11
12#define TH_CONCAT_2(x, y) TH_CONCAT_2_EXPAND(x, y)
13#define TH_CONCAT_2_EXPAND(x, y) x##y
14
15#define TH_CONCAT_3(x, y, z) TH_CONCAT_3_EXPAND(x, y, z)
16#define TH_CONCAT_3_EXPAND(x, y, z) x##y##z
17
18#define TH_CONCAT_4_EXPAND(x, y, z, w) x##y##z##w
19#define TH_CONCAT_4(x, y, z, w) TH_CONCAT_4_EXPAND(x, y, z, w)
20