Action.cpp revision 205219
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 } 34 35 assert(0 && "invalid class"); 36 return 0; 37} 38 39InputAction::InputAction(const Arg &_Input, types::ID _Type) 40 : Action(InputClass, _Type), Input(_Input) { 41} 42 43BindArchAction::BindArchAction(Action *Input, const char *_ArchName) 44 : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) { 45} 46 47JobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type) 48 : Action(Kind, Input, Type) { 49} 50 51JobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type) 52 : Action(Kind, Inputs, Type) { 53} 54 55PreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType) 56 : JobAction(PreprocessJobClass, Input, OutputType) { 57} 58 59PrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType) 60 : JobAction(PrecompileJobClass, Input, OutputType) { 61} 62 63AnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType) 64 : JobAction(AnalyzeJobClass, Input, OutputType) { 65} 66 67CompileJobAction::CompileJobAction(Action *Input, types::ID OutputType) 68 : JobAction(CompileJobClass, Input, OutputType) { 69} 70 71AssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType) 72 : JobAction(AssembleJobClass, Input, OutputType) { 73} 74 75LinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type) 76 : JobAction(LinkJobClass, Inputs, Type) { 77} 78 79LipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type) 80 : JobAction(LipoJobClass, Inputs, Type) { 81} 82