Files
source/VFS/File/vfs_file.h
T
Wanne 14750c6903 **********************************************************
** Big Maps Projects code (incl. Multiplayer v1.5 **
**********************************************************
- Merged Big Maps Project code from BMP+MP trunk (Revision: 3340)
o Complete SVN Revision history: https://81.169.133.124/source/ja2/branches/Wanne/JA2%201.13%20MP
- Before THIS merge, I made a branch of the existing 1.13 source
o SVN Branch: https://81.169.133.124/source/ja2/branches/JA2_rev.3336/src
- Removed old VS 6.0 and VS 2003 project and solutions files, because compilation is broken long time ago
- I will add VS 2010 projects and solution file in the next few days

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@3341 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2010-02-28 18:38:52 +00:00

81 lines
2.4 KiB
C++

#ifndef _VFS_FILE_H_
#define _VFS_FILE_H_
#include "../vfs_types.h"
#include "../Interface/vfs_file_interface.h"
#include <fstream>
typedef std::basic_fstream<wchar_t> wfstream;
namespace vfs
{
/******************************************************************/
/******************************************************************/
template<typename WriteType=vfs::IWriteType>
class VFS_API TFile : public vfs::TFileTemplate<vfs::IReadable,WriteType>
{
typedef vfs::TFileTemplate<vfs::IReadable,WriteType> tBaseClass;
public :
TFile(vfs::Path const& filename);
virtual ~TFile();
virtual vfs::FileAttributes getAttributes();
virtual void close();
virtual vfs::size_t getSize();
virtual bool isOpenRead();
virtual bool openRead();
virtual vfs::size_t read(vfs::Byte* data, vfs::size_t bytesToRead);
virtual vfs::size_t getReadPosition();
virtual void setReadPosition(vfs::size_t positionInBytes);
virtual void setReadPosition(vfs::offset_t offsetInBytes, vfs::IBaseFile::ESeekDir seekDir);
protected:
bool _internalOpenRead(vfs::Path const& path);
protected:
bool m_isOpen_read;
std::fstream m_file;
};
/******************************************************************/
/******************************************************************/
// implements the IWritable interface for TFile
class VFS_API CFile : public vfs::TFile<vfs::IWritable>
{
typedef vfs::TFile<vfs::IWritable> tBaseClass;
public :
CFile(vfs::Path const& filename);
virtual ~CFile();
virtual void close();
virtual bool isOpenWrite();
virtual bool openWrite(bool createWhenNotExist = false, bool truncate = false);
virtual vfs::size_t write(const vfs::Byte* data, vfs::size_t bytesToWrite);
virtual vfs::size_t getWritePosition();
virtual void setWritePosition(vfs::size_t positionInBytes);
virtual void setWritePosition(vfs::offset_t offsetInBytes, vfs::IBaseFile::ESeekDir seekDir);
virtual bool deleteFile();
protected:
bool _internalOpenWrite(vfs::Path const& path, bool createWhenNotExist = false, bool truncate = false);
protected:
bool m_isOpen_write;
};
/******************************************************************/
/******************************************************************/
typedef vfs::TFile<vfs::IWriteType> CReadOnlyFile; // needs explicit template instantiation
} // end namespace
#endif // _VFS_FILE_H_