aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-02-17 01:42:24 +0000
committerTed Kremenek <kremenek@apple.com>2010-02-17 01:42:24 +0000
commit2ef6f8f5a35a60870594c5b04e0aa2bf22c6886f (patch)
tree684b4ade05b4130a929cc6bd4e94cfae328482c1
parentab44216009dbdaa9a3b26f541ead13e85f6e39b3 (diff)
Convert clang_getCompletionChunkText() to return a CXString.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96439 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang-c/Index.h2
-rw-r--r--tools/CIndex/CIndexCodeCompletion.cpp14
-rw-r--r--tools/c-index-test/c-index-test.c8
3 files changed, 15 insertions, 9 deletions
diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h
index 1d654c8848..146a1a636e 100644
--- a/include/clang-c/Index.h
+++ b/include/clang-c/Index.h
@@ -1478,7 +1478,7 @@ clang_getCompletionChunkKind(CXCompletionString completion_string,
*
* \returns the text associated with the chunk at index \c chunk_number.
*/
-CINDEX_LINKAGE const char *
+CINDEX_LINKAGE CXString
clang_getCompletionChunkText(CXCompletionString completion_string,
unsigned chunk_number);
diff --git a/tools/CIndex/CIndexCodeCompletion.cpp b/tools/CIndex/CIndexCodeCompletion.cpp
index 4e41c5f1c7..4912fef2e2 100644
--- a/tools/CIndex/CIndexCodeCompletion.cpp
+++ b/tools/CIndex/CIndexCodeCompletion.cpp
@@ -21,6 +21,7 @@
#include "llvm/System/Program.h"
using namespace clang;
+using namespace clang::cxstring;
extern "C" {
@@ -80,11 +81,11 @@ clang_getCompletionChunkKind(CXCompletionString completion_string,
return CXCompletionChunk_Text;
}
-const char *clang_getCompletionChunkText(CXCompletionString completion_string,
- unsigned chunk_number) {
+CXString clang_getCompletionChunkText(CXCompletionString completion_string,
+ unsigned chunk_number) {
CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
if (!CCStr || chunk_number >= CCStr->size())
- return 0;
+ return createCXString(0);
switch ((*CCStr)[chunk_number].Kind) {
case CodeCompletionString::CK_TypedText:
@@ -107,17 +108,18 @@ const char *clang_getCompletionChunkText(CXCompletionString completion_string,
case CodeCompletionString::CK_Equal:
case CodeCompletionString::CK_HorizontalSpace:
case CodeCompletionString::CK_VerticalSpace:
- return (*CCStr)[chunk_number].Text;
+ return createCXString((*CCStr)[chunk_number].Text, false);
case CodeCompletionString::CK_Optional:
// Note: treated as an empty text block.
- return "";
+ return createCXString("");
}
// Should be unreachable, but let's be careful.
- return 0;
+ return createCXString(0);
}
+
CXCompletionString
clang_getCompletionChunkCompletionString(CXCompletionString completion_string,
unsigned chunk_number) {
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index 360f75a66e..640375aaea 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -755,7 +755,8 @@ void print_completion_string(CXCompletionString completion_string, FILE *file) {
N = clang_getNumCompletionChunks(completion_string);
for (I = 0; I != N; ++I) {
- const char *text = 0;
+ CXString text;
+ const char *cstr;
enum CXCompletionChunkKind Kind
= clang_getCompletionChunkKind(completion_string, I);
@@ -769,10 +770,13 @@ void print_completion_string(CXCompletionString completion_string, FILE *file) {
}
text = clang_getCompletionChunkText(completion_string, I);
+ cstr = clang_getCString(text);
fprintf(file, "{%s %s}",
clang_getCompletionChunkKindSpelling(Kind),
- text? text : "");
+ cstr ? cstr : "");
+ clang_disposeString(text);
}
+
}
void print_completion_result(CXCompletionResult *completion_result,