12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #pragma once
- #ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-parameter"
- #endif
- //===--- CodeCompletionHandler.h - Preprocessor code completion -*- C++ -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // This file defines the CodeCompletionHandler interface, which provides
- // code-completion callbacks for the preprocessor.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_CLANG_LEX_CODECOMPLETIONHANDLER_H
- #define LLVM_CLANG_LEX_CODECOMPLETIONHANDLER_H
- #include "llvm/ADT/StringRef.h"
- namespace clang {
- class IdentifierInfo;
- class MacroInfo;
- /// Callback handler that receives notifications when performing code
- /// completion within the preprocessor.
- class CodeCompletionHandler {
- public:
- virtual ~CodeCompletionHandler();
- /// Callback invoked when performing code completion for a preprocessor
- /// directive.
- ///
- /// This callback will be invoked when the preprocessor processes a '#' at the
- /// start of a line, followed by the code-completion token.
- ///
- /// \param InConditional Whether we're inside a preprocessor conditional
- /// already.
- virtual void CodeCompleteDirective(bool InConditional) { }
- /// Callback invoked when performing code completion within a block of
- /// code that was excluded due to preprocessor conditionals.
- virtual void CodeCompleteInConditionalExclusion() { }
- /// Callback invoked when performing code completion in a context
- /// where the name of a macro is expected.
- ///
- /// \param IsDefinition Whether this is the definition of a macro, e.g.,
- /// in a \#define.
- virtual void CodeCompleteMacroName(bool IsDefinition) { }
- /// Callback invoked when performing code completion in a preprocessor
- /// expression, such as the condition of an \#if or \#elif directive.
- virtual void CodeCompletePreprocessorExpression() { }
- /// Callback invoked when performing code completion inside a
- /// function-like macro argument.
- ///
- /// There will be another callback invocation after the macro arguments are
- /// parsed, so this callback should generally be used to note that the next
- /// callback is invoked inside a macro argument.
- virtual void CodeCompleteMacroArgument(IdentifierInfo *Macro,
- MacroInfo *MacroInfo,
- unsigned ArgumentIndex) { }
- /// Callback invoked when performing code completion inside the filename
- /// part of an #include directive. (Also #import, #include_next, etc).
- /// \p Dir is the directory relative to the include path.
- virtual void CodeCompleteIncludedFile(llvm::StringRef Dir, bool IsAngled) {}
- /// Callback invoked when performing code completion in a part of the
- /// file where we expect natural language, e.g., a comment, string, or
- /// \#error directive.
- virtual void CodeCompleteNaturalLanguage() { }
- };
- }
- #endif // LLVM_CLANG_LEX_CODECOMPLETIONHANDLER_H
- #ifdef __GNUC__
- #pragma GCC diagnostic pop
- #endif
|