UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MemoryReadStream.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "HAL/Platform.h"
9
14{
15public:
19
20 virtual const void* Read(int64& OutSize, int64 InOffset, int64 InSize) = 0;
21 virtual int64 GetSize() = 0;
22 CORE_API virtual void CopyTo(void* Buffer, int64 InOffset, int64 InSize);
23 virtual void EnsureReadNonBlocking() {}; // Incur any potential wait such that future Read() or CopyTo() calls are wait and thread switch free.
24
25 UE_FORCEINLINE_HINT uint32 AddRef() const { return uint32(NumRefs.Increment()); }
26
27 inline uint32 Release() const
28 {
29 const int32 Refs = NumRefs.Decrement();
30 if (Refs == 0)
31 {
32 delete this;
33 }
34 return uint32(Refs);
35 }
36
38 {
39 return uint32(NumRefs.GetValue());
40 }
41
42protected:
43 virtual ~IMemoryReadStream() {}
44
45private:
46 mutable FThreadSafeCounter NumRefs;
47};
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
TRefCountPtr< IMemoryReadStream > IMemoryReadStreamRef
Definition MemoryReadStream.h:48
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ThreadSafeCounter.h:14
int32 Increment()
Definition ThreadSafeCounter.h:52
int32 Decrement()
Definition ThreadSafeCounter.h:75
int32 GetValue() const
Definition ThreadSafeCounter.h:120
Definition MemoryReadStream.h:14
static CORE_API TRefCountPtr< IMemoryReadStream > CreateFromBuffer(void *InMemory, int64 InSize, bool bOwnPointer)
Definition MemoryReadStream.cpp:69
virtual void EnsureReadNonBlocking()
Definition MemoryReadStream.h:23
static CORE_API TRefCountPtr< IMemoryReadStream > CreateFromCopy(const void *InMemory, int64 InSize)
Definition MemoryReadStream.cpp:50
UE_FORCEINLINE_HINT uint32 AddRef() const
Definition MemoryReadStream.h:25
UE_FORCEINLINE_HINT uint32 GetRefCount() const
Definition MemoryReadStream.h:37
virtual ~IMemoryReadStream()
Definition MemoryReadStream.h:43
virtual int64 GetSize()=0
uint32 Release() const
Definition MemoryReadStream.h:27
virtual CORE_API void CopyTo(void *Buffer, int64 InOffset, int64 InSize)
Definition MemoryReadStream.cpp:38
virtual const void * Read(int64 &OutSize, int64 InOffset, int64 InSize)=0
Definition RefCounting.h:454