Diligent Engine
 
Loading...
Searching...
No Matches
Diligent::BasicFileSystem Struct Reference

Basic platform-specific file system functions. More...

#include <BasicFileSystem.hpp>

Static Public Member Functions

static std::vector< StringSplitPath (const Char *Path, bool Simplify)
 
static std::string BuildPathFromComponents (const std::vector< String > &Components, Char Slash=0)
 Builds a path from the given components.
 
static std::string SimplifyPath (const Char *Path, Char Slash=0)
 Simplifies the path.
 
template<typename CallbackType>
static void SplitPathList (const Char *PathList, CallbackType Callback, const char Separator=';')
 
static std::string GetRelativePath (const Char *PathFrom, bool IsFromDirectory, const Char *PathTo, bool IsToDirectory)
 Returns a relative path from one file or folder to another.
 

Detailed Description

Basic platform-specific file system functions.

Member Function Documentation

◆ GetRelativePath()

static std::string Diligent::BasicFileSystem::GetRelativePath ( const Char * PathFrom,
bool IsFromDirectory,
const Char * PathTo,
bool IsToDirectory )
static

Returns a relative path from one file or folder to another.

Parameters
[in]PathFrom- Path that defines the start of the relative path. Must not be null.
[in]IsFromDirectory- Indicates if PathFrom is a directory.
[in]PathTo- Path that defines the endpoint of the relative path. Must not be null.
[in]IsToDirectory- Indicates if PathTo is a directory.
Returns
Relative path from PathFrom to PathTo. If no relative path exists, PathFrom is returned.

◆ SimplifyPath()

static std::string Diligent::BasicFileSystem::SimplifyPath ( const Char * Path,
Char Slash = 0 )
static

Simplifies the path.

The function performs the following path simplifications:

  • Normalizes slashes using the given slash symbol (a\b/c -> a/b/c)
  • Removes redundant slashes (a///b -> a/b)
  • Removes redundant . (a/./b-> a/b)
  • Collapses .. (a/b/../c -> a/c)
  • Removes trailing slashes (/a/b/c/ -> /a/b/c)
  • When 'Slash' is Windows slash (\), removes leading slashes (\a\b\c -> a\b\c)

◆ SplitPath()

static std::vector< String > Diligent::BasicFileSystem::SplitPath ( const Char * Path,
bool Simplify )
static

Splits path into individual components optionally simplifying it.

If Simplify is true:

  • Removes redundant slashes (a///b -> a/b)
  • Removes redundant . (a/./b -> a/b)
  • Collapses .. (a/b/../c -> a/c)

◆ SplitPathList()

template<typename CallbackType>
static void Diligent::BasicFileSystem::SplitPathList ( const Char * PathList,
CallbackType Callback,
const char Separator = ';' )
inlinestatic

Splits a list of paths separated by a given separator and calls a user callback for every individual path. Empty paths are skipped.