clang  6.0.0svn
RefactoringOptions.h
Go to the documentation of this file.
1 //===--- RefactoringOptions.h - Clang refactoring library -----------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLVM_CLANG_TOOLING_REFACTOR_REFACTORING_OPTIONS_H
11 #define LLVM_CLANG_TOOLING_REFACTOR_REFACTORING_OPTIONS_H
12 
13 #include "clang/Basic/LLVM.h"
17 #include "llvm/Support/Error.h"
18 #include <type_traits>
19 
20 namespace clang {
21 namespace tooling {
22 
23 /// A refactoring option that stores a value of type \c T.
24 template <typename T, typename = typename std::enable_if<
25  traits::IsValidOptionType<T>::value>::type>
27 public:
28  void passToVisitor(RefactoringOptionVisitor &Visitor) final override {
29  Visitor.visit(*this, Value);
30  }
31 
32  bool isRequired() const override { return false; }
33 
35 
36  const ValueType &getValue() const { return Value; }
37 
38 protected:
40 };
41 
42 /// A required refactoring option that stores a value of type \c T.
43 template <typename T, typename = typename std::enable_if<
46 public:
47  using ValueType = T;
48 
49  const ValueType &getValue() const {
51  }
52  bool isRequired() const final override { return true; }
53 };
54 
55 } // end namespace tooling
56 } // end namespace clang
57 
58 #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.
const FunctionProtoType * 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.