20 #if defined(__linux__)
24 struct _SECURITY_ATTRIBUTES;
35 #if defined(__linux__)
38 OF_READWRITE = O_RDWR,
42 OF_SHARE_COMPAT = 0x00000000,
43 OF_SHARE_EXCLUSIVE = 0x00000000,
44 OF_SHARE_DENY_WRITE = 0x00000000,
45 OF_SHARE_DENY_READ = 0x00000000,
46 OF_SHARE_DENY_NONE = 0x00000000,
48 OF_EXIST = 0x00000000,
54 OF_READWRITE = 0x0002,
58 OF_SHARE_COMPAT = 0x00000000,
59 OF_SHARE_EXCLUSIVE = 0x00000010,
60 OF_SHARE_DENY_WRITE = 0x00000020,
61 OF_SHARE_DENY_READ = 0x00000030,
62 OF_SHARE_DENY_NONE = 0x00000040,
64 OF_EXIST = 0x00004000,
101 HRESULT OpenCreate(
cStringF sFilePath =
"",
OF_FLAGS_t nOpenFlags = OF_CREATE | OF_WRITE, _SECURITY_ATTRIBUTES* pSa =
nullptr);
110 #if defined(__linux__)
125 HRESULT Write(
const void* pData,
size_t nDataSize);
129 return m_hFile.
ReadX(pData, nDataSize);
159 OpenX(sFilePath, nOpenFlags);
202 CFile::SeekToBegin();
207 return CFile::SeekToEnd();
210 int Read(
void* pData,
size_t nDataSize)
213 return ReadX(pData, nDataSize);
215 void Write(
const void* pData,
size_t nDataSize)
218 WriteX(pData, nDataSize);
232 bool IsFileExt(
const FILECHAR_t* pszExt)
const;
238 return m_nOpenFlags & 0x00FFFFFF;
248 const OF_FLAGS_t nFlagsDir = (m_nOpenFlags & (OF_WRITE | OF_READ | OF_READWRITE));
249 return nFlagsDir == OF_WRITE || nFlagsDir == OF_READWRITE;
254 const OF_FLAGS_t nFlagsDir = (m_nOpenFlags & (OF_WRITE | OF_READ | OF_READWRITE));
255 return nFlagsDir == OF_READ || nFlagsDir == OF_READWRITE;
262 return m_hFile != CFile::hFileNull;
270 virtual void Close(
void)
override;
272 HANDLE DetachFileHandle();
275 HRESULT OpenCreate(
cStringF sFilePath =
"",
OF_FLAGS_t nOpenFlags = OF_CREATE | OF_WRITE, _SECURITY_ATTRIBUTES* pSa =
nullptr);
283 virtual HRESULT ReadX(
void* pData,
size_t nDataSize)
override;
284 virtual HRESULT WriteX(
const void* pData,
size_t nDataSize)
override;
285 virtual HRESULT FlushX()
override;
#define GRAYCORE_LINK
Definition: GrayCore.h:47
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define IS_TYPE_OF(t, p)
Definition: PtrCast.h:23
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
struct stat cFileStatusSys
Definition: cFileStatus.h:23
#define UNITTEST2_PREDEF(x)
Definition: cUnitTestDecl.h:19
#define UNITTEST_FRIEND(n)
Define this in the class body to be unit tested. Allow the unit test to access private/protected stuf...
Definition: cUnitTestDecl.h:17
cOSHandle m_hFile
OSHandle for the open file.
Definition: cFile.h:90
bool isFileOpen() const noexcept
Definition: cFile.h:95
virtual void Close()
Definition: cFile.h:120
virtual STREAM_POS_t GetLength() const
Definition: cFile.cpp:179
cStringF m_strFileName
store a copy of the full file path. MFC defined name.
Definition: cFile.h:92
virtual ~CFile()
Definition: cFile.h:103
virtual STREAM_SEEKRET_t Seek(STREAM_OFFSET_t lOffset=0, SEEK_ORIGIN_TYPE eSeekOrigin=SEEK_Set)
Definition: cFile.cpp:140
HRESULT Read(void *pData, size_t nDataSize)
Definition: cFile.h:126
virtual STREAM_POS_t GetPosition() const
Definition: cFile.cpp:154
virtual bool isValidCheck() const noexcept
< memory allocation and structure definitions are valid.
Definition: cObject.h:77
Definition: cException.h:130
Definition: cFileStatus.h:58
OF_FLAGS_t get_Mode() const noexcept
Definition: cFile.h:235
cFile()
Definition: cFile.h:153
static ITERATE_t sm_iFilesOpen
global count of all open files for this process.
Definition: cFile.h:146
OF_FLAGS_t get_ModeFlags() const noexcept
Definition: cFile.h:240
cStringF get_FilePath() const
Definition: cFile.h:222
cFile(cStringF sFilePath, OF_FLAGS_t nOpenFlags)
Definition: cFile.h:157
virtual STREAM_POS_t GetPosition() const override
Definition: cFile.h:185
virtual STREAM_SEEKRET_t Seek(STREAM_OFFSET_t lOffset=0, SEEK_ORIGIN_TYPE eSeekOrigin=SEEK_Set) override
Definition: cFile.h:177
int Read(void *pData, size_t nDataSize)
Definition: cFile.h:210
virtual STREAM_POS_t GetLength() const override
Definition: cFile.h:191
bool isModeWrite() const noexcept
Definition: cFile.h:245
virtual ~cFile()
Definition: cFile.h:161
bool isModeRead() const noexcept
Definition: cFile.h:251
virtual bool isFileOpen() const
Definition: cFile.h:259
void Write(const void *pData, size_t nDataSize)
Definition: cFile.h:215
virtual bool isValidCheck() const noexcept
< memory allocation and structure definitions are valid.
Definition: cFile.h:166
OF_FLAGS_t m_nOpenFlags
MMSYSTEM uses high bits of 32 bit flags. OF_FLAGS_TYPE_ OF_READ etc.
Definition: cFile.h:147
Definition: cOSHandle.h:59
HRESULT ReadX(void *pData, size_t nDataSize) const
Definition: cOSHandle.h:200
bool isValidHandle() const noexcept
Definition: cOSHandle.h:125
static bool CloseHandle(HANDLE h) noexcept
Definition: cOSHandle.h:130
Definition: cStream.h:456
Definition: cTimeFile.h:31
< similar to the MFC CTime and cTimeSpan, not as accurate or large ranged as COleDateTime
Definition: cTimeInt.h:101
< The main namespace for all Core functions.
Definition: GrayCore.cpp:14
LONG_PTR STREAM_OFFSET_t
Might be 64 or 32 bit. TODO SET USE_FILE_POS64.
Definition: cOSHandle.h:52
UINT32 OF_FLAGS_t
Mask of file open flags OF_FLAGS_TYPE_.
Definition: cFile.h:77
LONG_PTR STREAM_SEEKRET_t
return from Seek()
Definition: cOSHandle.h:53
cStringT< FILECHAR_t > cStringF
A file name. checks USE_UNICODE_FN. related to cFilePath.
Definition: cFilePath.h:17
INT32 TIMESYSD_t
Time delta. signed milli-Seconds Span. cTimeSys::k_DMAX, cTimeSys::k_INF = MAILSLOT_WAIT_FOREVER.
Definition: cTimeSys.h:28
cExceptionHResult CFileException
Definition: cFile.h:82
int ITERATE_t
like size_t but signed
Definition: Index.h:28
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22
OF_FLAGS_TYPE_
Definition: cFile.h:32
@ OF_OPEN_MASK
High flags not supported by POSIX open().
Definition: cFile.h:68
@ OF_TEXT
UTF8 or plain ASCII text file. (set by use of char Read/WriteString functions)
Definition: cFile.h:72
@ OF_CACHE_SEQ
O_DIRECT for linux ??
Definition: cFile.h:70
@ OF_BINARY
for using FILE* in non text mode. (Default)
Definition: cFile.h:71
@ OF_NONCRIT
Not a real failure if it doesn't exist.
Definition: cFile.h:73
ULONG_PTR STREAM_POS_t
NOT same as FILE_SIZE_t in 32 bit. Why not ?
Definition: cOSHandle.h:54
SEEK_ORIGIN_TYPE
Definition: cOSHandle.h:34
@ SEEK_Set
SEEK_SET = FILE_BEGIN = STREAM_SEEK_SET = 0 = relative to the start of the file.
Definition: cOSHandle.h:39