3#include <Foundation/Communication/Event.h>
4#include <Foundation/Containers/HybridArray.h>
5#include <Foundation/Containers/Map.h>
6#include <Foundation/IO/FileSystem/Implementation/DataDirType.h>
7#include <Foundation/IO/OSFile.h>
8#include <Foundation/Threading/Mutex.h>
56 static void UnregisterEventHandler(plEventSubscriptionID subscriptionId);
77 static void RegisterDataDirectoryFactory(
plDataDirFactory factory,
float fPriority = 0);
102 static plUInt32 RemoveDataDirectoryGroup(
plStringView sGroup);
105 static void ClearAllDataDirectories();
111 static plUInt32 GetNumDataDirectories();
120 static void ReloadAllExternalDataDirectoryConfigs();
190#if PL_ENABLED(PL_SUPPORTS_FILE_ITERATORS)
280 PL_MAKE_SUBSYSTEM_STARTUP_FRIEND(Foundation, FileSystem);
283 static void Startup();
286 static void Shutdown();
291 PL_DECLARE_POD_TYPE();
294 plDataDirFactory m_Factory;
297 struct FileSystemData
318 static FileSystemData* s_pData;
A base class for readers that handle reading from a (virtual) file inside a data directory.
Definition DataDirType.h:173
This is the base class for all data directory readers/writers.
Definition DataDirType.h:127
The base class for all data directory types.
Definition DataDirType.h:37
A base class for writers that handle writing to a (virtual) file inside a data directory.
Definition DataDirType.h:212
Definition FileReaderWriterBase.h:13
The plFileSystem provides high-level functionality to manage files in a virtual file system.
Definition FileSystem.h:43
static void ClearAllDataDirectoryFactories()
Will remove all known data directory factories.
Definition FileSystem.h:80
plDataDirectoryType *(*)(plStringView, plStringView, plStringView, plDataDirUsage) plDataDirFactory
This factory creates a data directory type, if it can handle the given data directory....
Definition FileSystem.h:74
An plFileSystemIterator allows to iterate over all files in a certain directory.
Definition OSFile.h:94
Definition FileReaderWriterBase.h:55
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Provides a simple mechanism for mutual exclusion to prevent multiple threads from accessing a shared ...
Definition Mutex.h:13
plStringBuilder is a class that is meant for creating and modifying strings.
Definition StringBuilder.h:35
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
The plBitflags class allows you to work with type-safe bitflags.
Definition Bitflags.h:82
Definition DataDirType.h:21
Enum
Definition FileEnums.h:7
Holds the stats for a file.
Definition OSFile.h:34
The event data that is broadcast by the plFileSystem upon certain file operations.
Definition FileSystem.h:344
const plDataDirectoryType * m_pDataDir
The data-directory, that was involved.
Definition FileSystem.h:355
plStringView m_sOther
Additional Path / Name that might be of interest.
Definition FileSystem.h:352
plFileSystem::FileEventType::Enum m_EventType
The exact event that occurred.
Definition FileSystem.h:346
plStringView m_sFileOrDirectory
Path to the file or directory that was involved.
Definition FileSystem.h:349
Describes the type of events that are broadcast by the plFileSystem.
Definition FileSystem.h:323
Enum
Definition FileSystem.h:325
@ CreateFileFailed
Opening a file for writing failed.
Definition FileSystem.h:332
@ OpenFileFailed
Opening a file for reading failed. Probably because it doesn't exist.
Definition FileSystem.h:329
@ CreateFileAttempt
A file is about to be opened for writing.
Definition FileSystem.h:330
@ AddDataDirectorySucceeded
A data directory was successfully added.
Definition FileSystem.h:334
@ AddDataDirectoryFailed
Adding a data directory failed. No factory could handle it (or there were none).
Definition FileSystem.h:335
@ OpenFileSucceeded
A file has been successfully opened for reading.
Definition FileSystem.h:328
@ CloseFile
A file was closed.
Definition FileSystem.h:333
@ RemoveDataDirectory
Definition FileSystem.h:336
@ None
None. Should not occur.
Definition FileSystem.h:326
@ CreateFileSucceeded
A file has been successfully opened for writing.
Definition FileSystem.h:331
@ OpenFileAttempt
A file is about to be opened for reading.
Definition FileSystem.h:327
@ DeleteFile
A file is about to be deleted.
Definition FileSystem.h:338
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54