EM_Task/CoreUObject/Public/Serialization/BulkDataReader.h

44 lines
1.1 KiB
C
Raw Permalink Normal View History

2026-02-13 16:18:33 +08:00
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreTypes.h"
#include "Misc/AssertionMacros.h"
#include "HAL/UnrealMemory.h"
#include "Serialization/BufferReader.h"
#include "Serialization/BulkData.h"
#include "Containers/UnrealString.h"
/**
* Custom archive class for reading directly from bulk data.
*/
class FBulkDataReader final: public FBufferReaderBase
{
public:
FBulkDataReader(FByteBulkData& InBulkData, bool bIsPersistent = false)
: FBufferReaderBase(InBulkData.Lock(LOCK_READ_ONLY), InBulkData.GetBulkDataSize(), false, bIsPersistent), BulkData(InBulkData)
{
}
~FBulkDataReader()
{
BulkData.Unlock();
}
using FArchive::operator<<; // For visibility of the overloads we don't override
virtual FArchive& operator<<(class FName& Name) override
{
// FNames are serialized as strings in BulkData
FString StringName;
*this << StringName;
Name = FName(*StringName);
return *this;
}
virtual FString GetArchiveName() const { return TEXT("FBulkDataReader"); }
protected:
FByteBulkData& BulkData;
};