diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-09-13 21:48:44 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-09-13 21:48:44 +0000 |
commit | 2565943289cf53ff1b8dd1dfa13b6068e4d31681 (patch) | |
tree | f8ee4508f4f2081954e9c94352050460726a218f /include/llvm/System/Program.h | |
parent | 1002013ed383e1083a5b63698ab215a2fd0f5d99 (diff) |
Clean up the interface and implementation of sys::Program so that it is
cleanly dissociated from the sys::Path class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16315 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/System/Program.h')
-rw-r--r-- | include/llvm/System/Program.h | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/include/llvm/System/Program.h b/include/llvm/System/Program.h index 01a5ec5b01..e37ef491e6 100644 --- a/include/llvm/System/Program.h +++ b/include/llvm/System/Program.h @@ -21,14 +21,13 @@ namespace llvm { namespace sys { /// This class provides an abstraction for programs that are executable by the - /// operating system. It derives from Path because every executable on all - /// known operating systems has a pathname that is needed in order to execute - /// the program. This class provides an operating system agnostic interface - /// for the procedure of finding and executing programs in a variety of ways. + /// operating system. It provides a platform generic way to find executable + /// programs from the path and to execute them. The sys::Path class is used to + /// locate the Program. /// @since 1.4 - /// @brief An abstraction for operating system programs. - class Program : public Path { - /// @name Constructors + /// @brief An abstraction for finding and executing programs. + class Program { + /// @name Methods /// @{ public: /// This static constructor (factory) will attempt to locate a program in @@ -38,20 +37,8 @@ namespace sys { /// Path object that is empty (invalid) if the program could not be found. /// @throws nothing /// @brief Construct a Program by finding it by name. - static Program FindProgramByName(const std::string& name); - - /// This static constructor (factory) constructs a Program object that - /// refers to the currently executing program. - /// @brief Constructs a Program object for the currently executing - /// program. - // static Program This(); - /// FIXME: Not sure if this is currently doable. + static Path FindProgramByName(const std::string& name); - - /// @} - /// @name Methods - /// @{ - public: /// This function executes the program using the \p arguments provided and /// waits for the program to exit. This function will block the current /// program until the invoked program exits. The invoked program will @@ -60,13 +47,18 @@ namespace sys { /// If Path::executable() does not return true when this function is /// called then a std::string is thrown. /// Path::executable() returns true. - /// @param arguments A vector of strings that are passed to the program. + /// @param path A sys::Path object providing the path of the program to be + /// executed. It is presumed this is the result of the FindProgramByName + /// method. + /// @param args A vector of strings that are passed to the program. /// The first element should *not* be the name of the program. /// @returns an integer result code indicating the status of the program. /// @throws std::string on a variety of error conditions or if the invoked /// program aborted abnormally. + /// @see FindProgrambyName /// @brief Executes the program with the given set of \p arguments. - int ExecuteAndWait(const std::vector<std::string>& arguments) const; + static int ExecuteAndWait(const Path& path, + const std::vector<std::string>& args); /// @} }; } |