MCPcopy Create free account
hub / github.com/OpenLoco/OpenLoco / encode

Method encode

src/OpenLoco/src/S5/SawyerStream.cpp:243–271  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

241}
242
243std::span<const std::byte> SawyerStreamWriter::encode(SawyerEncoding encoding, std::span<const std::byte> data)
244{
245 switch (encoding)
246 {
247 case SawyerEncoding::uncompressed:
248 return data;
249 case SawyerEncoding::runLengthSingle:
250 _encodeBuffer.clear();
251 _encodeBuffer.reserve(data.size());
252 encodeRunLengthSingle(_encodeBuffer, data);
253 return _encodeBuffer.getSpan();
254 case SawyerEncoding::runLengthMulti:
255 _encodeBuffer.clear();
256 _encodeBuffer.reserve(data.size());
257 encodeRunLengthMulti(_encodeBuffer, data);
258
259 _encodeBuffer2.clear();
260 _encodeBuffer2.reserve(_encodeBuffer.getLength());
261 encodeRunLengthSingle(_encodeBuffer2, _encodeBuffer.getSpan());
262 return _encodeBuffer2.getSpan();
263 case SawyerEncoding::rotate:
264 _encodeBuffer.clear();
265 _encodeBuffer.reserve(data.size());
266 encodeRotate(_encodeBuffer, data);
267 return _encodeBuffer.getSpan();
268 default:
269 throw Exception::RuntimeError(exceptionUnknownEncoding);
270 }
271}
272
273void SawyerStreamWriter::encodeRunLengthSingle(MemoryStream& buffer, std::span<const std::byte> data)
274{

Callers 1

print_diffFunction · 0.45

Calls 5

reserveMethod · 0.80
getSpanMethod · 0.80
clearMethod · 0.45
sizeMethod · 0.45
getLengthMethod · 0.45

Tested by

no test coverage detected