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 command. Returns -1 on error. 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 55