- Added missing projects "VFS" & "export" to SVN

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@4447 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2011-05-26 11:25:04 +00:00
parent 6e2bdd557c
commit be95a2a7b1
203 changed files with 44525 additions and 0 deletions
@@ -0,0 +1,73 @@
/*
* bfVFS : vfs/Core/File/vfs_buffer_file.h
* - Buffer in RAM, implements File interface to unify usage of file and memory
*
* Copyright (C) 2008 - 2010 (BF) john.bf.smith@googlemail.com
*
* This file is part of the bfVFS library
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef _VFS_MEMORY_FILE_H_
#define _VFS_MEMORY_FILE_H_
#include <vfs/Core/Interface/vfs_file_interface.h>
#include <sstream>
namespace vfs
{
class VFS_API CBufferFile : public vfs::TFileTemplate<vfs::IReadable,vfs::IWritable>
{
typedef vfs::TFileTemplate<vfs::IReadable,vfs::IWritable> tBaseClass;
public :
CBufferFile();
CBufferFile(vfs::Path const& filename);
virtual ~CBufferFile();
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);
virtual bool isOpenWrite();
virtual bool openWrite(bool bCreateWhenNotExist = false, bool bTruncate = 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();
// convenience method
void copyToBuffer(vfs::tReadableFile& rFile);
protected:
std::stringstream m_buffer;
bool m_isOpen_read, m_isOpen_write;
};
} // end namespace
#endif // _VFS_MEMORY_FILE_H_
@@ -0,0 +1,76 @@
/*
* bfVFS : vfs/Core/File/vfs_dir_file.h
* - read/read-write files for usage in vfs locations
*
* Copyright (C) 2008 - 2010 (BF) john.bf.smith@googlemail.com
*
* This file is part of the bfVFS library
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef _VFS_DIR_FILE_H_
#define _VFS_DIR_FILE_H_
#include <vfs/Core/File/vfs_file.h>
#include <vfs/Core/Interface/vfs_file_interface.h>
#include <vfs/Core/Interface/vfs_location_interface.h>
#include <vfs/Core/Interface/vfs_directory_interface.h>
namespace vfs
{
class VFS_API CReadOnlyDirFile : public vfs::CReadOnlyFile
{
protected:
typedef vfs::TDirectory<vfs::CReadOnlyDirFile::write_type> tLocation;
public:
CReadOnlyDirFile(vfs::Path const& filename, tLocation *directory);
virtual ~CReadOnlyDirFile();
virtual vfs::FileAttributes getAttributes();
virtual vfs::Path getPath();
virtual bool openRead();
virtual bool _getRealPath(vfs::Path& path);
private:
tLocation* _location;
};
class VFS_API CDirFile : public vfs::CFile
{
typedef vfs::TDirectory<vfs::CFile::write_type> tLocation;
public:
CDirFile(vfs::Path const& filename, tLocation *directory);
virtual ~CDirFile();
virtual vfs::FileAttributes getAttributes();
virtual vfs::Path getPath();
virtual bool deleteFile();
virtual bool openRead();
virtual bool openWrite(bool createWhenNotExist = false, bool truncate = false);
virtual bool _getRealPath(vfs::Path& path);
private:
tLocation* _location;
};
} // end namespace
#endif // _VFS_DIR_FILE_H_
+113
View File
@@ -0,0 +1,113 @@
/*
* bfVFS : vfs/Core/File/vfs_file.h
* - File with read/read-write access
*
* Copyright (C) 2008 - 2010 (BF) john.bf.smith@googlemail.com
*
* This file is part of the bfVFS library
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef _VFS_FILE_H_
#define _VFS_FILE_H_
#include <vfs/Core/vfs_types.h>
#include <vfs/Core/Interface/vfs_file_interface.h>
#include <vfs/Aspects/vfs_synchronization.h>
#ifdef WIN32
# include "windows.h"
#else
# include <fstream>
#endif
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;
#ifdef WIN32
HANDLE m_file;
#else
FILE* m_file;
#endif
//vfs::Aspects::Mutex m_mutex;
};
/******************************************************************/
/******************************************************************/
// 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_
@@ -0,0 +1,78 @@
/*
* bfVFS : vfs/Core/File/vfs_lib_file.h
* - read/read-write files for usage in vfs locations (libraries)
*
* Copyright (C) 2008 - 2010 (BF) john.bf.smith@googlemail.com
*
* This file is part of the bfVFS library
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef _VFS_LIB_FILE_H_
#define _VFS_LIB_FILE_H_
#include <vfs/Core/Interface/vfs_file_interface.h>
#include <vfs/Core/Interface/vfs_location_interface.h>
#include <vfs/Core/Interface/vfs_library_interface.h>
#include <vfs/Tools/vfs_allocator.h>
namespace vfs
{
class ILibrary;
class CLibFile : public vfs::TFileTemplate<vfs::IReadable,vfs::IWriteType>
{
typedef vfs::TFileTemplate<vfs::IReadable,vfs::IWriteType> tBaseClass;
typedef vfs::TLocationTemplate<vfs::IReadable,vfs::IWriteType> tLocation;
public:
CLibFile();
static CLibFile* create(vfs::Path const& filename,
tLocation *location,
vfs::ILibrary *library,
vfs::ObjBlockAllocator<CLibFile>* allocator = NULL);
// don't delete objects that YOU have not created with 'new'
// dtor has to remain public to be usable at all
virtual ~CLibFile();
virtual vfs::FileAttributes getAttributes();
virtual void close();
virtual vfs::Path getPath();
virtual bool isOpenRead();
virtual bool openRead();
virtual vfs::size_t read(vfs::Byte* pData, 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);
virtual vfs::size_t getSize();
protected:
bool m_isOpen_read;
ILibrary* m_library;
tLocation* m_location;
private:
static vfs::ObjBlockAllocator<CLibFile>* _lfile_pool;
};
} // end namespace
#endif // _VFS_LIB_FILE_H_