aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang-c/Index.h1
-rw-r--r--tools/CIndex/CIndex.cpp8
-rw-r--r--tools/CIndex/CIndex.exports1
3 files changed, 10 insertions, 0 deletions
diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h
index 2203e28723..3178017e45 100644
--- a/include/clang-c/Index.h
+++ b/include/clang-c/Index.h
@@ -177,6 +177,7 @@ CXEntity clang_getEntityFromDecl(CXDecl);
const char *clang_getDeclSpelling(CXDecl);
unsigned clang_getDeclLine(CXDecl);
unsigned clang_getDeclColumn(CXDecl);
+const char *clang_getDeclSource(CXDecl);
/*
* CXCursor Operations.
diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp
index 74b3cfd8af..ff0be0d9e2 100644
--- a/tools/CIndex/CIndex.cpp
+++ b/tools/CIndex/CIndex.cpp
@@ -370,6 +370,14 @@ unsigned clang_getDeclColumn(CXDecl AnonDecl)
return SourceMgr.getSpellingLineNumber(ND->getLocation());
}
+const char *clang_getDeclSource(CXDecl AnonDecl)
+{
+ assert(AnonDecl && "Passed null CXDecl");
+ NamedDecl *ND = static_cast<NamedDecl *>(AnonDecl);
+ SourceManager &SourceMgr = ND->getASTContext().getSourceManager();
+ return SourceMgr.getBufferName(ND->getLocation());
+}
+
const char *clang_getCursorSpelling(CXCursor C)
{
assert(C.decl && "CXCursor has null decl");
diff --git a/tools/CIndex/CIndex.exports b/tools/CIndex/CIndex.exports
index 8cfc1a9d7f..c1ca0c7735 100644
--- a/tools/CIndex/CIndex.exports
+++ b/tools/CIndex/CIndex.exports
@@ -11,6 +11,7 @@ _clang_getDeclarationName
_clang_getDeclSpelling
_clang_getDeclLine
_clang_getDeclColumn
+_clang_getDeclSource
_clang_getEntity
_clang_getEntityFromDecl
_clang_getURI