My Project
Archive.h
1 #pragma once
2 #include "FileHandle.h"
3 #include <string>
4 #include "IAttributeFields.h"
5 
6 namespace ParaEngine
7 {
8  class CSearchResult;
9  using namespace std;
10 
12  {
13  ArchiveFileFindItem() : filename(nullptr), hashValue(nullptr), hashlower(nullptr) {};
14  ArchiveFileFindItem(const char* sFilename) : filename(sFilename), hashValue(nullptr), hashlower(nullptr) {};
15  ArchiveFileFindItem(const char* sFilename, const uint32* uHash, const uint32* uHashLower) : filename(sFilename), hashValue(uHash), hashlower(uHashLower) {};
16 
17  const char* filename;
18  const uint32* hashValue;
19  const uint32* hashlower;
20  };
21 
22 
24  class CArchive : public IAttributeFields
25  {
26  public:
27  CArchive(void):m_archiveHandle(NULL), m_bOpened(false),m_nPriority(0){};
28  virtual ~CArchive(void);
29  ATTRIBUTE_DEFINE_CLASS(CArchive);
30 
31  inline static DWORD TypeID() {return 0;};
32  virtual DWORD GetType(){ return TypeID();};
33  public:
34  virtual const std::string& GetIdentifier();
35 
36  const string& GetArchiveName() const;
37 
41  virtual bool IsArchive(const std::string& sFilename);
42 
46  virtual bool Open(const string& sArchiveName, int nPriority);
47 
49  virtual void Close(){};
54  virtual bool DoesFileExist(const string& filename)=0;
55 
63  virtual bool OpenFile(const char* filename, FileHandle& handle) = 0;
64 
72  virtual bool OpenFile(const ArchiveFileFindItem* item, FileHandle& handle) = 0;
73 
75  virtual DWORD GetFileSize(FileHandle& handle) = 0;
76 
78  virtual bool ReadFile(FileHandle& handle,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead) = 0;
79 
86  virtual bool ReadFileRaw(FileHandle& handle,LPVOID* lppBuffer,LPDWORD pnCompressedSize, LPDWORD pnUncompressedSize){return false;};
87 
88  virtual bool WriteFile(FileHandle& handle,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten){return false;};
89 
91  virtual bool CloseFile(FileHandle& hFile) = 0;
92 
96  virtual bool CreateNewFile(const char* filename, FileHandle& handle, bool bAutoMakeFilePath = true){return false;};
97 
102  virtual void SetRootDirectory(const string& filename){};
103 
107  virtual void SetBaseDirectory(const char * filename) {};
108 
117  virtual void FindFiles(CSearchResult& result, const string& sRootPath, const string& sFilePattern, int nSubLevel){};
118 
119  virtual bool IsIgnoreCase() const { return false; };
120  protected:
122  string m_filename;
123  FileHandle m_archiveHandle;
124  bool m_bOpened;
125  int m_nPriority;
126  };
127 }
file archiver base class.
Definition: Archive.h:24
Definition: Archive.h:11
a file handle in a Archive
Definition: FileHandle.h:13
Definition: handle.hpp:33
different physics engine has different winding order.
Definition: EventBinding.h:32
virtual bool CreateNewFile(const char *filename, FileHandle &handle, bool bAutoMakeFilePath=true)
create a new file for writing
Definition: Archive.h:96
virtual void FindFiles(CSearchResult &result, const string &sRootPath, const string &sFilePattern, int nSubLevel)
this is a recursive function.
Definition: Archive.h:117
virtual bool ReadFileRaw(FileHandle &handle, LPVOID *lppBuffer, LPDWORD pnCompressedSize, LPDWORD pnUncompressedSize)
read the raw (may be compressed file)
Definition: Archive.h:86
virtual void Close()
close archive
Definition: Archive.h:49
virtual void SetRootDirectory(const string &filename)
set root directory
Definition: Archive.h:102
virtual void SetBaseDirectory(const char *filename)
set the base directory to be removed from the relative path of all files in the zip file...
Definition: Archive.h:107
A common interface for all classes implementing IAttributeFields By implementing this class&#39;s virtual...
Definition: IAttributeFields.h:59
string m_filename
file name
Definition: Archive.h:119
it represents the search result.
Definition: FileSearchResult.h:24