00001 /* 00002 Free Download Manager Copyright (c) 2003-2007 FreeDownloadManager.ORG 00003 Open Download Manager Copyright (c) 2008-2010 OpenDownloadManager.ORG 00004 */ 00005 00006 #if !defined(AFX_FSARCHIVEREBUILDER_H__12229CAE_4DBE_4E89_875D_4378C0C6E8FD__INCLUDED_) 00007 #define AFX_FSARCHIVEREBUILDER_H__12229CAE_4DBE_4E89_875D_4378C0C6E8FD__INCLUDED_ 00008 00009 #if _MSC_VER > 1000 00010 #pragma once 00011 #endif 00012 00013 #include "fsArchiveRebuilderStream.h" 00014 00015 namespace fsArchive 00016 { 00017 00018 enum fsArchiveRebuilderResult 00019 { 00020 ARR_BADARCHIVE = 100, 00021 ARR_STREAMERROR = 101, 00022 ARR_APPRES = 500, 00023 }; 00024 00025 struct fsArchiveFilePosition 00026 { 00027 00028 DWORD dwSrcBegin; 00029 DWORD dwDstBegin; 00030 DWORD dwSrcEnd; 00031 DWORD dwDstEnd; 00032 }; 00033 00034 class fsArchiveRebuilder 00035 { 00036 public: 00037 00038 void SetFileSize (DWORD dw); 00039 00040 void SetSFXSize (DWORD dw); 00041 00042 UINT64 GetResultingArchiveSize(); 00043 00044 virtual DWORD OpenArchive (fsArchiveStream* in); 00045 00046 virtual int GetFileCount () = NULL; 00047 00048 virtual fsString GetFileName (int iFile) = NULL; 00049 00050 virtual BOOL RebuildArchive (fs::list <fsString> vFileNames) = NULL; 00051 00052 virtual const fsArchiveFilePosition* GetFilePosition (int iFile) = NULL; 00053 00054 DWORD SaveArchiveHeaders (fsArchiveStream *out); 00055 00056 fsArchiveRebuilder(); 00057 virtual ~fsArchiveRebuilder(); 00058 00059 protected: 00060 00061 virtual DWORD RetreiveArchiveContent() = NULL; 00062 00063 virtual DWORD SaveArchiveHeaders_imp () = NULL; 00064 fsArchiveStream* m_out; 00065 fsArchiveStream* m_in; 00066 UINT64 m_uResArchiveSize; 00067 BOOL m_dwSFXSize; 00068 DWORD m_dwFileSize; 00069 }; 00070 00071 }; 00072 00073 #endif
1.5.6