/// Constructs a path from a string containing the generic grammar (the string is assumed to contain UTF-8 data, no character set conversion is applied)
/// Constructs a path from a string containing the generic grammar
path generic_path(const ustring& GenericPath);
/// Constructs a path from a string containing the generic grammar (the string is assumed to contain UTF-8 data, no character set conversion is applied)
path generic_path(const string_t& GenericPath);
/// Constructs a path from a native file string, i.e. any valid Posix or Win32 path (doesn't matter which platform we were compiled on)
path native_path(const ustring& NativePath);
/// Defines a collection of paths
typedef std::vector<path> path_list;
/// Returns true if the operating system reports that the given file exists
bool_t exists(const path& Path);
/// Converts the given absolute path into a relative path, relative to the given reference path
/// If Path.leaf() contains a dot, returns the substring of Path.leaf() starting from the last dot. Otherwise, returns empty string
const ustring extension(const path& Path);
/// If Path.leaf() contains a dot, replaces the substring of Path.leaf() starting from the last dot with the given text. Otherwise, returns empty string.