summaryrefslogtreecommitdiffstats
path: root/clang/tools
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-01-27 16:27:11 +0000
committerDouglas Gregor <dgregor@apple.com>2011-01-27 16:27:11 +0000
commit56a6380cb734a98e489940933ed590396f8e7402 (patch)
treec5500db0417ce2e5520baca739803bdc23383698 /clang/tools
parentadd754a02edaa7ab44ce1e0ed731fdf1739133ec (diff)
downloadbcm5719-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.c6
-rw-r--r--clang/tools/libclang/CXType.cpp15
-rw-r--r--clang/tools/libclang/libclang.darwin.exports3
-rw-r--r--clang/tools/libclang/libclang.exports3
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
OpenPOWER on IntegriCloud