clang API Documentation

Action.cpp
Go to the documentation of this file.
00001 //===--- Action.cpp - Abstract compilation steps --------------------------===//
00002 //
00003 //                     The LLVM Compiler Infrastructure
00004 //
00005 // This file is distributed under the University of Illinois Open Source
00006 // License. See LICENSE.TXT for details.
00007 //
00008 //===----------------------------------------------------------------------===//
00009 
00010 #include "clang/Driver/Action.h"
00011 #include "llvm/Support/ErrorHandling.h"
00012 
00013 #include <cassert>
00014 using namespace clang::driver;
00015 
00016 Action::~Action() {
00017   if (OwnsInputs) {
00018     for (iterator it = begin(), ie = end(); it != ie; ++it)
00019       delete *it;
00020   }
00021 }
00022 
00023 const char *Action::getClassName(ActionClass AC) {
00024   switch (AC) {
00025   case InputClass: return "input";
00026   case BindArchClass: return "bind-arch";
00027   case PreprocessJobClass: return "preprocessor";
00028   case PrecompileJobClass: return "precompiler";
00029   case AnalyzeJobClass: return "analyzer";
00030   case MigrateJobClass: return "migrator";
00031   case CompileJobClass: return "compiler";
00032   case AssembleJobClass: return "assembler";
00033   case LinkJobClass: return "linker";
00034   case LipoJobClass: return "lipo";
00035   case DsymutilJobClass: return "dsymutil";
00036   case VerifyJobClass: return "verify";
00037   }
00038 
00039   llvm_unreachable("invalid class");
00040 }
00041 
00042 void InputAction::anchor() {}
00043 
00044 InputAction::InputAction(const Arg &_Input, types::ID _Type)
00045   : Action(InputClass, _Type), Input(_Input) {
00046 }
00047 
00048 void BindArchAction::anchor() {}
00049 
00050 BindArchAction::BindArchAction(Action *Input, const char *_ArchName)
00051   : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) {
00052 }
00053 
00054 void JobAction::anchor() {}
00055 
00056 JobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type)
00057   : Action(Kind, Input, Type) {
00058 }
00059 
00060 JobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type)
00061   : Action(Kind, Inputs, Type) {
00062 }
00063 
00064 void PreprocessJobAction::anchor() {}
00065 
00066 PreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType)
00067   : JobAction(PreprocessJobClass, Input, OutputType) {
00068 }
00069 
00070 void PrecompileJobAction::anchor() {}
00071 
00072 PrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType)
00073   : JobAction(PrecompileJobClass, Input, OutputType) {
00074 }
00075 
00076 void AnalyzeJobAction::anchor() {}
00077 
00078 AnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType)
00079   : JobAction(AnalyzeJobClass, Input, OutputType) {
00080 }
00081 
00082 void MigrateJobAction::anchor() {}
00083 
00084 MigrateJobAction::MigrateJobAction(Action *Input, types::ID OutputType)
00085   : JobAction(MigrateJobClass, Input, OutputType) {
00086 }
00087 
00088 void CompileJobAction::anchor() {}
00089 
00090 CompileJobAction::CompileJobAction(Action *Input, types::ID OutputType)
00091   : JobAction(CompileJobClass, Input, OutputType) {
00092 }
00093 
00094 void AssembleJobAction::anchor() {}
00095 
00096 AssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType)
00097   : JobAction(AssembleJobClass, Input, OutputType) {
00098 }
00099 
00100 void LinkJobAction::anchor() {}
00101 
00102 LinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type)
00103   : JobAction(LinkJobClass, Inputs, Type) {
00104 }
00105 
00106 void LipoJobAction::anchor() {}
00107 
00108 LipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type)
00109   : JobAction(LipoJobClass, Inputs, Type) {
00110 }
00111 
00112 void DsymutilJobAction::anchor() {}
00113 
00114 DsymutilJobAction::DsymutilJobAction(ActionList &Inputs, types::ID Type)
00115   : JobAction(DsymutilJobClass, Inputs, Type) {
00116 }
00117 
00118 void VerifyJobAction::anchor() {}
00119 
00120 VerifyJobAction::VerifyJobAction(ActionList &Inputs, types::ID Type)
00121   : JobAction(VerifyJobClass, Inputs, Type) {
00122 }