Driver: Add remaining Action classes we need.

llvm-svn: 66882
This commit is contained in:
Daniel Dunbar 2009-03-13 11:30:17 +00:00
parent e71b9640ad
commit 2a62703018
1 changed files with 52 additions and 4 deletions

View File

@ -17,6 +17,7 @@
namespace clang {
namespace driver {
class Arg;
/// Action - Represent an abstract compilation step to perform.
///
@ -34,6 +35,9 @@ class Action {
ActionList Inputs;
protected:
Action(types::ID _Type) : Type(_Type) {}
Action(Action *Input, types::ID _Type) : Type(_Type),
Inputs(&Input, &Input + 1) {}
Action(const ActionList &_Inputs, types::ID _Type) : Type(_Type),
Inputs(_Inputs) {}
public:
@ -43,6 +47,10 @@ public:
};
class InputAction : public Action {
const Arg &Input;
public:
InputAction(const Arg &_Input, types::ID _Type) : Action(_Type),
Input(_Input) {}
};
class BindArchAction : public Action {
@ -50,15 +58,55 @@ class BindArchAction : public Action {
public:
BindArchAction(Action *Input, const char *_ArchName)
: Action(ActionList(&Input, &Input + 1), Input->getType()),
ArchName(_ArchName) {
: Action(Input, Input->getType()), ArchName(_ArchName) {
}
};
class JobAction : public Action {
protected:
JobAction(ActionList &Inputs, types::ID Type)
: Action(Inputs, Type) {}
JobAction(Action *Input, types::ID Type) : Action(Input, Type) {}
JobAction(const ActionList &Inputs, types::ID Type) : Action(Inputs, Type) {}
};
class PreprocessJobAction : public JobAction {
public:
PreprocessJobAction(Action *Input, types::ID OutputType)
: JobAction(Input, OutputType) {
}
};
class PrecompileJobAction : public JobAction {
public:
PrecompileJobAction(Action *Input, types::ID OutputType)
: JobAction(Input, OutputType) {
}
};
class AnalyzeJobAction : public JobAction {
public:
AnalyzeJobAction(Action *Input, types::ID OutputType)
: JobAction(Input, OutputType) {
}
};
class CompileJobAction : public JobAction {
public:
CompileJobAction(Action *Input, types::ID OutputType)
: JobAction(Input, OutputType) {
}
};
class AssembleJobAction : public JobAction {
public:
AssembleJobAction(Action *Input, types::ID OutputType)
: JobAction(Input, OutputType) {
}
};
class LinkJobAction : public JobAction {
public:
LinkJobAction(ActionList &Inputs, types::ID Type)
: JobAction(Inputs, Type) {}
};
class LipoJobAction : public JobAction {