70141393ce1f924068ec9b850a20c2bba11d89cb
[oota-llvm.git] / include / llvm / CompilerDriver / Action.h
1 //===--- Action.h - The LLVM Compiler Driver --------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open
6 // Source License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 //  Action - encapsulates a single shell command.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #ifndef LLVM_INCLUDE_COMPILER_DRIVER_ACTION_H
15 #define LLVM_INCLUDE_COMPILER_DRIVER_ACTION_H
16
17 #include <string>
18 #include <vector>
19
20 namespace llvmc {
21
22   typedef std::vector<std::string> StrVector;
23
24   /// Action - A class that encapsulates a single shell command.
25   class Action {
26     /// Command_ - The actual command (for example, 'ls').
27     std::string Command_;
28     /// Args_ - Command arguments. Stdout redirection ("> file") is allowed.
29     std::vector<std::string> Args_;
30     /// StopCompilation_ - Should we stop compilation after executing
31     /// this action?
32     bool StopCompilation_;
33     /// OutFile_ - The output file name.
34     std::string OutFile_;
35
36   public:
37     Action (const std::string& C, const StrVector& A,
38             bool S, const std::string& O)
39       : Command_(C), Args_(A), StopCompilation_(S), OutFile_(O)
40     {}
41
42     /// Execute - Executes the represented action.
43     int Execute () const;
44     bool StopCompilation () const { return StopCompilation_; }
45     const std::string& OutFile() { return OutFile_; }
46   };
47
48 }
49
50 #endif // LLVM_INCLUDE_COMPILER_DRIVER_ACTION_H