1#ifndef SOURCEMETA_BLAZE_BINPACK_ENCODER_H_
2#define SOURCEMETA_BLAZE_BINPACK_ENCODER_H_
4#ifndef SOURCEMETA_BLAZE_BINPACK_EXPORT
5#include <sourcemeta/blaze/binpack_export.h>
8#include <sourcemeta/blaze/binpack_encoder_cache.h>
9#include <sourcemeta/blaze/binpack_encoding.h>
11#include <sourcemeta/core/io.h>
12#include <sourcemeta/core/json.h>
16namespace sourcemeta::blaze {
19class SOURCEMETA_BLAZE_BINPACK_EXPORT BinPackEncoder
20 :
private sourcemeta::core::BinaryWriter {
22 using Stream = std::basic_ostream<sourcemeta::core::JSON::Char,
23 sourcemeta::core::JSON::CharTraits>;
24 BinPackEncoder(Stream &output);
25 auto write(
const sourcemeta::core::JSON &document,
33#define DECLARE_ENCODING(name) \
34 auto name(const sourcemeta::core::JSON &document, const name &) -> void;
75#undef DECLARE_ENCODING
std::variant< BOUNDED_MULTIPLE_8BITS_ENUM_FIXED, FLOOR_MULTIPLE_ENUM_VARINT, ROOF_MULTIPLE_MIRROR_ENUM_VARINT, ARBITRARY_MULTIPLE_ZIGZAG_VARINT, DOUBLE_VARINT_TUPLE, BYTE_CHOICE_INDEX, LARGE_CHOICE_INDEX, TOP_LEVEL_BYTE_CHOICE_INDEX, CONST_NONE, ANY_PACKED_TYPE_TAG_BYTE_PREFIX, UTF8_STRING_NO_LENGTH, FLOOR_VARINT_PREFIX_UTF8_STRING_SHARED, ROOF_VARINT_PREFIX_UTF8_STRING_SHARED, BOUNDED_8BIT_PREFIX_UTF8_STRING_SHARED, RFC3339_DATE_INTEGER_TRIPLET, PREFIX_VARINT_LENGTH_STRING_SHARED, FIXED_TYPED_ARRAY, BOUNDED_8BITS_TYPED_ARRAY, FLOOR_TYPED_ARRAY, ROOF_TYPED_ARRAY, FIXED_TYPED_ARBITRARY_OBJECT, VARINT_TYPED_ARBITRARY_OBJECT, NUMBER_VARINT_TUPLE > BinPackEncoding
Definition binpack_encoding.h:49