Files
o3de/Code/Editor/Util/PakFile.h
T
Steve Pham 38261d0800 Shorten copyright headers by splitting into 2 lines (#2213)
* Updated all copyright headers to split the longer original copyright line into 2 shorter lines

Signed-off-by: Steve Pham <spham@amazon.com>
2021-07-16 15:25:48 -07:00

62 lines
1.9 KiB
C++

/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#ifndef CRYINCLUDE_EDITOR_UTIL_PAKFILE_H
#define CRYINCLUDE_EDITOR_UTIL_PAKFILE_H
#pragma once
#include <AzFramework/Archive/INestedArchive.h>
class CCryMemFile;
// forward references.
namespace AZ::IO
{
struct IArchive;
}
/*! CPakFile Wraps game implementation of INestedArchive.
Used for storing multiple files into zip archive file.
*/
class SANDBOX_API CPakFile
{
public:
CPakFile();
CPakFile(AZ::IO::IArchive* pCryPak);
~CPakFile();
//! Opens archive for writing.
explicit CPakFile(const char* filename);
//! Opens archive for writing.
bool Open(const char* filename, bool bAbsolutePath = true);
//! Opens archive for reading only.
bool OpenForRead(const char* filename);
void Close();
//! Adds or update file in archive.
bool UpdateFile(const char* filename, CCryMemFile& file, bool bCompress = true);
//! Adds or update file in archive.
bool UpdateFile(const char* filename, CMemoryBlock& mem, bool bCompress = true, int nCompressLevel = AZ::IO::INestedArchive::LEVEL_BETTER);
//! Adds or update file in archive.
bool UpdateFile(const char* filename, void* pBuffer, int nSize, bool bCompress = true, int nCompressLevel = AZ::IO::INestedArchive::LEVEL_BETTER);
//! Remove file from archive.
bool RemoveFile(const char* filename);
//! Remove dir from archive.
bool RemoveDir(const char* directory);
//! Return archive of this pak file wrapper.
AZ::IO::INestedArchive* GetArchive() { return m_pArchive.get(); };
private:
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
AZStd::intrusive_ptr<AZ::IO::INestedArchive> m_pArchive;
AZ::IO::IArchive* m_pCryPak;
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
};
#endif // CRYINCLUDE_EDITOR_UTIL_PAKFILE_H