Kill some CXDecl-related APIs that have been superceded by

CXCursor-based APIs.

llvm-svn: 94037
This commit is contained in:
Douglas Gregor 2010-01-20 21:45:58 +00:00
parent 2582af00d4
commit dd969c897e
3 changed files with 23 additions and 66 deletions

View File

@ -438,9 +438,7 @@ CINDEX_LINKAGE CXDecl clang_getDeclaration(CXEntity, CXTranslationUnit);
/*
* CXDecl Operations.
*/
CINDEX_LINKAGE CXCursor clang_getCursorFromDecl(CXDecl);
CINDEX_LINKAGE CXEntity clang_getEntityFromDecl(CXIndex, CXDecl);
CINDEX_LINKAGE CXString clang_getDeclSpelling(CXDecl);
/**
* \brief Identifies a specific source location within a translation
@ -610,13 +608,6 @@ CINDEX_LINKAGE void clang_getDefinitionSpellingAndExtent(CXCursor,
unsigned *endLine,
unsigned *endColumn);
/*
* If CXCursorKind == Cursor_Reference, then this will return the referenced
* declaration.
* If CXCursorKind == Cursor_Declaration, then this will return the declaration.
*/
CINDEX_LINKAGE CXDecl clang_getCursorDecl(CXCursor);
/**
* \brief A semantic string that describes a code-completion result.
*

View File

@ -593,36 +593,6 @@ CXSourceLocation clang_getRangeEnd(CXSourceRange range) {
return Result;
}
//===----------------------------------------------------------------------===//
// CXDecl Operations.
//===----------------------------------------------------------------------===//
extern "C" {
CXString clang_getDeclSpelling(CXDecl AnonDecl) {
assert(AnonDecl && "Passed null CXDecl");
Decl *D = static_cast<Decl *>(AnonDecl);
NamedDecl *ND = dyn_cast<NamedDecl>(D);
if (!ND)
return CIndexer::createCXString("");
if (ObjCMethodDecl *OMD = dyn_cast<ObjCMethodDecl>(ND))
return CIndexer::createCXString(OMD->getSelector().getAsString().c_str(),
true);
if (ObjCCategoryImplDecl *CIMP = dyn_cast<ObjCCategoryImplDecl>(ND))
// No, this isn't the same as the code below. getIdentifier() is non-virtual
// and returns different names. NamedDecl returns the class name and
// ObjCCategoryImplDecl returns the category name.
return CIndexer::createCXString(CIMP->getIdentifier()->getNameStart());
if (ND->getIdentifier())
return CIndexer::createCXString(ND->getIdentifier()->getNameStart());
return CIndexer::createCXString("");
}
} // end: extern "C"
//===----------------------------------------------------------------------===//
// CXFile Operations.
//===----------------------------------------------------------------------===//
@ -692,6 +662,27 @@ unsigned clang_visitChildren(CXTranslationUnit tu,
return CursorVis.VisitChildren(parent);
}
static CXString getDeclSpelling(Decl *D) {
NamedDecl *ND = dyn_cast_or_null<NamedDecl>(D);
if (!ND)
return CIndexer::createCXString("");
if (ObjCMethodDecl *OMD = dyn_cast<ObjCMethodDecl>(ND))
return CIndexer::createCXString(OMD->getSelector().getAsString().c_str(),
true);
if (ObjCCategoryImplDecl *CIMP = dyn_cast<ObjCCategoryImplDecl>(ND))
// No, this isn't the same as the code below. getIdentifier() is non-virtual
// and returns different names. NamedDecl returns the class name and
// ObjCCategoryImplDecl returns the category name.
return CIndexer::createCXString(CIMP->getIdentifier()->getNameStart());
if (ND->getIdentifier())
return CIndexer::createCXString(ND->getIdentifier()->getNameStart());
return CIndexer::createCXString("");
}
CXString clang_getCursorSpelling(CXCursor C) {
assert(getCursorDecl(C) && "CXCursor has null decl");
if (clang_isTranslationUnit(C.kind))
@ -720,11 +711,11 @@ CXString clang_getCursorSpelling(CXCursor C) {
if (clang_isExpression(C.kind)) {
Decl *D = getDeclFromExpr(getCursorExpr(C));
if (D)
return clang_getDeclSpelling(D);
return getDeclSpelling(D);
return CIndexer::createCXString("");
}
return clang_getDeclSpelling(getCursorDecl(C));
return getDeclSpelling(getCursorDecl(C));
}
const char *clang_getCursorKindSpelling(enum CXCursorKind Kind) {
@ -817,11 +808,6 @@ unsigned clang_equalCursors(CXCursor X, CXCursor Y) {
return X == Y;
}
CXCursor clang_getCursorFromDecl(CXDecl AnonDecl) {
assert(AnonDecl && "Passed null CXDecl");
return MakeCXCursor(static_cast<NamedDecl *>(AnonDecl));
}
unsigned clang_isInvalid(enum CXCursorKind K) {
return K >= CXCursor_FirstInvalid && K <= CXCursor_LastInvalid;
}
@ -850,23 +836,6 @@ CXCursorKind clang_getCursorKind(CXCursor C) {
return C.kind;
}
CXDecl clang_getCursorDecl(CXCursor C) {
if (clang_isDeclaration(C.kind))
return getCursorDecl(C);
if (clang_isReference(C.kind)) {
if (getCursorStmt(C))
return getDeclFromExpr(getCursorStmt(C));
return getCursorDecl(C);
}
if (clang_isExpression(C.kind))
return getDeclFromExpr(getCursorStmt(C));
return 0;
}
static SourceLocation getLocationFromExpr(Expr *E) {
if (ObjCMessageExpr *Msg = dyn_cast<ObjCMessageExpr>(E))
return /*FIXME:*/Msg->getLeftLoc();

View File

@ -12,17 +12,14 @@ _clang_getCompletionChunkCompletionString
_clang_getCompletionChunkKind
_clang_getCompletionChunkText
_clang_getCursor
_clang_getCursorDecl
_clang_getCursorDefinition
_clang_getCursorExtent
_clang_getCursorFromDecl
_clang_getCursorKind
_clang_getCursorKindSpelling
_clang_getCursorLocation
_clang_getCursorReferenced
_clang_getCursorSpelling
_clang_getCursorUSR
_clang_getDeclSpelling
_clang_getDeclaration
_clang_getDefinitionSpellingAndExtent
_clang_getEntityFromDecl