Remove gmx::File (except for File::exists())
[alexxy/gromacs.git] / src / gromacs / utility / fileredirector.cpp
index 9a1406122d1d51a44d3b6b38067cfa3f5fa2efe4..68e595c477d214a4a84019c2a03681639bdaa544 100644 (file)
 
 #include "fileredirector.h"
 
-#include "gromacs/utility/file.h"
+#include "gromacs/utility/filestream.h"
+#include "gromacs/utility/path.h"
 
 namespace gmx
 {
 
+FileInputRedirectorInterface::~FileInputRedirectorInterface()
+{
+}
+
 FileOutputRedirectorInterface::~FileOutputRedirectorInterface()
 {
 }
@@ -55,6 +60,23 @@ FileOutputRedirectorInterface::~FileOutputRedirectorInterface()
 namespace
 {
 
+/*! \internal
+ * \brief
+ * Implements the redirector returned by defaultFileInputRedirector().
+ *
+ * Does not redirect anything, but uses the file system as requested.
+ *
+ * \ingroup module_utility
+ */
+class DefaultInputRedirector : public FileInputRedirectorInterface
+{
+    public:
+        virtual bool fileExists(const char *filename) const
+        {
+            return File::exists(filename);
+        }
+};
+
 /*! \internal
  * \brief
  * Implements the redirector returned by defaultFileOutputRedirector().
@@ -67,19 +89,25 @@ namespace
 class DefaultOutputRedirector : public FileOutputRedirectorInterface
 {
     public:
-        virtual File &standardOutput()
+        virtual TextOutputStream &standardOutput()
         {
-            return File::standardOutput();
+            return TextOutputFile::standardOutput();
         }
-        virtual FileInitializer openFileForWriting(const char *filename)
+        virtual TextOutputStreamPointer openTextOutputFile(const char *filename)
         {
-            return FileInitializer(filename, "w");
+            return TextOutputStreamPointer(new TextOutputFile(filename));
         }
 };
 
 }   // namespace
 
 //! \cond libapi
+FileInputRedirectorInterface &defaultFileInputRedirector()
+{
+    static DefaultInputRedirector instance;
+    return instance;
+}
+
 FileOutputRedirectorInterface &defaultFileOutputRedirector()
 {
     static DefaultOutputRedirector instance;