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) {}
48 ::std::string& mBuffer;
53 BinaryStream& operator=(BinaryStream
const&);
54 BinaryStream(BinaryStream
const&);
59 virtual ~BinaryStream() =
default;
61 virtual void writeBool(
bool value,
char const* docFieldName,
char const*);
63 virtual void writeByte(uchar value,
char const*,
char const*);
65 virtual void writeSignedByte(schar value,
char const*,
char const*);
67 virtual void writeUnsignedShort(ushort value,
char const*,
char const*);
69 virtual void writeSignedShort(
short value,
char const*,
char const*);
71 virtual void writeUnsignedInt(uint value,
char const*,
char const*);
73 virtual void writeSignedBigEndianInt(
int value,
char const*,
char const*);
75 virtual void writeSignedInt(
int value,
char const*,
char const*);
77 virtual void writeUnsignedInt64(uint64 value,
char const*,
char const*);
79 virtual void writeSignedInt64(int64 value,
char const*,
char const*);
81 virtual void writeUnsignedVarInt(uint uvalue,
char const* docFieldName,
char const*);
83 virtual void writeUnsignedVarInt64(uint64 uvalue,
char const* docFieldName,
char const*);
85 virtual void writeVarInt(
int value,
char const* docFieldName,
char const*);
87 virtual void writeVarInt64(int64 value,
char const* docFieldName,
char const*);
89 virtual void writeDouble(
double value,
char const*,
char const*);
91 virtual void writeFloat(
float value,
char const*,
char const*);
93 virtual void writeFixedFloat(
float value,
char const* docFieldName,
char const* docFieldNotes,
double size);
95 virtual void writeNormalizedFloat(
float value,
char const* docFieldName,
char const*);
97 virtual void writeString(::std::string_view value,
char const*,
char const*);
101 char const* writeIfTrue,
102 ::brstd::function_ref<
void(::BinaryStream&)>
const& writeIfFalse,
103 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const&
106 virtual void writeConditional(
107 char const* conditions,
108 ::std::initializer_list<::BinaryStream::ConditionBlock>&& writeDefault,
109 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const&
112 virtual void branchingWrite_DEPRECATED(
113 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
120 virtual void branchingWrite_DEPRECATED(
121 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
123 ::std::vector<int>
const&,
127 virtual bool writeTypeBegin_DocHelper(
char const*,
char const*,
char const*);
129 virtual void writeTypeEnd_DocHelper();
131 virtual void writeEnum_DocHelper(
char const*,
char const*);
133 virtual void _writeArray(
134 ::std::function<
void(::BinaryStream&)>&& sizeWriter,
135 ::std::function<
void(::BinaryStream&)>&& writer,
145 MCAPI
explicit BinaryStream(::std::string&& buffer);
148 MCAPI BinaryStream(::std::string& buffer,
bool copyBuffer);
150 MCFOLD
void _writeInteger(uchar value,
char const* docFieldName,
char const*);
152 MCAPI
void _writeInteger(
short value,
char const* docFieldName,
char const*);
154 MCFOLD
void _writeInteger(ushort value,
char const* docFieldName,
char const*);
156 MCAPI
void _writeInteger(
int value,
char const* docFieldName,
char const*);
158 MCAPI
void _writeInteger(uint value,
char const* docFieldName,
char const*);
160 MCAPI ::std::string getAndReleaseData();
164 MCAPI
void writeRawBytes(::buffer_span<uchar> bytes,
char const*,
char const*);
166 MCFOLD
void writeUnsignedChar(uchar value,
char const*,
char const*);
175 MCAPI
void* $ctor(::std::string&& buffer);
178 MCAPI
void* $ctor(::std::string& buffer,
bool copyBuffer);
184 MCFOLD
void $writeBool(
bool value,
char const* docFieldName,
char const*);
186 MCFOLD
void $writeByte(uchar value,
char const*,
char const*);
188 MCFOLD
void $writeSignedByte(schar value,
char const*,
char const*);
190 MCFOLD
void $writeUnsignedShort(ushort value,
char const*,
char const*);
192 MCFOLD
void $writeSignedShort(
short value,
char const*,
char const*);
194 MCFOLD
void $writeUnsignedInt(uint value,
char const*,
char const*);
196 MCAPI
void $writeSignedBigEndianInt(
int value,
char const*,
char const*);
198 MCFOLD
void $writeSignedInt(
int value,
char const*,
char const*);
200 MCFOLD
void $writeUnsignedInt64(uint64 value,
char const*,
char const*);
202 MCFOLD
void $writeSignedInt64(int64 value,
char const*,
char const*);
204 MCAPI
void $writeUnsignedVarInt(uint uvalue,
char const* docFieldName,
char const*);
206 MCAPI
void $writeUnsignedVarInt64(uint64 uvalue,
char const* docFieldName,
char const*);
208 MCAPI
void $writeVarInt(
int value,
char const* docFieldName,
char const*);
210 MCAPI
void $writeVarInt64(int64 value,
char const* docFieldName,
char const*);
212 MCAPI
void $writeDouble(
double value,
char const*,
char const*);
214 MCAPI
void $writeFloat(
float value,
char const*,
char const*);
216 MCAPI
void $writeFixedFloat(
float value,
char const* docFieldName,
char const* docFieldNotes,
double size);
218 MCAPI
void $writeNormalizedFloat(
float value,
char const* docFieldName,
char const*);
220 MCAPI
void $writeString(::std::string_view value,
char const*,
char const*);
224 char const* writeIfTrue,
225 ::brstd::function_ref<
void(::BinaryStream&)>
const& writeIfFalse,
226 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const&
229 MCAPI
void $writeConditional(
230 char const* conditions,
231 ::std::initializer_list<::BinaryStream::ConditionBlock>&& writeDefault,
232 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const&
235 MCFOLD
void $branchingWrite_DEPRECATED(
236 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
243 MCFOLD
void $branchingWrite_DEPRECATED(
244 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
246 ::std::vector<int>
const&,
250 MCFOLD
bool $writeTypeBegin_DocHelper(
char const*,
char const*,
char const*);
252 MCFOLD
void $writeTypeEnd_DocHelper();
254 MCFOLD
void $writeEnum_DocHelper(
char const*,
char const*);
256 MCAPI
void $_writeArray(
257 ::std::function<
void(::BinaryStream&)>&& sizeWriter,
258 ::std::function<
void(::BinaryStream&)>&& writer,