init_types_and_adjust();
init_typehash();
init_basic_types();
- if (wchar_atomic_kind == ATOMIC_TYPE_INT)
- init_wchar_types(type_int);
- else if (wchar_atomic_kind == ATOMIC_TYPE_USHORT)
- init_wchar_types(type_short);
- else
- panic("unexpected wchar type");
+ if (c_mode & _CXX) {
+ init_wchar_types(ATOMIC_TYPE_WCHAR_T);
+ } else {
+ init_wchar_types(wchar_atomic_kind);
+ }
init_preprocessor();
init_ast();
init_parser();
type_ssize_t_ptr = make_pointer_type(type_ssize_t, TYPE_QUALIFIER_NONE);
}
-void init_wchar_types(type_t *base)
+void init_wchar_types(atomic_type_kind_t akind)
{
- assert(base->kind == TYPE_ATOMIC);
- type_wchar_t = base;
- type_const_wchar_t
- = make_atomic_type(base->atomic.akind, TYPE_QUALIFIER_CONST);
- type_wchar_t_ptr = make_pointer_type(type_wchar_t, TYPE_QUALIFIER_NONE);
+ type_wchar_t = make_atomic_type(akind, TYPE_QUALIFIER_NONE);
+ type_const_wchar_t = make_atomic_type(akind, TYPE_QUALIFIER_CONST);
+ type_wchar_t_ptr = make_pointer_type(type_wchar_t, TYPE_QUALIFIER_NONE);
type_const_wchar_t_ptr
= make_pointer_type(type_const_wchar_t, TYPE_QUALIFIER_NONE);
}
extern type_t *type_unsigned_int128;
void init_basic_types(void);
-void init_wchar_types(type_t *base);
+void init_wchar_types(atomic_type_kind_t wchar_akind);
#endif