UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetBitStreamWriter.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 InitBytes(void* Buffer, uint32 ByteCount);
22
30
34 inline bool WriteBool(bool Value);
35
42 IRISCORE_API void WriteBitStream(const uint32* Src, uint32 SrcBitOffset, uint32 BitCount);
43
49
55
57 inline uint32 GetPosBytes() const { return (BufferBitPosition - BufferBitStartOffset + 7) >> 3U; }
58
60 inline uint32 GetPosBits() const { return BufferBitPosition - BufferBitStartOffset; }
61
63 inline uint32 GetAbsolutePosBits() const { return BufferBitPosition; }
64
66 inline uint32 GetBitsLeft() const { return (OverflowBitCount ? 0U : (BufferBitCapacity - BufferBitPosition)); }
67
70
72 inline bool IsOverflown() const { return OverflowBitCount != 0; }
73
86
92
95
96private:
98 uint32 BufferBitCapacity;
99 // For substreams this indicate the bit position in the buffer where it may start writing
100 uint32 BufferBitStartOffset;
101 uint32 BufferBitPosition;
102 uint32 PendingWord;
103 uint32 OverflowBitCount;
104
105 uint32 bHasSubstream : 1;
106 uint32 bIsSubstream : 1;
107 uint32 bIsInvalid : 1;
108};
109
111{
112 // This is to support a Value other than 0 or 1.
113 volatile int8 ValueAsInt8 = Value;
114 WriteBits(ValueAsInt8 ? 1U : 0U, 1U);
115 return ValueAsInt8 ? true : false;
116}
117
118}
119
121{
122 return (uint32(Stream.IsOverflown()) - 1U) & Stream.GetAbsolutePosBits();
123}
uint32 GetBitStreamPositionForNetTrace(const FBitWriter &Stream)
Definition CoreNet.h:442
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NetBitStreamWriter.h:11
IRISCORE_API void CommitWrites()
Definition NetBitStreamWriter.cpp:207
IRISCORE_API void WriteBitStream(const uint32 *Src, uint32 SrcBitOffset, uint32 BitCount)
Definition NetBitStreamWriter.cpp:114
bool IsOverflown() const
Definition NetBitStreamWriter.h:72
IRISCORE_API void DoOverflow()
Definition NetBitStreamWriter.cpp:244
IRISCORE_API void DiscardSubstream(FNetBitStreamWriter &Substream)
Definition NetBitStreamWriter.cpp:307
IRISCORE_API FNetBitStreamWriter()
Definition NetBitStreamWriter.cpp:22
uint32 GetPosBits() const
Definition NetBitStreamWriter.h:60
bool WriteBool(bool Value)
Definition NetBitStreamWriter.h:110
IRISCORE_API void CommitSubstream(FNetBitStreamWriter &Substream)
Definition NetBitStreamWriter.cpp:283
IRISCORE_API FNetBitStreamWriter CreateSubstream(uint32 MaxBitCount=~0U)
Definition NetBitStreamWriter.cpp:253
uint32 GetBitsLeft() const
Definition NetBitStreamWriter.h:66
IRISCORE_API ~FNetBitStreamWriter()
Definition NetBitStreamWriter.cpp:35
IRISCORE_API void InitBytes(void *Buffer, uint32 ByteCount)
Definition NetBitStreamWriter.cpp:41
IRISCORE_API void WriteBits(uint32 Value, uint32 BitCount)
Definition NetBitStreamWriter.cpp:59
uint32 GetAbsolutePosBits() const
Definition NetBitStreamWriter.h:63
uint32 GetPosBytes() const
Definition NetBitStreamWriter.h:57
Definition NetworkVersion.cpp:28