UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetBitStreamReader.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"
6
7namespace UE::Net
8{
9
11{
12public:
15
21 IRISCORE_API void InitBits(const void* Buffer, uint32 BitCount);
22
29
34 bool ReadBool() { return ReadBits(1) & 1U; }
35
43 IRISCORE_API void ReadBitStream(uint32* Dst, uint32 BitCount);
44
50
52 inline uint32 GetPosBytes() const { return (BufferBitPosition - BufferBitStartOffset + 7) >> 3U; }
53
55 inline uint32 GetPosBits() const { return BufferBitPosition - BufferBitStartOffset; }
56
58 inline uint32 GetAbsolutePosBits() const { return BufferBitPosition; }
59
61 inline uint32 GetBitsLeft() const { return (OverflowBitCount ? 0U : (BufferBitCapacity - BufferBitPosition)); }
62
65
67 inline bool IsOverflown() const { return OverflowBitCount != 0; }
68
80
86
89
90private:
91 const uint32* Buffer;
92 // The BufferBitCapacity is an absolute bit position indicating the bit after the last valid bit position to read.
93 uint32 BufferBitCapacity;
94 // For substreams this indicate the absolute bit position in the buffer where it will start reading
95 uint32 BufferBitStartOffset;
96 uint32 BufferBitPosition;
97 uint32 PendingWord;
98 uint32 OverflowBitCount;
99
100 uint32 bHasSubstream : 1;
101 uint32 bIsSubstream : 1;
102 uint32 bIsInvalid : 1;
103};
104
105}
106
107// Always report the actual bitstream position, even on overflow. This normally allows for better comparisons between sending and receiving side when bitstream errors occur.
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint32 GetBitStreamPositionForNetTrace(const UE::Net::FNetBitStreamReader &Stream)
Definition NetBitStreamReader.h:108
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NetBitStreamReader.h:11
IRISCORE_API FNetBitStreamReader CreateSubstream(uint32 MaxBitCount=~0U)
Definition NetBitStreamReader.cpp:205
bool IsOverflown() const
Definition NetBitStreamReader.h:67
uint32 GetAbsolutePosBits() const
Definition NetBitStreamReader.h:58
uint32 GetPosBytes() const
Definition NetBitStreamReader.h:52
IRISCORE_API void CommitSubstream(FNetBitStreamReader &Substream)
Definition NetBitStreamReader.cpp:235
IRISCORE_API void DiscardSubstream(FNetBitStreamReader &Substream)
Definition NetBitStreamReader.cpp:256
uint32 GetBitsLeft() const
Definition NetBitStreamReader.h:61
IRISCORE_API uint32 ReadBits(uint32 BitCount)
Definition NetBitStreamReader.cpp:54
uint32 GetPosBits() const
Definition NetBitStreamReader.h:55
IRISCORE_API void DoOverflow()
Definition NetBitStreamReader.cpp:197
IRISCORE_API FNetBitStreamReader()
Definition NetBitStreamReader.cpp:20
IRISCORE_API void InitBits(const void *Buffer, uint32 BitCount)
Definition NetBitStreamReader.cpp:38
bool ReadBool()
Definition NetBitStreamReader.h:34
IRISCORE_API ~FNetBitStreamReader()
Definition NetBitStreamReader.cpp:33
IRISCORE_API void ReadBitStream(uint32 *Dst, uint32 BitCount)
Definition NetBitStreamReader.cpp:101
Definition NetworkVersion.cpp:28