Action.cpp revision 210299
1//===--- Action.cpp - Abstract compilation steps ------------------------*-===// 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#include "clang/Driver/Action.h" 11 12#include <cassert> 13using namespace clang::driver; 14 15Action::~Action() { 16 if (OwnsInputs) { 17 for (iterator it = begin(), ie = end(); it != ie; ++it) 18 delete *it; 19 } 20} 21 22const char *Action::getClassName(ActionClass AC) { 23 switch (AC) { 24 case InputClass: return "input"; 25 case BindArchClass: return "bind-arch"; 26 case PreprocessJobClass: return "preprocessor"; 27 case PrecompileJobClass: return "precompiler"; 28 case AnalyzeJobClass: return "analyzer"; 29 case CompileJobClass: return "compiler"; 30 case AssembleJobClass: return "assembler"; 31 case LinkJobClass: return "linker"; 32 case LipoJobClass: return "lipo"; 33 case DsymutilJobClass: return "dsymutil"; 34 } 35 36 assert(0 && "invalid class"); 37 return 0; 38} 39 40InputAction::InputAction(const Arg &_Input, types::ID _Type) 41 : Action(InputClass, _Type), Input(_Input) { 42} 43 44BindArchAction::BindArchAction(Action *Input, const char *_ArchName) 45 : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) { 46} 47 48JobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type) 49 : Action(Kind, Input, Type) { 50} 51 52JobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type) 53 : Action(Kind, Inputs, Type) { 54} 55 56PreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType) 57 : JobAction(PreprocessJobClass, Input, OutputType) { 58} 59 60PrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType) 61 : JobAction(PrecompileJobClass, Input, OutputType) { 62} 63 64AnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType) 65 : JobAction(AnalyzeJobClass, Input, OutputType) { 66} 67 68CompileJobAction::CompileJobAction(Action *Input, types::ID OutputType) 69 : JobAction(CompileJobClass, Input, OutputType) { 70} 71 72AssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType) 73 : JobAction(AssembleJobClass, Input, OutputType) { 74} 75 76LinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type) 77 : JobAction(LinkJobClass, Inputs, Type) { 78} 79 80LipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type) 81 : JobAction(LipoJobClass, Inputs, Type) { 82} 83 84DsymutilJobAction::DsymutilJobAction(ActionList &Inputs, types::ID Type) 85 : JobAction(DsymutilJobClass, Inputs, Type) { 86} 87