Sort all includes in src/gromacs
[alexxy/gromacs.git] / src / gromacs / utility / path.cpp
index de30f93d1e4482471ca5bfe5d91846cd90f976a2..1302d30f978b57d323732f0d6e32c2eb6f5452f5 100644 (file)
  * \author Teemu Murtola <teemu.murtola@gmail.com>
  * \ingroup module_utility
  */
-#include "gromacs/utility/path.h"
+#include "gmxpre.h"
+
+#include "path.h"
+
+#include "config.h"
 
 #include <cctype>
 #include <cerrno>
@@ -48,9 +52,8 @@
 
 #include <algorithm>
 
-#include "config.h"
-
 #include <sys/stat.h>
+
 #ifdef GMX_NATIVE_WINDOWS
 #include <direct.h>
 #else
 #endif
 #endif
 
-#include "gromacs/fileio/futil.h"
+#include "gromacs/utility/futil.h"
 #include "gromacs/utility/stringutil.h"
 
 namespace
 {
 
-//! \addtogroup module_utility
-//! \{
-
 //! Directory separator to use when joining paths.
 const char cDirSeparator = '/';
 //! Directory separators to use when parsing paths.
@@ -91,8 +91,6 @@ bool isDirSeparator(char chr)
     return std::strchr(cDirSeparators, chr);
 }
 
-//! \}
-
 } // namespace
 
 namespace gmx
@@ -170,6 +168,18 @@ std::string Path::getFilename(const std::string &path)
     return path.substr(pos+1);
 }
 
+std::string Path::stripExtension(const std::string &path)
+{
+    size_t dirSeparatorPos = path.find_last_of(cDirSeparators);
+    size_t extPos          = path.find_last_of('.');
+    if (extPos == std::string::npos
+        || (dirSeparatorPos != std::string::npos && extPos < dirSeparatorPos))
+    {
+        return path;
+    }
+    return path.substr(0, extPos);
+}
+
 std::string Path::normalize(const std::string &path)
 {
     std::string result(path);