[llvm-commits] CVS: llvm/include/llvm/System/Program.h

Reid Spencer reid at x10sys.com
Mon Sep 13 14:48:54 PDT 2004



Changes in directory llvm/include/llvm/System:

Program.h updated: 1.1 -> 1.2
---
Log message:

Clean up the interface and implementation of sys::Program so that it is
cleanly dissociated from the sys::Path class.


---
Diffs of the changes:  (+14 -22)

Index: llvm/include/llvm/System/Program.h
diff -u llvm/include/llvm/System/Program.h:1.1 llvm/include/llvm/System/Program.h:1.2
--- llvm/include/llvm/System/Program.h:1.1	Sun Aug 29 00:29:35 2004
+++ llvm/include/llvm/System/Program.h	Mon Sep 13 16:48:44 2004
@@ -21,14 +21,13 @@
 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 @@
       /// 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 @@
       /// 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);
     /// @}
   };
 }






More information about the llvm-commits mailing list