TS(STRING_LITERAL, "string literal",)
TS(WIDE_STRING_LITERAL, "wide string literal",)
-#define PUNCTUATOR(name,string,val) T(_ALL,name,string,val)
+#define ALTERNATE(name, val) T(_CXX, name, #name, val)
+#define PUNCTUATOR(name, string, val) T(_ALL, name, string, val)
#include "tokens_punctuator.inc"
#undef PUNCTUATOR
+#undef ALTERNATE
#define S(mode,x) T(mode,x,#x,)
S(_ALL, auto)
S(_ALL, void)
S(_ALL, while)
+/* C++ keywords */
+#undef bool
+S(_CXX, bool)
+#define bool _Bool
+S(_CXX, catch)
+S(_CXX, class)
+S(_CXX, const_cast)
+S(_CXX, delete)
+S(_CXX, dynamic_cast)
+S(_CXX, explicit)
+S(_CXX, export)
+S(_CXX, false)
+S(_CXX, friend)
+S(_CXX, mutable)
+S(_CXX, namespace)
+S(_CXX, new)
+S(_CXX, operator)
+S(_CXX, private)
+S(_CXX, protected)
+S(_CXX, public)
+S(_CXX, reinterpret_cast)
+S(_CXX, static_cast)
+S(_CXX, template)
+S(_CXX, this)
+S(_CXX, throw)
+S(_CXX, true)
+S(_CXX, try)
+S(_CXX, typeid)
+S(_CXX, typename)
+S(_CXX, using)
+S(_CXX, virtual)
+S(_CXX, wchar_t)
+
S(_C99|_GNUC, _Bool)
S(_ALL, __thread)
S(_ALL, __extension__)
S(_ALL, __builtin_va_arg)
S(_ALL, __builtin_va_end)
S(_ALL, __builtin_alloca)
-S(_ALL, __builtin_nanf)
+S(_ALL, __builtin_inf)
+S(_ALL, __builtin_inff)
+S(_ALL, __builtin_infl)
S(_ALL, __builtin_nan)
-S(_ALL, __builtin_nand)
+S(_ALL, __builtin_nanf)
+S(_ALL, __builtin_nanl)
S(_ALL, __builtin_isgreater)
S(_ALL, __builtin_isgreaterequal)
S(_ALL, __builtin_isless)
S(_ALL, __builtin_huge_val)
S(_ALL, __PRETTY_FUNCTION__)
S(_ALL, __FUNCTION__)
+S(_ALL, __label__)
S(_C99, __func__)
S(_MS, __FUNCSIG__)
S(_MS, __FUNCDNAME__)
#undef S
+/* needed on Windows */
+#ifdef __w64
+#undef __w64
+#endif
+#ifdef __ptr64
+#undef __ptr64
+#endif
+
+/* needed on darwin... */
+#ifdef __signed
+#undef __signed
+#endif
+#ifdef __volatile
+#undef __volatile
+#endif
+#ifdef __const
+#undef __const
+#endif
+#ifdef __restrict
+#undef __restrict
+#endif
+
#define S(mode, x, val) T(mode, x, #x, val)
S(_ANSI|_C99, signed, )
S(_ALL, __signed, = T_signed)
S(_ANSI|_C99, volatile, )
S(_ALL, __volatile, = T_volatile)
S(_ALL, __volatile__, = T_volatile)
-S(_C99, inline, )
+S(_C99|_CXX, inline, )
S(_ALL, __inline, = T_inline)
S(_ALL, __inline__, = T_inline)
S(_GNUC, typeof, )