Get rid of exceptions in llvmc.
[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     void Construct (const std::string& C, const StrVector& A,
38                     bool S, const std::string& O) {
39       Command_ = C;
40       Args_ = A;
41       StopCompilation_ = S;
42       OutFile_ = O;
43     }
44     bool IsConstructed () { return (Command_.size() != 0);}
45
46     /// Execute - Executes the represented action.
47     int Execute () const;
48     bool StopCompilation () const { return StopCompilation_; }
49     const std::string& OutFile() { return OutFile_; }
50   };
51
52 }
53
54 #endif // LLVM_INCLUDE_COMPILER_DRIVER_ACTION_H