LeviLamina
Loading...
Searching...
No Matches
BinaryStream.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/network/serialize/serialize.h"
5
6// auto generated inclusion list
7#include "mc/deps/core/utility/ReadOnlyBinaryStream.h"
8#include "mc/platform/brstd/function_ref.h"
9
10class BinaryStream : public ::ReadOnlyBinaryStream {
11public:
12 // BinaryStream inner types declare
13 // clang-format off
14 struct ConditionBlock;
15 // clang-format on
16
17 // BinaryStream inner types define
19 public:
20 // member variables
21 // NOLINTBEGIN
22 bool controlValue;
23 ::brstd::function_ref<void(::BinaryStream&)> writeCondition;
24 char const* docFieldName;
25 // NOLINTEND
26 };
27
28public:
29 template <typename T>
30 inline void writeType(T const& x, char const* = nullptr, char const* = nullptr) {
31 serialize<T>::write(x, *this);
32 }
33
34 MCTAPI void writeType(class BlockPos const&, char const*, char const*);
35 MCTAPI void writeType(class Vec3 const&, char const*, char const*);
36 MCTAPI void writeType(class MoveActorAbsoluteData const&, char const*, char const*);
37 MCTAPI void writeType(class BaseGameVersion const&, char const*, char const*);
38 MCTAPI void writeType(struct ActorLink const&, char const*, char const*);
39 MCTAPI void writeType(class GameRulesChangedPacketData const&, char const*, char const*);
40
41 BinaryStream() : ReadOnlyBinaryStream({}, true), mBuffer(mOwnedBuffer) {}
42 BinaryStream(std::string& buffer) : ReadOnlyBinaryStream(buffer, false), mBuffer(buffer) {}
43
44 void write(char const* origin, uint64 num) {
45 mBuffer.append(origin, num);
46 mView = mBuffer;
47 }
48
49public:
50 // member variables
51 // NOLINTBEGIN
52 ::std::string& mBuffer;
53 // NOLINTEND
54
55public:
56 // prevent constructor by default
57 BinaryStream& operator=(BinaryStream const&);
58 BinaryStream(BinaryStream const&);
59
60public:
61 // virtual functions
62 // NOLINTBEGIN
63 virtual ~BinaryStream() /*override*/ = default;
64
65 virtual void writeBool(bool value, char const* docFieldName, char const*);
66
67 virtual void writeByte(uchar value, char const*, char const*);
68
69 virtual void writeSignedByte(schar value, char const*, char const*);
70
71 virtual void writeUnsignedShort(ushort value, char const*, char const*);
72
73 virtual void writeSignedShort(short value, char const*, char const*);
74
75 virtual void writeUnsignedInt(uint value, char const*, char const*);
76
77 virtual void writeSignedBigEndianInt(int value, char const*, char const*);
78
79 virtual void writeSignedInt(int value, char const*, char const*);
80
81 virtual void writeUnsignedInt64(uint64 value, char const*, char const*);
82
83 virtual void writeSignedInt64(int64 value, char const*, char const*);
84
85 virtual void writeUnsignedVarInt(uint uvalue, char const* docFieldName, char const*);
86
87 virtual void writeUnsignedVarInt64(uint64 uvalue, char const* docFieldName, char const* docFieldNotes);
88
89 virtual void writeVarInt(int value, char const* docFieldName, char const*);
90
91 virtual void writeVarInt64(int64 value, char const* docFieldName, char const* docFieldNotes);
92
93 virtual void writeDouble(double value, char const*, char const*);
94
95 virtual void writeFloat(float value, char const*, char const*);
96
97 virtual void writeFixedFloat(float value, char const* docFieldName, char const* docFieldNotes, double size);
98
99 virtual void writeNormalizedFloat(float value, char const* docFieldName, char const*);
100
101 virtual void writeString(::std::string_view value, char const*, char const*);
102
103 virtual void writeIf(
104 bool controlValue,
105 char const*,
106 ::brstd::function_ref<void(::BinaryStream&)> const& writeIfTrue,
107 ::std::optional<::brstd::function_ref<void(::BinaryStream&)>> const& writeIfFalse
108 );
109
110 virtual void writeConditional(
111 char const* docFieldName,
112 ::std::initializer_list<::BinaryStream::ConditionBlock>&& conditions,
113 ::std::optional<::brstd::function_ref<void(::BinaryStream&)>> const& writeDefault
114 );
115
116 virtual void branchingWrite_DEPRECATED(
117 ::std::function<void(::BinaryStream&, int)>&& branchWriter,
118 int controlValue,
119 int,
120 int,
121 char const*
122 );
123
124 virtual void branchingWrite_DEPRECATED(
125 ::std::function<void(::BinaryStream&, int)>&& branchWriter,
126 int controlValue,
127 ::std::vector<int> const&,
128 char const*
129 );
130
131 virtual bool writeTypeBegin_DocHelper(char const*, char const*, char const*);
132
133 virtual void writeTypeEnd_DocHelper();
134
135 virtual void writeEnum_DocHelper(char const*, char const*);
136
137 virtual void _writeArray(
138 ::std::function<void(::BinaryStream&)>&& sizeWriter,
139 ::std::function<void(::BinaryStream&)>&& writer,
140 char const*,
141 char const*
142 );
143 // NOLINTEND
144
145public:
146 // member functions
147 // NOLINTBEGIN
148#ifdef LL_PLAT_S
149 MCAPI ::std::string getAndReleaseData();
150#endif
151 // NOLINTEND
152
153public:
154 // virtual function thunks
155 // NOLINTBEGIN
156 MCAPI void $writeBool(bool value, char const* docFieldName, char const*);
157
158 MCFOLD void $writeByte(uchar value, char const*, char const*);
159
160 MCFOLD void $writeSignedByte(schar value, char const*, char const*);
161
162 MCFOLD void $writeUnsignedShort(ushort value, char const*, char const*);
163
164 MCFOLD void $writeSignedShort(short value, char const*, char const*);
165
166 MCFOLD void $writeUnsignedInt(uint value, char const*, char const*);
167
168 MCAPI void $writeSignedBigEndianInt(int value, char const*, char const*);
169
170 MCFOLD void $writeSignedInt(int value, char const*, char const*);
171
172 MCFOLD void $writeUnsignedInt64(uint64 value, char const*, char const*);
173
174 MCFOLD void $writeSignedInt64(int64 value, char const*, char const*);
175
176 MCAPI void $writeUnsignedVarInt(uint uvalue, char const* docFieldName, char const*);
177
178 MCAPI void $writeUnsignedVarInt64(uint64 uvalue, char const* docFieldName, char const* docFieldNotes);
179
180 MCAPI void $writeVarInt(int value, char const* docFieldName, char const*);
181
182 MCAPI void $writeVarInt64(int64 value, char const* docFieldName, char const* docFieldNotes);
183
184 MCAPI void $writeDouble(double value, char const*, char const*);
185
186 MCAPI void $writeFloat(float value, char const*, char const*);
187
188 MCAPI void $writeFixedFloat(float value, char const* docFieldName, char const* docFieldNotes, double size);
189
190 MCAPI void $writeNormalizedFloat(float value, char const* docFieldName, char const*);
191
192 MCAPI void $writeString(::std::string_view value, char const*, char const*);
193
194 MCAPI void $writeIf(
195 bool controlValue,
196 char const*,
197 ::brstd::function_ref<void(::BinaryStream&)> const& writeIfTrue,
198 ::std::optional<::brstd::function_ref<void(::BinaryStream&)>> const& writeIfFalse
199 );
200
201 MCAPI void $writeConditional(
202 char const* docFieldName,
203 ::std::initializer_list<::BinaryStream::ConditionBlock>&& conditions,
204 ::std::optional<::brstd::function_ref<void(::BinaryStream&)>> const& writeDefault
205 );
206
207 MCFOLD void $branchingWrite_DEPRECATED(
208 ::std::function<void(::BinaryStream&, int)>&& branchWriter,
209 int controlValue,
210 int,
211 int,
212 char const*
213 );
214
215 MCFOLD void $branchingWrite_DEPRECATED(
216 ::std::function<void(::BinaryStream&, int)>&& branchWriter,
217 int controlValue,
218 ::std::vector<int> const&,
219 char const*
220 );
221
222 MCFOLD bool $writeTypeBegin_DocHelper(char const*, char const*, char const*);
223
224 MCFOLD void $writeTypeEnd_DocHelper();
225
226 MCFOLD void $writeEnum_DocHelper(char const*, char const*);
227
228 MCAPI void $_writeArray(
229 ::std::function<void(::BinaryStream&)>&& sizeWriter,
230 ::std::function<void(::BinaryStream&)>&& writer,
231 char const*,
232 char const*
233 );
234
235
236 // NOLINTEND
237
238public:
239 // vftables
240 // NOLINTBEGIN
241 MCNAPI static void** $vftable();
242 // NOLINTEND
243};
Definition BaseGameVersion.h:8
Definition BinaryStream.h:10
static MCAPI void ** $vftable()
Definition BlockPos.h:17
Definition GameRulesChangedPacketData.h:10
Definition MoveActorAbsoluteData.h:14
Definition ReadOnlyBinaryStream.h:8
Definition Vec3.h:10
Definition function_ref.h:60
Definition BinaryStream.h:18