Files
FC1/ResourceCompilerPC/FileMapping.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

87 lines
2.3 KiB
C++

//////////////////////////////////////////////////////////////////////
//
// CryEngine Source code
//
// File:FileMapping
// Declaration of class CFileMapping
// USE_FILE_MAPPING must be defined in the project for this class to really
// use the file mapping. Otherwise it just emulates it
//
// History:
// 06/26/2002 :Created by Sergiy Migdalskiy <sergiy@crytek.de>
//
//////////////////////////////////////////////////////////////////////
#pragma once
////////////////////////////////////////////////////////////////
// class CFileMapping
// Generic file mapping object, is capable of mapping a file with
// a simple call of a method.
//
// NOTES:
//
// Read-only file mapping is supported only.
//
// Error handing is performed through examining the getData()
// address: NULL means that no file was open (no file or I/O error)
//
// No exceptions are thrown.
////////////////////////////////////////////////////////////////
class CFileMapping: public _reference_target_t
{
public:
// Initializes an empty file mapping object
CFileMapping();
// initializes the object and tries to open the given file mapping
CFileMapping (const char* szFileName, unsigned nFlags = 0);
// closes file mapping
~CFileMapping();
// Retuns the size of the mapped file, or 0 if no file was mapped or the file is empty
unsigned getSize()const;
typedef
#ifdef USE_FILE_MAPPING
const
#endif
void * PData;
// Returns the pointer to the mapped file start in memory, or NULL if the file
// wasn't mapped
PData getData() const;
// Returns the file data at the given offset
PData getData(unsigned nOffset) const;
#ifndef USE_FILE_MAPPING
// sets the given (already allocated) buffer to this object
// the memory must be allocated with malloc()
void attach (PData pData, unsigned nSize);
#endif
// initializes the object, opening the given file
// if file open has failed, subsequent getData() and
// getSize() will return zeros
// Returns true if open was successful
bool open (const char* szFileName, unsigned nFlags = 0);
// closes file mapping
void close();
protected:
// the data of the mapped file.
PData m_pData;
// the mapped file size
unsigned m_nSize;
#ifdef USE_FILE_MAPPING
// the mapped file handle
HANDLE m_hFile;
// the mapped file mapping handle
HANDLE m_hMapping;
#endif
};
TYPEDEF_AUTOPTR(CFileMapping)