//===-- cpp11-migrate/Transforms.cpp - class Transforms Impl ----*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// /// /// \file /// \brief This file provides the implementation for class Transforms. /// //===----------------------------------------------------------------------===// #include "Core/Transforms.h" #include "Core/Transform.h" namespace cl = llvm::cl; Transforms::~Transforms() { for (std::vector::iterator I = ChosenTransforms.begin(), E = ChosenTransforms.end(); I != E; ++I) { delete *I; } for (OptionVec::iterator I = Options.begin(), E = Options.end(); I != E; ++I) { delete I->first; } } void Transforms::registerTransform(llvm::StringRef OptName, llvm::StringRef Description, TransformCreator Creator) { Options.push_back(OptionVec::value_type( new cl::opt(OptName.data(), cl::desc(Description.data())), Creator)); } void Transforms::createSelectedTransforms(bool EnableTiming) { for (OptionVec::iterator I = Options.begin(), E = Options.end(); I != E; ++I) { if (*I->first) { ChosenTransforms.push_back(I->second(EnableTiming)); } } }