//===-- 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 "Transforms.h" #include "LoopConvert/LoopConvert.h" namespace cl = llvm::cl; template Transform *ConstructTransform() { return new T(); } 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::createTransformOpts() { Options.push_back( OptionVec::value_type( new cl::opt("loop-convert", cl::desc("Make use of range-based for loops where possible")), &ConstructTransform)); // Add more transform options here. } void Transforms::createSelectedTransforms() { for (OptionVec::iterator I = Options.begin(), E = Options.end(); I != E; ++I) { if (*I->first) { ChosenTransforms.push_back(I->second()); } } }