19 #ifndef avro_Codec_hh__
20 #define avro_Codec_hh__
27 #include "boost/array.hpp"
49 template <
typename T>
void encode(Encoder& e,
const T& t);
50 template <
typename T>
void decode(Decoder& d, T& t);
212 std::vector<uint8_t> v(N);
214 std::copy(&v[0], &v[0] + N, &s[0]);
229 for (
typename std::vector<T>::const_iterator it = b.begin();
230 it != b.end(); ++it) {
244 for (
size_t i = 0; i < n; ++i) {
264 for (
typename std::map<std::string, T>::const_iterator
266 it != b.end(); ++it) {
281 for (
size_t i = 0; i < n; ++i) {
295 template <
typename T>
303 template <
typename T>
309 #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:91
static void decode(Decoder &d, std::map< std::string, T > &s)
Decodes into a given value.
Definition: Specific.hh:278
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:166
void decode(Decoder &d, T &t)
Generic decoder function that makes use of the codec_traits.
Definition: Specific.hh:304
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:31
static void decode(Decoder &d, boost::array< uint8_t, N > &s)
Decodes into a given value.
Definition: Specific.hh:211
static void encode(Encoder &e, float f)
Encodes a given value.
Definition: Specific.hh:128
Codec_traits tells avro how to encode and decode an object of given type.
Definition: Generic.hh:104
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:116
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:109
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:90
static void encode(Encoder &e, const std::vector< T > &b)
Encodes a given value.
Definition: Specific.hh:225
static void decode(Decoder &d, std::string &s)
Decodes into a given value.
Definition: Specific.hh:173
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 decode(Decoder &d, int32_t &i)
Decodes into a given value.
Definition: Specific.hh:97
static void encode(Encoder &e, const boost::array< uint8_t, N > &b)
Encodes a given value.
Definition: Specific.hh:204
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:110
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:296
static void decode(Decoder &d, std::vector< uint8_t > &s)
Decodes into a given value.
Definition: Specific.hh:192
virtual size_t mapNext()=0
Returns the number of entries in next chunk. 0 if last.
static void encode(Encoder &e, const std::vector< uint8_t > &b)
Encodes a given value.
Definition: Specific.hh:185
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:154
static void encode(Encoder &e, const std::map< std::string, T > &b)
Encodes a given value.
Definition: Specific.hh:260
static void encode(Encoder &e, double d)
Encodes a given value.
Definition: Specific.hh:147
static void decode(Decoder &d, bool &b)
Decodes into a given value.
Definition: Specific.hh:78
virtual void encodeDouble(double d)=0
Encodes a double-precision floating point number to the current stream.
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:76
static void encode(Encoder &e, bool b)
Encodes a given value.
Definition: Specific.hh:71
The abstract base class for all Avro encoders.
Definition: Encoder.hh:53
static void decode(Decoder &d, std::vector< T > &s)
Decodes into a given value.
Definition: Specific.hh:241
Decoder is an interface implemented by every decoder capable of decoding Avro data.
Definition: Decoder.hh:49
Low level support for decoding avro values.
static void decode(Decoder &d, float &f)
Decodes into a given value.
Definition: Specific.hh:135