clang  10.0.0svn
RefactoringOptions.h
Go to the documentation of this file.
1 //===--- RefactoringOptions.h - Clang refactoring library -----------------===//
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 #ifndef LLVM_CLANG_TOOLING_REFACTOR_REFACTORING_OPTIONS_H
10 #define LLVM_CLANG_TOOLING_REFACTOR_REFACTORING_OPTIONS_H
11 
12 #include "clang/Basic/LLVM.h"
16 #include "llvm/Support/Error.h"
17 #include <type_traits>
18 
19 namespace clang {
20 namespace tooling {
21 
22 /// A refactoring option that stores a value of type \c T.
23 template <typename T, typename = typename std::enable_if<
24  traits::IsValidOptionType<T>::value>::type>
26 public:
27  void passToVisitor(RefactoringOptionVisitor &Visitor) final override {
28  Visitor.visit(*this, Value);
29  }
30 
31  bool isRequired() const override { return false; }
32 
34 
35  const ValueType &getValue() const { return Value; }
36 
37 protected:
39 };
40 
41 /// A required refactoring option that stores a value of type \c T.
42 template <typename T, typename = typename std::enable_if<
45 public:
46  using ValueType = T;
47 
48  const ValueType &getValue() const {
50  }
51  bool isRequired() const final override { return true; }
52 };
53 
54 } // end namespace tooling
55 } // end namespace clang
56 
57 #endif // LLVM_CLANG_TOOLING_REFACTOR_REFACTORING_OPTIONS_H
An interface that declares functions that handle different refactoring option types.
bool isRequired() const final override
True when this option must be specified before invoking the refactoring action.
bool isRequired() const override
True when this option must be specified before invoking the refactoring action.
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified...
A refactoring option that stores a value of type T.
A type trait that returns true iff the given type is a type that can be stored in a refactoring optio...
A refactoring option is an interface that describes a value that has an impact on the outcome of a re...
Dataflow Directional Tag Classes.
void passToVisitor(RefactoringOptionVisitor &Visitor) final override
Invokes the visit method in the option consumer that&#39;s appropriate for the option&#39;s value type...
A required refactoring option that stores a value of type T.