You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by th...@apache.org on 2011/10/17 09:14:14 UTC
svn commit: r1185027 [4/4] - in /avro/trunk: ./ lang/c++/ lang/c++/api/
lang/c++/api/buffer/ lang/c++/api/buffer/detail/ lang/c++/examples/
Added: avro/trunk/lang/c++/examples/resolving.cc
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c%2B%2B/examples/resolving.cc?rev=1185027&view=auto
==============================================================================
--- avro/trunk/lang/c++/examples/resolving.cc (added)
+++ avro/trunk/lang/c++/examples/resolving.cc Mon Oct 17 07:14:12 2011
@@ -0,0 +1,45 @@
+#include <fstream>
+
+#include "cpx.hh"
+#include "imaginary.hh"
+
+#include "avro/Compiler.hh"
+#include "avro/Encoder.hh"
+#include "avro/Decoder.hh"
+#include "avro/Specific.hh"
+#include "avro/Generic.hh"
+
+
+
+avro::ValidSchema load(const char* filename)
+{
+ std::ifstream ifs(filename);
+ avro::ValidSchema result;
+ avro::compileJsonSchema(ifs, result);
+ return result;
+}
+
+int
+main()
+{
+ avro::ValidSchema cpxSchema = load("cpx.json");
+ avro::ValidSchema imaginarySchema = load("imaginary.json");
+
+ std::auto_ptr<avro::OutputStream> out = avro::memoryOutputStream();
+ avro::EncoderPtr e = avro::binaryEncoder();
+ e->init(*out);
+ c::cpx c1;
+ c1.re = 100.23;
+ c1.im = 105.77;
+ avro::encode(*e, c1);
+
+ std::auto_ptr<avro::InputStream> in = avro::memoryInputStream(*out);
+ avro::DecoderPtr d = avro::resolvingDecoder(cpxSchema, imaginarySchema,
+ avro::binaryDecoder());
+ d->init(*in);
+
+ i::cpx c2;
+ avro::decode(*d, c2);
+ std::cout << "Imaginary: " << c2.im << std::endl;
+
+}
Added: avro/trunk/lang/c++/examples/schemaload.cc
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c%2B%2B/examples/schemaload.cc?rev=1185027&view=auto
==============================================================================
--- avro/trunk/lang/c++/examples/schemaload.cc (added)
+++ avro/trunk/lang/c++/examples/schemaload.cc Mon Oct 17 07:14:12 2011
@@ -0,0 +1,14 @@
+#include <fstream>
+
+#include "avro/ValidSchema.hh"
+#include "avro/Compiler.hh"
+
+
+int
+main()
+{
+ std::ifstream in("cpx.json");
+
+ avro::ValidSchema cpxSchema;
+ avro::compileJsonSchema(in, cpxSchema);
+}
Added: avro/trunk/lang/c++/examples/validating.cc
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c%2B%2B/examples/validating.cc?rev=1185027&view=auto
==============================================================================
--- avro/trunk/lang/c++/examples/validating.cc (added)
+++ avro/trunk/lang/c++/examples/validating.cc Mon Oct 17 07:14:12 2011
@@ -0,0 +1,50 @@
+#include <fstream>
+#include <complex>
+
+#include "avro/Compiler.hh"
+#include "avro/Encoder.hh"
+#include "avro/Decoder.hh"
+#include "avro/Specific.hh"
+
+namespace avro {
+template<typename T>
+struct codec_traits<std::complex<T> > {
+ static void encode(Encoder& e, const std::complex<T>& c) {
+ avro::encode(e, std::real(c));
+ avro::encode(e, std::imag(c));
+ }
+
+ static void decode(Decoder& d, std::complex<T>& c) {
+ T re, im;
+ avro::decode(d, re);
+ avro::decode(d, im);
+ c = std::complex<T>(re, im);
+ }
+};
+
+}
+int
+main()
+{
+ std::ifstream ifs("cpx.json");
+
+ avro::ValidSchema cpxSchema;
+ avro::compileJsonSchema(ifs, cpxSchema);
+
+ std::auto_ptr<avro::OutputStream> out = avro::memoryOutputStream();
+ avro::EncoderPtr e = avro::validatingEncoder(cpxSchema,
+ avro::binaryEncoder());
+ e->init(*out);
+ std::complex<double> c1(1.0, 2.0);
+ avro::encode(*e, c1);
+
+ std::auto_ptr<avro::InputStream> in = avro::memoryInputStream(*out);
+ avro::DecoderPtr d = avro::validatingDecoder(cpxSchema,
+ avro::binaryDecoder());
+ d->init(*in);
+
+ std::complex<double> c2;
+ avro::decode(*d, c2);
+ std::cout << '(' << std::real(c2) << ", " << std::imag(c2) << ')' << std::endl;
+ return 0;
+}