Ne.app NeANT
The Ne.app NeANT User module of the NeANT distribution.
types.h
Go to the documentation of this file.
1// definitions of the type_name() helper overloads
2
3
25#define STRSTR(symbol) #symbol
26#define STR(symbol) STRSTR (symbol)
27#define DEFINE_TYPE_HELPER(T, symbol) \
28 const char* type_name (T t) { \
29 if (t) return symbol; else return STR (T); \
30 } typedef void unused_typedef
31
32
33DEFINE_TYPE_HELPER (char, "CHAR");
34DEFINE_TYPE_HELPER (signed char, "SCHAR");
35DEFINE_TYPE_HELPER (unsigned char, "UCHAR");
36
37DEFINE_TYPE_HELPER (short, "SHRT");
38DEFINE_TYPE_HELPER (unsigned short, "USHRT");
39
40DEFINE_TYPE_HELPER (int, "INT");
41DEFINE_TYPE_HELPER (unsigned, "UINT");
42
43DEFINE_TYPE_HELPER (long, "LONG");
44DEFINE_TYPE_HELPER (unsigned long, "ULONG");
45
46#ifdef LONG_LONG
47
49DEFINE_TYPE_HELPER (unsigned LONG_LONG, "ULLONG");
50
51#endif // LONG_LONG
52
53// for any other type
54const char* type_name (...) { return 0; }
const char * type_name()
#define LONG_LONG
#define DEFINE_TYPE_HELPER(T, symbol)
Definition types.h:27