11class BinaryStream :
public ::ReadOnlyBinaryStream {
25 char const* docFieldName;
31 inline void writeType(T
const& x,
char const* =
nullptr,
char const* =
nullptr) {
32 serialize<T>::write(x, *
this);
35 MCTAPI
void writeType(
class BlockPos const&,
char const*,
char const*);
36 MCTAPI
void writeType(
class Vec3 const&,
char const*,
char const*);
38 MCTAPI
void writeType(
class BaseGameVersion const&,
char const*,
char const*);
39 MCTAPI
void writeType(
struct ActorLink const&,
char const*,
char const*);
43 BinaryStream(std::string& buffer) : ReadOnlyBinaryStream(buffer, false), mBuffer(buffer) {}
45 void write(
char const* origin, uint64 num) {
46 mBuffer.append(origin, num);
53 ::std::string& mBuffer;
58 BinaryStream& operator=(BinaryStream
const&);
59 BinaryStream(BinaryStream
const&);
64 virtual ~BinaryStream() =
default;
66 virtual void writeBool(
bool value,
char const* docFieldName,
char const*);
68 virtual void writeByte(uchar value,
char const*,
char const*);
70 virtual void writeSignedByte(schar value,
char const*,
char const*);
72 virtual void writeUnsignedShort(ushort value,
char const*,
char const*);
74 virtual void writeSignedShort(
short value,
char const*,
char const*);
76 virtual void writeUnsignedInt(uint value,
char const*,
char const*);
78 virtual void writeSignedBigEndianInt(
int value,
char const*,
char const*);
80 virtual void writeSignedInt(
int value,
char const*,
char const*);
82 virtual void writeUnsignedInt64(uint64 value,
char const*,
char const*);
84 virtual void writeSignedInt64(int64 value,
char const*,
char const*);
86 virtual void writeUnsignedVarInt(uint uvalue,
char const* docFieldName,
char const*);
88 virtual void writeUnsignedVarInt64(uint64 uvalue,
char const* docFieldName,
char const*);
90 virtual void writeVarInt(
int value,
char const* docFieldName,
char const*);
92 virtual void writeVarInt64(int64 value,
char const* docFieldName,
char const*);
94 virtual void writeDouble(
double value,
char const*,
char const*);
96 virtual void writeFloat(
float value,
char const*,
char const*);
98 virtual void writeFixedFloat(
float value,
char const* docFieldName,
char const* docFieldNotes,
double size);
100 virtual void writeNormalizedFloat(
float value,
char const* docFieldName,
char const*);
102 virtual void writeString(::std::string_view value,
char const*,
char const*);
104 virtual void writeIf(
106 char const* writeIfTrue,
107 ::brstd::function_ref<
void(::BinaryStream&)>
const& writeIfFalse,
108 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const&
111 virtual void writeConditional(
112 char const* conditions,
113 ::std::initializer_list<::BinaryStream::ConditionBlock>&& writeDefault,
114 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const&
117 virtual void branchingWrite_DEPRECATED(
118 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
125 virtual void branchingWrite_DEPRECATED(
126 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
128 ::std::vector<int>
const&,
132 virtual bool writeTypeBegin_DocHelper(
char const*,
char const*,
char const*);
134 virtual void writeTypeEnd_DocHelper();
136 virtual void writeEnum_DocHelper(
char const*,
char const*);
138 virtual void _writeArray(
139 ::std::function<
void(::BinaryStream&)>&& sizeWriter,
140 ::std::function<
void(::BinaryStream&)>&& writer,
150 MCAPI
explicit BinaryStream(::std::string&& buffer);
153 MCAPI BinaryStream(::std::string& buffer,
bool copyBuffer);
155 MCFOLD
void _writeInteger(uchar value,
char const* docFieldName,
char const*);
157 MCAPI
void _writeInteger(
short value,
char const* docFieldName,
char const*);
159 MCFOLD
void _writeInteger(ushort value,
char const* docFieldName,
char const*);
161 MCAPI
void _writeInteger(
int value,
char const* docFieldName,
char const*);
163 MCAPI
void _writeInteger(uint value,
char const* docFieldName,
char const*);
165 MCAPI ::std::string getAndReleaseData();
169 MCAPI
void writeRawBytes(::buffer_span<uchar> bytes,
char const*,
char const*);
171 MCFOLD
void writeUnsignedChar(uchar value,
char const*,
char const*);
180 MCAPI
void* $ctor(::std::string&& buffer);
183 MCAPI
void* $ctor(::std::string& buffer,
bool copyBuffer);
189 MCFOLD
void $writeBool(
bool value,
char const* docFieldName,
char const*);
191 MCFOLD
void $writeByte(uchar value,
char const*,
char const*);
193 MCFOLD
void $writeSignedByte(schar value,
char const*,
char const*);
195 MCFOLD
void $writeUnsignedShort(ushort value,
char const*,
char const*);
197 MCFOLD
void $writeSignedShort(
short value,
char const*,
char const*);
199 MCFOLD
void $writeUnsignedInt(uint value,
char const*,
char const*);
201 MCAPI
void $writeSignedBigEndianInt(
int value,
char const*,
char const*);
203 MCFOLD
void $writeSignedInt(
int value,
char const*,
char const*);
205 MCFOLD
void $writeUnsignedInt64(uint64 value,
char const*,
char const*);
207 MCFOLD
void $writeSignedInt64(int64 value,
char const*,
char const*);
209 MCAPI
void $writeUnsignedVarInt(uint uvalue,
char const* docFieldName,
char const*);
211 MCAPI
void $writeUnsignedVarInt64(uint64 uvalue,
char const* docFieldName,
char const*);
213 MCAPI
void $writeVarInt(
int value,
char const* docFieldName,
char const*);
215 MCAPI
void $writeVarInt64(int64 value,
char const* docFieldName,
char const*);
217 MCAPI
void $writeDouble(
double value,
char const*,
char const*);
219 MCAPI
void $writeFloat(
float value,
char const*,
char const*);
221 MCAPI
void $writeFixedFloat(
float value,
char const* docFieldName,
char const* docFieldNotes,
double size);
223 MCAPI
void $writeNormalizedFloat(
float value,
char const* docFieldName,
char const*);
225 MCAPI
void $writeString(::std::string_view value,
char const*,
char const*);
229 char const* writeIfTrue,
230 ::brstd::function_ref<
void(::BinaryStream&)>
const& writeIfFalse,
231 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const&
234 MCAPI
void $writeConditional(
235 char const* conditions,
236 ::std::initializer_list<::BinaryStream::ConditionBlock>&& writeDefault,
237 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const&
240 MCFOLD
void $branchingWrite_DEPRECATED(
241 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
248 MCFOLD
void $branchingWrite_DEPRECATED(
249 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
251 ::std::vector<int>
const&,
255 MCFOLD
bool $writeTypeBegin_DocHelper(
char const*,
char const*,
char const*);
257 MCFOLD
void $writeTypeEnd_DocHelper();
259 MCFOLD
void $writeEnum_DocHelper(
char const*,
char const*);
261 MCAPI
void $_writeArray(
262 ::std::function<
void(::BinaryStream&)>&& sizeWriter,
263 ::std::function<
void(::BinaryStream&)>&& writer,