llvm/clang/include/clang/Tooling/Refactoring/RefactoringOption.h

//===--- RefactoringOption.h - Clang refactoring library ------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_TOOLING_REFACTORING_REFACTORINGOPTION_H
#define LLVM_CLANG_TOOLING_REFACTORING_REFACTORINGOPTION_H

#include "clang/Basic/LLVM.h"
#include <memory>
#include <type_traits>

namespace clang {
namespace tooling {

class RefactoringOptionVisitor;

/// A refactoring option is an interface that describes a value that
/// has an impact on the outcome of a refactoring.
///
/// Refactoring options can be specified using command-line arguments when
/// the clang-refactor tool is used.
class RefactoringOption {};

/// Constructs a refactoring option of the given type.
///
/// The ownership of options is shared among requirements that use it because
/// one option can be used by multiple rules in a refactoring action.
template <typename OptionType>
std::shared_ptr<OptionType> createRefactoringOption() {}

} // end namespace tooling
} // end namespace clang

#endif // LLVM_CLANG_TOOLING_REFACTORING_REFACTORINGOPTION_H