#include MediaPak::MediaPak(void) : mEntries(0), mOffsetEntries(0) { } MediaPak::MediaPak(const MediaPak &mediaPak) { *this=mediaPak; } MediaPak::~MediaPak() { close(); } MediaPak &MediaPak::operator=(const MediaPak &/*mediaPak*/) { // private implementation return *this; } BOOL MediaPak::open(const String &pathFileName,BOOL creationFlag) { DWORD magic; mPakFile.close(); mEntries=0; if(creationFlag) { mPakFile.open(pathFileName,FileHandle::ReadWrite,FileHandle::ShareRead,FileHandle::Overwrite); magic=HeaderMagic; mEntries=0; mPakFile.write((unsigned char*)&magic,sizeof(magic)); mOffsetEntries=mPakFile.tell(); mPakFile.write((unsigned char*)&mEntries,sizeof(mEntries)); } else { mPakFile.open(pathFileName,FileHandle::ReadWrite,FileHandle::ShareRead,FileHandle::Open); if(!mPakFile.isOkay())return FALSE; mPakFile.read((unsigned char*)&magic,sizeof(magic)); mOffsetEntries=mPakFile.tell(); if(magic!=HeaderMagic){mPakFile.close();return FALSE;} mPakFile.read((unsigned char*)&mEntries,sizeof(mEntries)); } return TRUE; } void MediaPak::close(void) { if(!mPakFile.isOkay())return; mPakFile.close(); } BOOL MediaPak::add(const PakEntry &pakEntry) { DWORD entryLength; if(!isOkay())return FALSE; mPakFile.seek(mOffsetEntries,FileHandle::SeekBegin); mPakFile.read((unsigned char*)&mEntries,sizeof(mEntries)); for(int index=0;index=mEntries)return FALSE; for(int index=0;index=mEntries)return FALSE; for(int index=0;index