aboutsummaryrefslogtreecommitdiff
path: root/tools/libclang/CIndexCodeCompletion.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-08-23 23:00:57 +0000
committerDouglas Gregor <dgregor@apple.com>2010-08-23 23:00:57 +0000
commit58ddb60f409125eda5436c4a1f070f7fa4744295 (patch)
treee0c5fc04d2a54195f63229279e5089ffbca81592 /tools/libclang/CIndexCodeCompletion.cpp
parentd097be8f81fbf4ed96ac10bae18562dd8202666b (diff)
Introduce new libclang API functions that determine the availability
of a cursor or code-completion result, e.g., whether that result refers to an unavailable, deleted, or deprecated declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111858 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/libclang/CIndexCodeCompletion.cpp')
-rw-r--r--tools/libclang/CIndexCodeCompletion.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/tools/libclang/CIndexCodeCompletion.cpp b/tools/libclang/CIndexCodeCompletion.cpp
index c2febf9b72..e99927b5b9 100644
--- a/tools/libclang/CIndexCodeCompletion.cpp
+++ b/tools/libclang/CIndexCodeCompletion.cpp
@@ -48,11 +48,15 @@ namespace {
/// This is the representation behind a CXCompletionString.
class CXStoredCodeCompletionString : public CodeCompletionString {
unsigned Priority;
+ CXAvailabilityKind Availability;
public:
- CXStoredCodeCompletionString(unsigned Priority) : Priority(Priority) { }
+ CXStoredCodeCompletionString(unsigned Priority,
+ CXAvailabilityKind Availability)
+ : Priority(Priority), Availability(Availability) { }
unsigned getPriority() const { return Priority; }
+ CXAvailabilityKind getAvailability() const { return Availability; }
};
}
@@ -210,6 +214,13 @@ unsigned clang_getCompletionPriority(CXCompletionString completion_string) {
return CCStr? CCStr->getPriority() : unsigned(CCP_Unlikely);
}
+enum CXAvailabilityKind
+clang_getCompletionAvailability(CXCompletionString completion_string) {
+ CXStoredCodeCompletionString *CCStr
+ = (CXStoredCodeCompletionString *)completion_string;
+ return CCStr? CCStr->getAvailability() : CXAvailability_Available;
+}
+
static bool ReadUnsigned(const char *&Memory, const char *MemoryEnd,
unsigned &Value) {
if (Memory + sizeof(unsigned) > MemoryEnd)
@@ -433,8 +444,13 @@ CXCodeCompleteResults *clang_codeComplete(CXIndex CIdx,
if (ReadUnsigned(Str, StrEnd, Priority))
break;
+ unsigned Availability;
+ if (ReadUnsigned(Str, StrEnd, Availability))
+ break;
+
CXStoredCodeCompletionString *CCStr
- = new CXStoredCodeCompletionString(Priority);
+ = new CXStoredCodeCompletionString(Priority,
+ (CXAvailabilityKind)Availability);
if (!CCStr->Deserialize(Str, StrEnd)) {
delete CCStr;
continue;
@@ -559,7 +575,8 @@ namespace {
AllocatedResults.NumResults = NumResults;
for (unsigned I = 0; I != NumResults; ++I) {
CXStoredCodeCompletionString *StoredCompletion
- = new CXStoredCodeCompletionString(Results[I].Priority);
+ = new CXStoredCodeCompletionString(Results[I].Priority,
+ Results[I].Availability);
(void)Results[I].CreateCodeCompletionString(S, StoredCompletion);
AllocatedResults.Results[I].CursorKind = Results[I].CursorKind;
AllocatedResults.Results[I].CompletionString = StoredCompletion;
@@ -743,7 +760,7 @@ void clang_disposeCodeCompleteResults(CXCodeCompleteResults *ResultsIn) {
= static_cast<AllocatedCXCodeCompleteResults*>(ResultsIn);
delete Results;
}
-
+
unsigned
clang_codeCompleteGetNumDiagnostics(CXCodeCompleteResults *ResultsIn) {
AllocatedCXCodeCompleteResults *Results