summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/CIndexCXX.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-08-27 21:57:20 +0000
committerTed Kremenek <kremenek@apple.com>2010-08-27 21:57:20 +0000
commit378e93c210230a169a4a4afcf6f81599bca8e2f8 (patch)
treeb561fd62476cdff057c51e6341324741fa53cd32 /clang/tools/libclang/CIndexCXX.cpp
parentaaff8f539a3fffc725ed9b53181d1fe1b2782c28 (diff)
downloadbcm5719-llvm-378e93c210230a169a4a4afcf6f81599bca8e2f8.tar.gz
bcm5719-llvm-378e93c210230a169a4a4afcf6f81599bca8e2f8.zip
Add source file I meant to include in my previous commit.
llvm-svn: 112303
Diffstat (limited to 'clang/tools/libclang/CIndexCXX.cpp')
-rw-r--r--clang/tools/libclang/CIndexCXX.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/clang/tools/libclang/CIndexCXX.cpp b/clang/tools/libclang/CIndexCXX.cpp
new file mode 100644
index 00000000000..a168f160451
--- /dev/null
+++ b/clang/tools/libclang/CIndexCXX.cpp
@@ -0,0 +1,48 @@
+//===- CIndexCXX.cpp - Clang-C Source Indexing Library --------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the libclang support for C++ cursors.
+//
+//===----------------------------------------------------------------------===//
+
+#include "CIndexer.h"
+#include "CXCursor.h"
+#include "CXType.h"
+#include "clang/AST/DeclCXX.h"
+
+using namespace clang;
+using namespace clang::cxstring;
+
+extern "C" {
+
+unsigned clang_isVirtualBase(CXCursor C) {
+ if (C.kind != CXCursor_CXXBaseSpecifier)
+ return 0;
+
+ CXXBaseSpecifier *B = cxcursor::getCursorCXXBaseSpecifier(C);
+ return B->isVirtual();
+}
+
+enum CX_CXXAccessSpecifier clang_getCXXAccessSpecifier(CXCursor C) {
+ if (C.kind != CXCursor_CXXBaseSpecifier)
+ return CX_CXXInvalidAccessSpecifier;
+
+ CXXBaseSpecifier *B = cxcursor::getCursorCXXBaseSpecifier(C);
+ switch (B->getAccessSpecifier()) {
+ case AS_public: return CX_CXXPublic;
+ case AS_protected: return CX_CXXProtected;
+ case AS_private: return CX_CXXPrivate;
+ case AS_none: return CX_CXXInvalidAccessSpecifier;
+ }
+
+ // FIXME: Clang currently thinks this is reachable.
+ return CX_CXXInvalidAccessSpecifier;
+}
+
+} // end extern "C"
OpenPOWER on IntegriCloud