Add clang_getDeclSource().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82807 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h
index 2203e28..3178017 100644
--- a/include/clang-c/Index.h
+++ b/include/clang-c/Index.h
@@ -177,6 +177,7 @@
 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 74b3cfd..ff0be0d 100644
--- a/tools/CIndex/CIndex.cpp
+++ b/tools/CIndex/CIndex.cpp
@@ -370,6 +370,14 @@
   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 8cfc1a9..c1ca0c7 100644
--- a/tools/CIndex/CIndex.exports
+++ b/tools/CIndex/CIndex.exports
@@ -11,6 +11,7 @@
 _clang_getDeclSpelling
 _clang_getDeclLine
 _clang_getDeclColumn
+_clang_getDeclSource
 _clang_getEntity
 _clang_getEntityFromDecl
 _clang_getURI