[libclang] Introduce clang_Module_getASTFile function that returns the module file where a module object came from.
rdar://13743084
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180643 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index 3f39a78..e575234 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -2105,14 +2105,19 @@
{
CXModule mod = clang_Cursor_getModule(Cursor);
- CXString name;
+ CXFile astFile;
+ CXString name, astFilename;
unsigned i, numHeaders;
if (mod) {
+ astFile = clang_Module_getASTFile(mod);
+ astFilename = clang_getFileName(astFile);
name = clang_Module_getFullName(mod);
numHeaders = clang_Module_getNumTopLevelHeaders(TU, mod);
- printf(" ModuleName=%s Headers(%d):",
- clang_getCString(name), numHeaders);
+ printf(" ModuleName=%s (%s) Headers(%d):",
+ clang_getCString(name), clang_getCString(astFilename),
+ numHeaders);
clang_disposeString(name);
+ clang_disposeString(astFilename);
for (i = 0; i < numHeaders; ++i) {
CXFile file = clang_Module_getTopLevelHeader(TU, mod, i);
CXString filename = clang_getFileName(file);
diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp
index 0a8a068..a43c1ab 100644
--- a/tools/libclang/CIndex.cpp
+++ b/tools/libclang/CIndex.cpp
@@ -6055,6 +6055,13 @@
return 0;
}
+CXFile clang_Module_getASTFile(CXModule CXMod) {
+ if (!CXMod)
+ return 0;
+ Module *Mod = static_cast<Module*>(CXMod);
+ return const_cast<FileEntry *>(Mod->getASTFile());
+}
+
CXModule clang_Module_getParent(CXModule CXMod) {
if (!CXMod)
return 0;
diff --git a/tools/libclang/libclang.exports b/tools/libclang/libclang.exports
index c7508bc..0c9912e 100644
--- a/tools/libclang/libclang.exports
+++ b/tools/libclang/libclang.exports
@@ -21,6 +21,7 @@
clang_Cursor_isNull
clang_Cursor_isVariadic
clang_Cursor_getModule
+clang_Module_getASTFile
clang_Module_getParent
clang_Module_getName
clang_Module_getFullName