19 #ifndef avro_Codec_hh__ 20 #define avro_Codec_hh__ 28 #include "boost/blank.hpp" 51 typedef boost::blank null;
53 template <
typename T>
void encode(Encoder& e,
const T& t);
54 template <
typename T>
void decode(Decoder& d, T& t);
215 std::vector<uint8_t> v(N);
217 std::copy(v.data(), v.data() + N, s.data());
232 for (
typename std::vector<T>::const_iterator it = b.begin();
233 it != b.end(); ++it) {
247 for (
size_t i = 0; i < n; ++i) {
258 template <>
struct codec_traits<
std::conditional<avro::is_not_defined<bool_codec_traits>::value,
259 std::vector<bool>::const_reference, void>::type> {
279 for (
typename std::map<std::string, T>::const_iterator
281 it != b.end(); ++it) {
296 for (
size_t i = 0; i < n; ++i) {
331 template <
typename T>
339 template <
typename T>
346 #endif // avro_Codec_hh__ Low level support for encoding avro values.
std::vector< uint8_t > decodeBytes()
Decodes arbitray binary data from the current stream.
Definition: Decoder.hh:90
static void decode(Decoder &d, std::map< std::string, T > &s)
Decodes into a given value.
Definition: Specific.hh:293
virtual void encodeLong(int64_t l)=0
Encodes a 64-bit signed int to the current stream.
virtual void encodeBytes(const uint8_t *bytes, size_t len)=0
Encodes aribtray binary data into tthe current stream as Avro "bytes" data type.
virtual size_t mapStart()=0
Start decoding a map. Returns the number of entries in first chunk.
static void encode(Encoder &e, const std::string &s)
Encodes a given value.
Definition: Specific.hh:169
virtual void encodeNull()=0
Encodes a null to the current stream.
void decode(Decoder &d, T &t)
Generic decoder function that makes use of the codec_traits.
Definition: Specific.hh:340
virtual void arrayEnd()=0
Indicates that the current array of items have ended.
A bunch of templates and specializations for encoding and decoding specific types.
Definition: AvroParse.hh:30
This header contains type traits and similar utilities used by the library.
static void encode(Encoder &e, float f)
Encodes a given value.
Definition: Specific.hh:131
Codec_traits tells avro how to encode and decode an object of given type.
Definition: Generic.hh:112
virtual bool decodeBool()=0
Decodes a bool from the current stream.
static void decode(Decoder &d, int64_t &l)
Decodes into a given value.
Definition: Specific.hh:119
virtual void mapStart()=0
Indicates that a map of items is being encoded.
virtual void encodeBool(bool b)=0
Encodes a bool to the current stream.
static void encode(Encoder &e, int64_t l)
Encodes a given value.
Definition: Specific.hh:112
virtual void decodeNull()=0
Decodes a null from the current stream.
virtual int32_t decodeInt()=0
Decodes a 32-bit int from the current stream.
virtual void mapEnd()=0
Indicates that the current map of items have ended.
virtual size_t arrayNext()=0
Returns the number of entries in next chunk. 0 if last.
virtual void encodeFixed(const uint8_t *bytes, size_t len)=0
Encodes fixed length binary to the current stream.
static void encode(Encoder &e, int32_t i)
Encodes a given value.
Definition: Specific.hh:93
static void encode(Encoder &e, const std::vector< T > &b)
Encodes a given value.
Definition: Specific.hh:228
static void decode(Decoder &d, std::string &s)
Decodes into a given value.
Definition: Specific.hh:176
virtual double decodeDouble()=0
Decodes a double-precision floating point number from current stream.
virtual void startItem()=0
Marks a beginning of an item in the current array or map.
static void encode(Encoder &e, const avro::null &)
Encodes a given value.
Definition: Specific.hh:314
static void decode(Decoder &d, int32_t &i)
Decodes into a given value.
Definition: Specific.hh:100
virtual void setItemCount(size_t count)=0
Indicates that count number of items are to follow in the current array or map.
virtual float decodeFloat()=0
Decodes a single-precision floating point number from current stream.
std::vector< uint8_t > decodeFixed(size_t n)
Decodes fixed length binary from the current stream.
Definition: Decoder.hh:109
virtual size_t arrayStart()=0
Start decoding an array. Returns the number of entries in first chunk.
virtual void encodeString(const std::string &s)=0
Encodes a UTF-8 string to the current stream.
void encode(Encoder &e, const T &t)
Generic encoder function that makes use of the codec_traits.
Definition: Specific.hh:332
static void decode(Decoder &d, std::vector< uint8_t > &s)
Decodes into a given value.
Definition: Specific.hh:195
virtual size_t mapNext()=0
Returns the number of entries in next chunk. 0 if last.
static void decode(Decoder &d, avro::null &)
Decodes into a given value.
Definition: Specific.hh:321
static void encode(Encoder &e, const std::vector< uint8_t > &b)
Encodes a given value.
Definition: Specific.hh:188
static void encode(Encoder &e, const std::array< uint8_t, N > &b)
Encodes a given value.
Definition: Specific.hh:207
virtual void encodeInt(int32_t i)=0
Encodes a 32-bit int to the current stream.
virtual void arrayStart()=0
Indicates that an array of items is being encoded.
virtual void encodeFloat(float f)=0
Encodes a single-precision floating point number to the current stream.
static void decode(Decoder &d, double &dbl)
Decodes into a given value.
Definition: Specific.hh:157
static void decode(Decoder &d, std::array< uint8_t, N > &s)
Decodes into a given value.
Definition: Specific.hh:214
static void encode(Encoder &e, const std::map< std::string, T > &b)
Encodes a given value.
Definition: Specific.hh:275
static void encode(Encoder &e, double d)
Encodes a given value.
Definition: Specific.hh:150
static void decode(Decoder &d, bool &b)
Decodes into a given value.
Definition: Specific.hh:81
virtual void encodeDouble(double d)=0
Encodes a double-precision floating point number to the current stream.
static void encode(Encoder &e, std::vector< bool >::const_reference b)
Encodes a given value.
Definition: Specific.hh:263
virtual int64_t decodeLong()=0
Decodes a 64-bit signed int from the current stream.
std::string decodeString()
Decodes a UTF-8 string from the current stream.
Definition: Decoder.hh:75
static void encode(Encoder &e, bool b)
Encodes a given value.
Definition: Specific.hh:74
The abstract base class for all Avro encoders.
Definition: Encoder.hh:52
static void decode(Decoder &d, std::vector< T > &s)
Decodes into a given value.
Definition: Specific.hh:244
Decoder is an interface implemented by every decoder capable of decoding Avro data.
Definition: Decoder.hh:48
Low level support for decoding avro values.
static void decode(Decoder &d, float &f)
Decodes into a given value.
Definition: Specific.hh:138