UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
BufferReader.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
7#include "HAL/UnrealMemory.h"
10
16{
17public:
27 FBufferReaderBase(void* Data, int64 Size, bool bInFreeOnClose, bool bIsPersistent = false)
28 : ReaderData(Data)
29 , ReaderPos(0)
32 {
33 this->SetIsLoading(true);
34 this->SetIsPersistent(bIsPersistent);
35 }
36
37 // Abstract to force implementors to call Close() themselves, since it's a virtual function.
38 virtual ~FBufferReaderBase() = 0;
39
40 virtual bool Close() override
41 {
42 if (bFreeOnClose)
43 {
45 ReaderData = nullptr;
46 }
47 return !IsError();
48 }
49 void Serialize(void* Data, int64 Num) final
50 {
51 check(ReaderPos >= 0);
54 ReaderPos += Num;
55 }
56 int64 Tell() final
57 {
58 return ReaderPos;
59 }
61 {
62 return ReaderSize;
63 }
64 void Seek(int64 InPos) final
65 {
66 check(InPos >= 0);
69 }
70 bool AtEnd() final
71 {
72 return ReaderPos >= ReaderSize;
73 }
80 virtual FString GetArchiveName() const { return TEXT("FBufferReaderBase"); }
81protected:
86};
87
91
96class FBufferReader final : public FBufferReaderBase
97{
98public:
108 FBufferReader( void* Data, int64 Size, bool bInFreeOnClose, bool bIsPersistent = false )
109 : FBufferReaderBase(Data, Size, bInFreeOnClose, bIsPersistent)
110 {
111 }
112
113 virtual ~FBufferReader() override
114 {
115 Close();
116 }
117
118 virtual FString GetArchiveName() const { return TEXT("FBufferReader"); }
119};
#define check(expr)
Definition AssertionMacros.h:314
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ Num
Definition MetalRHIPrivate.h:234
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
virtual CORE_API void SetIsPersistent(bool bInIsPersistent)
Definition Archive.cpp:1553
virtual CORE_API void SetIsLoading(bool bInIsLoading)
Definition Archive.cpp:1513
UE_FORCEINLINE_HINT bool IsError() const
Definition Archive.h:362
Definition BufferReader.h:16
void Serialize(void *Data, int64 Num) final
Definition BufferReader.h:49
int64 TotalSize() final
Definition BufferReader.h:60
int64 ReaderPos
Definition BufferReader.h:83
bool bFreeOnClose
Definition BufferReader.h:85
void Seek(int64 InPos) final
Definition BufferReader.h:64
int64 ReaderSize
Definition BufferReader.h:84
virtual bool Close() override
Definition BufferReader.h:40
void * ReaderData
Definition BufferReader.h:82
bool AtEnd() final
Definition BufferReader.h:70
FBufferReaderBase(void *Data, int64 Size, bool bInFreeOnClose, bool bIsPersistent=false)
Definition BufferReader.h:27
virtual ~FBufferReaderBase()=0
Definition BufferReader.h:88
virtual FString GetArchiveName() const
Definition BufferReader.h:80
int64 Tell() final
Definition BufferReader.h:56
Definition BufferReader.h:97
virtual FString GetArchiveName() const
Definition BufferReader.h:118
FBufferReader(void *Data, int64 Size, bool bInFreeOnClose, bool bIsPersistent=false)
Definition BufferReader.h:108
virtual ~FBufferReader() override
Definition BufferReader.h:113
static FORCENOINLINE CORE_API void Free(void *Original)
Definition UnrealMemory.cpp:685
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160