clang  9.0.0svn
CodeCompletionHandler.h
Go to the documentation of this file.
1 //===--- CodeCompletionHandler.h - Preprocessor code completion -*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file defines the CodeCompletionHandler interface, which provides
10 // code-completion callbacks for the preprocessor.
11 //
12 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_CLANG_LEX_CODECOMPLETIONHANDLER_H
14 #define LLVM_CLANG_LEX_CODECOMPLETIONHANDLER_H
15 
16 #include "llvm/ADT/StringRef.h"
17 
18 namespace clang {
19 
20 class IdentifierInfo;
21 class MacroInfo;
22 
23 /// Callback handler that receives notifications when performing code
24 /// completion within the preprocessor.
26 public:
27  virtual ~CodeCompletionHandler();
28 
29  /// Callback invoked when performing code completion for a preprocessor
30  /// directive.
31  ///
32  /// This callback will be invoked when the preprocessor processes a '#' at the
33  /// start of a line, followed by the code-completion token.
34  ///
35  /// \param InConditional Whether we're inside a preprocessor conditional
36  /// already.
37  virtual void CodeCompleteDirective(bool InConditional) { }
38 
39  /// Callback invoked when performing code completion within a block of
40  /// code that was excluded due to preprocessor conditionals.
42 
43  /// Callback invoked when performing code completion in a context
44  /// where the name of a macro is expected.
45  ///
46  /// \param IsDefinition Whether this is the definition of a macro, e.g.,
47  /// in a \#define.
48  virtual void CodeCompleteMacroName(bool IsDefinition) { }
49 
50  /// Callback invoked when performing code completion in a preprocessor
51  /// expression, such as the condition of an \#if or \#elif directive.
53 
54  /// Callback invoked when performing code completion inside a
55  /// function-like macro argument.
56  ///
57  /// There will be another callback invocation after the macro arguments are
58  /// parsed, so this callback should generally be used to note that the next
59  /// callback is invoked inside a macro argument.
62  unsigned ArgumentIndex) { }
63 
64  /// Callback invoked when performing code completion inside the filename
65  /// part of an #include directive. (Also #import, #include_next, etc).
66  /// \p Dir is the directory relative to the include path.
67  virtual void CodeCompleteIncludedFile(llvm::StringRef Dir, bool IsAngled) {}
68 
69  /// Callback invoked when performing code completion in a part of the
70  /// file where we expect natural language, e.g., a comment, string, or
71  /// \#error directive.
72  virtual void CodeCompleteNaturalLanguage() { }
73 };
74 
75 }
76 
77 #endif // LLVM_CLANG_LEX_CODECOMPLETIONHANDLER_H
virtual void CodeCompleteNaturalLanguage()
Callback invoked when performing code completion in a part of the file where we expect natural langua...
One of these records is kept for each identifier that is lexed.
virtual void CodeCompleteDirective(bool InConditional)
Callback invoked when performing code completion for a preprocessor directive.
virtual void CodeCompleteIncludedFile(llvm::StringRef Dir, bool IsAngled)
Callback invoked when performing code completion inside the filename part of an #include directive...
virtual void CodeCompleteInConditionalExclusion()
Callback invoked when performing code completion within a block of code that was excluded due to prep...
virtual void CodeCompletePreprocessorExpression()
Callback invoked when performing code completion in a preprocessor expression, such as the condition ...
Dataflow Directional Tag Classes.
Encapsulates the data about a macro definition (e.g.
Definition: MacroInfo.h:39
virtual void CodeCompleteMacroName(bool IsDefinition)
Callback invoked when performing code completion in a context where the name of a macro is expected...
Callback handler that receives notifications when performing code completion within the preprocessor...
virtual void CodeCompleteMacroArgument(IdentifierInfo *Macro, MacroInfo *MacroInfo, unsigned ArgumentIndex)
Callback invoked when performing code completion inside a function-like macro argument.