Add CXCursor.[h,cpp]. These files will centralize the logic for creating/probing CXCursors.

llvm-svn: 93547
This commit is contained in:
Ted Kremenek 2010-01-15 20:35:54 +00:00
parent cab014721b
commit 87553c42c0
4 changed files with 63 additions and 12 deletions

View File

@ -13,6 +13,7 @@
//===----------------------------------------------------------------------===//
#include "CIndexer.h"
#include "CXCursor.h"
#include "clang/AST/DeclVisitor.h"
#include "clang/AST/StmtVisitor.h"
@ -24,6 +25,7 @@
#include <cstdio>
using namespace clang;
using namespace clang::cxcursor;
using namespace idx;
//===----------------------------------------------------------------------===//
@ -846,18 +848,6 @@ static enum CXCursorKind TranslateKind(Decl *D) {
return CXCursor_NotImplemented;
}
static CXCursor MakeCXCursor(CXCursorKind K, Decl *D) {
CXCursor C = { K, D, 0, 0 };
return C;
}
static CXCursor MakeCXCursor(CXCursorKind K, Decl *D, Stmt *S) {
assert(clang_isReference(K));
CXCursor C = { K, D, S, 0 };
return C;
}
static Decl *getDeclFromExpr(Stmt *E) {
if (DeclRefExpr *RefExpr = dyn_cast<DeclRefExpr>(E))
return RefExpr->getDecl();

View File

@ -24,6 +24,7 @@ add_clang_library(CIndex
CIndexCodeCompletion.cpp
CIndexUSRs.cpp
CIndexer.cpp
CXCursor.cpp
)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

View File

@ -0,0 +1,29 @@
//===- CXCursor.cpp - Routines for manipulating CXCursors -----------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines routines for manipulating CXCursors.
//
//===----------------------------------------------------------------------===//
#include "CXCursor.h"
#include "clang/AST/Decl.h"
using namespace clang;
CXCursor cxcursor::MakeCXCursor(CXCursorKind K, Decl *D) {
CXCursor C = { K, D, 0, 0 };
return C;
}
CXCursor cxcursor::MakeCXCursor(CXCursorKind K, Decl *D, Stmt *S) {
assert(clang_isReference(K));
CXCursor C = { K, D, S, 0 };
return C;
}

View File

@ -0,0 +1,31 @@
//===- CXCursor.h - Routines for manipulating CXCursors -------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines routines for manipulating CXCursors.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_CXCURSOR_H
#define LLVM_CLANG_CXCursor_H
#include "clang-c/Index.h"
namespace clang {
class Decl;
class Stmt;
namespace cxcursor {
CXCursor MakeCXCursor(CXCursorKind K, clang::Decl *D);
CXCursor MakeCXCursor(CXCursorKind K, clang::Decl *D, clang::Stmt *S);
}} // end namespace: clang::cxcursor
#endif