Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cFileMemMap.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cFileMemMap_H
7 #define _INC_cFileMemMap_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "../GrayLibBase.h"
16 #if defined(__linux__)
17 #include <sys/mman.h>
18 static const int FILE_MAP_ALL_ACCESS = 0; // _WIN32
19 #endif
20 
21 namespace GrayLib
22 {
24  {
31 
32  public:
35 
36  public:
37  cFileMemMap() noexcept
38  {
39  }
41  {
42  CloseMemMap();
43  }
44 
45  HRESULT OpenView(DWORD dwDesiredAccess, STREAM_OFFSET_t nViewOffset, size_t nViewSize);
46  void CloseView();
47  size_t get_ViewSize() const;
48 
49  HRESULT OpenMemMap(const FILECHAR_t* pszName, DWORD dwDesiredAccess, size_t nViewSize, HANDLE hFile = INVALID_HANDLE_VALUE);
50  void CloseMemMap()
51  {
52  // Close the file as well as the view.
53  CloseView();
54  m_MapFile.CloseHandle();
55  }
56  HRESULT OpenMemMapV(const FILECHAR_t* pszName, DWORD dwDesiredAccess = FILE_MAP_ALL_ACCESS, size_t nViewSize = 0, HANDLE hFile = INVALID_HANDLE_VALUE)
57  {
60  HRESULT hRes = OpenMemMap(pszName, dwDesiredAccess, nViewSize, hFile);
61  if (FAILED(hRes))
62  return hRes;
63  return OpenView(dwDesiredAccess, 0, nViewSize);
64  }
65 
67  };
68 }
69 #endif // _INC_cFileMemMap_H
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define FAILED(x)
Definition: HResult.h:30
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cFileMemMap.h:24
cFileMemMap() noexcept
Definition: cFileMemMap.h:37
HRESULT OpenMemMapV(const FILECHAR_t *pszName, DWORD dwDesiredAccess=FILE_MAP_ALL_ACCESS, size_t nViewSize=0, HANDLE hFile=INVALID_HANDLE_VALUE)
Definition: cFileMemMap.h:56
cOSHandle m_MapFile
similar to cFile ?
Definition: cFileMemMap.h:33
~cFileMemMap()
Definition: cFileMemMap.h:40
cMemBlock m_View
pointer to the memory block/window in m_MapFile.
Definition: cFileMemMap.h:34
UNITTEST_FRIEND(cFileMemMap)
void CloseMemMap()
Definition: cFileMemMap.h:50
Definition: cMem.h:311
Definition: cOSHandle.h:59
static bool CloseHandle(HANDLE h) noexcept
Definition: cOSHandle.h:130
Definition: cMesh.h:22
LONG_PTR STREAM_OFFSET_t
Might be 64 or 32 bit. TODO SET USE_FILE_POS64.
Definition: cOSHandle.h:52
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22