blob: 6fc0923eec2a94024e715964aba4cfd6dcbef77e [file] [log] [blame]
Edwin Vanedde168b2013-01-04 18:25:18 +00001//===-- cpp11-migrate/Transforms.cpp - class Transforms Impl ----*- C++ -*-===//
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/// \file
11/// \brief This file provides the implementation for class Transforms.
12///
13//===----------------------------------------------------------------------===//
14
15#include "Transforms.h"
16#include "LoopConvert/LoopConvert.h"
17
18namespace cl = llvm::cl;
19
20template <typename T>
21Transform *ConstructTransform() {
22 return new T();
23}
24
25Transforms::~Transforms() {
26 for (std::vector<Transform*>::iterator I = ChosenTransforms.begin(),
27 E = ChosenTransforms.end(); I != E; ++I) {
28 delete *I;
29 }
30 for (OptionVec::iterator I = Options.begin(),
31 E = Options.end(); I != E; ++I) {
32 delete I->first;
33 }
34}
35
36void Transforms::createTransformOpts() {
37 Options.push_back(
38 OptionVec::value_type(
39 new cl::opt<bool>("loop-convert",
40 cl::desc("Make use of range-based for loops where possible")),
41 &ConstructTransform<LoopConvertTransform>));
42
43 // Add more transform options here.
44}
45
46void Transforms::createSelectedTransforms() {
47 for (OptionVec::iterator I = Options.begin(),
48 E = Options.end(); I != E; ++I) {
49 if (*I->first) {
50 ChosenTransforms.push_back(I->second());
51 }
52 }
53}