diff --git a/c/clang/_wrap/cursor.cpp b/c/clang/_wrap/cursor.cpp index df501f4b..fb13f933 100644 --- a/c/clang/_wrap/cursor.cpp +++ b/c/clang/_wrap/cursor.cpp @@ -53,10 +53,16 @@ void wrap_clang_getElementType(CXType *Typ, CXType *elemTyp) { *elemTyp = clang_ long long wrap_clang_getArraySize(CXType *arrayTyp) { return clang_getArraySize(*arrayTyp); } +void wrap_clang_Type_getNamedType(CXType *typ, CXType *namedTyp) { *namedTyp = clang_Type_getNamedType(*typ); } + void wrap_clang_getCanonicalType(CXType *typ, CXType *canonicalType) { *canonicalType = clang_getCanonicalType(*typ); } CXString wrap_clang_getTypeSpelling(CXType *typ) { return clang_getTypeSpelling(*typ); } +void wrap_clang_getTypedefDeclUnderlyingType(CXCursor *cur, CXType *typ) { + *typ = clang_getTypedefDeclUnderlyingType(*cur); +} + CXString wrap_clang_getTokenSpelling(CXTranslationUnit unit, CXToken *token) { return clang_getTokenSpelling(unit, *token); } diff --git a/c/clang/clang.go b/c/clang/clang.go index db7c7168..b637d0ff 100644 --- a/c/clang/clang.go +++ b/c/clang/clang.go @@ -1863,6 +1863,20 @@ func (t Type) String() (ret String) { return t.wrapString() } +/** + * Retrieve the underlying type of a typedef declaration. + * + * If the cursor does not reference a typedef declaration, an invalid type is + * returned. + */ +// llgo:link (*Cursor).wrapTypedefDeclUnderlyingType C.wrap_clang_getTypedefDeclUnderlyingType +func (c *Cursor) wrapTypedefDeclUnderlyingType(ret *Type) { return } + +func (c Cursor) TypedefDeclUnderlyingType() (ret Type) { + c.wrapTypedefDeclUnderlyingType(&ret) + return +} + /** * Retrieve the return type associated with a function type. * @@ -1954,6 +1968,19 @@ func (t Type) ArraySize() (ret c.LongLong) { return t.wrapArraySize() } +/** + * Retrieve the type named by the qualified-id. + * + * If a non-elaborated type is passed in, an invalid type is returned. + */ +// llgo:link (*Type).wrapNamedType C.wrap_clang_Type_getNamedType +func (t *Type) wrapNamedType(ret *Type) { return } + +func (t Type) NamedType() (ret Type) { + t.wrapNamedType(&ret) + return +} + /** * Return the canonical type for a CXType. *