10class BinaryStream :
public ::ReadOnlyBinaryStream {
24 char const* docFieldName;
30 inline void writeType(T
const& x,
char const* =
nullptr,
char const* =
nullptr) {
31 serialize<T>::write(x, *
this);
34 MCTAPI
void writeType(
class BlockPos const&,
char const*,
char const*);
35 MCTAPI
void writeType(
class Vec3 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*);
42 BinaryStream(std::string& buffer) : ReadOnlyBinaryStream(buffer, false), mBuffer(buffer) {}
44 void write(
char const* origin, uint64 num) {
45 mBuffer.append(origin, num);
52 ::std::string& mBuffer;
57 BinaryStream& operator=(BinaryStream
const&);
58 BinaryStream(BinaryStream
const&);
63 virtual ~BinaryStream() =
default;
65 virtual void writeBool(
bool value,
char const* docFieldName,
char const*);
67 virtual void writeByte(uchar value,
char const*,
char const*);
69 virtual void writeSignedByte(schar value,
char const*,
char const*);
71 virtual void writeUnsignedShort(ushort value,
char const*,
char const*);
73 virtual void writeSignedShort(
short value,
char const*,
char const*);
75 virtual void writeUnsignedInt(uint value,
char const*,
char const*);
77 virtual void writeSignedBigEndianInt(
int value,
char const*,
char const*);
79 virtual void writeSignedInt(
int value,
char const*,
char const*);
81 virtual void writeUnsignedInt64(uint64 value,
char const*,
char const*);
83 virtual void writeSignedInt64(int64 value,
char const*,
char const*);
85 virtual void writeUnsignedVarInt(uint uvalue,
char const* docFieldName,
char const*);
87 virtual void writeUnsignedVarInt64(uint64 uvalue,
char const* docFieldName,
char const* docFieldNotes);
89 virtual void writeVarInt(
int value,
char const* docFieldName,
char const*);
91 virtual void writeVarInt64(int64 value,
char const* docFieldName,
char const* docFieldNotes);
93 virtual void writeDouble(
double value,
char const*,
char const*);
95 virtual void writeFloat(
float value,
char const*,
char const*);
97 virtual void writeFixedFloat(
float value,
char const* docFieldName,
char const* docFieldNotes,
double size);
99 virtual void writeNormalizedFloat(
float value,
char const* docFieldName,
char const*);
101 virtual void writeString(::std::string_view value,
char const*,
char const*);
103 virtual void writeIf(
106 ::brstd::function_ref<
void(::BinaryStream&)>
const& writeIfTrue,
107 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const& writeIfFalse
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
116 virtual void branchingWrite_DEPRECATED(
117 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
124 virtual void branchingWrite_DEPRECATED(
125 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
127 ::std::vector<int>
const&,
131 virtual bool writeTypeBegin_DocHelper(
char const*,
char const*,
char const*);
133 virtual void writeTypeEnd_DocHelper();
135 virtual void writeEnum_DocHelper(
char const*,
char const*);
137 virtual void _writeArray(
138 ::std::function<
void(::BinaryStream&)>&& sizeWriter,
139 ::std::function<
void(::BinaryStream&)>&& writer,
148 MCAPI
void $writeBool(
bool value,
char const* docFieldName,
char const*);
150 MCFOLD
void $writeByte(uchar value,
char const*,
char const*);
152 MCFOLD
void $writeSignedByte(schar value,
char const*,
char const*);
154 MCFOLD
void $writeUnsignedShort(ushort value,
char const*,
char const*);
156 MCFOLD
void $writeSignedShort(
short value,
char const*,
char const*);
158 MCFOLD
void $writeUnsignedInt(uint value,
char const*,
char const*);
160 MCAPI
void $writeSignedBigEndianInt(
int value,
char const*,
char const*);
162 MCFOLD
void $writeSignedInt(
int value,
char const*,
char const*);
164 MCFOLD
void $writeUnsignedInt64(uint64 value,
char const*,
char const*);
166 MCFOLD
void $writeSignedInt64(int64 value,
char const*,
char const*);
168 MCAPI
void $writeUnsignedVarInt(uint uvalue,
char const* docFieldName,
char const*);
170 MCAPI
void $writeUnsignedVarInt64(uint64 uvalue,
char const* docFieldName,
char const* docFieldNotes);
172 MCAPI
void $writeVarInt(
int value,
char const* docFieldName,
char const*);
174 MCAPI
void $writeVarInt64(int64 value,
char const* docFieldName,
char const* docFieldNotes);
176 MCAPI
void $writeDouble(
double value,
char const*,
char const*);
178 MCAPI
void $writeFloat(
float value,
char const*,
char const*);
180 MCAPI
void $writeFixedFloat(
float value,
char const* docFieldName,
char const* docFieldNotes,
double size);
182 MCAPI
void $writeNormalizedFloat(
float value,
char const* docFieldName,
char const*);
184 MCAPI
void $writeString(::std::string_view value,
char const*,
char const*);
189 ::brstd::function_ref<
void(::BinaryStream&)>
const& writeIfTrue,
190 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const& writeIfFalse
193 MCAPI
void $writeConditional(
194 char const* docFieldName,
195 ::std::initializer_list<::BinaryStream::ConditionBlock>&& conditions,
196 ::std::optional<::brstd::function_ref<
void(::BinaryStream&)>>
const& writeDefault
199 MCFOLD
void $branchingWrite_DEPRECATED(
200 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
207 MCFOLD
void $branchingWrite_DEPRECATED(
208 ::std::function<
void(::BinaryStream&,
int)>&& branchWriter,
210 ::std::vector<int>
const&,
214 MCFOLD
bool $writeTypeBegin_DocHelper(
char const*,
char const*,
char const*);
216 MCFOLD
void $writeTypeEnd_DocHelper();
218 MCFOLD
void $writeEnum_DocHelper(
char const*,
char const*);
220 MCAPI
void $_writeArray(
221 ::std::function<
void(::BinaryStream&)>&& sizeWriter,
222 ::std::function<
void(::BinaryStream&)>&& writer,