[cfe-commits] r112303 - /cfe/trunk/tools/libclang/CIndexCXX.cpp

Ted Kremenek kremenek at apple.com
Fri Aug 27 14:57:20 PDT 2010


Author: kremenek
Date: Fri Aug 27 16:57:20 2010
New Revision: 112303

URL: http://llvm.org/viewvc/llvm-project?rev=112303&view=rev
Log:
Add source file I meant to include in my previous commit.

Added:
    cfe/trunk/tools/libclang/CIndexCXX.cpp

Added: cfe/trunk/tools/libclang/CIndexCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndexCXX.cpp?rev=112303&view=auto
==============================================================================
--- cfe/trunk/tools/libclang/CIndexCXX.cpp (added)
+++ cfe/trunk/tools/libclang/CIndexCXX.cpp Fri Aug 27 16:57:20 2010
@@ -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"





More information about the cfe-commits mailing list