]> granicus.if.org Git - clang/commitdiff
Convert clang_getCompletionChunkText() to return a CXString.
authorTed Kremenek <kremenek@apple.com>
Wed, 17 Feb 2010 01:42:24 +0000 (01:42 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 17 Feb 2010 01:42:24 +0000 (01:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96439 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang-c/Index.h
tools/CIndex/CIndexCodeCompletion.cpp
tools/c-index-test/c-index-test.c

index 1d654c884886fe4f07f2d876fd03c9705ed1ef63..146a1a636ec90034e1f992016726d278b1bc876a 100644 (file)
@@ -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);
 
index 4e41c5f1c7b5b95d3642516804483047d4d6b270..4912fef2e255aa21a9f32b8853772f445a417947 100644 (file)
@@ -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) {
index 360f75a66e0d4a173b29d677551393556b821509..640375aaeace828998232b9938d59bc4c2e6622b 100644 (file)
@@ -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,