aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-02-17 00:41:20 +0000
committerTed Kremenek <kremenek@apple.com>2010-02-17 00:41:20 +0000
commit74844072411bae91d5dbb89955d200cbe1e0a1c8 (patch)
treef380ec01827d8b49d6349dc1ffd6e2c79de73cb6
parentee4db4fccbcab7e6bd614fe8757c5453e7ad0e86 (diff)
Change clang_getFileName() to return a 'CXString' instead of 'const char *'.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96424 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang-c/Index.h2
-rw-r--r--tools/CIndex/CIndex.cpp6
-rw-r--r--tools/c-index-test/c-index-test.c36
3 files changed, 31 insertions, 13 deletions
diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h
index 84ec4724e0..5e41624729 100644
--- a/include/clang-c/Index.h
+++ b/include/clang-c/Index.h
@@ -207,7 +207,7 @@ typedef void *CXFile;
/**
* \brief Retrieve the complete file and path name of the given file.
*/
-CINDEX_LINKAGE const char *clang_getFileName(CXFile SFile);
+CINDEX_LINKAGE CXString clang_getFileName(CXFile SFile);
/**
* \brief Retrieve the last modification time of the given file.
diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp
index 87645d2e84..44efba7568 100644
--- a/tools/CIndex/CIndex.cpp
+++ b/tools/CIndex/CIndex.cpp
@@ -1223,12 +1223,12 @@ CXSourceLocation clang_getRangeEnd(CXSourceRange range) {
//===----------------------------------------------------------------------===//
extern "C" {
-const char *clang_getFileName(CXFile SFile) {
+CXString clang_getFileName(CXFile SFile) {
if (!SFile)
- return 0;
+ return createCXString(NULL);
FileEntry *FEnt = static_cast<FileEntry *>(SFile);
- return FEnt->getName();
+ return createCXString(FEnt->getName());
}
time_t clang_getFileTime(CXFile SFile) {
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index d4771c77f5..334c7891f7 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -172,13 +172,19 @@ static void PrintCursor(CXCursor Cursor) {
static const char* GetCursorSource(CXCursor Cursor) {
CXSourceLocation Loc = clang_getCursorLocation(Cursor);
- const char *source;
+ CXString source;
CXFile file;
clang_getInstantiationLocation(Loc, &file, 0, 0, 0);
source = clang_getFileName(file);
- if (!source)
- return "<invalid loc>";
- return basename(source);
+ if (!source.Spelling) {
+ clang_disposeString(source);
+ return "<invalid loc>";
+ }
+ else {
+ const char *b = basename(source.Spelling);
+ clang_disposeString(source);
+ return b;
+ }
}
/******************************************************************************/
@@ -205,8 +211,11 @@ static void PrintDiagnosticCallback(CXDiagnostic Diagnostic,
if (file) {
unsigned i, n;
unsigned printed_any_ranges = 0;
+ CXString fname;
- fprintf(out, "%s:%d:%d:", clang_getFileName(file), line, column);
+ fname = clang_getFileName(file);
+ fprintf(out, "%s:%d:%d:", fname.Spelling, line, column);
+ clang_disposeString(fname);
n = clang_getDiagnosticNumRanges(Diagnostic);
for (i = 0; i != n; ++i) {
@@ -376,7 +385,7 @@ static enum CXChildVisitResult FunctionScanVisitor(CXCursor Cursor,
while (startBuf < endBuf) {
CXSourceLocation Loc;
CXFile file;
- const char *source = 0;
+ CXString source;
if (*startBuf == '\n') {
startBuf++;
@@ -387,8 +396,9 @@ static enum CXChildVisitResult FunctionScanVisitor(CXCursor Cursor,
Loc = clang_getCursorLocation(Cursor);
clang_getInstantiationLocation(Loc, &file, 0, 0, 0);
+
source = clang_getFileName(file);
- if (source) {
+ if (source.Spelling) {
CXSourceLocation RefLoc
= clang_getLocation(Data->TU, file, curLine, curColumn);
Ref = clang_getCursor(Data->TU, RefLoc);
@@ -401,6 +411,7 @@ static enum CXChildVisitResult FunctionScanVisitor(CXCursor Cursor,
printf("\n");
}
}
+ clang_disposeString(source);
startBuf++;
}
@@ -439,13 +450,20 @@ void InclusionVisitor(CXFile includedFile, CXSourceLocation *includeStack,
unsigned includeStackLen, CXClientData data) {
unsigned i;
- printf("file: %s\nincluded by:\n", clang_getFileName(includedFile));
+ CXString fname;
+
+ fname = clang_getFileName(includedFile);
+ printf("file: %s\nincluded by:\n", fname.Spelling);
+ clang_disposeString(fname);
+
for (i = 0; i < includeStackLen; ++i) {
CXFile includingFile;
unsigned line, column;
clang_getInstantiationLocation(includeStack[i], &includingFile, &line,
&column, 0);
- printf(" %s:%d:%d\n", clang_getFileName(includingFile), line, column);
+ fname = clang_getFileName(includingFile);
+ printf(" %s:%d:%d\n", fname.Spelling, line, column);
+ clang_disposeString(fname);
}
printf("\n");
}