| //===--- Action.cpp - Abstract compilation steps ------------------------*-===// | 
 | // | 
 | //                     The LLVM Compiler Infrastructure | 
 | // | 
 | // This file is distributed under the University of Illinois Open Source | 
 | // License. See LICENSE.TXT for details. | 
 | // | 
 | //===----------------------------------------------------------------------===// | 
 |  | 
 | #include "clang/Driver/Action.h" | 
 |  | 
 | #include <cassert> | 
 | using namespace clang::driver; | 
 |  | 
 | Action::~Action() { | 
 |   // FIXME: Free the inputs. The problem is that BindArchAction shares | 
 |   // inputs; so we can't just walk the inputs. | 
 | } | 
 |  | 
 | const char *Action::getClassName(ActionClass AC) { | 
 |   switch (AC) { | 
 |   case InputClass: return "input"; | 
 |   case BindArchClass: return "bind-arch"; | 
 |   case PreprocessJobClass: return "preprocessor"; | 
 |   case PrecompileJobClass: return "precompiler"; | 
 |   case AnalyzeJobClass: return "analyzer"; | 
 |   case CompileJobClass: return "compiler"; | 
 |   case AssembleJobClass: return "assembler"; | 
 |   case LinkJobClass: return "linker"; | 
 |   case LipoJobClass: return "lipo"; | 
 |   } | 
 |    | 
 |   assert(0 && "invalid class"); | 
 |   return 0; | 
 | } | 
 |  | 
 | InputAction::InputAction(const Arg &_Input, types::ID _Type)  | 
 |   : Action(InputClass, _Type), Input(_Input) { | 
 | } | 
 |  | 
 | BindArchAction::BindArchAction(Action *Input, const char *_ArchName)  | 
 |   : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) { | 
 | } | 
 |  | 
 | JobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type) | 
 |   : Action(Kind, Input, Type) { | 
 | } | 
 |  | 
 | JobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type)  | 
 |   : Action(Kind, Inputs, Type) { | 
 | } | 
 |  | 
 | PreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType) | 
 |   : JobAction(PreprocessJobClass, Input, OutputType) { | 
 | } | 
 |  | 
 | PrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType) | 
 |   : JobAction(PrecompileJobClass, Input, OutputType) { | 
 | } | 
 |  | 
 | AnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType) | 
 |   : JobAction(AnalyzeJobClass, Input, OutputType) { | 
 | } | 
 |  | 
 | CompileJobAction::CompileJobAction(Action *Input, types::ID OutputType) | 
 |   : JobAction(CompileJobClass, Input, OutputType) { | 
 | } | 
 |  | 
 | AssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType) | 
 |   : JobAction(AssembleJobClass, Input, OutputType) { | 
 | } | 
 |  | 
 | LinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type)  | 
 |   : JobAction(LinkJobClass, Inputs, Type) { | 
 | } | 
 |  | 
 | LipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type)      | 
 |   : JobAction(LipoJobClass, Inputs, Type) { | 
 | } |