[cfe-commits] [Patch] adding clang_getCompletionAnnotation
Douglas Gregor
dgregor at apple.com
Thu Oct 13 09:26:13 PDT 2011
On Oct 11, 2011, at 7:46 AM, Erik Verbruggen wrote:
> Hi,
>
> The attached patch adds clang_getCompletionAnnotation to libclang, which can be used to retrieve annotation attributes for CXCompletionString-s. To do this, I extended CodeCompletionString to store the annotation strings inside the object, right after the Chunks. This patch is on top of r141497.
I think it's a little strange that we're pulling data traditionally in cursors into completions, piece-meal, but I don't see a better way right now. A few comments:
--- a/include/clang/Sema/CodeCompleteConsumer.h
+++ b/include/clang/Sema/CodeCompleteConsumer.h
@@ -435,12 +435,15 @@ private:
/// \brief The availability of this code-completion result.
unsigned Availability : 2;
+
+ unsigned NumAnnotations;
Shouldn't we use less than 32 bits for the number of annotations?
+CXString clang_getCompletionAnnotation(CXCompletionString completion_string,
+ unsigned annotation_number) {
+ CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
+ return CCStr? createCXString(CCStr->getAnnotation(annotation_number))
+ : createCXString((const char *) 0);
+}
+
Returning an empty CXString to mean "no more annotations" makes for a very subtle distinction with, e.g.,
int blah __attribute__((annotate("one"), annotate(""), annotate("three")));
I'd feel slightly better if there were a clang_getCompletionNumAnnotations(CXCompletionString) function for the client to use.
- Doug
More information about the cfe-commits
mailing list