You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rnx #rb none #ROBOMERGE-SOURCE: CL 10869240 via CL 10869516 via CL 10869902 #ROBOMERGE-BOT: (v613-10869866) [CL 10870584 by ryan durand in Main branch]
55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "GenericPlatform/GenericPlatformFile.h"
|
|
|
|
#if WITH_ENGINE
|
|
|
|
class IFileHandle;
|
|
|
|
/** Helper class for generating an uncompressed zip archive file. */
|
|
class FILEUTILITIES_API FZipArchiveWriter
|
|
{
|
|
struct FFileEntry
|
|
{
|
|
FString Filename;
|
|
uint32 Crc32;
|
|
uint64 Length;
|
|
uint64 Offset;
|
|
uint32 Time;
|
|
|
|
FFileEntry(const FString& InFilename, uint32 InCrc32, uint64 InLength, uint64 InOffset, uint32 InTime)
|
|
: Filename(InFilename)
|
|
, Crc32(InCrc32)
|
|
, Length(InLength)
|
|
, Offset(InOffset)
|
|
, Time(InTime)
|
|
{}
|
|
};
|
|
|
|
TArray<FFileEntry> Files;
|
|
|
|
TArray<uint8> Buffer;
|
|
IFileHandle* File;
|
|
|
|
inline void Write(uint16 V) { Write((void*)&V, sizeof(V)); }
|
|
inline void Write(uint32 V) { Write((void*)&V, sizeof(V)); }
|
|
inline void Write(uint64 V) { Write((void*)&V, sizeof(V)); }
|
|
inline void Write(void* Src, uint64 Size)
|
|
{
|
|
void* Dst = &Buffer[Buffer.AddUninitialized(Size)];
|
|
FMemory::Memcpy(Dst, Src, Size);
|
|
}
|
|
inline uint64 Tell() { return (File ? File->Tell() : 0) + Buffer.Num(); }
|
|
void Flush();
|
|
|
|
public:
|
|
FZipArchiveWriter(IFileHandle* InFile);
|
|
~FZipArchiveWriter();
|
|
|
|
void AddFile(const FString& Filename, const TArray<uint8>& Data, const FDateTime& Timestamp);
|
|
};
|
|
|
|
#endif |