@@ -114,7 +114,7 @@ static TransScopeBlock *trans_scope_block_find(TransScope *scope);
114
114
115
115
static AstNode *resolve_record_decl (Context *c, const ZigClangRecordDecl *record_decl);
116
116
static AstNode *resolve_enum_decl (Context *c, const ZigClangEnumDecl *enum_decl);
117
- static AstNode *resolve_typedef_decl (Context *c, const clang::TypedefNameDecl *typedef_decl);
117
+ static AstNode *resolve_typedef_decl (Context *c, const ZigClangTypedefNameDecl *typedef_decl);
118
118
119
119
static int trans_stmt_extra (Context *c, TransScope *scope, const clang::Stmt *stmt,
120
120
ResultUsed result_used, TransLRValue lrval,
@@ -592,7 +592,7 @@ static bool qual_type_is_fn_ptr(clang::QualType qt) {
592
592
return false ;
593
593
}
594
594
595
- static uint32_t qual_type_int_bit_width (Context *c, const clang::QualType & qt, ZigClangSourceLocation source_loc) {
595
+ static uint32_t qual_type_int_bit_width (Context *c, const clang::QualType qt, ZigClangSourceLocation source_loc) {
596
596
const clang::Type *ty = qt.getTypePtr ();
597
597
switch (ty->getTypeClass ()) {
598
598
case clang::Type::Builtin:
@@ -614,8 +614,8 @@ static uint32_t qual_type_int_bit_width(Context *c, const clang::QualType &qt, Z
614
614
}
615
615
case clang::Type::Typedef:
616
616
{
617
- const clang::TypedefType *typedef_ty = static_cast <const clang::TypedefType *>(ty);
618
- const clang::TypedefNameDecl *typedef_decl = typedef_ty-> getDecl ( );
617
+ const ZigClangTypedefType *typedef_ty = reinterpret_cast <const ZigClangTypedefType *>(ty);
618
+ const ZigClangTypedefNameDecl *typedef_decl = ZigClangTypedefType_getDecl (typedef_ty );
619
619
const char *type_name = ZigClangDecl_getName_bytes_begin ((const ZigClangDecl *)typedef_decl);
620
620
if (strcmp (type_name, " uint8_t" ) == 0 || strcmp (type_name, " int8_t" ) == 0 ) {
621
621
return 8 ;
@@ -636,7 +636,7 @@ static uint32_t qual_type_int_bit_width(Context *c, const clang::QualType &qt, Z
636
636
}
637
637
638
638
639
- static AstNode *qual_type_to_log2_int_ref (Context *c, const clang::QualType & qt,
639
+ static AstNode *qual_type_to_log2_int_ref (Context *c, const clang::QualType qt,
640
640
ZigClangSourceLocation source_loc)
641
641
{
642
642
uint32_t int_bit_width = qual_type_int_bit_width (c, qt, source_loc);
@@ -669,7 +669,7 @@ static AstNode *qual_type_to_log2_int_ref(Context *c, const clang::QualType &qt,
669
669
return log2int_fn_call;
670
670
}
671
671
672
- static bool qual_type_child_is_fn_proto (const clang::QualType & qt) {
672
+ static bool qual_type_child_is_fn_proto (const clang::QualType qt) {
673
673
if (qt.getTypePtr ()->getTypeClass () == clang::Type::Paren) {
674
674
const clang::ParenType *paren_type = static_cast <const clang::ParenType *>(qt.getTypePtr ());
675
675
if (paren_type->getInnerType ()->getTypeClass () == clang::Type::FunctionProto) {
@@ -797,9 +797,11 @@ static bool type_is_opaque(Context *c, const clang::Type *ty, ZigClangSourceLoca
797
797
return type_is_opaque (c, elaborated_ty->getNamedType ().getTypePtr (), source_loc);
798
798
}
799
799
case clang::Type::Typedef: {
800
- const clang::TypedefType *typedef_ty = static_cast <const clang::TypedefType*>(ty);
801
- const clang::TypedefNameDecl *typedef_decl = typedef_ty->getDecl ();
802
- return type_is_opaque (c, typedef_decl->getUnderlyingType ().getTypePtr (), source_loc);
800
+ const ZigClangTypedefType *typedef_ty = reinterpret_cast <const ZigClangTypedefType*>(ty);
801
+ const ZigClangTypedefNameDecl *typedef_decl = ZigClangTypedefType_getDecl (typedef_ty);
802
+ ZigClangQualType underlying_type = ZigClangTypedefNameDecl_getUnderlyingType (typedef_decl);
803
+ clang::QualType qt = bitcast (underlying_type);
804
+ return type_is_opaque (c, qt.getTypePtr (), source_loc);
803
805
}
804
806
default :
805
807
return false ;
@@ -978,8 +980,8 @@ static AstNode *trans_type(Context *c, const clang::Type *ty, ZigClangSourceLoca
978
980
}
979
981
case clang::Type::Typedef:
980
982
{
981
- const clang::TypedefType *typedef_ty = static_cast <const clang::TypedefType *>(ty);
982
- const clang::TypedefNameDecl *typedef_decl = typedef_ty-> getDecl ( );
983
+ const ZigClangTypedefType *typedef_ty = reinterpret_cast <const ZigClangTypedefType *>(ty);
984
+ const ZigClangTypedefNameDecl *typedef_decl = ZigClangTypedefType_getDecl (typedef_ty );
983
985
return resolve_typedef_decl (c, typedef_decl);
984
986
}
985
987
case clang::Type::Elaborated:
@@ -2661,9 +2663,9 @@ static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *
2661
2663
2662
2664
case clang::Type::Typedef:
2663
2665
{
2664
- const clang::TypedefType *typedef_ty = static_cast <const clang::TypedefType *>(ty);
2665
- const clang::TypedefNameDecl *typedef_decl = typedef_ty-> getDecl ( );
2666
- auto existing_entry = c->decl_table .maybe_get ((void *)typedef_decl-> getCanonicalDecl ( ));
2666
+ const ZigClangTypedefType *typedef_ty = reinterpret_cast <const ZigClangTypedefType *>(ty);
2667
+ const ZigClangTypedefNameDecl *typedef_decl = ZigClangTypedefType_getDecl (typedef_ty );
2668
+ auto existing_entry = c->decl_table .maybe_get ((void *)ZigClangTypedefNameDecl_getCanonicalDecl (typedef_decl ));
2667
2669
if (existing_entry) {
2668
2670
return existing_entry->value ;
2669
2671
}
@@ -3952,19 +3954,19 @@ static void visit_fn_decl(Context *c, const clang::FunctionDecl *fn_decl) {
3952
3954
add_top_level_decl (c, fn_def_node->data .fn_def .fn_proto ->data .fn_proto .name , fn_def_node);
3953
3955
}
3954
3956
3955
- static AstNode *resolve_typdef_as_builtin (Context *c, const clang::TypedefNameDecl *typedef_decl, const char *primitive_name) {
3957
+ static AstNode *resolve_typdef_as_builtin (Context *c, const ZigClangTypedefNameDecl *typedef_decl, const char *primitive_name) {
3956
3958
AstNode *node = trans_create_node_symbol_str (c, primitive_name);
3957
3959
c->decl_table .put (typedef_decl, node);
3958
3960
return node;
3959
3961
}
3960
3962
3961
- static AstNode *resolve_typedef_decl (Context *c, const clang::TypedefNameDecl *typedef_decl) {
3962
- auto existing_entry = c->decl_table .maybe_get ((void *)typedef_decl-> getCanonicalDecl ( ));
3963
+ static AstNode *resolve_typedef_decl (Context *c, const ZigClangTypedefNameDecl *typedef_decl) {
3964
+ auto existing_entry = c->decl_table .maybe_get ((void *)ZigClangTypedefNameDecl_getCanonicalDecl (typedef_decl ));
3963
3965
if (existing_entry) {
3964
3966
return existing_entry->value ;
3965
3967
}
3966
3968
3967
- clang::QualType child_qt = typedef_decl-> getUnderlyingType ( );
3969
+ ZigClangQualType child_qt = ZigClangTypedefNameDecl_getUnderlyingType (typedef_decl );
3968
3970
Buf *type_name = buf_create_from_str (ZigClangDecl_getName_bytes_begin ((const ZigClangDecl *)typedef_decl));
3969
3971
3970
3972
if (buf_eql_str (type_name, " uint8_t" )) {
@@ -3999,11 +4001,12 @@ static AstNode *resolve_typedef_decl(Context *c, const clang::TypedefNameDecl *t
3999
4001
4000
4002
// trans_qual_type here might cause us to look at this typedef again so we put the item in the map first
4001
4003
AstNode *symbol_node = trans_create_node_symbol (c, type_name);
4002
- c->decl_table .put (typedef_decl-> getCanonicalDecl ( ), symbol_node);
4004
+ c->decl_table .put (ZigClangTypedefNameDecl_getCanonicalDecl (typedef_decl ), symbol_node);
4003
4005
4004
- AstNode *type_node = trans_qual_type (c, child_qt, bitcast (typedef_decl-> getLocation () ));
4006
+ AstNode *type_node = trans_qual_type (c, bitcast ( child_qt), ZigClangTypedefNameDecl_getLocation (typedef_decl));
4005
4007
if (type_node == nullptr ) {
4006
- emit_warning (c, bitcast (typedef_decl->getLocation ()), " typedef %s - unresolved child type" , buf_ptr (type_name));
4008
+ emit_warning (c, ZigClangTypedefNameDecl_getLocation (typedef_decl),
4009
+ " typedef %s - unresolved child type" , buf_ptr (type_name));
4007
4010
c->decl_table .put (typedef_decl, nullptr );
4008
4011
// TODO add global var with type_name equal to @compileError("unable to resolve C type")
4009
4012
return nullptr ;
@@ -4397,7 +4400,7 @@ static bool decl_visitor(void *context, const ZigClangDecl *zdecl) {
4397
4400
visit_fn_decl (c, static_cast <const clang::FunctionDecl*>(decl));
4398
4401
break ;
4399
4402
case clang::Decl::Typedef:
4400
- resolve_typedef_decl (c, static_cast <const clang::TypedefNameDecl *>(decl));
4403
+ resolve_typedef_decl (c, reinterpret_cast <const ZigClangTypedefNameDecl *>(decl));
4401
4404
break ;
4402
4405
case clang::Decl::Enum:
4403
4406
resolve_enum_decl (c, reinterpret_cast <const ZigClangEnumDecl *>(decl));
0 commit comments