]> granicus.if.org Git - clang/commitdiff
Driver: Add remaining Action classes we need.
authorDaniel Dunbar <daniel@zuster.org>
Fri, 13 Mar 2009 11:30:17 +0000 (11:30 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Fri, 13 Mar 2009 11:30:17 +0000 (11:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66882 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Action.h

index 1eb754be1683d66d96ae22d1cdbbd36bd5b4b365..d0c29aa908367ad5373d83363ba63f3914d1788c 100644 (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 {