فهرست منبع

added new files

Zyx-2000 9 سال پیش
والد
کامیت
2b88de8e24
2فایلهای تغییر یافته به همراه109 افزوده شده و 0 حذف شده
  1. 56 0
      lib/filesystem/FileInfo.cpp
  2. 53 0
      lib/filesystem/FileInfo.h

+ 56 - 0
lib/filesystem/FileInfo.cpp

@@ -0,0 +1,56 @@
+#include "StdInc.h"
+
+#include "FileInfo.h"
+
+namespace FileInfo
+{
+
+boost::string_ref GetFilename(boost::string_ref path)
+{
+	const auto pos = path.find_last_of("/\\");
+
+	if (pos != boost::string_ref::npos)
+		return path.substr(pos + 1);
+
+	return path;
+}
+
+boost::string_ref GetExtension(boost::string_ref path)
+{
+	const auto dotPos = path.find_last_of('.');
+
+	if(dotPos != boost::string_ref::npos)
+		return path.substr(dotPos);
+
+	return boost::string_ref{};
+}
+
+boost::string_ref GetStem(boost::string_ref path)
+{
+	auto begin	= path.find_last_of("/\\");
+	auto end	= path.find_last_of('.');
+
+	if (begin == boost::string_ref::npos)
+		begin = 0;
+	else
+		begin += 1;
+
+	if (end < begin)
+		end = boost::string_ref::npos;
+
+	return path.substr(begin, end);
+}
+
+boost::string_ref GetParentPath(boost::string_ref path)
+{
+	const auto pos = path.find_last_of("/\\");
+	return path.substr(0, pos);
+}
+
+boost::string_ref GetPathStem(boost::string_ref path)
+{
+	const auto dotPos = path.find_last_of('.');
+	return path.substr(0, dotPos);
+}
+
+} // namespace FileInfo

+ 53 - 0
lib/filesystem/FileInfo.h

@@ -0,0 +1,53 @@
+#pragma once
+
+/*
+ * FileInfo.h, part of VCMI engine
+ *
+ * Authors: listed in file AUTHORS in main folder
+ *
+ * License: GNU General Public License v2.0 or later
+ * Full text of license available in license.txt file, in main folder
+ *
+ */
+
+#include <boost/utility/string_ref.hpp>
+
+namespace FileInfo
+{
+
+/**
+ * Returns the name of the file.
+ *
+ * @return the name of the file. E.g. foo.txt
+ */
+boost::string_ref DLL_LINKAGE GetFilename(boost::string_ref path);
+
+/**
+ * Gets the file extension.
+ *
+ * @return the file extension. E.g. .ext
+ */
+boost::string_ref DLL_LINKAGE GetExtension(boost::string_ref path);
+
+/**
+ * Gets the file name exclusive the extension of the file.
+ *
+ * @return the file name exclusive the extension and the path of the file. E.g. foo
+ */
+boost::string_ref DLL_LINKAGE GetStem(boost::string_ref path);
+
+/**
+ * Gets the path to the file only.
+ *
+ * @return the path to the file only. E.g. ./dir/
+ */
+boost::string_ref DLL_LINKAGE GetParentPath(boost::string_ref path);
+
+/**
+ * Gets the file name + path exclusive the extension of the file.
+ *
+ * @return the file name exclusive the extension of the file. E.g. ./dir/foo
+ */
+boost::string_ref DLL_LINKAGE GetPathStem(boost::string_ref path);
+
+} // namespace FileInfo