#if !defined ( INCLUDED_OS_PATH_H )
#define INCLUDED_OS_PATH_H
+#include "globaldefs.h"
+
/// \file
/// \brief OS file-system path comparison, decomposition and manipulation.
///
#include "string/string.h"
-#if defined( WIN32 )
+#if GDEF_OS_WINDOWS
#define OS_CASE_INSENSITIVE
#endif
#endif
}
+/// \brief Returns true if \p path and \p other refer to the same file or directory, case insensitively.
+/// O(n)
+inline bool path_equal_i( const char* path, const char* other ){
+ return string_equal_nocase( path, other );
+}
+
/// \brief Returns true if the first \p n bytes of \p path and \p other form paths that refer to the same file or directory.
/// If the paths are UTF-8 encoded, [\p path, \p path + \p n) must be a complete path.
/// O(n)
/// \brief Returns true if \p path is a fully qualified file-system path.
/// O(1)
inline bool path_is_absolute( const char* path ){
-#if defined( WIN32 )
+#if GDEF_OS_WINDOWS
return path[0] == '/'
|| ( path[0] != '\0' && path[1] == ':' ); // local drive
-#elif defined( POSIX )
+#elif GDEF_OS_POSIX
return path[0] == '/';
#endif
}
return path_equal( extension, other );
}
+/// \brief Returns true if \p extension is of the same type as \p other, case insensitively.
+/// O(n)
+inline bool extension_equal_i( const char* extension, const char* other ){
+ return path_equal_i( extension, other );
+}
+
template<typename Functor>
class MatchFileExtension
{