Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef avro_Encoder_hh__
00020 #define avro_Encoder_hh__
00021
00022 #include "Config.hh"
00023 #include <stdint.h>
00024 #include <string>
00025 #include <vector>
00026
00027 #include "ValidSchema.hh"
00028 #include "Stream.hh"
00029
00030 #include <boost/shared_ptr.hpp>
00031
00045
00046 namespace avro {
00047
00053 class AVRO_DECL Encoder {
00054 public:
00055 virtual ~Encoder() { };
00059 virtual void init(OutputStream& os) = 0;
00060
00062 virtual void flush() = 0;
00063
00065 virtual void encodeNull() = 0;
00066
00068 virtual void encodeBool(bool b) = 0;
00069
00071 virtual void encodeInt(int32_t i) = 0;
00072
00074 virtual void encodeLong(int64_t l) = 0;
00075
00077 virtual void encodeFloat(float f) = 0;
00078
00080 virtual void encodeDouble(double d) = 0;
00081
00083 virtual void encodeString(const std::string& s) = 0;
00084
00091 virtual void encodeBytes(const uint8_t *bytes, size_t len) = 0;
00092
00098 void encodeBytes(const std::vector<uint8_t>& bytes) {
00099 uint8_t b = 0;
00100 encodeBytes(bytes.empty() ? &b : &bytes[0], bytes.size());
00101 }
00102
00104 virtual void encodeFixed(const uint8_t *bytes, size_t len) = 0;
00105
00111 void encodeFixed(const std::vector<uint8_t>& bytes) {
00112 encodeFixed(&bytes[0], bytes.size());
00113 }
00114
00116 virtual void encodeEnum(size_t e) = 0;
00117
00119 virtual void arrayStart() = 0;
00120
00122 virtual void arrayEnd() = 0;
00123
00125 virtual void mapStart() = 0;
00126
00128 virtual void mapEnd() = 0;
00129
00132 virtual void setItemCount(size_t count) = 0;
00133
00135 virtual void startItem() = 0;
00136
00138 virtual void encodeUnionIndex(size_t e) = 0;
00139 };
00140
00144 typedef boost::shared_ptr<Encoder> EncoderPtr;
00145
00149 AVRO_DECL EncoderPtr binaryEncoder();
00150
00155 AVRO_DECL EncoderPtr validatingEncoder(const ValidSchema& schema,
00156 const EncoderPtr& base);
00157
00161 AVRO_DECL EncoderPtr jsonEncoder(const ValidSchema& schema);
00162
00163 }
00164
00165 #endif