diff options
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/Core')
-rw-r--r-- | clang-tools-extra/cpp11-migrate/Core/Transforms.cpp | 34 | ||||
-rw-r--r-- | clang-tools-extra/cpp11-migrate/Core/Transforms.h | 13 |
2 files changed, 16 insertions, 31 deletions
diff --git a/clang-tools-extra/cpp11-migrate/Core/Transforms.cpp b/clang-tools-extra/cpp11-migrate/Core/Transforms.cpp index 720d3880964..d7eae694870 100644 --- a/clang-tools-extra/cpp11-migrate/Core/Transforms.cpp +++ b/clang-tools-extra/cpp11-migrate/Core/Transforms.cpp @@ -13,17 +13,10 @@ //===----------------------------------------------------------------------===// #include "Core/Transforms.h" -#include "LoopConvert/LoopConvert.h" -#include "UseNullptr/UseNullptr.h" -#include "UseAuto/UseAuto.h" +#include "Core/Transform.h" namespace cl = llvm::cl; -template <typename T> -Transform *ConstructTransform() { - return new T(); -} - Transforms::~Transforms() { for (std::vector<Transform*>::iterator I = ChosenTransforms.begin(), E = ChosenTransforms.end(); I != E; ++I) { @@ -35,26 +28,11 @@ Transforms::~Transforms() { } } -void Transforms::createTransformOpts() { - Options.push_back( - OptionVec::value_type( - new cl::opt<bool>("loop-convert", - cl::desc("Make use of range-based for loops where possible")), - &ConstructTransform<LoopConvertTransform>)); - - Options.push_back( - OptionVec::value_type( - new cl::opt<bool>("use-nullptr", - cl::desc("Make use of nullptr keyword where possible")), - &ConstructTransform<UseNullptrTransform>)); - - Options.push_back( - OptionVec::value_type( - new cl::opt<bool>("use-auto", - cl::desc("Use of 'auto' type specifier")), - &ConstructTransform<UseAutoTransform>)); - - // Add more transform options here. +void Transforms::registerTransform(llvm::StringRef OptName, + llvm::StringRef Description, + TransformCreator Creator) { + Options.push_back(OptionVec::value_type( + new cl::opt<bool>(OptName.data(), cl::desc(Description.data())), Creator)); } void Transforms::createSelectedTransforms() { diff --git a/clang-tools-extra/cpp11-migrate/Core/Transforms.h b/clang-tools-extra/cpp11-migrate/Core/Transforms.h index e660ccf9207..67e38b025c8 100644 --- a/clang-tools-extra/cpp11-migrate/Core/Transforms.h +++ b/clang-tools-extra/cpp11-migrate/Core/Transforms.h @@ -17,6 +17,7 @@ #define LLVM_TOOLS_CLANG_TOOLS_EXTRA_CPP11_MIGRATE_TRANSFORMS_H #include "llvm/Support/CommandLine.h" +#include "llvm/ADT/StringRef.h" #include <vector> // Forward declarations @@ -28,6 +29,10 @@ class Option; class Transform; typedef Transform *(*TransformCreator)(); +template <typename T> +Transform *ConstructTransform() { + return new T(); +} /// \brief Class encapsulating the creation of command line bool options /// for each transform and instantiating transforms chosen by the user. @@ -40,10 +45,12 @@ public: ~Transforms(); - /// \brief Create command line options using LLVM's command line library. + /// \brief Registers a transform causing the transform to be made available + /// on the command line. /// - /// Be sure to call *before* parsing options. - void createTransformOpts(); + /// Be sure to register all transforms *before* parsing command line options. + void registerTransform(llvm::StringRef OptName, llvm::StringRef Description, + TransformCreator Creator); /// \brief Instantiate all transforms that were selected on the command line. /// |