diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-01-27 16:27:11 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-01-27 16:27:11 +0000 |
commit | 56a6380cb734a98e489940933ed590396f8e7402 (patch) | |
tree | c5500db0417ce2e5520baca739803bdc23383698 /clang/tools | |
parent | add754a02edaa7ab44ce1e0ed731fdf1739133ec (diff) | |
download | bcm5719-llvm-56a6380cb734a98e489940933ed590396f8e7402.tar.gz bcm5719-llvm-56a6380cb734a98e489940933ed590396f8e7402.zip |
Add libclang functions to determine the const/volatile/restrict
qualifiers on a CXType. Patch from Stefan Seefeld, test by me.
llvm-svn: 124377
Diffstat (limited to 'clang/tools')
-rw-r--r-- | clang/tools/c-index-test/c-index-test.c | 6 | ||||
-rw-r--r-- | clang/tools/libclang/CXType.cpp | 15 | ||||
-rw-r--r-- | clang/tools/libclang/libclang.darwin.exports | 3 | ||||
-rw-r--r-- | clang/tools/libclang/libclang.exports | 3 |
4 files changed, 27 insertions, 0 deletions
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c index 7238f4a2d0f..be3a0795984 100644 --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/tools/c-index-test/c-index-test.c @@ -568,6 +568,12 @@ static enum CXChildVisitResult PrintTypeKind(CXCursor cursor, CXCursor p, CXString S = clang_getTypeKindSpelling(T.kind); PrintCursor(cursor); printf(" typekind=%s", clang_getCString(S)); + if (clang_isConstQualifiedType(T)) + printf(" const"); + if (clang_isVolatileQualifiedType(T)) + printf(" volatile"); + if (clang_isRestrictQualifiedType(T)) + printf(" restrict"); clang_disposeString(S); /* Print the canonical type if it is different. */ { diff --git a/clang/tools/libclang/CXType.cpp b/clang/tools/libclang/CXType.cpp index 7b603c0f932..93326724de8 100644 --- a/clang/tools/libclang/CXType.cpp +++ b/clang/tools/libclang/CXType.cpp @@ -186,6 +186,21 @@ CXType clang_getCanonicalType(CXType CT) { return MakeCXType(AU->getASTContext().getCanonicalType(T), TU); } +unsigned clang_isConstQualifiedType(CXType CT) { + QualType T = GetQualType(CT); + return T.isLocalConstQualified(); +} + +unsigned clang_isVolatileQualifiedType(CXType CT) { + QualType T = GetQualType(CT); + return T.isLocalVolatileQualified(); +} + +unsigned clang_isRestrictQualifiedType(CXType CT) { + QualType T = GetQualType(CT); + return T.isLocalRestrictQualified(); +} + CXType clang_getPointeeType(CXType CT) { QualType T = GetQualType(CT); const Type *TP = T.getTypePtrOrNull(); diff --git a/clang/tools/libclang/libclang.darwin.exports b/clang/tools/libclang/libclang.darwin.exports index 1792312de27..7614544ca3b 100644 --- a/clang/tools/libclang/libclang.darwin.exports +++ b/clang/tools/libclang/libclang.darwin.exports @@ -109,16 +109,19 @@ _clang_getTypeDeclaration _clang_getTypeKindSpelling _clang_hashCursor _clang_isCursorDefinition +_clang_isConstQualifiedType _clang_isDeclaration _clang_isExpression _clang_isInvalid _clang_isPODType _clang_isPreprocessing _clang_isReference +_clang_isRestrictQualifiedType _clang_isStatement _clang_isTranslationUnit _clang_isUnexposed _clang_isVirtualBase +_clang_isVolatileQualifiedType _clang_parseTranslationUnit _clang_reparseTranslationUnit _clang_saveTranslationUnit diff --git a/clang/tools/libclang/libclang.exports b/clang/tools/libclang/libclang.exports index c5415e36140..c2f0587b9ae 100644 --- a/clang/tools/libclang/libclang.exports +++ b/clang/tools/libclang/libclang.exports @@ -108,6 +108,7 @@ clang_getTranslationUnitSpelling clang_getTypeDeclaration clang_getTypeKindSpelling clang_hashCursor +clang_isConstQualifiedType clang_isCursorDefinition clang_isDeclaration clang_isExpression @@ -115,10 +116,12 @@ clang_isInvalid clang_isPODType clang_isPreprocessing clang_isReference +clang_isRestrictQualifiedType clang_isStatement clang_isTranslationUnit clang_isUnexposed clang_isVirtualBase +clang_isVolatileQualifiedType clang_parseTranslationUnit clang_reparseTranslationUnit clang_saveTranslationUnit |