Plasma Engine  2.0
Loading...
Searching...
No Matches
FileReaderWriterBase.h
1#pragma once
2
3#include <Foundation/IO/FileSystem/FileSystem.h>
4#include <Foundation/IO/FileSystem/Implementation/DataDirType.h>
5#include <Foundation/IO/Stream.h>
6
12class PL_FOUNDATION_DLL plFileReaderBase : public plStreamReader
13{
14 PL_DISALLOW_COPY_AND_ASSIGN(plFileReaderBase);
15
16public:
17 plFileReaderBase() { m_pDataDirReader = nullptr; }
18
21 {
22 plStringBuilder sAbs = m_pDataDirReader->GetDataDirectory()->GetRedirectedDataDirectoryPath();
23 sAbs.AppendPath(m_pDataDirReader->GetFilePath().GetView());
24 return sAbs;
25 }
26
28 plString128 GetFilePathRelative() const { return m_pDataDirReader->GetFilePath(); }
29
31 plDataDirectoryType* GetDataDirectory() const { return m_pDataDirReader->GetDataDirectory(); }
32
34 bool IsOpen() const { return m_pDataDirReader != nullptr; }
35
37 plUInt64 GetFileSize() const { return m_pDataDirReader->GetFileSize(); }
38
39protected:
40 plDataDirectoryReader* GetFileReader(plStringView sFile, plFileShareMode::Enum FileShareMode, bool bAllowFileEvents)
41 {
42 return plFileSystem::GetFileReader(sFile, FileShareMode, bAllowFileEvents);
43 }
44
45 plDataDirectoryReader* m_pDataDirReader;
46};
47
48
54class PL_FOUNDATION_DLL plFileWriterBase : public plStreamWriter
55{
56 PL_DISALLOW_COPY_AND_ASSIGN(plFileWriterBase);
57
58public:
59 plFileWriterBase() { m_pDataDirWriter = nullptr; }
60
63 {
64 plStringBuilder sAbs = m_pDataDirWriter->GetDataDirectory()->GetRedirectedDataDirectoryPath();
65 sAbs.AppendPath(m_pDataDirWriter->GetFilePath().GetView());
66 return sAbs;
67 }
68
70 plString128 GetFilePathRelative() const { return m_pDataDirWriter->GetFilePath(); }
71
73 plDataDirectoryType* GetDataDirectory() const { return m_pDataDirWriter->GetDataDirectory(); }
74
76 bool IsOpen() const { return m_pDataDirWriter != nullptr; }
77
79 plUInt64 GetFileSize() const { return m_pDataDirWriter->GetFileSize(); } // [tested]
80
81protected:
82 plDataDirectoryWriter* GetFileWriter(plStringView sFile, plFileShareMode::Enum FileShareMode, bool bAllowFileEvents)
83 {
84 return plFileSystem::GetFileWriter(sFile, FileShareMode, bAllowFileEvents);
85 }
86
87 plDataDirectoryWriter* m_pDataDirWriter;
88};
A base class for readers that handle reading from a (virtual) file inside a data directory.
Definition DataDirType.h:173
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
bool IsOpen() const
Returns true, if the file is currently open.
Definition FileReaderWriterBase.h:34
plDataDirectoryType * GetDataDirectory() const
Returns the plDataDirectoryType over which this file has been opened.
Definition FileReaderWriterBase.h:31
plString128 GetFilePathRelative() const
Returns the relative path of the file within its data directory (excluding the prefix of the data dir...
Definition FileReaderWriterBase.h:28
plUInt64 GetFileSize() const
Returns the current total size of the file.
Definition FileReaderWriterBase.h:37
plString128 GetFilePathAbsolute() const
Returns the absolute path with which the file was opened (including the prefix of the data directory)...
Definition FileReaderWriterBase.h:20
Definition FileReaderWriterBase.h:55
plDataDirectoryType * GetDataDirectory() const
Returns the plDataDirectoryType over which this file has been opened.
Definition FileReaderWriterBase.h:73
plString128 GetFilePathAbsolute() const
Returns the absolute path with which the file was opened (including the prefix of the data directory)...
Definition FileReaderWriterBase.h:62
plString128 GetFilePathRelative() const
Returns the relative path of the file within its data directory (excluding the prefix of the data dir...
Definition FileReaderWriterBase.h:70
plUInt64 GetFileSize() const
Returns the current total size of the file.
Definition FileReaderWriterBase.h:79
bool IsOpen() const
Returns true, if the file is currently open.
Definition FileReaderWriterBase.h:76
Interface for binary in (read) streams.
Definition Stream.h:22
Interface for binary out (write) streams.
Definition Stream.h:107
plStringBuilder is a class that is meant for creating and modifying strings.
Definition StringBuilder.h:35
void AppendPath(plStringView sPath1, plStringView sPath2={}, plStringView sPath3={}, plStringView sPath4={})
Appends several path pieces. Makes sure they are always properly separated by a slash.
Definition StringBuilder.cpp:866
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
Enum
Definition FileEnums.h:7