You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by mg...@apache.org on 2022/02/09 12:44:40 UTC
[avro] 01/01: AVRO-3379 Replace the old website with https://github.com/martin-g/avro-website
This is an automated email from the ASF dual-hosted git repository.
mgrigorov pushed a commit to branch avro-3379-migrate-new-website
in repository https://gitbox.apache.org/repos/asf/avro.git
commit 266306f0b4c1cd705b6f4b876b97c1bad9f9370d
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Wed Feb 9 14:39:11 2022 +0200
AVRO-3379 Replace the old website with https://github.com/martin-g/avro-website
Signed-off-by: Martin Tzvetanov Grigorov <mg...@apache.org>
---
doc/.gitignore | 2 +
doc/Dockerfile | 3 +
doc/NOTICE | 47 +-
doc/README.md | 146 +
.../images/avro-logo.png => assets/icons/logo.png} | Bin
doc/assets/icons/logo.svg | 1 +
doc/assets/scss/_styles_project.scss | 5 +
doc/assets/scss/_variables_project.scss | 5 +
doc/build.xml | 56 -
doc/config.toml | 361 +
doc/content/en/_index.html | 51 +
doc/content/en/blog/_index.md | 13 +
doc/content/en/blog/news/_index.md | 8 +
doc/content/en/blog/news/avro-joins-apache.md | 8 +
.../en/blog/news/new-committer-david-mollitor.md | 21 +
.../en/blog/news/new-committer-martin-grigorov.md | 21 +
doc/content/en/blog/releases/_index.md | 8 +
.../en/blog/releases/avro-1.0.0-released.md | 8 +
.../en/blog/releases/avro-1.1.0-released.md | 8 +
.../en/blog/releases/avro-1.10.0-released.md | 8 +
.../en/blog/releases/avro-1.10.1-released.md | 8 +
.../en/blog/releases/avro-1.10.2-released.md | 8 +
.../en/blog/releases/avro-1.11.0-released.md | 50 +
.../en/blog/releases/avro-1.2.0-released.md | 8 +
.../en/blog/releases/avro-1.3.0-released.md | 8 +
.../en/blog/releases/avro-1.3.1-released.md | 8 +
.../en/blog/releases/avro-1.3.2-released.md | 8 +
.../en/blog/releases/avro-1.3.3-released.md | 8 +
.../en/blog/releases/avro-1.4.0-released.md | 8 +
.../en/blog/releases/avro-1.4.1-released.md | 8 +
.../en/blog/releases/avro-1.5.0-released.md | 8 +
.../en/blog/releases/avro-1.5.1-released.md | 8 +
.../en/blog/releases/avro-1.5.2-released.md | 8 +
.../en/blog/releases/avro-1.5.3-released.md | 8 +
.../en/blog/releases/avro-1.5.4-released.md | 8 +
.../en/blog/releases/avro-1.6.0-released.md | 8 +
.../en/blog/releases/avro-1.6.1-released.md | 8 +
.../en/blog/releases/avro-1.6.2-released.md | 8 +
.../en/blog/releases/avro-1.6.3-released.md | 8 +
.../en/blog/releases/avro-1.7.0-released.md | 8 +
.../en/blog/releases/avro-1.7.1-released.md | 8 +
.../en/blog/releases/avro-1.7.2-released.md | 8 +
.../en/blog/releases/avro-1.7.3-released.md | 8 +
.../en/blog/releases/avro-1.7.4-released.md | 8 +
.../en/blog/releases/avro-1.7.5-released.md | 8 +
.../en/blog/releases/avro-1.7.6-released.md | 8 +
.../en/blog/releases/avro-1.7.7-released.md | 8 +
.../en/blog/releases/avro-1.8.0-released.md | 8 +
.../en/blog/releases/avro-1.8.1-released.md | 8 +
.../en/blog/releases/avro-1.8.2-released.md | 8 +
.../en/blog/releases/avro-1.9.0-released.md | 8 +
.../en/blog/releases/avro-1.9.1-released.md | 8 +
.../en/blog/releases/avro-1.9.2-released.md | 8 +
doc/content/en/blog/releases/avro-joins-apache.md | 8 +
doc/content/en/community/_index.md | 8 +
doc/content/en/docs/_index.md | 37 +
doc/content/en/docs/next/C API/_index.md | 7 +
doc/content/en/docs/next/C++ API/_index.md | 7 +
.../en/docs/next/Contribution guidelines/_index.md | 76 +
.../en/docs/next/Getting started (Java)/_index.md | 269 +
.../docs/next/Getting started (Python)/_index.md | 123 +
doc/content/en/docs/next/IDL Language/_index.md | 347 +
doc/content/en/docs/next/Java API/_index.md | 7 +
doc/content/en/docs/next/MapReduce guide/_index.md | 375 +
doc/content/en/docs/next/SASL profile/_index.md | 72 +
doc/content/en/docs/next/Specification/_index.md | 762 +
doc/content/en/docs/next/_index.md | 39 +
doc/content/en/docs/next/csharp API/_index.md | 7 +
.../docs/next/external/c++-api/AvroParse_8hh.html | 131 +
.../external/c++-api/AvroParse_8hh_source.html | 156 +
.../next/external/c++-api/AvroSerialize_8hh.html | 118 +
.../external/c++-api/AvroSerialize_8hh_source.html | 140 +
.../docs/next/external/c++-api/AvroTraits_8hh.html | 192 +
.../external/c++-api/AvroTraits_8hh_source.html | 193 +
.../next/external/c++-api/Compiler_8hh_source.html | 134 +
.../next/external/c++-api/Config_8hh_source.html | 121 +
.../next/external/c++-api/DataFile_8hh_source.html | 373 +
.../en/docs/next/external/c++-api/Decoder_8hh.html | 144 +
.../next/external/c++-api/Decoder_8hh_source.html | 235 +
.../en/docs/next/external/c++-api/Encoder_8hh.html | 138 +
.../next/external/c++-api/Encoder_8hh_source.html | 209 +
.../external/c++-api/Exception_8hh_source.html | 118 +
.../external/c++-api/GenericDatum_8hh_source.html | 535 +
.../next/external/c++-api/Generic_8hh_source.html | 203 +
.../en/docs/next/external/c++-api/Layout_8hh.html | 101 +
.../next/external/c++-api/Layout_8hh_source.html | 148 +
.../external/c++-api/LogicalType_8hh_source.html | 145 +
.../external/c++-api/NodeConcepts_8hh_source.html | 269 +
.../next/external/c++-api/NodeImpl_8hh_source.html | 653 +
.../next/external/c++-api/Node_8hh_source.html | 276 +
.../next/external/c++-api/Parser_8hh_source.html | 222 +
.../next/external/c++-api/Reader_8hh_source.html | 294 +
.../next/external/c++-api/ResolverSchema_8hh.html | 100 +
.../c++-api/ResolverSchema_8hh_source.html | 134 +
.../docs/next/external/c++-api/Resolver_8hh.html | 107 +
.../next/external/c++-api/Resolver_8hh_source.html | 133 +
.../c++-api/ResolvingReader_8hh_source.html | 133 +
.../c++-api/SchemaResolution_8hh_source.html | 128 +
.../en/docs/next/external/c++-api/Schema_8hh.html | 135 +
.../next/external/c++-api/Schema_8hh_source.html | 244 +
.../external/c++-api/Serializer_8hh_source.html | 207 +
.../next/external/c++-api/Specific_8hh_source.html | 365 +
.../next/external/c++-api/Stream_8hh_source.html | 398 +
.../next/external/c++-api/Types_8hh_source.html | 180 +
.../external/c++-api/ValidSchema_8hh_source.html | 138 +
.../external/c++-api/Validator_8hh_source.html | 231 +
.../next/external/c++-api/Writer_8hh_source.html | 277 +
.../en/docs/next/external/c++-api/Zigzag_8hh.html | 120 +
.../next/external/c++-api/Zigzag_8hh_source.html | 130 +
.../en/docs/next/external/c++-api/annotated.html | 170 +
doc/content/en/docs/next/external/c++-api/bc_s.png | Bin 0 -> 676 bytes
doc/content/en/docs/next/external/c++-api/bdwn.png | Bin 0 -> 147 bytes
.../c++-api/classavro_1_1ArraySchema-members.html | 90 +
.../external/c++-api/classavro_1_1ArraySchema.html | 127 +
.../external/c++-api/classavro_1_1ArraySchema.png | Bin 0 -> 543 bytes
.../c++-api/classavro_1_1BoolSchema-members.html | 89 +
.../external/c++-api/classavro_1_1BoolSchema.html | 117 +
.../external/c++-api/classavro_1_1BoolSchema.png | Bin 0 -> 518 bytes
.../c++-api/classavro_1_1BytesSchema-members.html | 89 +
.../external/c++-api/classavro_1_1BytesSchema.html | 117 +
.../external/c++-api/classavro_1_1BytesSchema.png | Bin 0 -> 546 bytes
.../classavro_1_1CompoundLayout-members.html | 87 +
.../c++-api/classavro_1_1CompoundLayout.html | 117 +
.../c++-api/classavro_1_1CompoundLayout.png | Bin 0 -> 826 bytes
.../classavro_1_1DataFileReader-members.html | 95 +
.../c++-api/classavro_1_1DataFileReader.html | 323 +
.../c++-api/classavro_1_1DataFileReader.png | Bin 0 -> 639 bytes
.../classavro_1_1DataFileReaderBase-members.html | 95 +
.../c++-api/classavro_1_1DataFileReaderBase.html | 245 +
.../c++-api/classavro_1_1DataFileReaderBase.png | Bin 0 -> 640 bytes
.../classavro_1_1DataFileWriter-members.html | 88 +
.../c++-api/classavro_1_1DataFileWriter.html | 161 +
.../c++-api/classavro_1_1DataFileWriter.png | Bin 0 -> 632 bytes
.../classavro_1_1DataFileWriterBase-members.html | 91 +
.../c++-api/classavro_1_1DataFileWriterBase.html | 157 +
.../c++-api/classavro_1_1DataFileWriterBase.png | Bin 0 -> 643 bytes
.../c++-api/classavro_1_1Decoder-members.html | 107 +
.../external/c++-api/classavro_1_1Decoder.html | 366 +
.../next/external/c++-api/classavro_1_1Decoder.png | Bin 0 -> 602 bytes
.../c++-api/classavro_1_1DoubleSchema-members.html | 89 +
.../c++-api/classavro_1_1DoubleSchema.html | 117 +
.../external/c++-api/classavro_1_1DoubleSchema.png | Bin 0 -> 520 bytes
.../c++-api/classavro_1_1Encoder-members.html | 104 +
.../external/c++-api/classavro_1_1Encoder.html | 324 +
.../c++-api/classavro_1_1EnumSchema-members.html | 90 +
.../external/c++-api/classavro_1_1EnumSchema.html | 127 +
.../external/c++-api/classavro_1_1EnumSchema.png | Bin 0 -> 530 bytes
.../c++-api/classavro_1_1Exception-members.html | 83 +
.../external/c++-api/classavro_1_1Exception.html | 107 +
.../external/c++-api/classavro_1_1Exception.png | Bin 0 -> 624 bytes
.../c++-api/classavro_1_1FixedSchema-members.html | 89 +
.../external/c++-api/classavro_1_1FixedSchema.html | 124 +
.../external/c++-api/classavro_1_1FixedSchema.png | Bin 0 -> 539 bytes
.../c++-api/classavro_1_1FloatSchema-members.html | 89 +
.../external/c++-api/classavro_1_1FloatSchema.html | 117 +
.../external/c++-api/classavro_1_1FloatSchema.png | Bin 0 -> 527 bytes
.../c++-api/classavro_1_1GenericArray-members.html | 87 +
.../c++-api/classavro_1_1GenericArray.html | 137 +
.../external/c++-api/classavro_1_1GenericArray.png | Bin 0 -> 622 bytes
.../classavro_1_1GenericContainer-members.html | 83 +
.../c++-api/classavro_1_1GenericContainer.html | 121 +
.../c++-api/classavro_1_1GenericContainer.png | Bin 0 -> 1632 bytes
.../c++-api/classavro_1_1GenericDatum-members.html | 106 +
.../c++-api/classavro_1_1GenericDatum.html | 613 +
.../c++-api/classavro_1_1GenericEnum-members.html | 91 +
.../external/c++-api/classavro_1_1GenericEnum.html | 205 +
.../external/c++-api/classavro_1_1GenericEnum.png | Bin 0 -> 609 bytes
.../c++-api/classavro_1_1GenericFixed-members.html | 87 +
.../c++-api/classavro_1_1GenericFixed.html | 132 +
.../external/c++-api/classavro_1_1GenericFixed.png | Bin 0 -> 613 bytes
.../c++-api/classavro_1_1GenericMap-members.html | 87 +
.../external/c++-api/classavro_1_1GenericMap.html | 137 +
.../external/c++-api/classavro_1_1GenericMap.png | Bin 0 -> 617 bytes
.../classavro_1_1GenericReader-members.html | 87 +
.../c++-api/classavro_1_1GenericReader.html | 157 +
.../c++-api/classavro_1_1GenericReader.png | Bin 0 -> 531 bytes
.../classavro_1_1GenericRecord-members.html | 92 +
.../c++-api/classavro_1_1GenericRecord.html | 153 +
.../c++-api/classavro_1_1GenericRecord.png | Bin 0 -> 611 bytes
.../c++-api/classavro_1_1GenericUnion-members.html | 88 +
.../c++-api/classavro_1_1GenericUnion.html | 200 +
.../external/c++-api/classavro_1_1GenericUnion.png | Bin 0 -> 605 bytes
.../classavro_1_1GenericWriter-members.html | 85 +
.../c++-api/classavro_1_1GenericWriter.html | 166 +
.../c++-api/classavro_1_1GenericWriter.png | Bin 0 -> 529 bytes
.../c++-api/classavro_1_1InputStream-members.html | 87 +
.../external/c++-api/classavro_1_1InputStream.html | 230 +
.../external/c++-api/classavro_1_1InputStream.png | Bin 0 -> 945 bytes
.../c++-api/classavro_1_1IntSchema-members.html | 89 +
.../external/c++-api/classavro_1_1IntSchema.html | 117 +
.../external/c++-api/classavro_1_1IntSchema.png | Bin 0 -> 500 bytes
.../c++-api/classavro_1_1Layout-members.html | 84 +
.../next/external/c++-api/classavro_1_1Layout.html | 108 +
.../next/external/c++-api/classavro_1_1Layout.png | Bin 0 -> 1168 bytes
.../c++-api/classavro_1_1LogicalType-members.html | 98 +
.../external/c++-api/classavro_1_1LogicalType.html | 128 +
.../c++-api/classavro_1_1LongSchema-members.html | 89 +
.../external/c++-api/classavro_1_1LongSchema.html | 117 +
.../external/c++-api/classavro_1_1LongSchema.png | Bin 0 -> 527 bytes
.../c++-api/classavro_1_1MapSchema-members.html | 90 +
.../external/c++-api/classavro_1_1MapSchema.html | 127 +
.../external/c++-api/classavro_1_1MapSchema.png | Bin 0 -> 533 bytes
.../c++-api/classavro_1_1Name-members.html | 96 +
.../next/external/c++-api/classavro_1_1Name.html | 130 +
.../c++-api/classavro_1_1Node-members.html | 116 +
.../next/external/c++-api/classavro_1_1Node.html | 222 +
.../next/external/c++-api/classavro_1_1Node.png | Bin 0 -> 6261 bytes
.../c++-api/classavro_1_1NodeArray-members.html | 129 +
.../external/c++-api/classavro_1_1NodeArray.html | 244 +
.../external/c++-api/classavro_1_1NodeArray.png | Bin 0 -> 1767 bytes
.../c++-api/classavro_1_1NodeEnum-members.html | 129 +
.../external/c++-api/classavro_1_1NodeEnum.html | 244 +
.../external/c++-api/classavro_1_1NodeEnum.png | Bin 0 -> 1712 bytes
.../c++-api/classavro_1_1NodeFixed-members.html | 129 +
.../external/c++-api/classavro_1_1NodeFixed.html | 244 +
.../external/c++-api/classavro_1_1NodeFixed.png | Bin 0 -> 1746 bytes
.../c++-api/classavro_1_1NodeImpl-members.html | 127 +
.../external/c++-api/classavro_1_1NodeImpl.html | 261 +
.../external/c++-api/classavro_1_1NodeImpl.png | Bin 0 -> 6245 bytes
.../c++-api/classavro_1_1NodeMap-members.html | 129 +
.../external/c++-api/classavro_1_1NodeMap.html | 244 +
.../next/external/c++-api/classavro_1_1NodeMap.png | Bin 0 -> 1747 bytes
.../classavro_1_1NodePrimitive-members.html | 128 +
.../c++-api/classavro_1_1NodePrimitive.html | 244 +
.../c++-api/classavro_1_1NodePrimitive.png | Bin 0 -> 1737 bytes
.../c++-api/classavro_1_1NodeRecord-members.html | 131 +
.../external/c++-api/classavro_1_1NodeRecord.html | 250 +
.../external/c++-api/classavro_1_1NodeRecord.png | Bin 0 -> 1743 bytes
.../c++-api/classavro_1_1NodeSymbolic-members.html | 134 +
.../c++-api/classavro_1_1NodeSymbolic.html | 263 +
.../external/c++-api/classavro_1_1NodeSymbolic.png | Bin 0 -> 1758 bytes
.../c++-api/classavro_1_1NodeUnion-members.html | 129 +
.../external/c++-api/classavro_1_1NodeUnion.html | 244 +
.../external/c++-api/classavro_1_1NodeUnion.png | Bin 0 -> 1738 bytes
.../c++-api/classavro_1_1NullSchema-members.html | 89 +
.../external/c++-api/classavro_1_1NullSchema.html | 117 +
.../external/c++-api/classavro_1_1NullSchema.png | Bin 0 -> 524 bytes
.../classavro_1_1NullValidator-members.html | 91 +
.../c++-api/classavro_1_1NullValidator.html | 125 +
.../c++-api/classavro_1_1NullValidator.png | Bin 0 -> 521 bytes
.../c++-api/classavro_1_1OutputStream-members.html | 87 +
.../c++-api/classavro_1_1OutputStream.html | 199 +
.../external/c++-api/classavro_1_1OutputStream.png | Bin 0 -> 539 bytes
.../c++-api/classavro_1_1Parser-members.html | 102 +
.../next/external/c++-api/classavro_1_1Parser.html | 174 +
.../next/external/c++-api/classavro_1_1Parser.png | Bin 0 -> 610 bytes
.../classavro_1_1PrimitiveLayout-members.html | 85 +
.../c++-api/classavro_1_1PrimitiveLayout.html | 111 +
.../c++-api/classavro_1_1PrimitiveLayout.png | Bin 0 -> 737 bytes
.../c++-api/classavro_1_1ReaderImpl-members.html | 103 +
.../external/c++-api/classavro_1_1ReaderImpl.html | 173 +
.../external/c++-api/classavro_1_1ReaderImpl.png | Bin 0 -> 741 bytes
.../c++-api/classavro_1_1RecordSchema-members.html | 92 +
.../c++-api/classavro_1_1RecordSchema.html | 133 +
.../external/c++-api/classavro_1_1RecordSchema.png | Bin 0 -> 532 bytes
.../c++-api/classavro_1_1Resolver-members.html | 83 +
.../external/c++-api/classavro_1_1Resolver.html | 97 +
.../external/c++-api/classavro_1_1Resolver.png | Bin 0 -> 499 bytes
.../classavro_1_1ResolverSchema-members.html | 83 +
.../c++-api/classavro_1_1ResolverSchema.html | 98 +
.../classavro_1_1ResolvingDecoder-members.html | 108 +
.../c++-api/classavro_1_1ResolvingDecoder.html | 232 +
.../c++-api/classavro_1_1ResolvingDecoder.png | Bin 0 -> 600 bytes
.../classavro_1_1ResolvingReader-members.html | 83 +
.../c++-api/classavro_1_1ResolvingReader.html | 101 +
.../c++-api/classavro_1_1ResolvingReader.png | Bin 0 -> 600 bytes
.../c++-api/classavro_1_1Schema-members.html | 88 +
.../next/external/c++-api/classavro_1_1Schema.html | 144 +
.../next/external/c++-api/classavro_1_1Schema.png | Bin 0 -> 5889 bytes
.../classavro_1_1SeekableInputStream-members.html | 90 +
.../c++-api/classavro_1_1SeekableInputStream.html | 172 +
.../c++-api/classavro_1_1SeekableInputStream.png | Bin 0 -> 947 bytes
.../c++-api/classavro_1_1Serializer-members.html | 102 +
.../external/c++-api/classavro_1_1Serializer.html | 171 +
.../external/c++-api/classavro_1_1Serializer.png | Bin 0 -> 640 bytes
.../c++-api/classavro_1_1StringSchema-members.html | 89 +
.../c++-api/classavro_1_1StringSchema.html | 117 +
.../external/c++-api/classavro_1_1StringSchema.png | Bin 0 -> 561 bytes
.../classavro_1_1SymbolicSchema-members.html | 89 +
.../c++-api/classavro_1_1SymbolicSchema.html | 124 +
.../c++-api/classavro_1_1SymbolicSchema.png | Bin 0 -> 603 bytes
.../c++-api/classavro_1_1UnionSchema-members.html | 90 +
.../external/c++-api/classavro_1_1UnionSchema.html | 124 +
.../external/c++-api/classavro_1_1UnionSchema.png | Bin 0 -> 526 bytes
.../c++-api/classavro_1_1ValidSchema-members.html | 90 +
.../external/c++-api/classavro_1_1ValidSchema.html | 125 +
.../c++-api/classavro_1_1Validator-members.html | 90 +
.../external/c++-api/classavro_1_1Validator.html | 130 +
.../external/c++-api/classavro_1_1Validator.png | Bin 0 -> 510 bytes
.../c++-api/classavro_1_1WriterImpl-members.html | 102 +
.../external/c++-api/classavro_1_1WriterImpl.html | 166 +
.../external/c++-api/classavro_1_1WriterImpl.png | Bin 0 -> 728 bytes
.../en/docs/next/external/c++-api/classes.html | 134 +
.../en/docs/next/external/c++-api/closed.png | Bin 0 -> 132 bytes
.../dir_0188a3e6da905bc60aceb35bf790b8c9.html | 109 +
doc/content/en/docs/next/external/c++-api/doc.png | Bin 0 -> 746 bytes
.../en/docs/next/external/c++-api/doxygen.css | 1793 ++
.../en/docs/next/external/c++-api/doxygen.svg | 26 +
.../en/docs/next/external/c++-api/dynsections.js | 121 +
.../en/docs/next/external/c++-api/files.html | 110 +
.../en/docs/next/external/c++-api/folderclosed.png | Bin 0 -> 616 bytes
.../en/docs/next/external/c++-api/folderopen.png | Bin 0 -> 597 bytes
.../en/docs/next/external/c++-api/functions.html | 84 +
.../en/docs/next/external/c++-api/functions_b.html | 84 +
.../en/docs/next/external/c++-api/functions_c.html | 83 +
.../en/docs/next/external/c++-api/functions_d.html | 152 +
.../en/docs/next/external/c++-api/functions_e.html | 130 +
.../en/docs/next/external/c++-api/functions_f.html | 99 +
.../docs/next/external/c++-api/functions_func.html | 84 +
.../next/external/c++-api/functions_func_b.html | 84 +
.../next/external/c++-api/functions_func_c.html | 83 +
.../next/external/c++-api/functions_func_d.html | 152 +
.../next/external/c++-api/functions_func_e.html | 126 +
.../next/external/c++-api/functions_func_f.html | 99 +
.../next/external/c++-api/functions_func_g.html | 108 +
.../next/external/c++-api/functions_func_h.html | 81 +
.../next/external/c++-api/functions_func_i.html | 91 +
.../next/external/c++-api/functions_func_l.html | 77 +
.../next/external/c++-api/functions_func_m.html | 88 +
.../next/external/c++-api/functions_func_n.html | 78 +
.../next/external/c++-api/functions_func_o.html | 77 +
.../next/external/c++-api/functions_func_p.html | 85 +
.../next/external/c++-api/functions_func_r.html | 90 +
.../next/external/c++-api/functions_func_s.html | 141 +
.../next/external/c++-api/functions_func_t.html | 77 +
.../next/external/c++-api/functions_func_u.html | 77 +
.../next/external/c++-api/functions_func_v.html | 81 +
.../next/external/c++-api/functions_func_w.html | 82 +
.../next/external/c++-api/functions_func_~.html | 83 +
.../en/docs/next/external/c++-api/functions_g.html | 108 +
.../en/docs/next/external/c++-api/functions_h.html | 81 +
.../en/docs/next/external/c++-api/functions_i.html | 94 +
.../en/docs/next/external/c++-api/functions_l.html | 80 +
.../en/docs/next/external/c++-api/functions_m.html | 88 +
.../en/docs/next/external/c++-api/functions_n.html | 82 +
.../en/docs/next/external/c++-api/functions_o.html | 80 +
.../en/docs/next/external/c++-api/functions_p.html | 85 +
.../en/docs/next/external/c++-api/functions_r.html | 90 +
.../en/docs/next/external/c++-api/functions_s.html | 141 +
.../en/docs/next/external/c++-api/functions_t.html | 77 +
.../docs/next/external/c++-api/functions_type.html | 76 +
.../en/docs/next/external/c++-api/functions_u.html | 77 +
.../en/docs/next/external/c++-api/functions_v.html | 89 +
.../docs/next/external/c++-api/functions_vars.html | 89 +
.../en/docs/next/external/c++-api/functions_w.html | 82 +
.../en/docs/next/external/c++-api/functions_~.html | 83 +
.../en/docs/next/external/c++-api/hierarchy.html | 175 +
.../en/docs/next/external/c++-api/index.html | 563 +
.../en/docs/next/external/c++-api/jquery.js | 35 +
doc/content/en/docs/next/external/c++-api/menu.js | 51 +
.../en/docs/next/external/c++-api/menudata.js | 118 +
.../docs/next/external/c++-api/namespaceavro.html | 1317 ++
.../c++-api/namespaceavro_1_1concepts.html | 102 +
.../next/external/c++-api/namespacemembers.html | 302 +
.../external/c++-api/namespacemembers_enum.html | 81 +
.../external/c++-api/namespacemembers_eval.html | 132 +
.../external/c++-api/namespacemembers_func.html | 214 +
.../external/c++-api/namespacemembers_type.html | 84 +
.../external/c++-api/namespacemembers_vars.html | 75 +
.../en/docs/next/external/c++-api/namespaces.html | 171 +
.../en/docs/next/external/c++-api/nav_f.png | Bin 0 -> 153 bytes
.../en/docs/next/external/c++-api/nav_g.png | Bin 0 -> 95 bytes
.../en/docs/next/external/c++-api/nav_h.png | Bin 0 -> 98 bytes
doc/content/en/docs/next/external/c++-api/open.png | Bin 0 -> 123 bytes
.../docs/next/external/c++-api/search/all_0.html | 37 +
.../en/docs/next/external/c++-api/search/all_0.js | 29 +
.../docs/next/external/c++-api/search/all_1.html | 37 +
.../en/docs/next/external/c++-api/search/all_1.js | 9 +
.../docs/next/external/c++-api/search/all_10.html | 37 +
.../en/docs/next/external/c++-api/search/all_10.js | 32 +
.../docs/next/external/c++-api/search/all_11.html | 37 +
.../en/docs/next/external/c++-api/search/all_11.js | 7 +
.../docs/next/external/c++-api/search/all_12.html | 37 +
.../en/docs/next/external/c++-api/search/all_12.js | 5 +
.../docs/next/external/c++-api/search/all_13.html | 37 +
.../en/docs/next/external/c++-api/search/all_13.js | 9 +
.../docs/next/external/c++-api/search/all_14.html | 37 +
.../en/docs/next/external/c++-api/search/all_14.js | 7 +
.../docs/next/external/c++-api/search/all_15.html | 37 +
.../en/docs/next/external/c++-api/search/all_15.js | 4 +
.../docs/next/external/c++-api/search/all_16.html | 37 +
.../en/docs/next/external/c++-api/search/all_16.js | 6 +
.../docs/next/external/c++-api/search/all_2.html | 37 +
.../en/docs/next/external/c++-api/search/all_2.js | 24 +
.../docs/next/external/c++-api/search/all_3.html | 37 +
.../en/docs/next/external/c++-api/search/all_3.js | 29 +
.../docs/next/external/c++-api/search/all_4.html | 37 +
.../en/docs/next/external/c++-api/search/all_4.js | 22 +
.../docs/next/external/c++-api/search/all_5.html | 37 +
.../en/docs/next/external/c++-api/search/all_5.js | 14 +
.../docs/next/external/c++-api/search/all_6.html | 37 +
.../en/docs/next/external/c++-api/search/all_6.js | 14 +
.../docs/next/external/c++-api/search/all_7.html | 37 +
.../en/docs/next/external/c++-api/search/all_7.js | 5 +
.../docs/next/external/c++-api/search/all_8.html | 37 +
.../en/docs/next/external/c++-api/search/all_8.js | 19 +
.../docs/next/external/c++-api/search/all_9.html | 37 +
.../en/docs/next/external/c++-api/search/all_9.js | 6 +
.../docs/next/external/c++-api/search/all_a.html | 37 +
.../en/docs/next/external/c++-api/search/all_a.js | 9 +
.../docs/next/external/c++-api/search/all_b.html | 37 +
.../en/docs/next/external/c++-api/search/all_b.js | 11 +
.../docs/next/external/c++-api/search/all_c.html | 37 +
.../en/docs/next/external/c++-api/search/all_c.js | 24 +
.../docs/next/external/c++-api/search/all_d.html | 37 +
.../en/docs/next/external/c++-api/search/all_d.js | 7 +
.../docs/next/external/c++-api/search/all_e.html | 37 +
.../en/docs/next/external/c++-api/search/all_e.js | 8 +
.../docs/next/external/c++-api/search/all_f.html | 37 +
.../en/docs/next/external/c++-api/search/all_f.js | 21 +
.../next/external/c++-api/search/classes_0.html | 37 +
.../docs/next/external/c++-api/search/classes_0.js | 4 +
.../next/external/c++-api/search/classes_1.html | 37 +
.../docs/next/external/c++-api/search/classes_1.js | 5 +
.../next/external/c++-api/search/classes_10.html | 37 +
.../next/external/c++-api/search/classes_10.js | 4 +
.../next/external/c++-api/search/classes_11.html | 37 +
.../next/external/c++-api/search/classes_11.js | 5 +
.../next/external/c++-api/search/classes_12.html | 37 +
.../next/external/c++-api/search/classes_12.js | 5 +
.../next/external/c++-api/search/classes_2.html | 37 +
.../docs/next/external/c++-api/search/classes_2.js | 19 +
.../next/external/c++-api/search/classes_3.html | 37 +
.../docs/next/external/c++-api/search/classes_3.js | 9 +
.../next/external/c++-api/search/classes_4.html | 37 +
.../docs/next/external/c++-api/search/classes_4.js | 6 +
.../next/external/c++-api/search/classes_5.html | 37 +
.../docs/next/external/c++-api/search/classes_5.js | 5 +
.../next/external/c++-api/search/classes_6.html | 37 +
.../docs/next/external/c++-api/search/classes_6.js | 13 +
.../next/external/c++-api/search/classes_7.html | 37 +
.../docs/next/external/c++-api/search/classes_7.js | 9 +
.../next/external/c++-api/search/classes_8.html | 37 +
.../docs/next/external/c++-api/search/classes_8.js | 6 +
.../next/external/c++-api/search/classes_9.html | 37 +
.../docs/next/external/c++-api/search/classes_9.js | 5 +
.../next/external/c++-api/search/classes_a.html | 37 +
.../docs/next/external/c++-api/search/classes_a.js | 21 +
.../next/external/c++-api/search/classes_b.html | 37 +
.../docs/next/external/c++-api/search/classes_b.js | 4 +
.../next/external/c++-api/search/classes_c.html | 37 +
.../docs/next/external/c++-api/search/classes_c.js | 5 +
.../next/external/c++-api/search/classes_d.html | 37 +
.../docs/next/external/c++-api/search/classes_d.js | 10 +
.../next/external/c++-api/search/classes_e.html | 37 +
.../docs/next/external/c++-api/search/classes_e.js | 12 +
.../next/external/c++-api/search/classes_f.html | 37 +
.../docs/next/external/c++-api/search/classes_f.js | 4 +
.../en/docs/next/external/c++-api/search/close.svg | 31 +
.../docs/next/external/c++-api/search/enums_0.html | 37 +
.../docs/next/external/c++-api/search/enums_0.js | 4 +
.../docs/next/external/c++-api/search/enums_1.html | 37 +
.../docs/next/external/c++-api/search/enums_1.js | 4 +
.../docs/next/external/c++-api/search/enums_2.html | 37 +
.../docs/next/external/c++-api/search/enums_2.js | 4 +
.../next/external/c++-api/search/enumvalues_0.html | 37 +
.../next/external/c++-api/search/enumvalues_0.js | 20 +
.../next/external/c++-api/search/enumvalues_1.html | 37 +
.../next/external/c++-api/search/enumvalues_1.js | 6 +
.../docs/next/external/c++-api/search/files_0.html | 37 +
.../docs/next/external/c++-api/search/files_0.js | 6 +
.../docs/next/external/c++-api/search/files_1.html | 37 +
.../docs/next/external/c++-api/search/files_1.js | 4 +
.../docs/next/external/c++-api/search/files_2.html | 37 +
.../docs/next/external/c++-api/search/files_2.js | 4 +
.../docs/next/external/c++-api/search/files_3.html | 37 +
.../docs/next/external/c++-api/search/files_3.js | 4 +
.../docs/next/external/c++-api/search/files_4.html | 37 +
.../docs/next/external/c++-api/search/files_4.js | 5 +
.../docs/next/external/c++-api/search/files_5.html | 37 +
.../docs/next/external/c++-api/search/files_5.js | 4 +
.../docs/next/external/c++-api/search/files_6.html | 37 +
.../docs/next/external/c++-api/search/files_6.js | 4 +
.../next/external/c++-api/search/functions_0.html | 37 +
.../next/external/c++-api/search/functions_0.js | 6 +
.../next/external/c++-api/search/functions_1.html | 37 +
.../next/external/c++-api/search/functions_1.js | 7 +
.../next/external/c++-api/search/functions_10.html | 37 +
.../next/external/c++-api/search/functions_10.js | 25 +
.../next/external/c++-api/search/functions_11.html | 37 +
.../next/external/c++-api/search/functions_11.js | 5 +
.../next/external/c++-api/search/functions_12.html | 37 +
.../next/external/c++-api/search/functions_12.js | 4 +
.../next/external/c++-api/search/functions_13.html | 37 +
.../next/external/c++-api/search/functions_13.js | 6 +
.../next/external/c++-api/search/functions_14.html | 37 +
.../next/external/c++-api/search/functions_14.js | 5 +
.../next/external/c++-api/search/functions_15.html | 37 +
.../next/external/c++-api/search/functions_15.js | 6 +
.../next/external/c++-api/search/functions_2.html | 37 +
.../next/external/c++-api/search/functions_2.js | 7 +
.../next/external/c++-api/search/functions_3.html | 37 +
.../next/external/c++-api/search/functions_3.js | 24 +
.../next/external/c++-api/search/functions_4.html | 37 +
.../next/external/c++-api/search/functions_4.js | 16 +
.../next/external/c++-api/search/functions_5.html | 37 +
.../next/external/c++-api/search/functions_5.js | 12 +
.../next/external/c++-api/search/functions_6.html | 37 +
.../next/external/c++-api/search/functions_6.js | 14 +
.../next/external/c++-api/search/functions_7.html | 37 +
.../next/external/c++-api/search/functions_7.js | 5 +
.../next/external/c++-api/search/functions_8.html | 37 +
.../next/external/c++-api/search/functions_8.js | 13 +
.../next/external/c++-api/search/functions_9.html | 37 +
.../next/external/c++-api/search/functions_9.js | 6 +
.../next/external/c++-api/search/functions_a.html | 37 +
.../next/external/c++-api/search/functions_a.js | 4 +
.../next/external/c++-api/search/functions_b.html | 37 +
.../next/external/c++-api/search/functions_b.js | 9 +
.../next/external/c++-api/search/functions_c.html | 37 +
.../next/external/c++-api/search/functions_c.js | 5 +
.../next/external/c++-api/search/functions_d.html | 37 +
.../next/external/c++-api/search/functions_d.js | 6 +
.../next/external/c++-api/search/functions_e.html | 37 +
.../next/external/c++-api/search/functions_e.js | 7 +
.../next/external/c++-api/search/functions_f.html | 37 +
.../next/external/c++-api/search/functions_f.js | 8 +
.../docs/next/external/c++-api/search/mag_sel.svg | 74 +
.../next/external/c++-api/search/namespaces_0.html | 37 +
.../next/external/c++-api/search/namespaces_0.js | 5 +
.../next/external/c++-api/search/nomatches.html | 13 +
.../docs/next/external/c++-api/search/search.css | 257 +
.../en/docs/next/external/c++-api/search/search.js | 816 +
.../docs/next/external/c++-api/search/search_l.png | Bin 0 -> 567 bytes
.../docs/next/external/c++-api/search/search_m.png | Bin 0 -> 158 bytes
.../docs/next/external/c++-api/search/search_r.png | Bin 0 -> 553 bytes
.../next/external/c++-api/search/searchdata.js | 39 +
.../next/external/c++-api/search/typedefs_0.html | 37 +
.../next/external/c++-api/search/typedefs_0.js | 5 +
.../next/external/c++-api/search/typedefs_1.html | 37 +
.../next/external/c++-api/search/typedefs_1.js | 4 +
.../next/external/c++-api/search/typedefs_2.html | 37 +
.../next/external/c++-api/search/typedefs_2.js | 4 +
.../next/external/c++-api/search/typedefs_3.html | 37 +
.../next/external/c++-api/search/typedefs_3.js | 4 +
.../next/external/c++-api/search/variables_0.html | 37 +
.../next/external/c++-api/search/variables_0.js | 4 +
.../next/external/c++-api/search/variables_1.html | 37 +
.../next/external/c++-api/search/variables_1.js | 4 +
.../next/external/c++-api/search/variables_2.html | 37 +
.../next/external/c++-api/search/variables_2.js | 4 +
.../next/external/c++-api/search/variables_3.html | 37 +
.../next/external/c++-api/search/variables_3.js | 4 +
.../next/external/c++-api/search/variables_4.html | 37 +
.../next/external/c++-api/search/variables_4.js | 4 +
.../next/external/c++-api/search/variables_5.html | 37 +
.../next/external/c++-api/search/variables_5.js | 4 +
.../en/docs/next/external/c++-api/splitbar.png | Bin 0 -> 314 bytes
.../next/external/c++-api/structavro_1_1Null.html | 88 +
.../structavro_1_1StreamReader-members.html | 94 +
.../c++-api/structavro_1_1StreamReader.html | 312 +
.../structavro_1_1StreamWriter-members.html | 92 +
.../c++-api/structavro_1_1StreamWriter.html | 236 +
.../c++-api/structavro_1_1codec__traits.html | 93 +
...odec__traits_3_01GenericDatum_01_4-members.html | 83 +
...vro_1_1codec__traits_3_01GenericDatum_01_4.html | 103 +
...odec__traits_3_01avro_1_1null_01_4-members.html | 83 +
...vro_1_1codec__traits_3_01avro_1_1null_01_4.html | 103 +
...vro_1_1codec__traits_3_01bool_01_4-members.html | 83 +
.../structavro_1_1codec__traits_3_01bool_01_4.html | 103 +
...o_1_1codec__traits_3_01double_01_4-members.html | 83 +
...tructavro_1_1codec__traits_3_01double_01_4.html | 103 +
...ro_1_1codec__traits_3_01float_01_4-members.html | 83 +
...structavro_1_1codec__traits_3_01float_01_4.html | 103 +
...1_1codec__traits_3_01int32__t_01_4-members.html | 83 +
...uctavro_1_1codec__traits_3_01int32__t_01_4.html | 103 +
...1_1codec__traits_3_01int64__t_01_4-members.html | 83 +
...uctavro_1_1codec__traits_3_01int64__t_01_4.html | 103 +
...rray_3_01uint8__t_00_01N_01_4_01_4-members.html | 83 +
...std_1_1array_3_01uint8__t_00_01N_01_4_01_4.html | 106 +
...ol__codec_c1941effc5b79619bb4a6841e293ee18.html | 82 +
...ol__codec_ff37ba08cb2504ad1efb9929401153b7.html | 92 +
...3_01std_1_1string_00_01T_01_4_01_4-members.html | 83 +
..._1_1map_3_01std_1_1string_00_01T_01_4_01_4.html | 106 +
...Schema_00_01GenericDatum_01_4_01_4-members.html | 83 +
..._01ValidSchema_00_01GenericDatum_01_4_01_4.html | 104 +
...dec__traits_3_01std_1_1string_01_4-members.html | 83 +
...ro_1_1codec__traits_3_01std_1_1string_01_4.html | 103 +
..._3_01std_1_1vector_3_01T_01_4_01_4-members.html | 83 +
...__traits_3_01std_1_1vector_3_01T_01_4_01_4.html | 106 +
...d_1_1vector_3_01uint8__t_01_4_01_4-members.html | 83 +
...s_3_01std_1_1vector_3_01uint8__t_01_4_01_4.html | 103 +
...avro_1_1concepts_1_1MultiAttribute-members.html | 90 +
.../structavro_1_1concepts_1_1MultiAttribute.html | 116 +
...ro_1_1concepts_1_1NameIndexConcept-members.html | 83 +
...structavro_1_1concepts_1_1NameIndexConcept.html | 94 +
...ribute_3_01std_1_1string_01_4_01_4-members.html | 84 +
...MultiAttribute_3_01std_1_1string_01_4_01_4.html | 101 +
...uctavro_1_1concepts_1_1NoAttribute-members.html | 86 +
.../structavro_1_1concepts_1_1NoAttribute.html | 107 +
...vro_1_1concepts_1_1SingleAttribute-members.html | 91 +
.../structavro_1_1concepts_1_1SingleAttribute.html | 124 +
.../c++-api/structavro_1_1is__defined-members.html | 86 +
.../c++-api/structavro_1_1is__defined.html | 125 +
.../structavro_1_1is__not__defined-members.html | 86 +
.../c++-api/structavro_1_1is__not__defined.html | 124 +
.../c++-api/structavro_1_1is__promotable.html | 87 +
.../c++-api/structavro_1_1is__promotable.png | Bin 0 -> 636 bytes
.../c++-api/structavro_1_1is__serializable.html | 98 +
.../c++-api/structavro_1_1is__serializable.png | Bin 0 -> 644 bytes
.../structavro_1_1type__to__avro-members.html | 82 +
.../c++-api/structavro_1_1type__to__avro.html | 91 +
.../en/docs/next/external/c++-api/sync_off.png | Bin 0 -> 853 bytes
.../en/docs/next/external/c++-api/sync_on.png | Bin 0 -> 845 bytes
.../en/docs/next/external/c++-api/tab_a.png | Bin 0 -> 142 bytes
.../en/docs/next/external/c++-api/tab_b.png | Bin 0 -> 169 bytes
.../en/docs/next/external/c++-api/tab_h.png | Bin 0 -> 177 bytes
.../en/docs/next/external/c++-api/tab_s.png | Bin 0 -> 184 bytes
doc/content/en/docs/next/external/c++-api/tabs.css | 1 +
doc/content/en/docs/next/external/c/index.html | 2522 +++
.../en/docs/next/external/csharp/annotated.html | 189 +
doc/content/en/docs/next/external/csharp/bc_s.png | Bin 0 -> 676 bytes
doc/content/en/docs/next/external/csharp/bdwn.png | Bin 0 -> 147 bytes
.../csharp/classAvro_1_1ArraySchema-members.html | 97 +
.../external/csharp/classAvro_1_1ArraySchema.html | 319 +
.../external/csharp/classAvro_1_1ArraySchema.png | Bin 0 -> 867 bytes
.../csharp/classAvro_1_1AvroException-members.html | 84 +
.../csharp/classAvro_1_1AvroException.html | 222 +
.../external/csharp/classAvro_1_1AvroException.png | Bin 0 -> 2256 bytes
.../classAvro_1_1AvroRuntimeException-members.html | 87 +
.../csharp/classAvro_1_1AvroRuntimeException.html | 228 +
.../csharp/classAvro_1_1AvroRuntimeException.png | Bin 0 -> 891 bytes
.../classAvro_1_1AvroTypeException-members.html | 87 +
.../csharp/classAvro_1_1AvroTypeException.html | 228 +
.../csharp/classAvro_1_1AvroTypeException.png | Bin 0 -> 874 bytes
.../csharp/classAvro_1_1CodeGen-members.html | 106 +
.../next/external/csharp/classAvro_1_1CodeGen.html | 986 +
.../classAvro_1_1CodeGenException-members.html | 87 +
.../csharp/classAvro_1_1CodeGenException.html | 113 +
.../csharp/classAvro_1_1CodeGenException.png | Bin 0 -> 872 bytes
.../csharp/classAvro_1_1CodeGenUtil-members.html | 88 +
.../external/csharp/classAvro_1_1CodeGenUtil.html | 315 +
.../csharp/classAvro_1_1EnumSchema-members.html | 109 +
.../external/csharp/classAvro_1_1EnumSchema.html | 536 +
.../external/csharp/classAvro_1_1EnumSchema.png | Bin 0 -> 740 bytes
.../csharp/classAvro_1_1Field-members.html | 93 +
.../next/external/csharp/classAvro_1_1Field.html | 454 +
.../csharp/classAvro_1_1File_1_1Codec-members.html | 91 +
.../csharp/classAvro_1_1File_1_1Codec.html | 491 +
.../external/csharp/classAvro_1_1File_1_1Codec.png | Bin 0 -> 849 bytes
.../classAvro_1_1File_1_1DataBlock-members.html | 85 +
.../csharp/classAvro_1_1File_1_1DataBlock.html | 228 +
...sAvro_1_1File_1_1DataFileConstants-members.html | 93 +
.../classAvro_1_1File_1_1DataFileConstants.html | 425 +
...lassAvro_1_1File_1_1DataFileReader-members.html | 107 +
.../classAvro_1_1File_1_1DataFileReader.html | 690 +
.../csharp/classAvro_1_1File_1_1DataFileReader.png | Bin 0 -> 960 bytes
...lassAvro_1_1File_1_1DataFileWriter-members.html | 100 +
.../classAvro_1_1File_1_1DataFileWriter.html | 627 +
.../csharp/classAvro_1_1File_1_1DataFileWriter.png | Bin 0 -> 933 bytes
.../classAvro_1_1File_1_1DeflateCodec-members.html | 91 +
.../csharp/classAvro_1_1File_1_1DeflateCodec.html | 147 +
.../csharp/classAvro_1_1File_1_1DeflateCodec.png | Bin 0 -> 593 bytes
.../classAvro_1_1File_1_1Header-members.html | 85 +
.../csharp/classAvro_1_1File_1_1Header.html | 210 +
.../classAvro_1_1File_1_1NullCodec-members.html | 92 +
.../csharp/classAvro_1_1File_1_1NullCodec.html | 177 +
.../csharp/classAvro_1_1File_1_1NullCodec.png | Bin 0 -> 513 bytes
.../csharp/classAvro_1_1FixedSchema-members.html | 103 +
.../external/csharp/classAvro_1_1FixedSchema.html | 341 +
.../external/csharp/classAvro_1_1FixedSchema.png | Bin 0 -> 746 bytes
...ssAvro_1_1Generic_1_1DefaultReader-members.html | 110 +
.../classAvro_1_1Generic_1_1DefaultReader.html | 1663 ++
.../classAvro_1_1Generic_1_1DefaultReader.png | Bin 0 -> 1162 bytes
...ssAvro_1_1Generic_1_1DefaultWriter-members.html | 105 +
.../classAvro_1_1Generic_1_1DefaultWriter.html | 1285 ++
.../classAvro_1_1Generic_1_1DefaultWriter.png | Bin 0 -> 1155 bytes
...o_1_1Generic_1_1GenericDatumReader-members.html | 94 +
...classAvro_1_1Generic_1_1GenericDatumReader.html | 225 +
.../classAvro_1_1Generic_1_1GenericDatumReader.png | Bin 0 -> 1481 bytes
...o_1_1Generic_1_1GenericDatumWriter-members.html | 99 +
...classAvro_1_1Generic_1_1GenericDatumWriter.html | 264 +
.../classAvro_1_1Generic_1_1GenericDatumWriter.png | Bin 0 -> 1349 bytes
...lassAvro_1_1Generic_1_1GenericEnum-members.html | 87 +
.../classAvro_1_1Generic_1_1GenericEnum.html | 210 +
...assAvro_1_1Generic_1_1GenericFixed-members.html | 89 +
.../classAvro_1_1Generic_1_1GenericFixed.html | 326 +
.../classAvro_1_1Generic_1_1GenericFixed.png | Bin 0 -> 670 bytes
...ssAvro_1_1Generic_1_1GenericReader-members.html | 86 +
.../classAvro_1_1Generic_1_1GenericReader.html | 312 +
.../classAvro_1_1Generic_1_1GenericReader.png | Bin 0 -> 774 bytes
...ssAvro_1_1Generic_1_1GenericRecord-members.html | 93 +
.../classAvro_1_1Generic_1_1GenericRecord.html | 465 +
.../classAvro_1_1Generic_1_1GenericRecord.png | Bin 0 -> 700 bytes
...ssAvro_1_1Generic_1_1GenericWriter-members.html | 85 +
.../classAvro_1_1Generic_1_1GenericWriter.html | 246 +
.../classAvro_1_1Generic_1_1GenericWriter.png | Bin 0 -> 1119 bytes
...Generic_1_1PreresolvingDatumReader-members.html | 93 +
...Avro_1_1Generic_1_1PreresolvingDatumReader.html | 539 +
...sAvro_1_1Generic_1_1PreresolvingDatumReader.png | Bin 0 -> 2082 bytes
...Generic_1_1PreresolvingDatumWriter-members.html | 98 +
...Avro_1_1Generic_1_1PreresolvingDatumWriter.html | 933 +
...sAvro_1_1Generic_1_1PreresolvingDatumWriter.png | Bin 0 -> 1916 bytes
...DatumWriter_1_1DictionaryMapAccess-members.html | 84 +
...esolvingDatumWriter_1_1DictionaryMapAccess.html | 114 +
...resolvingDatumWriter_1_1DictionaryMapAccess.png | Bin 0 -> 1356 bytes
...ngDatumWriter_1_1RecordFieldWriter-members.html | 83 +
...eresolvingDatumWriter_1_1RecordFieldWriter.html | 148 +
.../classAvro_1_1IO_1_1BinaryDecoder-members.html | 112 +
.../csharp/classAvro_1_1IO_1_1BinaryDecoder.html | 1160 ++
.../csharp/classAvro_1_1IO_1_1BinaryDecoder.png | Bin 0 -> 609 bytes
.../classAvro_1_1IO_1_1BinaryEncoder-members.html | 103 +
.../csharp/classAvro_1_1IO_1_1BinaryEncoder.html | 625 +
.../csharp/classAvro_1_1IO_1_1BinaryEncoder.png | Bin 0 -> 615 bytes
...vro_1_1IO_1_1ByteBufferInputStream-members.html | 92 +
.../classAvro_1_1IO_1_1ByteBufferInputStream.html | 208 +
.../classAvro_1_1IO_1_1ByteBufferInputStream.png | Bin 0 -> 950 bytes
...ro_1_1IO_1_1ByteBufferOutputStream-members.html | 96 +
.../classAvro_1_1IO_1_1ByteBufferOutputStream.html | 308 +
.../classAvro_1_1IO_1_1ByteBufferOutputStream.png | Bin 0 -> 982 bytes
.../classAvro_1_1IO_1_1InputStream-members.html | 89 +
.../csharp/classAvro_1_1IO_1_1InputStream.html | 131 +
.../csharp/classAvro_1_1IO_1_1InputStream.png | Bin 0 -> 949 bytes
.../classAvro_1_1IO_1_1OutputStream-members.html | 88 +
.../csharp/classAvro_1_1IO_1_1OutputStream.html | 128 +
.../csharp/classAvro_1_1IO_1_1OutputStream.png | Bin 0 -> 983 bytes
.../csharp/classAvro_1_1JsonHelper-members.html | 85 +
.../external/csharp/classAvro_1_1JsonHelper.html | 285 +
.../csharp/classAvro_1_1LogicalSchema-members.html | 99 +
.../csharp/classAvro_1_1LogicalSchema.html | 373 +
.../external/csharp/classAvro_1_1LogicalSchema.png | Bin 0 -> 866 bytes
.../csharp/classAvro_1_1MapSchema-members.html | 98 +
.../external/csharp/classAvro_1_1MapSchema.html | 361 +
.../external/csharp/classAvro_1_1MapSchema.png | Bin 0 -> 862 bytes
.../csharp/classAvro_1_1Message-members.html | 92 +
.../next/external/csharp/classAvro_1_1Message.html | 487 +
.../csharp/classAvro_1_1NamedSchema-members.html | 101 +
.../external/csharp/classAvro_1_1NamedSchema.html | 540 +
.../external/csharp/classAvro_1_1NamedSchema.png | Bin 0 -> 1445 bytes
.../classAvro_1_1PrimitiveSchema-members.html | 97 +
.../csharp/classAvro_1_1PrimitiveSchema.html | 371 +
.../csharp/classAvro_1_1PrimitiveSchema.png | Bin 0 -> 872 bytes
.../csharp/classAvro_1_1PropertyMap-members.html | 86 +
.../external/csharp/classAvro_1_1PropertyMap.html | 291 +
.../external/csharp/classAvro_1_1PropertyMap.png | Bin 0 -> 670 bytes
.../csharp/classAvro_1_1Protocol-members.html | 92 +
.../external/csharp/classAvro_1_1Protocol.html | 473 +
...lassAvro_1_1ProtocolParseException-members.html | 87 +
.../classAvro_1_1ProtocolParseException.html | 228 +
.../csharp/classAvro_1_1ProtocolParseException.png | Bin 0 -> 912 bytes
.../csharp/classAvro_1_1RecordSchema-members.html | 109 +
.../external/csharp/classAvro_1_1RecordSchema.html | 570 +
.../external/csharp/classAvro_1_1RecordSchema.png | Bin 0 -> 773 bytes
...lassAvro_1_1Reflect_1_1ArrayHelper-members.html | 88 +
.../classAvro_1_1Reflect_1_1ArrayHelper.html | 315 +
...o_1_1Reflect_1_1AvroFieldAttribute-members.html | 85 +
...classAvro_1_1Reflect_1_1AvroFieldAttribute.html | 244 +
.../classAvro_1_1Reflect_1_1AvroFieldAttribute.png | Bin 0 -> 624 bytes
...classAvro_1_1Reflect_1_1ClassCache-members.html | 88 +
.../csharp/classAvro_1_1Reflect_1_1ClassCache.html | 422 +
...t_1_1DateTimeOffsetToLongConverter-members.html | 85 +
..._1Reflect_1_1DateTimeOffsetToLongConverter.html | 271 +
...1_1Reflect_1_1DateTimeOffsetToLongConverter.png | Bin 0 -> 990 bytes
...lassAvro_1_1Reflect_1_1DotnetClass-members.html | 86 +
.../classAvro_1_1Reflect_1_1DotnetClass.html | 323 +
...o_1_1Reflect_1_1FuncFieldConverter-members.html | 88 +
...classAvro_1_1Reflect_1_1FuncFieldConverter.html | 275 +
.../classAvro_1_1Reflect_1_1FuncFieldConverter.png | Bin 0 -> 1699 bytes
...1_1Reflect_1_1ReflectDefaultReader-members.html | 117 +
...assAvro_1_1Reflect_1_1ReflectDefaultReader.html | 734 +
...lassAvro_1_1Reflect_1_1ReflectDefaultReader.png | Bin 0 -> 1153 bytes
...1_1Reflect_1_1ReflectDefaultWriter-members.html | 109 +
...assAvro_1_1Reflect_1_1ReflectDefaultWriter.html | 593 +
...lassAvro_1_1Reflect_1_1ReflectDefaultWriter.png | Bin 0 -> 1145 bytes
...ssAvro_1_1Reflect_1_1ReflectReader-members.html | 88 +
.../classAvro_1_1Reflect_1_1ReflectReader.html | 384 +
.../classAvro_1_1Reflect_1_1ReflectReader.png | Bin 0 -> 754 bytes
...ssAvro_1_1Reflect_1_1ReflectWriter-members.html | 86 +
.../classAvro_1_1Reflect_1_1ReflectWriter.html | 308 +
.../classAvro_1_1Reflect_1_1ReflectWriter.png | Bin 0 -> 754 bytes
..._1_1Reflect_1_1TypedFieldConverter-members.html | 87 +
...lassAvro_1_1Reflect_1_1TypedFieldConverter.html | 381 +
...classAvro_1_1Reflect_1_1TypedFieldConverter.png | Bin 0 -> 1695 bytes
.../csharp/classAvro_1_1Schema-members.html | 94 +
.../next/external/csharp/classAvro_1_1Schema.html | 649 +
.../next/external/csharp/classAvro_1_1Schema.png | Bin 0 -> 4149 bytes
.../csharp/classAvro_1_1SchemaName-members.html | 91 +
.../external/csharp/classAvro_1_1SchemaName.html | 396 +
.../csharp/classAvro_1_1SchemaNames-members.html | 88 +
.../external/csharp/classAvro_1_1SchemaNames.html | 383 +
.../classAvro_1_1SchemaParseException-members.html | 87 +
.../csharp/classAvro_1_1SchemaParseException.html | 228 +
.../csharp/classAvro_1_1SchemaParseException.png | Bin 0 -> 921 bytes
...sAvro_1_1Specific_1_1ObjectCreator-members.html | 87 +
.../classAvro_1_1Specific_1_1ObjectCreator.html | 341 +
...1_1Specific_1_1SpecificDatumReader-members.html | 94 +
...assAvro_1_1Specific_1_1SpecificDatumReader.html | 215 +
...lassAvro_1_1Specific_1_1SpecificDatumReader.png | Bin 0 -> 1492 bytes
...1_1Specific_1_1SpecificDatumWriter-members.html | 99 +
...assAvro_1_1Specific_1_1SpecificDatumWriter.html | 216 +
...lassAvro_1_1Specific_1_1SpecificDatumWriter.png | Bin 0 -> 1363 bytes
...1Specific_1_1SpecificDefaultReader-members.html | 112 +
...sAvro_1_1Specific_1_1SpecificDefaultReader.html | 599 +
...ssAvro_1_1Specific_1_1SpecificDefaultReader.png | Bin 0 -> 1155 bytes
...1Specific_1_1SpecificDefaultWriter-members.html | 106 +
...sAvro_1_1Specific_1_1SpecificDefaultWriter.html | 549 +
...ssAvro_1_1Specific_1_1SpecificDefaultWriter.png | Bin 0 -> 1143 bytes
...o_1_1Specific_1_1SpecificException-members.html | 87 +
...classAvro_1_1Specific_1_1SpecificException.html | 237 +
.../classAvro_1_1Specific_1_1SpecificException.png | Bin 0 -> 1037 bytes
...sAvro_1_1Specific_1_1SpecificFixed-members.html | 91 +
.../classAvro_1_1Specific_1_1SpecificFixed.html | 252 +
.../classAvro_1_1Specific_1_1SpecificFixed.png | Bin 0 -> 664 bytes
...Avro_1_1Specific_1_1SpecificReader-members.html | 86 +
.../classAvro_1_1Specific_1_1SpecificReader.html | 312 +
.../classAvro_1_1Specific_1_1SpecificReader.png | Bin 0 -> 789 bytes
...Avro_1_1Specific_1_1SpecificWriter-members.html | 87 +
.../classAvro_1_1Specific_1_1SpecificWriter.html | 205 +
.../classAvro_1_1Specific_1_1SpecificWriter.png | Bin 0 -> 1108 bytes
.../csharp/classAvro_1_1UnionSchema-members.html | 100 +
.../external/csharp/classAvro_1_1UnionSchema.html | 418 +
.../external/csharp/classAvro_1_1UnionSchema.png | Bin 0 -> 847 bytes
.../csharp/classAvro_1_1UnnamedSchema-members.html | 95 +
.../csharp/classAvro_1_1UnnamedSchema.html | 232 +
.../external/csharp/classAvro_1_1UnnamedSchema.png | Bin 0 -> 2030 bytes
.../csharp/classAvro_1_1Util_1_1Date-members.html | 90 +
.../external/csharp/classAvro_1_1Util_1_1Date.html | 192 +
.../external/csharp/classAvro_1_1Util_1_1Date.png | Bin 0 -> 868 bytes
.../classAvro_1_1Util_1_1Decimal-members.html | 90 +
.../csharp/classAvro_1_1Util_1_1Decimal.html | 197 +
.../csharp/classAvro_1_1Util_1_1Decimal.png | Bin 0 -> 582 bytes
.../classAvro_1_1Util_1_1LogicalType-members.html | 88 +
.../csharp/classAvro_1_1Util_1_1LogicalType.html | 398 +
.../csharp/classAvro_1_1Util_1_1LogicalType.png | Bin 0 -> 1355 bytes
...Avro_1_1Util_1_1LogicalTypeFactory-members.html | 84 +
.../classAvro_1_1Util_1_1LogicalTypeFactory.html | 213 +
...ro_1_1Util_1_1LogicalUnixEpochType-members.html | 90 +
.../classAvro_1_1Util_1_1LogicalUnixEpochType.html | 213 +
.../classAvro_1_1Util_1_1LogicalUnixEpochType.png | Bin 0 -> 786 bytes
...assAvro_1_1Util_1_1TimeMicrosecond-members.html | 90 +
.../classAvro_1_1Util_1_1TimeMicrosecond.html | 192 +
.../classAvro_1_1Util_1_1TimeMicrosecond.png | Bin 0 -> 942 bytes
...assAvro_1_1Util_1_1TimeMillisecond-members.html | 90 +
.../classAvro_1_1Util_1_1TimeMillisecond.html | 192 +
.../classAvro_1_1Util_1_1TimeMillisecond.png | Bin 0 -> 933 bytes
...ro_1_1Util_1_1TimestampMicrosecond-members.html | 90 +
.../classAvro_1_1Util_1_1TimestampMicrosecond.html | 192 +
.../classAvro_1_1Util_1_1TimestampMicrosecond.png | Bin 0 -> 967 bytes
...ro_1_1Util_1_1TimestampMillisecond-members.html | 90 +
.../classAvro_1_1Util_1_1TimestampMillisecond.html | 192 +
.../classAvro_1_1Util_1_1TimestampMillisecond.png | Bin 0 -> 960 bytes
.../csharp/classAvro_1_1Util_1_1Uuid-members.html | 90 +
.../external/csharp/classAvro_1_1Util_1_1Uuid.html | 196 +
.../external/csharp/classAvro_1_1Util_1_1Uuid.png | Bin 0 -> 545 bytes
.../en/docs/next/external/csharp/classes.html | 134 +
.../en/docs/next/external/csharp/closed.png | Bin 0 -> 132 bytes
.../dir_0e4a38f9ef06761c702d1000e7c85b52.html | 78 +
.../dir_12c51c70d1761c9810114d47e1a00bc1.html | 82 +
.../dir_16aa84a06c32d28f04f243d2cefe6800.html | 78 +
.../dir_36ede831d2649410e5d18d8348c995af.html | 84 +
.../dir_3806563c8d8dc1d740893404d03abf8d.html | 78 +
.../dir_508ce0f6244ddfefd5ba84fca7fd0ec3.html | 78 +
.../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 78 +
.../dir_6dbb78f774543a2e05e373dd7494ed15.html | 78 +
.../dir_7de0ff4a2b6055541208a1e285740e80.html | 78 +
.../dir_8176610dbe048b9f02d4a319b4e979d9.html | 78 +
.../dir_8ba8016f3b228dd5f3fb73e0041fedc3.html | 78 +
.../dir_8c883b163e24707187bd8d2306c7344f.html | 78 +
.../dir_a25ce1ccf3b5fbe0d7a341416e0f2238.html | 78 +
.../dir_c35be88518f42c5dbaac3a8e19fcd11d.html | 82 +
.../dir_d47c5e8b9906522bd83019cff0b1a9b6.html | 78 +
.../dir_f61103f8dfba9175f7b8d7b92e6e2946.html | 78 +
doc/content/en/docs/next/external/csharp/doc.png | Bin 0 -> 746 bytes
.../en/docs/next/external/csharp/doxygen.css | 1793 ++
.../en/docs/next/external/csharp/doxygen.svg | 26 +
.../en/docs/next/external/csharp/dynsections.js | 121 +
.../en/docs/next/external/csharp/folderclosed.png | Bin 0 -> 616 bytes
.../en/docs/next/external/csharp/folderopen.png | Bin 0 -> 597 bytes
.../en/docs/next/external/csharp/functions.html | 147 +
.../en/docs/next/external/csharp/functions_b.html | 95 +
.../en/docs/next/external/csharp/functions_c.html | 195 +
.../en/docs/next/external/csharp/functions_d.html | 131 +
.../en/docs/next/external/csharp/functions_e.html | 124 +
.../docs/next/external/csharp/functions_enum.html | 79 +
.../en/docs/next/external/csharp/functions_f.html | 116 +
.../docs/next/external/csharp/functions_func.html | 138 +
.../next/external/csharp/functions_func_b.html | 86 +
.../next/external/csharp/functions_func_c.html | 172 +
.../next/external/csharp/functions_func_d.html | 101 +
.../next/external/csharp/functions_func_e.html | 115 +
.../next/external/csharp/functions_func_f.html | 99 +
.../next/external/csharp/functions_func_g.html | 297 +
.../next/external/csharp/functions_func_h.html | 87 +
.../next/external/csharp/functions_func_i.html | 92 +
.../next/external/csharp/functions_func_l.html | 83 +
.../next/external/csharp/functions_func_m.html | 88 +
.../next/external/csharp/functions_func_n.html | 90 +
.../next/external/csharp/functions_func_o.html | 89 +
.../next/external/csharp/functions_func_p.html | 124 +
.../next/external/csharp/functions_func_r.html | 223 +
.../next/external/csharp/functions_func_s.html | 198 +
.../next/external/csharp/functions_func_t.html | 175 +
.../next/external/csharp/functions_func_u.html | 88 +
.../next/external/csharp/functions_func_v.html | 84 +
.../next/external/csharp/functions_func_w.html | 212 +
.../en/docs/next/external/csharp/functions_g.html | 297 +
.../en/docs/next/external/csharp/functions_h.html | 87 +
.../en/docs/next/external/csharp/functions_i.html | 100 +
.../en/docs/next/external/csharp/functions_l.html | 98 +
.../en/docs/next/external/csharp/functions_m.html | 115 +
.../en/docs/next/external/csharp/functions_n.html | 131 +
.../en/docs/next/external/csharp/functions_o.html | 98 +
.../en/docs/next/external/csharp/functions_p.html | 135 +
.../docs/next/external/csharp/functions_prop.html | 413 +
.../en/docs/next/external/csharp/functions_r.html | 244 +
.../en/docs/next/external/csharp/functions_s.html | 240 +
.../en/docs/next/external/csharp/functions_t.html | 195 +
.../en/docs/next/external/csharp/functions_u.html | 94 +
.../en/docs/next/external/csharp/functions_v.html | 99 +
.../docs/next/external/csharp/functions_vars.html | 138 +
.../en/docs/next/external/csharp/functions_w.html | 224 +
.../en/docs/next/external/csharp/hierarchy.html | 198 +
.../en/docs/next/external/csharp/index.html | 74 +
...terfaceAvro_1_1File_1_1IFileReader-members.html | 95 +
.../interfaceAvro_1_1File_1_1IFileReader.html | 526 +
.../interfaceAvro_1_1File_1_1IFileReader.png | Bin 0 -> 950 bytes
...terfaceAvro_1_1File_1_1IFileWriter-members.html | 90 +
.../interfaceAvro_1_1File_1_1IFileWriter.html | 402 +
.../interfaceAvro_1_1File_1_1IFileWriter.png | Bin 0 -> 932 bytes
...faceAvro_1_1Generic_1_1DatumReader-members.html | 84 +
.../interfaceAvro_1_1Generic_1_1DatumReader.html | 216 +
.../interfaceAvro_1_1Generic_1_1DatumReader.png | Bin 0 -> 3150 bytes
...faceAvro_1_1Generic_1_1DatumWriter-members.html | 83 +
.../interfaceAvro_1_1Generic_1_1DatumWriter.html | 188 +
.../interfaceAvro_1_1Generic_1_1DatumWriter.png | Bin 0 -> 2790 bytes
...esolvingDatumReader_1_1ArrayAccess-members.html | 85 +
..._1_1PreresolvingDatumReader_1_1ArrayAccess.html | 272 +
...resolvingDatumReader_1_1EnumAccess-members.html | 82 +
...c_1_1PreresolvingDatumReader_1_1EnumAccess.html | 135 +
...esolvingDatumReader_1_1FixedAccess-members.html | 83 +
..._1_1PreresolvingDatumReader_1_1FixedAccess.html | 154 +
...eresolvingDatumReader_1_1MapAccess-members.html | 83 +
...ic_1_1PreresolvingDatumReader_1_1MapAccess.html | 185 +
...solvingDatumReader_1_1RecordAccess-members.html | 84 +
...1_1PreresolvingDatumReader_1_1RecordAccess.html | 228 +
...esolvingDatumWriter_1_1ArrayAccess-members.html | 84 +
..._1_1PreresolvingDatumWriter_1_1ArrayAccess.html | 200 +
...resolvingDatumWriter_1_1EnumAccess-members.html | 82 +
...c_1_1PreresolvingDatumWriter_1_1EnumAccess.html | 117 +
...eresolvingDatumWriter_1_1MapAccess-members.html | 84 +
...ic_1_1PreresolvingDatumWriter_1_1MapAccess.html | 216 +
...ric_1_1PreresolvingDatumWriter_1_1MapAccess.png | Bin 0 -> 1355 bytes
.../interfaceAvro_1_1IO_1_1Decoder-members.html | 108 +
.../csharp/interfaceAvro_1_1IO_1_1Decoder.html | 804 +
.../csharp/interfaceAvro_1_1IO_1_1Decoder.png | Bin 0 -> 613 bytes
.../interfaceAvro_1_1IO_1_1Encoder-members.html | 100 +
.../csharp/interfaceAvro_1_1IO_1_1Encoder.html | 689 +
.../csharp/interfaceAvro_1_1IO_1_1Encoder.png | Bin 0 -> 620 bytes
.../interfaceAvro_1_1IO_1_1ICallback-members.html | 83 +
.../csharp/interfaceAvro_1_1IO_1_1ICallback.html | 158 +
..._1_1Reflect_1_1IAvroFieldConverter-members.html | 85 +
...faceAvro_1_1Reflect_1_1IAvroFieldConverter.html | 241 +
...rfaceAvro_1_1Reflect_1_1IAvroFieldConverter.png | Bin 0 -> 2443 bytes
..._1_1Specific_1_1ICallbackRequestor-members.html | 82 +
...faceAvro_1_1Specific_1_1ICallbackRequestor.html | 147 +
...o_1_1Specific_1_1ISpecificProtocol-members.html | 83 +
...rfaceAvro_1_1Specific_1_1ISpecificProtocol.html | 180 +
...vro_1_1Specific_1_1ISpecificRecord-members.html | 84 +
...terfaceAvro_1_1Specific_1_1ISpecificRecord.html | 209 +
...nterfaceAvro_1_1Specific_1_1ISpecificRecord.png | Bin 0 -> 733 bytes
doc/content/en/docs/next/external/csharp/jquery.js | 35 +
.../csharp/md_src_apache_main_Reflect_README.html | 321 +
doc/content/en/docs/next/external/csharp/menu.js | 51 +
.../en/docs/next/external/csharp/menudata.js | 100 +
.../docs/next/external/csharp/namespaceAvro.html | 163 +
.../external/csharp/namespaceAvro_1_1File.html | 114 +
.../external/csharp/namespaceAvro_1_1Generic.html | 192 +
.../next/external/csharp/namespaceAvro_1_1IO.html | 113 +
.../external/csharp/namespaceAvro_1_1Reflect.html | 128 +
.../external/csharp/namespaceAvro_1_1Specific.html | 120 +
.../external/csharp/namespaceAvro_1_1Util.html | 114 +
.../next/external/csharp/namespacemembers.html | 78 +
.../external/csharp/namespacemembers_func.html | 78 +
.../en/docs/next/external/csharp/namespaces.html | 189 +
doc/content/en/docs/next/external/csharp/nav_f.png | Bin 0 -> 153 bytes
doc/content/en/docs/next/external/csharp/nav_g.png | Bin 0 -> 95 bytes
doc/content/en/docs/next/external/csharp/nav_h.png | Bin 0 -> 98 bytes
doc/content/en/docs/next/external/csharp/open.png | Bin 0 -> 123 bytes
.../en/docs/next/external/csharp/pages.html | 79 +
.../en/docs/next/external/csharp/search/all_0.html | 37 +
.../en/docs/next/external/csharp/search/all_0.js | 36 +
.../en/docs/next/external/csharp/search/all_1.html | 37 +
.../en/docs/next/external/csharp/search/all_1.js | 12 +
.../docs/next/external/csharp/search/all_10.html | 37 +
.../en/docs/next/external/csharp/search/all_10.js | 47 +
.../docs/next/external/csharp/search/all_11.html | 37 +
.../en/docs/next/external/csharp/search/all_11.js | 39 +
.../docs/next/external/csharp/search/all_12.html | 37 +
.../en/docs/next/external/csharp/search/all_12.js | 11 +
.../docs/next/external/csharp/search/all_13.html | 37 +
.../en/docs/next/external/csharp/search/all_13.js | 8 +
.../docs/next/external/csharp/search/all_14.html | 37 +
.../en/docs/next/external/csharp/search/all_14.js | 37 +
.../en/docs/next/external/csharp/search/all_2.html | 37 +
.../en/docs/next/external/csharp/search/all_2.js | 33 +
.../en/docs/next/external/csharp/search/all_3.html | 37 +
.../en/docs/next/external/csharp/search/all_3.js | 31 +
.../en/docs/next/external/csharp/search/all_4.html | 37 +
.../en/docs/next/external/csharp/search/all_4.js | 15 +
.../en/docs/next/external/csharp/search/all_5.html | 37 +
.../en/docs/next/external/csharp/search/all_5.js | 18 +
.../en/docs/next/external/csharp/search/all_6.html | 37 +
.../en/docs/next/external/csharp/search/all_6.js | 58 +
.../en/docs/next/external/csharp/search/all_7.html | 37 +
.../en/docs/next/external/csharp/search/all_7.js | 7 +
.../en/docs/next/external/csharp/search/all_8.html | 37 +
.../en/docs/next/external/csharp/search/all_8.js | 19 +
.../en/docs/next/external/csharp/search/all_9.html | 37 +
.../en/docs/next/external/csharp/search/all_9.js | 4 +
.../en/docs/next/external/csharp/search/all_a.html | 37 +
.../en/docs/next/external/csharp/search/all_a.js | 14 +
.../en/docs/next/external/csharp/search/all_b.html | 37 +
.../en/docs/next/external/csharp/search/all_b.js | 19 +
.../en/docs/next/external/csharp/search/all_c.html | 37 +
.../en/docs/next/external/csharp/search/all_c.js | 21 +
.../en/docs/next/external/csharp/search/all_d.html | 37 +
.../en/docs/next/external/csharp/search/all_d.js | 12 +
.../en/docs/next/external/csharp/search/all_e.html | 37 +
.../en/docs/next/external/csharp/search/all_e.js | 23 +
.../en/docs/next/external/csharp/search/all_f.html | 37 +
.../en/docs/next/external/csharp/search/all_f.js | 50 +
.../next/external/csharp/search/classes_0.html | 37 +
.../docs/next/external/csharp/search/classes_0.js | 11 +
.../next/external/csharp/search/classes_1.html | 37 +
.../docs/next/external/csharp/search/classes_1.js | 7 +
.../next/external/csharp/search/classes_10.html | 37 +
.../docs/next/external/csharp/search/classes_10.js | 15 +
.../next/external/csharp/search/classes_11.html | 37 +
.../docs/next/external/csharp/search/classes_11.js | 8 +
.../next/external/csharp/search/classes_12.html | 37 +
.../docs/next/external/csharp/search/classes_12.js | 6 +
.../next/external/csharp/search/classes_2.html | 37 +
.../docs/next/external/csharp/search/classes_2.js | 8 +
.../next/external/csharp/search/classes_3.html | 37 +
.../docs/next/external/csharp/search/classes_3.js | 18 +
.../next/external/csharp/search/classes_4.html | 37 +
.../docs/next/external/csharp/search/classes_4.js | 6 +
.../next/external/csharp/search/classes_5.html | 37 +
.../docs/next/external/csharp/search/classes_5.js | 7 +
.../next/external/csharp/search/classes_6.html | 37 +
.../docs/next/external/csharp/search/classes_6.js | 10 +
.../next/external/csharp/search/classes_7.html | 37 +
.../docs/next/external/csharp/search/classes_7.js | 4 +
.../next/external/csharp/search/classes_8.html | 37 +
.../docs/next/external/csharp/search/classes_8.js | 11 +
.../next/external/csharp/search/classes_9.html | 37 +
.../docs/next/external/csharp/search/classes_9.js | 4 +
.../next/external/csharp/search/classes_a.html | 37 +
.../docs/next/external/csharp/search/classes_a.js | 9 +
.../next/external/csharp/search/classes_b.html | 37 +
.../docs/next/external/csharp/search/classes_b.js | 6 +
.../next/external/csharp/search/classes_c.html | 37 +
.../docs/next/external/csharp/search/classes_c.js | 6 +
.../next/external/csharp/search/classes_d.html | 37 +
.../docs/next/external/csharp/search/classes_d.js | 5 +
.../next/external/csharp/search/classes_e.html | 37 +
.../docs/next/external/csharp/search/classes_e.js | 9 +
.../next/external/csharp/search/classes_f.html | 37 +
.../docs/next/external/csharp/search/classes_f.js | 10 +
.../en/docs/next/external/csharp/search/close.svg | 31 +
.../docs/next/external/csharp/search/enums_0.html | 37 +
.../en/docs/next/external/csharp/search/enums_0.js | 4 +
.../docs/next/external/csharp/search/enums_1.html | 37 +
.../en/docs/next/external/csharp/search/enums_1.js | 4 +
.../next/external/csharp/search/enumvalues_0.html | 37 +
.../next/external/csharp/search/enumvalues_0.js | 5 +
.../next/external/csharp/search/enumvalues_1.html | 37 +
.../next/external/csharp/search/enumvalues_1.js | 5 +
.../next/external/csharp/search/enumvalues_2.html | 37 +
.../next/external/csharp/search/enumvalues_2.js | 6 +
.../next/external/csharp/search/enumvalues_3.html | 37 +
.../next/external/csharp/search/enumvalues_3.js | 5 +
.../next/external/csharp/search/enumvalues_4.html | 37 +
.../next/external/csharp/search/enumvalues_4.js | 5 +
.../next/external/csharp/search/enumvalues_5.html | 37 +
.../next/external/csharp/search/enumvalues_5.js | 5 +
.../next/external/csharp/search/enumvalues_6.html | 37 +
.../next/external/csharp/search/enumvalues_6.js | 5 +
.../next/external/csharp/search/enumvalues_7.html | 37 +
.../next/external/csharp/search/enumvalues_7.js | 4 +
.../next/external/csharp/search/enumvalues_8.html | 37 +
.../next/external/csharp/search/enumvalues_8.js | 4 +
.../next/external/csharp/search/enumvalues_9.html | 37 +
.../next/external/csharp/search/enumvalues_9.js | 4 +
.../next/external/csharp/search/enumvalues_a.html | 37 +
.../next/external/csharp/search/enumvalues_a.js | 4 +
.../next/external/csharp/search/enumvalues_b.html | 37 +
.../next/external/csharp/search/enumvalues_b.js | 4 +
.../next/external/csharp/search/functions_0.html | 37 +
.../next/external/csharp/search/functions_0.js | 22 +
.../next/external/csharp/search/functions_1.html | 37 +
.../next/external/csharp/search/functions_1.js | 7 +
.../next/external/csharp/search/functions_10.html | 37 +
.../next/external/csharp/search/functions_10.js | 32 +
.../next/external/csharp/search/functions_11.html | 37 +
.../next/external/csharp/search/functions_11.js | 7 +
.../next/external/csharp/search/functions_12.html | 37 +
.../next/external/csharp/search/functions_12.js | 4 +
.../next/external/csharp/search/functions_13.html | 37 +
.../next/external/csharp/search/functions_13.js | 35 +
.../next/external/csharp/search/functions_2.html | 37 +
.../next/external/csharp/search/functions_2.js | 25 +
.../next/external/csharp/search/functions_3.html | 37 +
.../next/external/csharp/search/functions_3.js | 11 +
.../next/external/csharp/search/functions_4.html | 37 +
.../next/external/csharp/search/functions_4.js | 8 +
.../next/external/csharp/search/functions_5.html | 37 +
.../next/external/csharp/search/functions_5.js | 9 +
.../next/external/csharp/search/functions_6.html | 37 +
.../next/external/csharp/search/functions_6.js | 58 +
.../next/external/csharp/search/functions_7.html | 37 +
.../next/external/csharp/search/functions_7.js | 7 +
.../next/external/csharp/search/functions_8.html | 37 +
.../next/external/csharp/search/functions_8.js | 7 +
.../next/external/csharp/search/functions_9.html | 37 +
.../next/external/csharp/search/functions_9.js | 6 +
.../next/external/csharp/search/functions_a.html | 37 +
.../next/external/csharp/search/functions_a.js | 7 +
.../next/external/csharp/search/functions_b.html | 37 +
.../next/external/csharp/search/functions_b.js | 8 +
.../next/external/csharp/search/functions_c.html | 37 +
.../next/external/csharp/search/functions_c.js | 8 +
.../next/external/csharp/search/functions_d.html | 37 +
.../next/external/csharp/search/functions_d.js | 18 +
.../next/external/csharp/search/functions_e.html | 37 +
.../next/external/csharp/search/functions_e.js | 41 +
.../next/external/csharp/search/functions_f.html | 37 +
.../next/external/csharp/search/functions_f.js | 37 +
.../docs/next/external/csharp/search/mag_sel.svg | 74 +
.../next/external/csharp/search/namespaces_0.html | 37 +
.../next/external/csharp/search/namespaces_0.js | 10 +
.../next/external/csharp/search/nomatches.html | 13 +
.../docs/next/external/csharp/search/pages_0.html | 37 +
.../en/docs/next/external/csharp/search/pages_0.js | 4 +
.../next/external/csharp/search/properties_0.html | 37 +
.../next/external/csharp/search/properties_0.js | 5 +
.../next/external/csharp/search/properties_1.html | 37 +
.../next/external/csharp/search/properties_1.js | 5 +
.../next/external/csharp/search/properties_10.html | 37 +
.../next/external/csharp/search/properties_10.js | 5 +
.../next/external/csharp/search/properties_11.html | 37 +
.../next/external/csharp/search/properties_11.js | 6 +
.../next/external/csharp/search/properties_2.html | 37 +
.../next/external/csharp/search/properties_2.js | 10 +
.../next/external/csharp/search/properties_3.html | 37 +
.../next/external/csharp/search/properties_3.js | 9 +
.../next/external/csharp/search/properties_4.html | 37 +
.../next/external/csharp/search/properties_4.js | 6 +
.../next/external/csharp/search/properties_5.html | 37 +
.../next/external/csharp/search/properties_5.js | 8 +
.../next/external/csharp/search/properties_6.html | 37 +
.../next/external/csharp/search/properties_6.js | 5 +
.../next/external/csharp/search/properties_7.html | 37 +
.../next/external/csharp/search/properties_7.js | 6 +
.../next/external/csharp/search/properties_8.html | 37 +
.../next/external/csharp/search/properties_8.js | 7 +
.../next/external/csharp/search/properties_9.html | 37 +
.../next/external/csharp/search/properties_9.js | 11 +
.../next/external/csharp/search/properties_a.html | 37 +
.../next/external/csharp/search/properties_a.js | 5 +
.../next/external/csharp/search/properties_b.html | 37 +
.../next/external/csharp/search/properties_b.js | 7 +
.../next/external/csharp/search/properties_c.html | 37 +
.../next/external/csharp/search/properties_c.js | 9 +
.../next/external/csharp/search/properties_d.html | 37 +
.../next/external/csharp/search/properties_d.js | 12 +
.../next/external/csharp/search/properties_e.html | 37 +
.../next/external/csharp/search/properties_e.js | 8 +
.../next/external/csharp/search/properties_f.html | 37 +
.../next/external/csharp/search/properties_f.js | 4 +
.../en/docs/next/external/csharp/search/search.css | 257 +
.../en/docs/next/external/csharp/search/search.js | 816 +
.../docs/next/external/csharp/search/search_l.png | Bin 0 -> 567 bytes
.../docs/next/external/csharp/search/search_m.png | Bin 0 -> 158 bytes
.../docs/next/external/csharp/search/search_r.png | Bin 0 -> 553 bytes
.../docs/next/external/csharp/search/searchdata.js | 39 +
.../next/external/csharp/search/variables_0.html | 37 +
.../next/external/csharp/search/variables_0.js | 4 +
.../next/external/csharp/search/variables_1.html | 37 +
.../next/external/csharp/search/variables_1.js | 4 +
.../next/external/csharp/search/variables_2.html | 37 +
.../next/external/csharp/search/variables_2.js | 6 +
.../next/external/csharp/search/variables_3.html | 37 +
.../next/external/csharp/search/variables_3.js | 4 +
.../next/external/csharp/search/variables_4.html | 37 +
.../next/external/csharp/search/variables_4.js | 8 +
.../next/external/csharp/search/variables_5.html | 37 +
.../next/external/csharp/search/variables_5.js | 7 +
.../next/external/csharp/search/variables_6.html | 37 +
.../next/external/csharp/search/variables_6.js | 4 +
.../next/external/csharp/search/variables_7.html | 37 +
.../next/external/csharp/search/variables_7.js | 4 +
.../next/external/csharp/search/variables_8.html | 37 +
.../next/external/csharp/search/variables_8.js | 4 +
.../next/external/csharp/search/variables_9.html | 37 +
.../next/external/csharp/search/variables_9.js | 5 +
.../en/docs/next/external/csharp/splitbar.png | Bin 0 -> 314 bytes
.../csharp/structAvro_1_1AvroDecimal-members.html | 170 +
.../external/csharp/structAvro_1_1AvroDecimal.html | 2011 ++
.../external/csharp/structAvro_1_1AvroDecimal.png | Bin 0 -> 1556 bytes
...ic_1_1ObjectCreator_1_1NameCtorKey-members.html | 89 +
..._1Specific_1_1ObjectCreator_1_1NameCtorKey.html | 131 +
...1_1Specific_1_1ObjectCreator_1_1NameCtorKey.png | Bin 0 -> 894 bytes
.../en/docs/next/external/csharp/sync_off.png | Bin 0 -> 853 bytes
.../en/docs/next/external/csharp/sync_on.png | Bin 0 -> 845 bytes
doc/content/en/docs/next/external/csharp/tab_a.png | Bin 0 -> 142 bytes
doc/content/en/docs/next/external/csharp/tab_b.png | Bin 0 -> 169 bytes
doc/content/en/docs/next/external/csharp/tab_h.png | Bin 0 -> 177 bytes
doc/content/en/docs/next/external/csharp/tab_s.png | Bin 0 -> 184 bytes
doc/content/en/docs/next/external/csharp/tabs.css | 1 +
doc/content/en/featured-background.jpg | Bin 0 -> 496231 bytes
doc/content/en/project/Credits/_index.md | 42 +
doc/content/en/project/Donate/_index.md | 7 +
doc/content/en/project/Download/_index.md | 60 +
doc/content/en/project/Events/_index.md | 7 +
doc/content/en/project/License/_index.md | 7 +
doc/content/en/project/Privacy policy/_index.md | 7 +
doc/content/en/project/Security/_index.md | 7 +
doc/content/en/project/Thanks/_index.md | 7 +
doc/content/en/project/_index.md | 11 +
doc/content/en/search.md | 6 +
doc/deploy.sh | 17 +
doc/docker-compose.yaml | 13 +
doc/forrest.properties | 22 -
doc/layouts/404.html | 8 +
doc/layouts/partials/footer.html | 39 +
doc/layouts/partials/navbar-docs-selector.html | 8 +
doc/layouts/partials/navbar.html | 33 +
doc/layouts/project/baseof.html | 32 +
doc/layouts/project/baseof.print.html | 26 +
doc/layouts/project/list.html | 32 +
doc/layouts/project/list.print.html | 3 +
doc/layouts/project/single.html | 3 +
doc/layouts/shortcodes/avro_version.html | 1 +
doc/netlify.toml | 3 +
doc/package-lock.json | 1645 ++
doc/package.json | 24 +
...n.scss_4853eb546e7a6c0898ed71feae7357c0.content | 7 +
...main.scss_4853eb546e7a6c0898ed71feae7357c0.json | 1 +
...n.scss_4853eb546e7a6c0898ed71feae7357c0.content | 7 +
...main.scss_4853eb546e7a6c0898ed71feae7357c0.json | 1 +
...n.scss_9fadf33d895a46083cdd64396b57ef68.content | 20463 +++++++++++++++++++
...main.scss_9fadf33d895a46083cdd64396b57ef68.json | 1 +
...496231_1920x1080_fill_q75_catmullrom_bottom.jpg | Bin 0 -> 179876 bytes
...9_496231_960x540_fill_q75_catmullrom_bottom.jpg | Bin 0 -> 51428 bytes
...c86_387442_250x125_fill_catmullrom_smart1_2.png | Bin 0 -> 27856 bytes
...c86_387442_600x300_fill_catmullrom_smart1_2.png | Bin 0 -> 104183 bytes
...a7f6061c86_387442_640x0_resize_catmullrom_2.png | Bin 0 -> 94305 bytes
...496231_1920x1080_fill_q75_catmullrom_center.jpg | Bin 0 -> 181806 bytes
...496231_1920x1080_fill_q75_catmullrom_smart1.jpg | Bin 0 -> 181346 bytes
...d9_496231_1920x1080_fill_q75_catmullrom_top.jpg | Bin 0 -> 163667 bytes
...9_496231_960x540_fill_q75_catmullrom_center.jpg | Bin 0 -> 50158 bytes
...9_496231_960x540_fill_q75_catmullrom_smart1.jpg | Bin 0 -> 54602 bytes
...c0d9_496231_960x540_fill_q75_catmullrom_top.jpg | Bin 0 -> 46427 bytes
...e_4777_1920x1080_fill_q75_catmullrom_center.jpg | Bin 0 -> 121904 bytes
...ddde_4777_1920x1080_fill_q75_catmullrom_top.jpg | Bin 0 -> 121904 bytes
...dde_4777_960x540_fill_q75_catmullrom_center.jpg | Bin 0 -> 50143 bytes
...c6ddde_4777_960x540_fill_q75_catmullrom_top.jpg | Bin 0 -> 50143 bytes
doc/src/cli.xconf | 328 -
.../content/htmldocs/canonical-completeness.html | 204 -
doc/src/content/htmldocs/performance-testing.html | 173 -
doc/src/content/mddocs/refactoring-resolution.md | 143 -
doc/src/content/xdocs/gettingstartedjava.xml | 527 -
doc/src/content/xdocs/gettingstartedpython.xml | 258 -
doc/src/content/xdocs/idl.xml | 525 -
doc/src/content/xdocs/index.xml | 96 -
doc/src/content/xdocs/mr.xml | 580 -
doc/src/content/xdocs/sasl.xml | 152 -
doc/src/content/xdocs/site.xml | 91 -
doc/src/content/xdocs/spec.xml | 1688 --
doc/src/content/xdocs/tabs.xml | 39 -
doc/src/resources/images/apache_feather.gif | Bin 4128 -> 0 bytes
doc/src/resources/images/favicon.ico | Bin 766 -> 0 bytes
doc/src/skinconf.xml | 350 -
doc/themes/docsy/.editorconfig | 10 +
doc/themes/docsy/.gitignore | 12 +
doc/themes/docsy/.gitmodules | 6 +
doc/themes/docsy/.prettierrc.json | 5 +
doc/themes/docsy/.s3deploy.yml | 14 +
doc/themes/docsy/CONTRIBUTING.md | 34 +
doc/themes/docsy/LICENSE | 201 +
doc/themes/docsy/README.md | 59 +
.../docsy/assets/icons/logo.png} | Bin
doc/themes/docsy/assets/js/anchor.js | 49 +
doc/themes/docsy/assets/js/base.js | 65 +
doc/themes/docsy/assets/js/markmap.js | 19 +
doc/themes/docsy/assets/js/mermaid.js | 38 +
doc/themes/docsy/assets/js/offline-search.js | 201 +
doc/themes/docsy/assets/js/plantuml.js | 62 +
doc/themes/docsy/assets/js/search.js | 43 +
.../docsy/assets/json/offline-search-index.json | 7 +
doc/themes/docsy/assets/scss/_alerts.scss | 20 +
doc/themes/docsy/assets/scss/_blog.scss | 10 +
doc/themes/docsy/assets/scss/_boxes.scss | 127 +
doc/themes/docsy/assets/scss/_breadcrumb.scss | 7 +
doc/themes/docsy/assets/scss/_buttons.scss | 15 +
doc/themes/docsy/assets/scss/_code.scss | 55 +
doc/themes/docsy/assets/scss/_colors.scss | 41 +
doc/themes/docsy/assets/scss/_content.scss | 82 +
doc/themes/docsy/assets/scss/_main-container.scss | 34 +
doc/themes/docsy/assets/scss/_nav.scss | 218 +
doc/themes/docsy/assets/scss/_pageinfo.scss | 18 +
doc/themes/docsy/assets/scss/_search.scss | 30 +
doc/themes/docsy/assets/scss/_sidebar-toc.scss | 62 +
doc/themes/docsy/assets/scss/_sidebar-tree.scss | 162 +
doc/themes/docsy/assets/scss/_styles_project.scss | 7 +
doc/themes/docsy/assets/scss/_taxonomy.scss | 332 +
doc/themes/docsy/assets/scss/_variables.scss | 132 +
.../docsy/assets/scss/_variables_project.scss | 7 +
doc/themes/docsy/assets/scss/blocks/_blocks.scss | 7 +
doc/themes/docsy/assets/scss/blocks/_cover.scss | 24 +
doc/themes/docsy/assets/scss/main.scss | 65 +
doc/themes/docsy/assets/scss/rtl/_main.scss | 46 +
doc/themes/docsy/assets/scss/rtl/_spacing.scss | 91 +
doc/themes/docsy/assets/scss/section-index.scss | 18 +
.../docsy/assets/scss/support/_functions.scss | 21 +
doc/themes/docsy/assets/scss/support/_mixins.scss | 49 +
.../docsy/assets/scss/support/_utilities.scss | 82 +
doc/themes/docsy/assets/stubs/new-page-template.md | 16 +
doc/themes/docsy/config.toml | 24 +
doc/themes/docsy/i18n/ar.toml | 57 +
doc/themes/docsy/i18n/bg.toml | 59 +
doc/themes/docsy/i18n/bn.toml | 57 +
doc/themes/docsy/i18n/de.toml | 63 +
doc/themes/docsy/i18n/en.toml | 63 +
doc/themes/docsy/i18n/es.toml | 63 +
doc/themes/docsy/i18n/et.toml | 48 +
doc/themes/docsy/i18n/fa.toml | 60 +
doc/themes/docsy/i18n/fr.toml | 59 +
doc/themes/docsy/i18n/hu.toml | 63 +
doc/themes/docsy/i18n/it.toml | 59 +
doc/themes/docsy/i18n/ja.toml | 59 +
doc/themes/docsy/i18n/ko.toml | 59 +
doc/themes/docsy/i18n/nl.toml | 59 +
doc/themes/docsy/i18n/no.toml | 59 +
doc/themes/docsy/i18n/pl.toml | 60 +
doc/themes/docsy/i18n/pt-br.toml | 59 +
doc/themes/docsy/i18n/ru.toml | 59 +
doc/themes/docsy/i18n/tr.toml | 59 +
doc/themes/docsy/i18n/zh.toml | 59 +
doc/themes/docsy/images/screenshot.png | Bin 0 -> 311057 bytes
doc/themes/docsy/images/tn.png | Bin 0 -> 365492 bytes
doc/themes/docsy/layouts/404.html | 8 +
doc/themes/docsy/layouts/_default/baseof.html | 18 +
doc/themes/docsy/layouts/_default/content.html | 29 +
doc/themes/docsy/layouts/_default/list.html | 5 +
doc/themes/docsy/layouts/_default/list.rss.xml | 43 +
doc/themes/docsy/layouts/_default/search.html | 22 +
doc/themes/docsy/layouts/_default/single.html | 5 +
doc/themes/docsy/layouts/_default/taxonomy.html | 35 +
doc/themes/docsy/layouts/_default/terms.html | 8 +
doc/themes/docsy/layouts/blog/baseof.html | 35 +
doc/themes/docsy/layouts/blog/baseof.print.html | 26 +
doc/themes/docsy/layouts/blog/content.html | 31 +
doc/themes/docsy/layouts/blog/list.html | 53 +
doc/themes/docsy/layouts/blog/section.print.html | 3 +
doc/themes/docsy/layouts/blog/single.html | 3 +
doc/themes/docsy/layouts/community/list.html | 19 +
doc/themes/docsy/layouts/docs/baseof.html | 32 +
doc/themes/docsy/layouts/docs/baseof.print.html | 26 +
doc/themes/docsy/layouts/docs/list.html | 32 +
doc/themes/docsy/layouts/docs/list.print.html | 3 +
doc/themes/docsy/layouts/docs/single.html | 3 +
doc/themes/docsy/layouts/home.html | 5 +
doc/themes/docsy/layouts/partials/breadcrumb.html | 18 +
.../docsy/layouts/partials/community_links.html | 29 +
.../docsy/layouts/partials/disqus-comment.html | 23 +
doc/themes/docsy/layouts/partials/favicons.html | 12 +
.../docsy/layouts/partials/featured-image.html | 14 +
doc/themes/docsy/layouts/partials/feedback.html | 59 +
doc/themes/docsy/layouts/partials/footer.html | 39 +
doc/themes/docsy/layouts/partials/head-css.html | 11 +
doc/themes/docsy/layouts/partials/head.html | 54 +
.../docsy/layouts/partials/hooks/body-end.html | 3 +
.../docsy/layouts/partials/hooks/head-end.html | 3 +
.../layouts/partials/navbar-lang-selector.html | 10 +
.../layouts/partials/navbar-version-selector.html | 8 +
doc/themes/docsy/layouts/partials/navbar.html | 35 +
.../docsy/layouts/partials/outputformat.html | 12 +
.../docsy/layouts/partials/page-meta-lastmod.html | 10 +
.../docsy/layouts/partials/page-meta-links.html | 40 +
doc/themes/docsy/layouts/partials/pager.html | 7 +
.../docsy/layouts/partials/print/content-blog.html | 14 +
.../docsy/layouts/partials/print/content.html | 13 +
.../docsy/layouts/partials/print/page-heading.html | 9 +
.../docsy/layouts/partials/print/render.html | 63 +
.../docsy/layouts/partials/print/toc-li-blog.html | 1 +
.../docsy/layouts/partials/print/toc-li.html | 6 +
.../docsy/layouts/partials/reading-time.html | 1 +
doc/themes/docsy/layouts/partials/scripts.html | 64 +
.../docsy/layouts/partials/search-input.html | 29 +
.../docsy/layouts/partials/section-index.html | 31 +
.../docsy/layouts/partials/sidebar-tree.html | 71 +
doc/themes/docsy/layouts/partials/sidebar.html | 23 +
.../layouts/partials/taxonomy_terms_article.html | 12 +
.../layouts/partials/taxonomy_terms_cloud.html | 18 +
.../layouts/partials/taxonomy_terms_clouds.html | 15 +
doc/themes/docsy/layouts/partials/toc.html | 7 +
.../docsy/layouts/partials/version-banner.html | 16 +
doc/themes/docsy/layouts/shortcodes/alert.html | 10 +
.../docsy/layouts/shortcodes/blocks/cover.html | 50 +
.../docsy/layouts/shortcodes/blocks/feature.html | 22 +
.../docsy/layouts/shortcodes/blocks/lead.html | 16 +
.../docsy/layouts/shortcodes/blocks/link-down.html | 7 +
.../docsy/layouts/shortcodes/blocks/section.html | 16 +
doc/themes/docsy/layouts/shortcodes/card-code.html | 20 +
doc/themes/docsy/layouts/shortcodes/card.html | 49 +
doc/themes/docsy/layouts/shortcodes/cardpane.html | 3 +
doc/themes/docsy/layouts/shortcodes/figure.html | 29 +
doc/themes/docsy/layouts/shortcodes/iframe.html | 21 +
doc/themes/docsy/layouts/shortcodes/imgproc.html | 21 +
doc/themes/docsy/layouts/shortcodes/pageinfo.html | 5 +
doc/themes/docsy/layouts/shortcodes/readfile.md | 8 +
doc/themes/docsy/layouts/shortcodes/swaggerui.html | 15 +
doc/themes/docsy/layouts/shortcodes/tab.html | 28 +
doc/themes/docsy/layouts/shortcodes/tabpane.html | 46 +
doc/themes/docsy/layouts/swagger/baseof.html | 35 +
doc/themes/docsy/layouts/swagger/list.html | 32 +
doc/themes/docsy/layouts/swagger/single.html | 3 +
doc/themes/docsy/netlify.toml | 13 +
doc/themes/docsy/postcss.config.js | 21 +
doc/themes/docsy/static/css/prism.css | 208 +
doc/themes/docsy/static/css/shortcodes.css | 2 +
.../docsy/static/css/shortcodes/cards-pane.css | 21 +
.../docsy/static/css/shortcodes/tabbed-pane.css | 18 +
doc/themes/docsy/static/css/swagger-ui.css | 4 +
.../docsy/static/favicons/android-144x144.png | Bin 0 -> 4299 bytes
.../docsy/static/favicons/android-192x192.png | Bin 0 -> 5264 bytes
doc/themes/docsy/static/favicons/android-36x36.png | Bin 0 -> 980 bytes
doc/themes/docsy/static/favicons/android-48x48.png | Bin 0 -> 1071 bytes
doc/themes/docsy/static/favicons/android-72x72.png | Bin 0 -> 1926 bytes
doc/themes/docsy/static/favicons/android-96x96.png | Bin 0 -> 2309 bytes
.../static/favicons/apple-touch-icon-180x180.png | Bin 0 -> 4748 bytes
doc/themes/docsy/static/favicons/favicon-1024.png | Bin 0 -> 27759 bytes
doc/themes/docsy/static/favicons/favicon-16x16.png | Bin 0 -> 498 bytes
doc/themes/docsy/static/favicons/favicon-256.png | Bin 0 -> 8037 bytes
doc/themes/docsy/static/favicons/favicon-32x32.png | Bin 0 -> 807 bytes
doc/themes/docsy/static/favicons/favicon.ico | Bin 0 -> 1150 bytes
doc/themes/docsy/static/favicons/pwa-192x192.png | Bin 0 -> 5264 bytes
doc/themes/docsy/static/favicons/pwa-512x512.png | Bin 0 -> 20743 bytes
doc/themes/docsy/static/favicons/tile150x150.png | Bin 0 -> 8985 bytes
doc/themes/docsy/static/favicons/tile310x150.png | Bin 0 -> 11661 bytes
doc/themes/docsy/static/favicons/tile310x310.png | Bin 0 -> 23621 bytes
doc/themes/docsy/static/favicons/tile70x70.png | Bin 0 -> 3592 bytes
doc/themes/docsy/static/js/deflate.js | 1652 ++
doc/themes/docsy/static/js/prism.js | 21 +
doc/themes/docsy/static/js/swagger-ui-bundle.js | 134 +
.../static/js/swagger-ui-standalone-preset.js | 22 +
doc/themes/docsy/static/js/tabpane-persist.js | 19 +
doc/themes/docsy/static/webfonts/fa-brands-400.eot | Bin 0 -> 129734 bytes
doc/themes/docsy/static/webfonts/fa-brands-400.svg | 3451 ++++
doc/themes/docsy/static/webfonts/fa-brands-400.ttf | Bin 0 -> 129428 bytes
.../docsy/static/webfonts/fa-brands-400.woff | Bin 0 -> 87644 bytes
.../docsy/static/webfonts/fa-brands-400.woff2 | Bin 0 -> 74740 bytes
.../docsy/static/webfonts/fa-regular-400.eot | Bin 0 -> 34394 bytes
.../docsy/static/webfonts/fa-regular-400.svg | 803 +
.../docsy/static/webfonts/fa-regular-400.ttf | Bin 0 -> 34096 bytes
.../docsy/static/webfonts/fa-regular-400.woff | Bin 0 -> 16804 bytes
.../docsy/static/webfonts/fa-regular-400.woff2 | Bin 0 -> 13656 bytes
doc/themes/docsy/static/webfonts/fa-solid-900.eot | Bin 0 -> 192122 bytes
doc/themes/docsy/static/webfonts/fa-solid-900.svg | 4649 +++++
doc/themes/docsy/static/webfonts/fa-solid-900.ttf | Bin 0 -> 191836 bytes
doc/themes/docsy/static/webfonts/fa-solid-900.woff | Bin 0 -> 98020 bytes
.../docsy/static/webfonts/fa-solid-900.woff2 | Bin 0 -> 75336 bytes
doc/themes/docsy/theme.toml | 12 +
doc/themes/docsy/userguide/.gitignore | 2 +
doc/themes/docsy/userguide/.gitmodules | 4 +
doc/themes/docsy/userguide/CONTRIBUTING.md | 28 +
doc/themes/docsy/userguide/LICENSE | 201 +
.../userguide/assets/scss/_variables_project.scss | 5 +
doc/themes/docsy/userguide/config.toml | 244 +
doc/themes/docsy/userguide/content/en/_index.html | 42 +
.../docsy/userguide/content/en/about/_index.md | 140 +
.../content/en/about/featured-background.jpg | Bin 0 -> 221334 bytes
.../docsy/userguide/content/en/community/_index.md | 9 +
.../en/docs/Adding content/Shortcodes/index.md | 499 +
.../en/docs/Adding content/Shortcodes/spruce.jpg | Bin 0 -> 124081 bytes
.../content/en/docs/Adding content/_index.md | 7 +
.../content/en/docs/Adding content/content.md | 353 +
.../content/en/docs/Adding content/feedback.md | 168 +
.../content/en/docs/Adding content/iconsimages.md | 75 +
.../content/en/docs/Adding content/lookandfeel.md | 510 +
.../content/en/docs/Adding content/navigation.md | 284 +
.../content/en/docs/Adding content/print.md | 44 +
.../en/docs/Adding content/repository-links.md | 72 +
.../content/en/docs/Adding content/taxonomy.md | 132 +
.../content/en/docs/Adding content/versioning.md | 88 +
.../content/en/docs/Best practices/_index.md | 8 +
.../en/docs/Best practices/organizing-content.md | 55 +
.../en/docs/Best practices/site-guidance.md | 41 +
.../en/docs/Contribution guidelines/_index.md | 107 +
.../userguide/content/en/docs/Deployment/_index.md | 79 +
.../userguide/content/en/docs/Examples/_index.md | 42 +
.../content/en/docs/Getting started/_index.md | 330 +
.../en/docs/Getting started/quickstart-docker.md | 78 +
.../userguide/content/en/docs/Language/_index.md | 60 +
.../userguide/content/en/docs/Updating/_index.md | 60 +
.../docsy/userguide/content/en/docs/_index.md | 46 +
.../userguide/content/en/featured-background.jpg | Bin 0 -> 221334 bytes
doc/themes/docsy/userguide/content/en/search.md | 5 +
doc/themes/docsy/userguide/deploy.sh | 17 +
doc/themes/docsy/userguide/layouts/sitemap.xml | 22 +
doc/themes/docsy/userguide/package-lock.json | 2355 +++
doc/themes/docsy/userguide/package.json | 24 +
.../userguide/static/google6a6ae8b5b016a20d.html | 1 +
.../docsy/userguide/static/images/feedback.png | Bin 0 -> 306734 bytes
doc/themes/docsy/userguide/static/images/no.png | Bin 0 -> 63561 bytes
.../userguide/static/images/version-banner.png | Bin 0 -> 193399 bytes
doc/themes/docsy/userguide/static/images/yes.png | Bin 0 -> 62780 bytes
1509 files changed, 163722 insertions(+), 5275 deletions(-)
diff --git a/doc/.gitignore b/doc/.gitignore
index 567609b..a6f91d4 100644
--- a/doc/.gitignore
+++ b/doc/.gitignore
@@ -1 +1,3 @@
build/
+node_modules/
+public/
diff --git a/doc/Dockerfile b/doc/Dockerfile
new file mode 100644
index 0000000..f28f7b6
--- /dev/null
+++ b/doc/Dockerfile
@@ -0,0 +1,3 @@
+FROM klakegg/hugo:ext-alpine
+
+RUN apk add git
diff --git a/doc/NOTICE b/doc/NOTICE
index 8b79992..7320bb0 100644
--- a/doc/NOTICE
+++ b/doc/NOTICE
@@ -1,5 +1,5 @@
Apache Avro
-Copyright 2010-2015 The Apache Software Foundation
+Copyright 2010-2022 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (https://www.apache.org/).
@@ -26,16 +26,9 @@ is:
| implied. See the License for the specific language governing
| permissions and limitations under the License.
-The Odiago NOTICE at the time of the contribution:
-
-| This product includes software developed by Odiago, Inc.
-| (https://www.wibidata.com).
-
-The documentation contains the default Apache Forrest skin.
-Apache Forrest includes the following in its NOTICE file:
-
-| Apache Forrest
-| Copyright 2002-2007 The Apache Software Foundation.
+|--------------------------------------------------------------------------
+| This product includes software developed by The Docsy Authors.
+| (https://www.docsy.dev/).
|
| This product includes software developed at
| The Apache Software Foundation (https://www.apache.org/).
@@ -49,35 +42,3 @@ Apache Forrest includes the following in its NOTICE file:
| Other accompanying products do not require attribution, so are not listed.
|
| ------------------------------------------------------------------------
-| This product includes software developed by the OpenSymphony Group
-| http://www.opensymphony.com/
-|
-| This product includes software developed for project Krysalis
-| http://www.krysalis.org/
-|
-| This product includes software developed by Andy Clark.
-| https://people.apache.org/~andyc/neko/
-|
-| This product includes software developed by the ExoLab Project
-| https://www.exolab.org/
-|
-| This product includes software developed by TouchGraph LLC
-| https://www.touchgraph.com/
-|
-| This product includes software developed by Marc De Scheemaecker
-| http://nanoxml.cyberelf.be/
-|
-| This product includes software developed by the ANTLR project
-| https://www.antlr.org/
-|
-| This product includes software developed by Chaperon
-| http://chaperon.sourceforge.net/
-|
-| This product includes software developed by Sal Mangano (included in the XSLT Cookbook published by O'Reilly)
-| https://www.oreilly.com/catalog/xsltckbk/
-|
-| This product includes software developed by The Werken Company.
-| http://jaxen.werken.com/
-|
-| This product includes software developed by the jfor project
-| http://www.jfor.org/
diff --git a/doc/README.md b/doc/README.md
new file mode 100644
index 0000000..78c20fb
--- /dev/null
+++ b/doc/README.md
@@ -0,0 +1,146 @@
+# Apache Avro website
+
+This is a repository of Apache Avro website. The repository of Apache Avro can be found [here](https://github.com/apache/avro).
+
+This website is base on [Hugo](https://gohugo.io) and uses [Docsy](https://www.docsy.dev/) theme.
+
+## Getting started
+
+Clone this repository:
+
+```bash
+git clone --recurse-submodules https://github.com/apache/avro-website.git
+```
+
+You can now edit your own versions of the site’s source files.
+
+If you want to do SCSS edits and want to publish these, you need to install `PostCSS`
+
+```bash
+npm install
+```
+
+## Work flow
+
+1. Building and running the site locally requires a recent `extended` version of [Hugo](https://gohugo.io).
+You can find out more about how to install Hugo for your environment in our
+[Getting started](https://www.docsy.dev/docs/getting-started/#prerequisites-and-installation) guide.
+Once you've made your working copy of the site repo, from the repo root folder, run:
+
+
+ ```
+ hugo server --navigateToChanged
+ ```
+
+1. Edit .md and .html files in `content/` folder
+1. Once satisfied with the changes, commit them:
+
+ ```
+ git commit -a
+ ```
+
+1. Generate the HTML filse
+stop `hugo server --navigateToChanged` (with Ctrl+C) and run
+
+ ```
+ hugo
+ ```
+
+ This will generate the HTMLs in `public/` folder and this is actually what is being deployed
+
+1. Add the modified HTML files to Git
+
+ ```
+ git add .
+ git rm offline-search-index.<<OLD-HASH>>.json
+ git commit -a
+ git push
+ ```
+
+
+This way even when the PR modifies a lot of files we can review only the first commit, the meaningful one, with the modified files in `content/` folder
+
+
+## Running a container locally
+
+You can also run avro-website inside a [Docker](https://docs.docker.com/)
+container, the container runs with a volume bound to the `avro-website`
+folder. This approach doesn't require you to install any dependencies other
+than [Docker Desktop](https://www.docker.com/products/docker-desktop) on
+Windows and Mac, and [Docker Compose](https://docs.docker.com/compose/install/)
+on Linux.
+
+1. Build the docker image
+
+ ```bash
+ docker-compose build
+ ```
+
+1. Run the built image
+
+ ```bash
+ docker-compose up
+ ```
+
+ > NOTE: You can run both commands at once with `docker-compose up --build`.
+
+1. Verify that the service is working.
+
+ Open your web browser and type `http://localhost:1313` in your navigation bar,
+ This opens a local instance of the docsy-example homepage. You can now make
+ changes to the docsy example and those changes will immediately show up in your
+ browser after you save.
+
+### Cleanup
+
+To stop Docker Compose, on your terminal window, press **Ctrl + C**.
+
+To remove the produced images run:
+
+```console
+docker-compose rm
+```
+For more information see the [Docker Compose
+documentation](https://docs.docker.com/compose/gettingstarted/).
+
+### Troubleshooting
+
+As you run the website locally, you may run into the following error:
+
+```
+➜ hugo server
+
+INFO 2021/01/21 21:07:55 Using config file:
+Building sites … INFO 2021/01/21 21:07:55 syncing static files to /
+Built in 288 ms
+Error: Error building site: TOCSS: failed to transform "scss/main.scss" (text/x-scss): resource "scss/scss/main.scss_9fadf33d895a46083cdd64396b57ef68" not found in file cache
+```
+
+This error occurs if you have not installed the extended version of Hugo.
+See our [user guide](https://www.docsy.dev/docs/getting-started/) for instructions on how to install Hugo.
+
+## Edit content
+
+The website content is in `content/en` folder. It contains `.md` (Markdown) and `.html` (HTML) files.
+
+### Layouts
+
+To change the layout of any page edit `layouts/<page>/**.html`. If there is no layout for a given page at that location then copy the one provided by the theme and edit it:
+
+ cp themes/docsy/layouts/<xyz> layouts/<xyz>
+
+### Avro version
+
+When a new version of Apache Avro is released:
+
+1. Change the value of `params.avroversion` in `config.toml`
+2. Add a new entry to the `Releases` pages in the `Blog` section, for example:
+```
+cp content/en/blog/releases/avro-1.10.2-released.md content/en/blog/releases/avro-1.11.0-released.md
+```
+
+### API documentation for C/C++/C# modules
+
+The API documentations for C/C++/C# are built by their respective `build.sh dist` implementations. The final HTML should be copied to the `external` folder, for example:
+
+ cp ../avro/build/avro-doc-1.12.0-SNAPSHOT/api/c/* content/en/docs/external/c/
\ No newline at end of file
diff --git a/doc/src/resources/images/avro-logo.png b/doc/assets/icons/logo.png
similarity index 100%
copy from doc/src/resources/images/avro-logo.png
copy to doc/assets/icons/logo.png
diff --git a/doc/assets/icons/logo.svg b/doc/assets/icons/logo.svg
new file mode 100644
index 0000000..175bc3c
--- /dev/null
+++ b/doc/assets/icons/logo.svg
@@ -0,0 +1 @@
+<svg id="svg" width="100px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="124.32432432432432" viewBox="0, 0, 400,124.32432432432432"><g id="svgg"><path id="path0" d="M0.000 2.833 C 0.000 4.494,0.002 4.500,0.411 4.500 C 0.970 4.500,1.412 5.451,1.737 7.355 C 1.794 7.687,2.038 8.172,2.279 8.432 C 2.520 8.692,2.859 9.225,3.032 9.617 C 3.205 10.008,3.500 10.411,3.688 10.511 C 3.875 10.611,4.128 10.932,4.250 11.224 C 4.372 11.51 [...]
\ No newline at end of file
diff --git a/doc/assets/scss/_styles_project.scss b/doc/assets/scss/_styles_project.scss
new file mode 100644
index 0000000..dc4fba5
--- /dev/null
+++ b/doc/assets/scss/_styles_project.scss
@@ -0,0 +1,5 @@
+.dropdown-menu .show {
+ overflow-y: auto;
+ max-height: 700px;
+ MARTIN_G: 191;
+}
diff --git a/doc/assets/scss/_variables_project.scss b/doc/assets/scss/_variables_project.scss
new file mode 100644
index 0000000..dc4fba5
--- /dev/null
+++ b/doc/assets/scss/_variables_project.scss
@@ -0,0 +1,5 @@
+.dropdown-menu .show {
+ overflow-y: auto;
+ max-height: 700px;
+ MARTIN_G: 191;
+}
diff --git a/doc/build.xml b/doc/build.xml
deleted file mode 100644
index d711608..0000000
--- a/doc/build.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0"?>
-<!--
- - Licensed to the Apache Software Foundation (ASF) under one
- - or more contributor license agreements. See the NOTICE file
- - distributed with this work for additional information
- - regarding copyright ownership. The ASF licenses this file
- - to you under the Apache License, Version 2.0 (the
- - "License"); you may not use this file except in compliance
- - with the License. You may obtain a copy of the License at
- -
- - https://www.apache.org/licenses/LICENSE-2.0
- -
- - Unless required by applicable law or agreed to in writing,
- - software distributed under the License is distributed on an
- - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- - KIND, either express or implied. See the License for the
- - specific language governing permissions and limitations
- - under the License.
- -->
-<project name="doc" default="doc" basedir=".">
-
- <!-- Load user's default properties. -->
- <property file="${user.home}/build.properties" />
-
- <loadfile srcFile="${basedir}/../share/VERSION.txt" property="version">
- <filterchain>
- <striplinebreaks/>
- </filterchain>
- </loadfile>
-
- <property name="build.dir" value="../build/avro-doc-${version}"/>
-
- <target name="doc" depends="forrest.check" description="Generate forrest-based documentation. To use, specify -Dforrest.home=<base of Apache Forrest installation> on the command line." if="forrest.home">
- <mkdir dir="${build.dir}"/>
- <echo file="../build/avro.ent" append="false">
- <!ENTITY AvroVersion "${version}">
- </echo>
- <exec executable="${forrest.home}/bin/forrest" failonerror="true">
- <arg value="-Dproject.configfile=${basedir}/src/cli.xconf"/>
- <arg value="-Dproject.content-dir=src"/>
- <arg value="-Dproject.site=../${build.dir}/"/>
- </exec>
- <copy todir="${build.dir}/examples">
- <fileset dir="examples"/>
- </copy>
- </target>
-
- <target name="forrest.check" unless="forrest.home">
- <fail message="'forrest.home' is not defined. Please pass -Dforrest.home=<base of Apache Forrest installation> to Ant on the command-line." />
- </target>
-
- <target name="clean" description="Delete build files, and their directories">
- <delete dir="${basedir}/build"/>
- </target>
-
-</project>
diff --git a/doc/config.toml b/doc/config.toml
new file mode 100644
index 0000000..900ec56
--- /dev/null
+++ b/doc/config.toml
@@ -0,0 +1,361 @@
+baseURL = "/"
+title = "Apache Avro"
+
+enableRobotsTXT = true
+
+# Hugo allows theme composition (and inheritance). The precedence is from left to right.
+theme = ["docsy"]
+
+# Will give values to .Lastmod etc.
+enableGitInfo = true
+
+# Language settings
+contentDir = "content/en"
+defaultContentLanguage = "en"
+defaultContentLanguageInSubdir = false
+# Useful when translating.
+enableMissingTranslationPlaceholders = true
+
+# Comment out to disable taxonomies in Docsy
+# disableKinds = ["taxonomy", "taxonomyTerm"]
+
+# You can add your own taxonomies
+[taxonomies]
+tag = "tags"
+category = "categories"
+
+[params.taxonomy]
+# set taxonomyCloud = [] to hide taxonomy clouds
+taxonomyCloud = ["tags", "categories"]
+
+# If used, must have same lang as taxonomyCloud
+taxonomyCloudTitle = ["Tag Cloud", "Categories"]
+
+# set taxonomyPageHeader = [] to hide taxonomies on the page headers
+taxonomyPageHeader = ["tags", "categories"]
+
+
+# Highlighting config
+pygmentsCodeFences = true
+pygmentsUseClasses = false
+# Use the new Chroma Go highlighter in Hugo.
+pygmentsUseClassic = false
+#pygmentsOptions = "linenos=table"
+# See https://help.farbox.com/pygments.html
+pygmentsStyle = "tango"
+
+# Configure how URLs look like per section.
+[permalinks]
+blog = "/:section/:year/:month/:day/:slug/"
+
+## Configuration for BlackFriday markdown parser: https://github.com/russross/blackfriday
+[blackfriday]
+plainIDAnchors = true
+hrefTargetBlank = true
+angledQuotes = false
+latexDashes = true
+
+# Image processing configuration.
+[imaging]
+resampleFilter = "CatmullRom"
+quality = 75
+anchor = "smart"
+
+[services]
+[services.googleAnalytics]
+# Comment out the next line to disable GA tracking. Also disables the feature described in [params.ui.feedback].
+# id = "UA-00000000-0"
+
+# Language configuration
+
+[languages]
+[languages.en]
+title = "Apache Avro"
+description = ""
+languageName ="English"
+# Weight used for sorting.
+weight = 1
+
+[markup]
+ [markup.goldmark]
+ [markup.goldmark.renderer]
+ unsafe = true
+ [markup.highlight]
+ # See a complete list of available styles at https://xyproto.github.io/splash/docs/all.html
+ style = "tango"
+ # Uncomment if you want your chosen highlight style used for code blocks without a specified language
+ # guessSyntax = "true"
+
+# Everything below this are Site Params
+
+# Comment out if you don't want the "print entire section" link enabled.
+[outputs]
+section = ["HTML", "print", "RSS"]
+# section = ["HTML", "RSS"]
+
+[params]
+avroversion = "1.11.0"
+copyright = "The Apache Software Foundation"
+privacy_policy = "http://www.apache.org/foundation/policies/privacy.html"
+
+# First one is picked as the Twitter card image if not set on page.
+# images = ["images/project-illustration.png"]
+
+# Menu title if your navbar has a versions selector to access old versions of your site.
+# This menu appears only if you have at least one [params.versions] set.
+version_menu = "Releases"
+
+
+# Flag used in the "version-banner" partial to decide whether to display a
+# banner on every page indicating that this is an archived version of the docs.
+# Set this flag to "true" if you want to display the banner.
+archived_version = false
+
+# The version number for the version of the docs represented in this doc set.
+# Used in the "version-banner" partial to display a version number for the
+# current doc set.
+version = "1.0"
+
+# A link to latest version of the docs. Used in the "version-banner" partial to
+# point people to the main doc site.
+url_latest_version = "https://avro.apache.org"
+
+# Repository configuration (URLs for in-page links to opening issues and suggesting changes)
+github_repo = "https://github.com/apache/avro-website"
+# An optional link to a related project repo. For example, the sibling repository where your product code lives.
+github_project_repo = "https://github.com/apache/avro"
+
+# Specify a value here if your content directory is not in your repo's root directory
+# github_subdir = ""
+
+# Uncomment this if you have a newer GitHub repo with "main" as the default branch,
+# or specify a new value if you want to reference another branch in your GitHub links
+# github_branch= "main"
+
+# Google Custom Search Engine ID. Remove or comment out to disable search.
+# gcs_engine_id = "d72aa9b2712488cc3"
+
+# Enable Algolia DocSearch
+algolia_docsearch = false
+
+# Enable Lunr.js offline search
+offlineSearch = true
+
+# Enable syntax highlighting and copy buttons on code blocks with Prism
+prism_syntax_highlighting = true
+
+# User interface configuration
+[params.ui]
+# Set to true to disable breadcrumb navigation.
+breadcrumb_disable = false
+# Set to true to disable the About link in the site footer
+footer_about_disable = true
+# Set to false if you don't want to display a logo (/assets/icons/logo.svg) in the top navbar
+navbar_logo = true
+# Set to true if you don't want the top navbar to be translucent when over a `block/cover`, like on the homepage.
+navbar_translucent_over_cover_disable = false
+# Enable to show the side bar menu in its compact state.
+sidebar_menu_compact = false
+# Set to true to hide the sidebar search box (the top nav search box will still be displayed if search is enabled)
+sidebar_search_disable = true
+sidebar_menu_foldable = true
+
+# Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events.
+# This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set.
+# If you want this feature, but occasionally need to remove the "Feedback" section from a single page,
+# add "hide_feedback: true" to the page's front matter.
+[params.ui.feedback]
+enable = false
+# The responses that the user sees after clicking "yes" (the page was helpful) or "no" (the page was not helpful).
+yes = 'Glad to hear it! Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.'
+no = 'Sorry to hear that. Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.'
+
+# Adds a reading time to the top of each doc.
+# If you want this feature, but occasionally need to remove the Reading time from a single page,
+# add "hide_readingtime: true" to the page's front matter
+[params.ui.readingtime]
+enable = true
+
+[params.links]
+# End user relevant links. These will show up on left side of footer and in the community page if you have one.
+[[params.links.user]]
+ name = "User mailing list"
+ url = "mailto:user@avro.apache.org"
+ icon = "fa fa-envelope"
+ desc = "Discussion and help from your fellow users"
+[[params.links.user]]
+ name ="Twitter"
+ url = "https://twitter.com/ApacheAvro"
+ icon = "fab fa-twitter"
+ desc = "Follow us on Twitter to get the latest news!"
+[[params.links.user]]
+ name = "Stack Overflow"
+ url = "https://stackoverflow.com/questions/tagged/avro"
+ icon = "fab fa-stack-overflow"
+ desc = "Practical questions and curated answers"
+# Developer relevant links. These will show up on right side of footer and in the community page if you have one.
+[[params.links.developer]]
+ name = "GitHub"
+ url = "https://github.com/apache/avro"
+ icon = "fab fa-github"
+ desc = "Development takes place here!"
+[[params.links.developer]]
+ name = "Chat with other project developers at Slack"
+ url = "https://the-asf.slack.com/"
+ icon = "fab fa-slack"
+ desc = "Chat with other project developers at #avro channel"
+[[params.links.developer]]
+ name = "Developer mailing list"
+ url = "mailto:dev@avro.apache.org"
+ icon = "fa fa-envelope"
+ desc = "Discuss development issues around the project"
+
+
+[[params.versions]]
+ version = "next"
+ url = "/docs/next/"
+
+[[params.versions]]
+ version = "1.11.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.11.0/index.html"
+
+[[params.versions]]
+ version = "1.10.2"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.10.2/index.html"
+
+[[params.versions]]
+ version = "1.10.1"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.10.1/index.html"
+
+[[params.versions]]
+ version = "1.10.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.10.0/index.html"
+
+[[params.versions]]
+ version = "1.9.2"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.9.2/index.html"
+
+[[params.versions]]
+ version = "1.9.1"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.9.1/index.html"
+
+[[params.versions]]
+ version = "1.9.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.9.0/index.html"
+
+[[params.versions]]
+ version = "1.8.2"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.8.2/index.html"
+
+[[params.versions]]
+ version = "1.8.1"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.8.1/index.html"
+
+[[params.versions]]
+ version = "1.8.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.8.0/index.html"
+
+[[params.versions]]
+ version = "1.7.7"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.7.7/index.html"
+
+[[params.versions]]
+ version = "1.7.6"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.7.6/index.html"
+
+[[params.versions]]
+ version = "1.7.5"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.7.5/index.html"
+
+[[params.versions]]
+ version = "1.7.4"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.7.4/index.html"
+
+[[params.versions]]
+ version = "1.7.3"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.7.3/index.html"
+
+[[params.versions]]
+ version = "1.7.2"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.7.2/index.html"
+
+[[params.versions]]
+ version = "1.7.1"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.7.1/index.html"
+
+[[params.versions]]
+ version = "1.7.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.7.0/index.html"
+
+[[params.versions]]
+ version = "1.6.3"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.6.3/index.html"
+
+[[params.versions]]
+ version = "1.6.2"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.6.2/index.html"
+
+[[params.versions]]
+ version = "1.6.1"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.6.1/index.html"
+
+[[params.versions]]
+ version = "1.6.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.6.0/index.html"
+
+[[params.versions]]
+ version = "1.5.4"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.5.4/index.html"
+
+[[params.versions]]
+ version = "1.5.3"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.5.3/index.html"
+
+[[params.versions]]
+ version = "1.5.2"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.5.2/index.html"
+
+[[params.versions]]
+ version = "1.5.1"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.5.1/index.html"
+
+[[params.versions]]
+ version = "1.5.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.5.0/index.html"
+
+[[params.versions]]
+ version = "1.4.1"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.4.1/index.html"
+
+[[params.versions]]
+ version = "1.4.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.4.0/index.html"
+
+[[params.versions]]
+ version = "1.3.3"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.3.3/index.html"
+
+[[params.versions]]
+ version = "1.3.2"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.3.2/index.html"
+
+[[params.versions]]
+ version = "1.3.1"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.3.1/index.html"
+
+[[params.versions]]
+ version = "1.3.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.3.0/index.html"
+
+[[params.versions]]
+ version = "1.2.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.2.0/index.html"
+
+[[params.versions]]
+ version = "1.1.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.1.0/index.html"
+
+[[params.versions]]
+ version = "1.0.0"
+ url = "https://svn.apache.org/repos/asf/avro/site/publish/docs/1.0.0/index.html"
+
\ No newline at end of file
diff --git a/doc/content/en/_index.html b/doc/content/en/_index.html
new file mode 100644
index 0000000..507c017
--- /dev/null
+++ b/doc/content/en/_index.html
@@ -0,0 +1,51 @@
++++
+title = "Apache Avro"
+linkTitle = "Apache Avro"
+
++++
+
+<!-- Copy of default blocks/cover shortcode, but without the (hardcoded) td-overlay--dark style class that breaks the white background. -->
+<section id="td-cover-block-0" class="row td-cover-block td-cover-block--height-med td-overlay -bg-white">
+ <div class="container td-overlay__inner">
+ <div class="row">
+ <div class="col-12">
+ <div class="text-center">
+ <h1 class="display-1 mt-0 mt-md-5 pb-4">Apache Avro™ - a data serialization system</h1>
+ <div class="pt-3 lead">
+ <div class="mx-auto">
+ <a class="btn btn-lg btn-primary mr-3 mb-4" href='{{< relref "/docs" >}}'>
+ Learn More <i class="fas fa-arrow-alt-circle-right ml-2"></i>
+ </a>
+ <a class="btn btn-lg btn-secondary mr-3 mb-4" href='{{< relref "/project/download" >}}'>
+ Download <i class="fas fa-download ml-2 "></i>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</section>
+
+{{% blocks/lead color="primary" %}}
+Apache Avro™ is the leading serialization format for record data, and first choice for streaming data pipelines.
+It offers excellent schema evolution, and has implementations for the JVM (Java, Kotlin, Scala, …), Python, C/C++/C#, PHP, Ruby,
+Rust, JavaScript, and even Perl.
+{{% /blocks/lead %}}
+
+{{< blocks/section color="dark" type="features">}}
+<!-- Note: the number of feature blocks should be a multiple of 3 for optimal display -->
+
+{{% blocks/feature icon="fab fa-java" title="Getting started with Java" url="/docs/getting-started-java" %}}
+For Java / JVM users, find out everything you need to know about specifying a schema, (de)serializing Avro data and code generation.
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fab fa-python" title="Getting started with Python" url="/docs/getting-started-python" %}}
+For Python users, find out everything you need to know about specifying a schema and (de)serializing Avro data.
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fad fa-comments" title="Join Our Community!" url="/community/" %}}
+Learn from or connect with other users in our open and welcoming community. We'd love to hear from you!
+{{% /blocks/feature %}}
+
+{{< /blocks/section >}}
diff --git a/doc/content/en/blog/_index.md b/doc/content/en/blog/_index.md
new file mode 100644
index 0000000..bfe08e9
--- /dev/null
+++ b/doc/content/en/blog/_index.md
@@ -0,0 +1,13 @@
+---
+title: "Blog"
+linkTitle: "Blog"
+menu:
+ main:
+ weight: 30
+---
+
+
+This is the **blog** section. It has two categories: News and Releases.
+
+Files in these directories will be listed in reverse chronological order.
+
diff --git a/doc/content/en/blog/news/_index.md b/doc/content/en/blog/news/_index.md
new file mode 100644
index 0000000..c010487
--- /dev/null
+++ b/doc/content/en/blog/news/_index.md
@@ -0,0 +1,8 @@
+
+---
+title: "News About Apache Avro"
+linkTitle: "News"
+weight: 20
+---
+
+
diff --git a/doc/content/en/blog/news/avro-joins-apache.md b/doc/content/en/blog/news/avro-joins-apache.md
new file mode 100755
index 0000000..eba296e
--- /dev/null
+++ b/doc/content/en/blog/news/avro-joins-apache.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro joins Apache"
+linkTitle: "Avro joins Apache"
+date: 2009-04-10
+---
+
+Avro has joined the Apache Software Foundataion as a Hadoop subproject.
\ No newline at end of file
diff --git a/doc/content/en/blog/news/new-committer-david-mollitor.md b/doc/content/en/blog/news/new-committer-david-mollitor.md
new file mode 100755
index 0000000..780ebbc
--- /dev/null
+++ b/doc/content/en/blog/news/new-committer-david-mollitor.md
@@ -0,0 +1,21 @@
+
+---
+title: "New committer: David Mollitor"
+linkTitle: "New committer: David Mollitor"
+date: 2021-10-05
+---
+
+The Project Management Committee (PMC) for Apache Avro
+has invited David Mollitor to become a committer and we are pleased
+to announce that he has accepted.
+
+Since 2017, David has raised and fixed many issues in the
+Java SDK. Recently he's been finding and providing fixes for subtle
+performance issues. His work is always high-quality and he is
+reactive and pleasant to talk with on code reviews and JIRA.
+
+Being a committer enables easier contribution to the
+project since there is no need to go via the patch
+submission process. This should enable better productivity.
+
+It's great to have you as part of the team, David!
diff --git a/doc/content/en/blog/news/new-committer-martin-grigorov.md b/doc/content/en/blog/news/new-committer-martin-grigorov.md
new file mode 100755
index 0000000..d0ecd1d
--- /dev/null
+++ b/doc/content/en/blog/news/new-committer-martin-grigorov.md
@@ -0,0 +1,21 @@
+
+---
+title: "New committer: Martin Grigorov"
+linkTitle: "New committer: Martin Grigorov"
+date: 2022-01-04
+---
+
+The Project Management Committee (PMC) for Apache Avro
+has invited Martin Grigorov to become a committer and we are pleased
+to announce that he has accepted.
+
+Over the last few months, he has been active, reliable and easy to
+work with on PRs and on the mailing list. His work is of high
+quality, and he has a breadth of experience in many of the SDK languages.
+I'm especially keen to point out the work he's been doing on the website!
+
+Being a committer enables easier contribution to the
+project since there is no need to go via the patch
+submission process. This should enable better productivity.
+
+It's great to have you as part of the team, Martin!
\ No newline at end of file
diff --git a/doc/content/en/blog/releases/_index.md b/doc/content/en/blog/releases/_index.md
new file mode 100644
index 0000000..760a101
--- /dev/null
+++ b/doc/content/en/blog/releases/_index.md
@@ -0,0 +1,8 @@
+
+---
+title: "New Releases"
+linkTitle: "Releases"
+weight: 21
+---
+
+
diff --git a/doc/content/en/blog/releases/avro-1.0.0-released.md b/doc/content/en/blog/releases/avro-1.0.0-released.md
new file mode 100755
index 0000000..a05db5e
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.0.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.0.0"
+linkTitle: "Avro 1.0.0"
+date: 2010-07-15
+---
+
+The first release of Avro is now available. To download, it, use the "Download" link below.
diff --git a/doc/content/en/blog/releases/avro-1.1.0-released.md b/doc/content/en/blog/releases/avro-1.1.0-released.md
new file mode 100755
index 0000000..2d26a68
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.1.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.1.0"
+linkTitle: "Avro 1.1.0"
+date: 2009-09-15
+---
+
+Apache Avro 1.1.0 is now available!
diff --git a/doc/content/en/blog/releases/avro-1.10.0-released.md b/doc/content/en/blog/releases/avro-1.10.0-released.md
new file mode 100755
index 0000000..245bf49
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.10.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.10.0"
+linkTitle: "Avro 1.10.0"
+date: 2020-06-29
+---
+
+Apache Avro 1.10.0 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.10.1-released.md b/doc/content/en/blog/releases/avro-1.10.1-released.md
new file mode 100755
index 0000000..fba8b82
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.10.1-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.10.1"
+linkTitle: "Avro 1.10.1"
+date: 2020-12-03
+---
+
+Apache Avro 1.10.1 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.10.2-released.md b/doc/content/en/blog/releases/avro-1.10.2-released.md
new file mode 100755
index 0000000..260b6ab
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.10.2-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.10.2"
+linkTitle: "Avro 1.10.2"
+date: 2021-03-15
+---
+
+Apache Avro 1.10.2 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.11.0-released.md b/doc/content/en/blog/releases/avro-1.11.0-released.md
new file mode 100755
index 0000000..d184365
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.11.0-released.md
@@ -0,0 +1,50 @@
+
+---
+title: "Avro 1.11.0"
+linkTitle: "Avro 1.11.0"
+date: 2021-10-31
+---
+
+The Apache Avro community is pleased to announce the release of Avro 1.11.0!
+
+All signed release artifacts, signatures and verification instructions can
+be found <a href="{{< relref "/project/download" >}}">here</a>
+
+This release includes 120 Jira issues, including some interesting features:
+
+* Specification: AVRO-3212 Support documentation tags for FIXED types
+* C#: AVRO-2961 Support dotnet framework 5.0
+* C#: AVRO-3225 Prevent memory errors when deserializing untrusted data
+* C++: AVRO-2923 Logical type corrections
+* Java: AVRO-2863 Support Avro core on android
+* Javascript: AVRO-3131 Drop support for node.js 10
+* Perl: AVRO-3190 Fix error when reading from EOF
+* Python: AVRO-2906 Improved performance validating deep record data
+* Python: AVRO-2914 Drop Python 2 support
+* Python: AVRO-3004 Drop Python 3.5 support
+* Ruby: AVRO-3108 Drop Ruby 2.5 support
+
+For the first time, the 1.11.0 release includes experimental support for
+**Rust**. Work is continuing on this donated SDK, but we have not versioned and
+published official artifacts for this release.
+
+**Python**: The avro package fully supports Python 3. We will no longer publish a
+separate avro-python3 package
+
+And of course upgraded dependencies to latest versions, CVE fixes and more:
+https://issues.apache.org/jira/issues/?jql=project%3DAVRO%20AND%20fixVersion%3D1.11.0
+
+The link to all fixed JIRA issues and a brief summary can be found at:
+https://github.com/apache/avro/releases/tag/release-1.11.0
+
+In addition, language-specific release artifacts are available:
+
+* C#: https://www.nuget.org/packages/Apache.Avro/1.11.0
+* Java: from Maven Central,
+* Javascript: https://www.npmjs.com/package/avro-js/v/1.11.0
+* Perl: https://metacpan.org/release/Avro
+* Python 3: https://pypi.org/project/avro/1.11.0
+* Ruby: https://rubygems.org/gems/avro/versions/1.11.0
+
+Thanks to everyone for contributing!
+
diff --git a/doc/content/en/blog/releases/avro-1.2.0-released.md b/doc/content/en/blog/releases/avro-1.2.0-released.md
new file mode 100755
index 0000000..fa32219
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.2.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.2.0"
+linkTitle: "Avro 1.2.0"
+date: 2009-10-15
+---
+
+Apache Avro 1.2.0 is now available!
diff --git a/doc/content/en/blog/releases/avro-1.3.0-released.md b/doc/content/en/blog/releases/avro-1.3.0-released.md
new file mode 100755
index 0000000..a7e754e
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.3.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.3.0"
+linkTitle: "Avro 1.3.0"
+date: 2010-02-26
+---
+
+Apache Avro 1.3.0 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.3.1-released.md b/doc/content/en/blog/releases/avro-1.3.1-released.md
new file mode 100755
index 0000000..b342393
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.3.1-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.3.1"
+linkTitle: "Avro 1.3.1"
+date: 2010-03-19
+---
+
+Apache Avro 1.3.1 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.3.2-released.md b/doc/content/en/blog/releases/avro-1.3.2-released.md
new file mode 100755
index 0000000..a25f755
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.3.2-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.3.2"
+linkTitle: "Avro 1.3.2"
+date: 2010-03-31
+---
+
+Apache Avro 1.3.2 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.3.3-released.md b/doc/content/en/blog/releases/avro-1.3.3-released.md
new file mode 100755
index 0000000..f53f707
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.3.3-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.3.3"
+linkTitle: "Avro 1.3.3"
+date: 2010-07-07
+---
+
+Apache Avro 1.3.3 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.4.0-released.md b/doc/content/en/blog/releases/avro-1.4.0-released.md
new file mode 100755
index 0000000..68fed88
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.4.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.4.0"
+linkTitle: "Avro 1.4.0"
+date: 2010-09-08
+---
+
+Apache Avro 1.4.0 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.4.1-released.md b/doc/content/en/blog/releases/avro-1.4.1-released.md
new file mode 100755
index 0000000..08e6538
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.4.1-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.4.1"
+linkTitle: "Avro 1.4.1"
+date: 2010-10-13
+---
+
+Apache Avro 1.4.1 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.5.0-released.md b/doc/content/en/blog/releases/avro-1.5.0-released.md
new file mode 100755
index 0000000..7f70164
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.5.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.5.0"
+linkTitle: "Avro 1.5.0"
+date: 2011-03-11
+---
+
+Apache Avro 1.5.0 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.5.1-released.md b/doc/content/en/blog/releases/avro-1.5.1-released.md
new file mode 100755
index 0000000..aa5f89f
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.5.1-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.5.1"
+linkTitle: "Avro 1.5.1"
+date: 2011-05-06
+---
+
+Apache Avro 1.5.1 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.5.2-released.md b/doc/content/en/blog/releases/avro-1.5.2-released.md
new file mode 100755
index 0000000..890d5af
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.5.2-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.5.2"
+linkTitle: "Avro 1.5.2"
+date: 2011-08-12
+---
+
+Apache Avro 1.5.2 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.5.3-released.md b/doc/content/en/blog/releases/avro-1.5.3-released.md
new file mode 100755
index 0000000..b77e0f3
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.5.3-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.5.3"
+linkTitle: "Avro 1.5.3"
+date: 2011-08-29
+---
+
+Apache Avro 1.5.3 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.5.4-released.md b/doc/content/en/blog/releases/avro-1.5.4-released.md
new file mode 100755
index 0000000..16ec4fa
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.5.4-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.5.4"
+linkTitle: "Avro 1.5.4"
+date: 2011-09-12
+---
+
+Apache Avro 1.5.4 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.6.0-released.md b/doc/content/en/blog/releases/avro-1.6.0-released.md
new file mode 100755
index 0000000..072562a
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.6.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.6.0"
+linkTitle: "Avro 1.6.0"
+date: 2011-11-02
+---
+
+Apache Avro 1.6.0 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.6.1-released.md b/doc/content/en/blog/releases/avro-1.6.1-released.md
new file mode 100755
index 0000000..3148954
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.6.1-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.6.1"
+linkTitle: "Avro 1.6.1"
+date: 2011-11-14
+---
+
+Apache Avro 1.6.1 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.6.2-released.md b/doc/content/en/blog/releases/avro-1.6.2-released.md
new file mode 100755
index 0000000..1ee0787
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.6.2-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.6.2"
+linkTitle: "Avro 1.6.2"
+date: 2012-02-14
+---
+
+Apache Avro 1.6.2 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.6.3-released.md b/doc/content/en/blog/releases/avro-1.6.3-released.md
new file mode 100755
index 0000000..a5a7d04
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.6.3-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.6.3"
+linkTitle: "Avro 1.6.3"
+date: 2012-03-19
+---
+
+Apache Avro 1.6.3 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.7.0-released.md b/doc/content/en/blog/releases/avro-1.7.0-released.md
new file mode 100755
index 0000000..543fd5f
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.7.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.7.0"
+linkTitle: "Avro 1.7.0"
+date: 2012-06-11
+---
+
+Apache Avro 1.7.0 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.7.1-released.md b/doc/content/en/blog/releases/avro-1.7.1-released.md
new file mode 100755
index 0000000..55c5694
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.7.1-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.7.1"
+linkTitle: "Avro 1.7.1"
+date: 2012-07-18
+---
+
+Apache Avro 1.7.1 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.7.2-released.md b/doc/content/en/blog/releases/avro-1.7.2-released.md
new file mode 100755
index 0000000..b9c2c52
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.7.2-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.7.2"
+linkTitle: "Avro 1.7.2"
+date: 2012-09-25
+---
+
+Apache Avro 1.7.2 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.7.3-released.md b/doc/content/en/blog/releases/avro-1.7.3-released.md
new file mode 100755
index 0000000..23092e5
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.7.3-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.7.3"
+linkTitle: "Avro 1.7.3"
+date: 2012-12-07
+---
+
+Apache Avro 1.7.3 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.7.4-released.md b/doc/content/en/blog/releases/avro-1.7.4-released.md
new file mode 100755
index 0000000..5bb4c7c
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.7.4-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.7.4"
+linkTitle: "Avro 1.7.4"
+date: 2013-02-26
+---
+
+Apache Avro 1.7.4 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.7.5-released.md b/doc/content/en/blog/releases/avro-1.7.5-released.md
new file mode 100755
index 0000000..ee96597
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.7.5-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.7.5"
+linkTitle: "Avro 1.7.5"
+date: 2013-08-19
+---
+
+Apache Avro 1.7.5 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.7.6-released.md b/doc/content/en/blog/releases/avro-1.7.6-released.md
new file mode 100755
index 0000000..b1d450f
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.7.6-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.7.6"
+linkTitle: "Avro 1.7.6"
+date: 2014-01-22
+---
+
+Apache Avro 1.7.6 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.7.7-released.md b/doc/content/en/blog/releases/avro-1.7.7-released.md
new file mode 100755
index 0000000..a9881d4
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.7.7-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.7.7"
+linkTitle: "Avro 1.7.7"
+date: 2014-07-23
+---
+
+Apache Avro 1.7.7 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.8.0-released.md b/doc/content/en/blog/releases/avro-1.8.0-released.md
new file mode 100755
index 0000000..e3a9d8e
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.8.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.8.0"
+linkTitle: "Avro 1.8.0"
+date: 2016-01-29
+---
+
+Apache Avro 1.8.0 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.8.1-released.md b/doc/content/en/blog/releases/avro-1.8.1-released.md
new file mode 100755
index 0000000..fe96bd4
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.8.1-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.8.1"
+linkTitle: "Avro 1.8.1"
+date: 2016-05-19
+---
+
+Apache Avro 1.8.1 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.8.2-released.md b/doc/content/en/blog/releases/avro-1.8.2-released.md
new file mode 100755
index 0000000..4701bb0
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.8.2-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.8.2"
+linkTitle: "Avro 1.8.2"
+date: 2017-05-20
+---
+
+Apache Avro 1.8.2 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.9.0-released.md b/doc/content/en/blog/releases/avro-1.9.0-released.md
new file mode 100755
index 0000000..80b11a8
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.9.0-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.9.0"
+linkTitle: "Avro 1.9.0"
+date: 2019-05-14
+---
+
+Apache Avro 1.9.0 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.9.1-released.md b/doc/content/en/blog/releases/avro-1.9.1-released.md
new file mode 100755
index 0000000..b5844a5
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.9.1-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.9.1"
+linkTitle: "Avro 1.9.1"
+date: 2019-09-02
+---
+
+Apache Avro 1.9.1 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.9.2-released.md b/doc/content/en/blog/releases/avro-1.9.2-released.md
new file mode 100755
index 0000000..c9e65aa
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.9.2-released.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.9.2"
+linkTitle: "Avro 1.9.2"
+date: 2020-02-19
+---
+
+Apache Avro 1.9.2 has been released!
diff --git a/doc/content/en/blog/releases/avro-joins-apache.md b/doc/content/en/blog/releases/avro-joins-apache.md
new file mode 100755
index 0000000..9b5bdf2
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-joins-apache.md
@@ -0,0 +1,8 @@
+
+---
+title: "Avro 1.0.0"
+linkTitle: "Avro 1.0.0"
+date: 2010-04-10
+---
+
+Avro has joined the Apache Software Foundataion as a Hadoop subproject.
diff --git a/doc/content/en/community/_index.md b/doc/content/en/community/_index.md
new file mode 100644
index 0000000..cdade16
--- /dev/null
+++ b/doc/content/en/community/_index.md
@@ -0,0 +1,8 @@
+---
+title: Community
+menu:
+ main:
+ weight: 40
+---
+
+<!--add blocks of content here to add more sections to the community page -->
diff --git a/doc/content/en/docs/_index.md b/doc/content/en/docs/_index.md
new file mode 100755
index 0000000..7b189ff
--- /dev/null
+++ b/doc/content/en/docs/_index.md
@@ -0,0 +1,37 @@
+
+---
+title: "Documentation"
+linkTitle: "Documentation"
+---
+
+## Introduction
+
+Apache Avro™ is a data serialization system.
+
+Avro provides:
+
+* Rich data structures.
+* A compact, fast, binary data format.
+* A container file, to store persistent data.
+* Remote procedure call (RPC).
+* Simple integration with dynamic languages. Code generation is not required to read or write data files nor to use or implement RPC protocols. Code generation as an optional optimization, only worth implementing for statically typed languages.
+
+## Schemas
+
+Avro relies on schemas. When Avro data is read, the schema used when writing it is always present. This permits each datum to be written with no per-value overheads, making serialization both fast and small. This also facilitates use with dynamic, scripting languages, since data, together with its schema, is fully self-describing.
+
+When Avro data is stored in a file, its schema is stored with it, so that files may be processed later by any program. If the program reading the data expects a different schema this can be easily resolved, since both schemas are present.
+
+When Avro is used in RPC, the client and server exchange schemas in the connection handshake. (This can be optimized so that, for most calls, no schemas are actually transmitted.) Since both client and server both have the other's full schema, correspondence between same named fields, missing fields, extra fields, etc. can all be easily resolved.
+
+Avro schemas are defined with JSON . This facilitates implementation in languages that already have JSON libraries.
+
+## Comparison with other systems
+
+Avro provides functionality similar to systems such as [Thrift](https://thrift.apache.org/), [Protocol Buffers](https://code.google.com/p/protobuf/), etc. Avro differs from these systems in the following fundamental aspects.
+
+* Dynamic typing: Avro does not require that code be generated. Data is always accompanied by a schema that permits full processing of that data without code generation, static datatypes, etc. This facilitates construction of generic data-processing systems and languages.
+* Untagged data: Since the schema is present when data is read, considerably less type information need be encoded with data, resulting in smaller serialization size.
+* No manually-assigned field IDs: When a schema changes, both the old and new schema are always present when processing data, so differences may be resolved symbolically, using field names.
+
+
diff --git a/doc/content/en/docs/next/C API/_index.md b/doc/content/en/docs/next/C API/_index.md
new file mode 100644
index 0000000..8387578
--- /dev/null
+++ b/doc/content/en/docs/next/C API/_index.md
@@ -0,0 +1,7 @@
+---
+title: "C API"
+linkTitle: "C API"
+weight: 5
+---
+
+The C API documentation could be found <a href="../external/c/index.html">here</a>.
\ No newline at end of file
diff --git a/doc/content/en/docs/next/C++ API/_index.md b/doc/content/en/docs/next/C++ API/_index.md
new file mode 100644
index 0000000..fd35e40
--- /dev/null
+++ b/doc/content/en/docs/next/C++ API/_index.md
@@ -0,0 +1,7 @@
+---
+title: "C++ API"
+linkTitle: "C++ API"
+weight: 5
+---
+
+The C++ API documentation could be found <a href="../external/c++-api/index.html">here</a>.
\ No newline at end of file
diff --git a/doc/content/en/docs/next/Contribution guidelines/_index.md b/doc/content/en/docs/next/Contribution guidelines/_index.md
new file mode 100644
index 0000000..925b0a3
--- /dev/null
+++ b/doc/content/en/docs/next/Contribution guidelines/_index.md
@@ -0,0 +1,76 @@
+---
+title: "Contribution Guidelines"
+linkTitle: "Contribution Guidelines"
+weight: 10
+---
+
+## How to contribute to Apache Avro
+
+You can contribute to Apache Avro in many ways, so join us and make Avro better!
+
+### Ways to Contribute to Apache Avro
+
+A lot of work goes into maintaining a project like Avro and we can use your help!
+
+You can help us in many ways:
+
+* Help out other users at our [user](mailto:user@avro.apache.org) mailing list
+* Answer questions on [Stackoverflow](http://stackoverflow.com/questions/tagged/avro)
+* Report [your bugs](https://issues.apache.org/jira/browse/AVRO)
+* Implement new features or fix bugs
+* Improve this site
+
+If you want to help out with one of our bugs or want to implement a feature, consider using our [Github mirror](https://github.com/apache/avro).
+
+---
+
+### Github Mirror for Easy Contributing
+
+Avro is mirrored on github so you can contribute with ease:
+
+1. Fork Avro
+1. Implement your feature or fix the bug, and
+1. Send a pull request.
+
+The Github/Apache integration will send the pull request to our developer list, and we will look at your pull request as soon as we can.
+
+### Fork Avro to your Account
+
+So you have an account registered at Github and are ready to start hacking at Avro. First you need to fork the code to your own Github account.
+
+You can find the official mirror for the Apache Avro project at the following location in the official Apache Software Foundation organisation at Github:
+
+ Apache Avro Github mirror: https://github.com/apache/avro
+
+On this page you will find a button with the label _“Fork”_. Click it or use the button below.
+
+<button><i class="fas fa-code-branch"></i> [Fork Avro on GitHub](https://github.com/apache/avro/fork)</button>
+
+Now you have your own copy of Avro to hack on. You can edit directly in the Github web interface–good for minor fixes like documentation errors or clone the project to your workstation.
+
+### Clone Avro to your Workstation
+
+You can use the tooling for Github to get a copy on your workstation or use the commandline:
+```shell
+$ git clone git@github.com:<your userid>/Avro.git
+```
+NB Ensure that you replace `<your userid>` with your actual Github user id, otherwise your clone command will fail.
+
+This shell command will create a local checkout of the git repository.
+
+When you are ready with your change you can ask us to review your changes and to integrate it into Avro by creating a Pull Request.
+
+### Create a Pull Request
+
+Make sure you have pushed your changes to your Github repository. To create a pull request on GitHub follow the instructions you can find [here](https://help.github.com/articles/creating-a-pull-request/).
+
+The Github–Apache integration will automatically send a message to the Avro project that a new pull request is waiting for us.
+
+#### Testing
+
+All pull requests automatically trigger various tests at [Github Actions](https://github.com/apache/avro/actions) on Linux x86_64 and at [Travis CI](https://app.travis-ci.com/github/apache/avro) on Linux ARM64.
+
+## Improve this website
+
+Click on the _Edit this page_ link at the top-right corner of any page. It will navigate you to the source code
+of that page at [Github][https://github.com/apache/avro-website]. Make your edits and send us a Pull Request!
diff --git a/doc/content/en/docs/next/Getting started (Java)/_index.md b/doc/content/en/docs/next/Getting started (Java)/_index.md
new file mode 100644
index 0000000..24a72ca
--- /dev/null
+++ b/doc/content/en/docs/next/Getting started (Java)/_index.md
@@ -0,0 +1,269 @@
+---
+categories: []
+tags: ["java"]
+title: "Getting Started (Java)"
+linkTitle: "Getting Started (Java)"
+weight: 2
+avroversion: 3
+---
+
+This is a short guide for getting started with Apache Avro™ using Java. This guide only covers using Avro for data serialization; see Patrick Hunt's [Avro RPC Quick Start](https://github.com/phunt/avro-rpc-quickstart) for a good introduction to using Avro for RPC.
+
+## Download
+
+Avro implementations for C, C++, C#, Java, PHP, Python, and Ruby can be downloaded from the [Apache Avro™ Download]({{< relref "/project/download" >}}) page. This guide uses Avro {{< avro_version >}}, the latest version at the time of writing. For the examples in this guide, download avro-{{< avro_version >}}.jar and avro-tools-{{< avro_version >}}.jar.
+
+Alternatively, if you are using Maven, add the following dependency to your POM:
+
+```xml
+<dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro</artifactId>
+ <version>{{< avro_version >}}</version>
+</dependency>
+```
+
+As well as the Avro Maven plugin (for performing code generation):
+
+```xml
+<plugin>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-maven-plugin</artifactId>
+ <version>{{< avro_version >}}</version>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>schema</goal>
+ </goals>
+ <configuration>
+ <sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory>
+ <outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+</plugin>
+<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+</plugin>
+```
+
+You may also build the required Avro jars from source. Building Avro is beyond the scope of this guide; see the Build Documentation page in the wiki for more information.
+
+## Defining a schema
+
+Avro schemas are defined using JSON. Schemas are composed of primitive types (null, boolean, int, long, float, double, bytes, and string) and complex types (record, enum, array, map, union, and fixed). You can learn more about Avro schemas and types from the specification, but for now let's start with a simple schema example, user.avsc:
+
+```json
+{"namespace": "example.avro",
+ "type": "record",
+ "name": "User",
+ "fields": [
+ {"name": "name", "type": "string"},
+ {"name": "favorite_number", "type": ["int", "null"]},
+ {"name": "favorite_color", "type": ["string", "null"]}
+ ]
+}
+```
+
+This schema defines a record representing a hypothetical user. (Note that a schema file can only contain a single schema definition.) At minimum, a record definition must include its type ("type": "record"), a name ("name": "User"), and fields, in this case name, favorite_number, and favorite_color. We also define a namespace ("namespace": "example.avro"), which together with the name attribute defines the "full name" of the schema (example.avro.User in this case).
+
+Fields are defined via an array of objects, each of which defines a name and type (other attributes are optional, see the record specification for more details). The type attribute of a field is another schema object, which can be either a primitive or complex type. For example, the name field of our User schema is the primitive type string, whereas the favorite_number and favorite_color fields are both unions, represented by JSON arrays. unions are a complex type that can be any of the [...]
+
+## Serializing and deserializing with code generation
+
+### Compiling the schema
+Code generation allows us to automatically create classes based on our previously-defined schema. Once we have defined the relevant classes, there is no need to use the schema directly in our programs. We use the avro-tools jar to generate code as follows:
+
+```shell
+java -jar /path/to/avro-tools-{{< avro_version >}}.jar compile schema <schema file> <destination>
+```
+
+This will generate the appropriate source files in a package based on the schema's namespace in the provided destination folder. For instance, to generate a User class in package example.avro from the schema defined above, run
+
+```shell
+java -jar /path/to/avro-tools-{{< avro_version >}}.jar compile schema user.avsc .
+```
+
+Note that if you using the Avro Maven plugin, there is no need to manually invoke the schema compiler; the plugin automatically performs code generation on any .avsc files present in the configured source directory.
+
+### Creating Users
+Now that we've completed the code generation, let's create some Users, serialize them to a data file on disk, and then read back the file and deserialize the User objects.
+
+First let's create some Users and set their fields.
+
+```java
+User user1 = new User();
+user1.setName("Alyssa");
+user1.setFavoriteNumber(256);
+// Leave favorite color null
+
+// Alternate constructor
+User user2 = new User("Ben", 7, "red");
+
+// Construct via builder
+User user3 = User.newBuilder()
+ .setName("Charlie")
+ .setFavoriteColor("blue")
+ .setFavoriteNumber(null)
+ .build();
+```
+
+As shown in this example, Avro objects can be created either by invoking a constructor directly or by using a builder. Unlike constructors, builders will automatically set any default values specified in the schema. Additionally, builders validate the data as it set, whereas objects constructed directly will not cause an error until the object is serialized. However, using constructors directly generally offers better performance, as builders create a copy of the datastructure before it [...]
+
+Note that we do not set user1's favorite color. Since that record is of type ["string", "null"], we can either set it to a string or leave it null; it is essentially optional. Similarly, we set user3's favorite number to null (using a builder requires setting all fields, even if they are null).
+
+### Serializing
+Now let's serialize our Users to disk.
+
+```java
+// Serialize user1, user2 and user3 to disk
+DatumWriter<User> userDatumWriter = new SpecificDatumWriter<User>(User.class);
+DataFileWriter<User> dataFileWriter = new DataFileWriter<User>(userDatumWriter);
+dataFileWriter.create(user1.getSchema(), new File("users.avro"));
+dataFileWriter.append(user1);
+dataFileWriter.append(user2);
+dataFileWriter.append(user3);
+dataFileWriter.close();
+```
+
+We create a DatumWriter, which converts Java objects into an in-memory serialized format. The SpecificDatumWriter class is used with generated classes and extracts the schema from the specified generated type.
+
+Next we create a DataFileWriter, which writes the serialized records, as well as the schema, to the file specified in the dataFileWriter.create call. We write our users to the file via calls to the dataFileWriter.append method. When we are done writing, we close the data file.
+
+### Deserializing
+Finally, let's deserialize the data file we just created.
+
+```java
+// Deserialize Users from disk
+DatumReader<User> userDatumReader = new SpecificDatumReader<User>(User.class);
+DataFileReader<User> dataFileReader = new DataFileReader<User>(file, userDatumReader);
+User user = null;
+while (dataFileReader.hasNext()) {
+// Reuse user object by passing it to next(). This saves us from
+// allocating and garbage collecting many objects for files with
+// many items.
+user = dataFileReader.next(user);
+System.out.println(user);
+}
+```
+
+This snippet will output:
+
+```json
+{"name": "Alyssa", "favorite_number": 256, "favorite_color": null}
+{"name": "Ben", "favorite_number": 7, "favorite_color": "red"}
+{"name": "Charlie", "favorite_number": null, "favorite_color": "blue"}
+```
+
+Deserializing is very similar to serializing. We create a SpecificDatumReader, analogous to the SpecificDatumWriter we used in serialization, which converts in-memory serialized items into instances of our generated class, in this case User. We pass the DatumReader and the previously created File to a DataFileReader, analogous to the DataFileWriter, which reads both the schema used by the writer as well as the data from the file on disk. The data will be read using the writer's schema in [...]
+
+Next we use the DataFileReader to iterate through the serialized Users and print the deserialized object to stdout. Note how we perform the iteration: we create a single User object which we store the current deserialized user in, and pass this record object to every call of dataFileReader.next. This is a performance optimization that allows the DataFileReader to reuse the same User object rather than allocating a new User for every iteration, which can be very expensive in terms of obje [...]
+
+### Compiling and running the example code
+This example code is included as a Maven project in the examples/java-example directory in the Avro docs. From this directory, execute the following commands to build and run the example:
+
+```shell
+$ mvn compile # includes code generation via Avro Maven plugin
+$ mvn -q exec:java -Dexec.mainClass=example.SpecificMain
+```
+
+### Beta feature: Generating faster code
+In {{< avro_version >}} release we have introduced a new approach to generating code that speeds up decoding of objects by more than 10% and encoding by more than 30% (future performance enhancements are underway). To ensure a smooth introduction of this change into production systems, this feature is controlled by a feature flag, the system property org.apache.avro.specific.use_custom_coders. In this first release, this feature is off by default. To turn it on, set the system flag to tr [...]
+
+$ mvn -q exec:java -Dexec.mainClass=example.SpecificMain \
+ -Dorg.apache.avro.specific.use_custom_coders=true
+
+Note that you do not have to recompile your Avro schema to have access to this feature. The feature is compiled and built into your code, and you turn it on and off at runtime using the feature flag. As a result, you can turn it on during testing, for example, and then off in production. Or you can turn it on in production, and quickly turn it off if something breaks.
+
+We encourage the Avro community to exercise this new feature early to help build confidence. (For those paying one-demand for compute resources in the cloud, it can lead to meaningful cost savings.) As confidence builds, we will turn this feature on by default, and eventually eliminate the feature flag (and the old code).
+
+## Serializing and deserializing without code generation
+Data in Avro is always stored with its corresponding schema, meaning we can always read a serialized item regardless of whether we know the schema ahead of time. This allows us to perform serialization and deserialization without code generation.
+
+Let's go over the same example as in the previous section, but without using code generation: we'll create some users, serialize them to a data file on disk, and then read back the file and deserialize the users objects.
+
+### Creating users
+First, we use a Parser to read our schema definition and create a Schema object.
+
+```java
+Schema schema = new Schema.Parser().parse(new File("user.avsc"));
+```
+
+Using this schema, let's create some users.
+
+```java
+GenericRecord user1 = new GenericData.Record(schema);
+user1.put("name", "Alyssa");
+user1.put("favorite_number", 256);
+// Leave favorite color null
+
+GenericRecord user2 = new GenericData.Record(schema);
+user2.put("name", "Ben");
+user2.put("favorite_number", 7);
+user2.put("favorite_color", "red");
+```
+
+Since we're not using code generation, we use GenericRecords to represent users. GenericRecord uses the schema to verify that we only specify valid fields. If we try to set a non-existent field (e.g., user1.put("favorite_animal", "cat")), we'll get an AvroRuntimeException when we run the program.
+
+Note that we do not set user1's favorite color. Since that record is of type ["string", "null"], we can either set it to a string or leave it null; it is essentially optional.
+
+### Serializing
+Now that we've created our user objects, serializing and deserializing them is almost identical to the example above which uses code generation. The main difference is that we use generic instead of specific readers and writers.
+
+First we'll serialize our users to a data file on disk.
+
+```java
+// Serialize user1 and user2 to disk
+File file = new File("users.avro");
+DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<GenericRecord>(schema);
+DataFileWriter<GenericRecord> dataFileWriter = new DataFileWriter<GenericRecord>(datumWriter);
+dataFileWriter.create(schema, file);
+dataFileWriter.append(user1);
+dataFileWriter.append(user2);
+dataFileWriter.close();
+```
+
+We create a DatumWriter, which converts Java objects into an in-memory serialized format. Since we are not using code generation, we create a GenericDatumWriter. It requires the schema both to determine how to write the GenericRecords and to verify that all non-nullable fields are present.
+
+As in the code generation example, we also create a DataFileWriter, which writes the serialized records, as well as the schema, to the file specified in the dataFileWriter.create call. We write our users to the file via calls to the dataFileWriter.append method. When we are done writing, we close the data file.
+
+### Deserializing
+Finally, we'll deserialize the data file we just created.
+
+```java
+// Deserialize users from disk
+DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>(schema);
+DataFileReader<GenericRecord> dataFileReader = new DataFileReader<GenericRecord>(file, datumReader);
+GenericRecord user = null;
+while (dataFileReader.hasNext()) {
+// Reuse user object by passing it to next(). This saves us from
+// allocating and garbage collecting many objects for files with
+// many items.
+user = dataFileReader.next(user);
+System.out.println(user);
+```
+
+This outputs:
+
+```json
+{"name": "Alyssa", "favorite_number": 256, "favorite_color": null}
+{"name": "Ben", "favorite_number": 7, "favorite_color": "red"}
+```
+
+Deserializing is very similar to serializing. We create a GenericDatumReader, analogous to the GenericDatumWriter we used in serialization, which converts in-memory serialized items into GenericRecords. We pass the DatumReader and the previously created File to a DataFileReader, analogous to the DataFileWriter, which reads both the schema used by the writer as well as the data from the file on disk. The data will be read using the writer's schema included in the file, and the reader's sc [...]
+
+Next, we use the DataFileReader to iterate through the serialized users and print the deserialized object to stdout. Note how we perform the iteration: we create a single GenericRecord object which we store the current deserialized user in, and pass this record object to every call of dataFileReader.next. This is a performance optimization that allows the DataFileReader to reuse the same record object rather than allocating a new GenericRecord for every iteration, which can be very expen [...]
+
+### Compiling and running the example code
+This example code is included as a Maven project in the examples/java-example directory in the Avro docs. From this directory, execute the following commands to build and run the example:
+
+```shell
+$ mvn compile
+$ mvn -q exec:java -Dexec.mainClass=example.GenericMain
+```
\ No newline at end of file
diff --git a/doc/content/en/docs/next/Getting started (Python)/_index.md b/doc/content/en/docs/next/Getting started (Python)/_index.md
new file mode 100644
index 0000000..0f50a70
--- /dev/null
+++ b/doc/content/en/docs/next/Getting started (Python)/_index.md
@@ -0,0 +1,123 @@
+---
+categories: []
+tags: ["python"]
+title: "Getting Started (Python)"
+linkTitle: "Getting Started (Python)"
+weight: 3
+---
+
+This is a short guide for getting started with Apache Avro™ using Python. This guide only covers using Avro for data serialization; see Patrick Hunt's Avro RPC Quick Start for a good introduction to using Avro for RPC.
+
+## Notice for Python 3 users
+A package called "avro-python3" had been provided to support Python 3 previously, but the codebase was consolidated into the "avro" package and that supports both Python 2 and 3 now. The avro-python3 package will be removed in the near future, so users should use the "avro" package instead. They are mostly API compatible, but there's a few minor difference (e.g., function name capitalization, such as avro.schema.Parse vs avro.schema.parse).
+
+## Download
+For Python, the easiest way to get started is to install it from PyPI. Python's Avro API is available over PyPi.
+
+```shell
+$ python3 -m pip install avro
+```
+
+The official releases of the Avro implementations for C, C++, C#, Java, PHP, Python, and Ruby can be downloaded from the Apache Avro™ Releases page. This guide uses Avro {{< avro_version >}}, the latest version at the time of writing. Download and unzip avro-{{< avro_version >}}.tar.gz, and install via python setup.py (this will probably require root privileges). Ensure that you can import avro from a Python prompt.
+
+```shell
+$ tar xvf avro-{{< avro_version >}}.tar.gz
+$ cd avro-{{< avro_version >}}
+$ python setup.py install
+$ python
+>>> import avro # should not raise ImportError
+```
+
+Alternatively, you may build the Avro Python library from source. From your the root Avro directory, run the commands
+
+```shell
+$ cd lang/py/
+$ python3 -m pip install -e .
+$ python
+```
+
+## Defining a schema
+Avro schemas are defined using JSON. Schemas are composed of primitive types (null, boolean, int, long, float, double, bytes, and string) and complex types (record, enum, array, map, union, and fixed). You can learn more about Avro schemas and types from the specification, but for now let's start with a simple schema example, user.avsc:
+
+```json
+{"namespace": "example.avro",
+ "type": "record",
+ "name": "User",
+ "fields": [
+ {"name": "name", "type": "string"},
+ {"name": "favorite_number", "type": ["int", "null"]},
+ {"name": "favorite_color", "type": ["string", "null"]}
+ ]
+}
+```
+
+This schema defines a record representing a hypothetical user. (Note that a schema file can only contain a single schema definition.) At minimum, a record definition must include its type ("type": "record"), a name ("name": "User"), and fields, in this case name, favorite_number, and favorite_color. We also define a namespace ("namespace": "example.avro"), which together with the name attribute defines the "full name" of the schema (example.avro.User in this case).
+
+Fields are defined via an array of objects, each of which defines a name and type (other attributes are optional, see the record specification for more details). The type attribute of a field is another schema object, which can be either a primitive or complex type. For example, the name field of our User schema is the primitive type string, whereas the favorite_number and favorite_color fields are both unions, represented by JSON arrays. unions are a complex type that can be any of the [...]
+
+## Serializing and deserializing without code generation
+Data in Avro is always stored with its corresponding schema, meaning we can always read a serialized item, regardless of whether we know the schema ahead of time. This allows us to perform serialization and deserialization without code generation. Note that the Avro Python library does not support code generation.
+
+Try running the following code snippet, which serializes two users to a data file on disk, and then reads back and deserializes the data file:
+
+```python
+import avro.schema
+from avro.datafile import DataFileReader, DataFileWriter
+from avro.io import DatumReader, DatumWriter
+
+schema = avro.schema.parse(open("user.avsc", "rb").read())
+
+writer = DataFileWriter(open("users.avro", "wb"), DatumWriter(), schema)
+writer.append({"name": "Alyssa", "favorite_number": 256})
+writer.append({"name": "Ben", "favorite_number": 7, "favorite_color": "red"})
+writer.close()
+
+reader = DataFileReader(open("users.avro", "rb"), DatumReader())
+for user in reader:
+ print user
+reader.close()
+```
+
+This outputs:
+
+```json
+{u'favorite_color': None, u'favorite_number': 256, u'name': u'Alyssa'}
+{u'favorite_color': u'red', u'favorite_number': 7, u'name': u'Ben'}
+```
+
+Do make sure that you open your files in binary mode (i.e. using the modes wb or rb respectively). Otherwise you might generate corrupt files due to automatic replacement of newline characters with the platform-specific representations.
+
+Let's take a closer look at what's going on here.
+
+```python
+schema = avro.schema.parse(open("user.avsc", "rb").read())
+```
+
+avro.schema.parse takes a string containing a JSON schema definition as input and outputs a avro.schema.Schema object (specifically a subclass of Schema, in this case RecordSchema). We're passing in the contents of our user.avsc schema file here.
+
+```python
+writer = DataFileWriter(open("users.avro", "wb"), DatumWriter(), schema)
+```
+
+We create a DataFileWriter, which we'll use to write serialized items to a data file on disk. The DataFileWriter constructor takes three arguments:
+
+* The file we'll serialize to
+* A DatumWriter, which is responsible for actually serializing the items to Avro's binary format (DatumWriters can be used separately from DataFileWriters, e.g., to perform IPC with Avro).
+* The schema we're using. The DataFileWriter needs the schema both to write the schema to the data file, and to verify that the items we write are valid items and write the appropriate fields.
+writer.append({"name": "Alyssa", "favorite_number": 256})
+writer.append({"name": "Ben", "favorite_number": 7, "favorite_color": "red"})
+
+We use DataFileWriter.append to add items to our data file. Avro records are represented as Python dicts. Since the field favorite_color has type ["int", "null"], we are not required to specify this field, as shown in the first append. Were we to omit the required name field, an exception would be raised. Any extra entries not corresponding to a field are present in the dict are ignored.
+
+```python
+reader = DataFileReader(open("users.avro", "rb"), DatumReader())
+```
+
+We open the file again, this time for reading back from disk. We use a DataFileReader and DatumReader analagous to the DataFileWriter and DatumWriter above.
+
+```python
+for user in reader:
+ print user
+```
+
+The DataFileReader is an iterator that returns dicts corresponding to the serialized items.
\ No newline at end of file
diff --git a/doc/content/en/docs/next/IDL Language/_index.md b/doc/content/en/docs/next/IDL Language/_index.md
new file mode 100644
index 0000000..025575f
--- /dev/null
+++ b/doc/content/en/docs/next/IDL Language/_index.md
@@ -0,0 +1,347 @@
+---
+title: "IDL Language"
+linkTitle: "IDL Language"
+weight: 8
+---
+
+## Introduction
+This document defines Avro IDL, a higher-level language for authoring Avro schemata. Before reading this document, you should have familiarity with the concepts of schemata and protocols, as well as the various primitive and complex types available in Avro.
+
+## Overview
+
+### Purpose
+The aim of the Avro IDL language is to enable developers to author schemata in a way that feels more similar to common programming languages like Java, C++, or Python. Additionally, the Avro IDL language may feel more familiar for those users who have previously used the interface description languages (IDLs) in other frameworks like Thrift, Protocol Buffers, or CORBA.
+
+### Usage
+Each Avro IDL file defines a single Avro Protocol, and thus generates as its output a JSON-format Avro Protocol file with extension .avpr.
+
+To convert a _.avdl_ file into a _.avpr_ file, it may be processed by the `idl` tool. For example:
+```shell
+$ java -jar avro-tools.jar idl src/test/idl/input/namespaces.avdl /tmp/namespaces.avpr
+$ head /tmp/namespaces.avpr
+{
+ "protocol" : "TestNamespace",
+ "namespace" : "avro.test.protocol",
+```
+The `idl` tool can also process input to and from _stdin_ and _stdout_. See `idl --help` for full usage information.
+
+A Maven plugin is also provided to compile .avdl files. To use it, add something like the following to your pom.xml:
+```xml
+<build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>idl-protocol</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+</build>
+```
+
+## Defining a Protocol in Avro IDL
+An Avro IDL file consists of exactly one protocol definition. The minimal protocol is defined by the following code:
+```java
+protocol MyProtocol {
+}
+```
+This is equivalent to (and generates) the following JSON protocol definition:
+```json
+{
+"protocol" : "MyProtocol",
+ "types" : [ ],
+ "messages" : {
+ }
+}
+```
+The namespace of the protocol may be changed using the @namespace annotation:
+```java
+@namespace("mynamespace")
+protocol MyProtocol {
+}
+```
+This notation is used throughout Avro IDL as a way of specifying properties for the annotated element, as will be described later in this document.
+
+Protocols in Avro IDL can contain the following items:
+
+* Imports of external protocol and schema files.
+* Definitions of named schemata, including records, errors, enums, and fixeds.
+* Definitions of RPC messages
+
+## Imports
+Files may be imported in one of three formats:
+
+* An IDL file may be imported with a statement like:
+
+ `import idl "foo.avdl";`
+
+* A JSON protocol file may be imported with a statement like:
+
+ `import protocol "foo.avpr";`
+
+* A JSON schema file may be imported with a statement like:
+
+ `import schema "foo.avsc";`
+
+Messages and types in the imported file are added to this file's protocol.
+
+Imported file names are resolved relative to the current IDL file.
+
+## Defining an Enumeration
+Enums are defined in Avro IDL using a syntax similar to C or Java. An Avro Enum supports optional default values. In the case that a reader schema is unable to recognize a symbol written by the writer, the reader will fall back to using the defined default value. This default is only used when an incompatible symbol is read. It is not used if the enum field is missing.
+
+Example Writer Enum Definition
+```java
+enum Shapes {
+ SQUARE, TRIANGLE, CIRCLE, OVAL
+}
+```
+Example Reader Enum Definition
+```java
+enum Shapes {
+ SQUARE, TRIANGLE, CIRCLE
+} = CIRCLE;
+```
+In the above example, the reader will use the default value of `CIRCLE` whenever reading data written with the `OVAL` symbol of the writer. Also note that, unlike the JSON format, anonymous enums cannot be defined.
+
+## Defining a Fixed Length Field
+Fixed fields are defined using the following syntax:
+```
+fixed MD5(16);
+```
+This example defines a fixed-length type called MD5 which contains 16 bytes.
+
+## Defining Records and Errors
+Records are defined in Avro IDL using a syntax similar to a struct definition in C:
+```java
+record Employee {
+ string name;
+ boolean active = true;
+ long salary;
+}
+```
+The above example defines a record with the name “Employee” with three fields.
+
+To define an error, simply use the keyword _error_ instead of _record_. For example:
+```java
+error Kaboom {
+ string explanation;
+ int result_code = -1;
+}
+```
+Each field in a record or error consists of a type and a name, optional property annotations and an optional default value.
+
+A type reference in Avro IDL must be one of:
+
+* A primitive type
+* A logical type
+* A named schema defined prior to this usage in the same Protocol
+* A complex type (array, map, or union)
+
+### Primitive Types
+The primitive types supported by Avro IDL are the same as those supported by Avro's JSON format. This list includes _int_, _long_, _string_, _boolean_, _float_, _double_, _null_, and _bytes_.
+
+### Logical Types
+Some of the logical types supported by Avro's JSON format are also supported by Avro IDL. The currently supported types are:
+
+* _decimal_ (logical type decimal)
+* _date_ (logical type date)
+* _time_ms_ (logical type time-millis)
+* _timestamp_ms_ (logical type timestamp-millis)
+
+TODO FIX LINKS ABOVE
+
+For example:
+```java
+record Job {
+ string jobid;
+ date submitDate;
+ time_ms submitTime;
+ timestamp_ms finishTime;
+ decimal(9,2) finishRatio;
+}
+```
+
+Logical types can also be specified via an annotation, which is useful for logical types for which a keyword does not exist:
+
+```java
+record Job {
+ string jobid;
+ @logicalType("timestamp-micros")
+ long finishTime;
+}
+```
+
+### References to Named Schemata
+If a named schema has already been defined in the same Avro IDL file, it may be referenced by name as if it were a primitive type:
+```java
+record Card {
+ Suit suit; // refers to the enum Card defined above
+ int number;
+}
+```
+
+### Default Values
+Default values for fields may be optionally specified by using an equals sign after the field name followed by a JSON expression indicating the default value. This JSON is interpreted as described in the spec. TODO fix link!
+
+### Complex Types
+
+#### Arrays
+Array types are written in a manner that will seem familiar to C++ or Java programmers. An array of any type t is denoted `array<t>`. For example, an array of strings is denoted `array<string>`, and a multidimensional array of Foo records would be `array<array<Foo>>`.
+
+#### Maps
+Map types are written similarly to array types. An array that contains values of type t is written `map<t>`. As in the JSON schema format, all maps contain `string`-type keys.
+
+#### Unions
+Union types are denoted as `union { typeA, typeB, typeC, ... }`. For example, this record contains a string field that is optional (unioned with null), and a field containing either a precise or a imprecise number:
+```java
+record RecordWithUnion {
+ union { null, string } optionalString;
+ union { decimal(12, 6), float } number;
+}
+```
+Note that the same restrictions apply to Avro IDL unions as apply to unions defined in the JSON format; namely, a record may not contain multiple elements of the same type. Also, fields/parameters that use the union type and have a default parameter must specify a default value of the same type as the **first** union type.
+
+Because it occurs so often, there is a special shorthand to denote a union of `null` with another type. In the following snippet, the first three fields have identical types:
+
+```java
+record RecordWithUnion {
+ union { null, string } optionalString1 = null;
+ string? optionalString2 = null;
+ string? optionalString3; // No default value
+ string? optionalString4 = "something";
+}
+```
+
+Note that unlike explicit unions, the position of the `null` type is fluid; it will be the first or last type depending on the default value (if any). So in the example above, all fields are valid.
+
+## Defining RPC Messages
+The syntax to define an RPC message within a Avro IDL protocol is similar to the syntax for a method declaration within a C header file or a Java interface. To define an RPC message add which takes two arguments named _foo_ and _bar_, returning an _int_, simply include the following definition within the protocol:
+```java
+int add(int foo, int bar = 0);
+```
+Message arguments, like record fields, may specify default values.
+
+To define a message with no response, you may use the alias _void_, equivalent to the Avro _null_ type:
+```java
+void logMessage(string message);
+```
+If you have previously defined an error type within the same protocol, you may declare that a message can throw this error using the syntax:
+```java
+void goKaboom() throws Kaboom;
+```
+To define a one-way message, use the keyword `oneway` after the parameter list, for example:
+```java
+void fireAndForget(string message) oneway;
+```
+
+## Other Language Features
+
+### Comments
+All Java-style comments are supported within a Avro IDL file. Any text following _//_ on a line is ignored, as is any text between _/*_ and _*/_, possibly spanning multiple lines.
+
+Comments that begin with _/**_ are used as the documentation string for the type or field definition that follows the comment.
+
+### Escaping Identifiers
+Occasionally, one will need to use a reserved language keyword as an identifier. In order to do so, backticks (`) may be used to escape the identifier. For example, to define a message with the literal name error, you may write:
+```java
+void `error`();
+```
+This syntax is allowed anywhere an identifier is expected.
+
+### Annotations for Ordering and Namespaces
+Java-style annotations may be used to add additional properties to types and fields throughout Avro IDL.
+
+For example, to specify the sort order of a field within a record, one may use the `@order` annotation before the field name as follows:
+```java
+record MyRecord {
+ string @order("ascending") myAscendingSortField;
+ string @order("descending") myDescendingField;
+ string @order("ignore") myIgnoredField;
+}
+```
+A field's type may also be preceded by annotations, e.g.:
+```java
+record MyRecord {
+ @java-class("java.util.ArrayList") array<string> myStrings;
+}
+```
+This can be used to support java classes that can be serialized/deserialized via their `toString`/`String constructor`, e.g.:
+```java
+record MyRecord {
+ @java-class("java.math.BigDecimal") string value;
+ @java-key-class("java.io.File") map<string> fileStates;
+ array<@java-class("java.math.BigDecimal") string> weights;
+}
+```
+Similarly, a `@namespace` annotation may be used to modify the namespace when defining a named schema. For example:
+```java
+@namespace("org.apache.avro.firstNamespace")
+protocol MyProto {
+ @namespace("org.apache.avro.someOtherNamespace")
+ record Foo {}
+
+ record Bar {}
+}
+```
+will define a protocol in the _firstNamespace_ namespace. The record _Foo_ will be defined in _someOtherNamespace_ and _Bar_ will be defined in _firstNamespace_ as it inherits its default from its container.
+
+Type and field aliases are specified with the `@aliases` annotation as follows:
+```java
+@aliases(["org.old.OldRecord", "org.ancient.AncientRecord"])
+record MyRecord {
+ string @aliases(["oldField", "ancientField"]) myNewField;
+}
+```
+Some annotations like those listed above are handled specially. All other annotations are added as properties to the protocol, message, schema or field.
+
+## Complete Example
+The following is a complete example of a Avro IDL file that shows most of the above features:
+```java
+/**
+ * An example protocol in Avro IDL
+ */
+@namespace("org.apache.avro.test")
+protocol Simple {
+
+ @aliases(["org.foo.KindOf"])
+ enum Kind {
+ FOO,
+ BAR, // the bar enum value
+ BAZ
+ }
+
+ fixed MD5(16);
+
+ record TestRecord {
+ @order("ignore")
+ string name;
+
+ @order("descending")
+ Kind kind;
+
+ MD5 hash;
+
+ union { MD5, null} @aliases(["hash"]) nullableHash;
+
+ array<long> arrayOfLongs;
+ }
+
+ error TestError {
+ string message;
+ }
+
+ string hello(string greeting);
+ TestRecord echo(TestRecord `record`);
+ int add(int arg1, int arg2);
+ bytes echoBytes(bytes data);
+ void `error`() throws TestError;
+ void ping() oneway;
+}
+```
+Additional examples may be found in the Avro source tree under the `src/test/idl/input` directory.
\ No newline at end of file
diff --git a/doc/content/en/docs/next/Java API/_index.md b/doc/content/en/docs/next/Java API/_index.md
new file mode 100644
index 0000000..67d0721
--- /dev/null
+++ b/doc/content/en/docs/next/Java API/_index.md
@@ -0,0 +1,7 @@
+---
+title: "Java API"
+linkTitle: "Java API"
+weight: 4
+---
+
+The Javadocs could be found [here](https://avro.apache.org/docs/current/api/java/index.html)
\ No newline at end of file
diff --git a/doc/content/en/docs/next/MapReduce guide/_index.md b/doc/content/en/docs/next/MapReduce guide/_index.md
new file mode 100644
index 0000000..150649b
--- /dev/null
+++ b/doc/content/en/docs/next/MapReduce guide/_index.md
@@ -0,0 +1,375 @@
+---
+title: "MapReduce guide"
+linkTitle: "MapReduce guide"
+weight: 7
+---
+
+Avro provides a convenient way to represent complex data structures within a Hadoop MapReduce job. Avro data can be used as both input to and output from a MapReduce job, as well as the intermediate format. The example in this guide uses Avro data for all three, but it's possible to mix and match; for instance, MapReduce can be used to aggregate a particular field in an Avro record.
+
+This guide assumes basic familiarity with both Hadoop MapReduce and Avro. See the [Hadoop documentation](https://hadoop.apache.org/docs/current/) and the [Avro getting started guide](./getting-started-java/) for introductions to these projects. This guide uses the old MapReduce API (`org.apache.hadoop.mapred`) and the new MapReduce API (`org.apache.hadoop.mapreduce`).
+
+## Setup
+The code from this guide is included in the Avro docs under examples/mr-example. The example is set up as a Maven project that includes the necessary Avro and MapReduce dependencies and the Avro Maven plugin for code generation, so no external jars are needed to run the example. In particular, the POM includes the following dependencies:
+```xml
+<dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro</artifactId>
+ <version>{{< avro_version >}}</version>
+</dependency>
+<dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-mapred</artifactId>
+ <version>{{< avro_version >}}</version>
+</dependency>
+<dependency>
+ <groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-client</artifactId>
+ <version>3.1.2</version>
+</dependency>
+```
+And the following plugin:
+```xml
+<plugin>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-maven-plugin</artifactId>
+ <version>{{< avro_version >}}</version>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>schema</goal>
+ </goals>
+ <configuration>
+ <sourceDirectory>${project.basedir}/../</sourceDirectory>
+ <outputDirectory>${project.basedir}/target/generated-sources/</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+</plugin>
+```
+
+If you do not configure the *sourceDirectory* and *outputDirectory* properties, the defaults will be used. The *sourceDirectory* property defaults to *src/main/avro*. The *outputDirectory* property defaults to *target/generated-sources*. You can change the paths to match your project layout.
+
+Alternatively, Avro jars can be downloaded directly from the Apache Avro™ Releases [page](https://avro.apache.org/releases.html). The relevant Avro jars for this guide are *avro-{{< avro_version >}}.jar* and *avro-mapred-{{< avro_version >}}.jar*, as well as *avro-tools-{{< avro_version >}}.jar* for code generation and viewing Avro data files as JSON. In addition, you will need to install Hadoop in order to use MapReduce.
+
+## Example: ColorCount
+Below is a simple example of a MapReduce that uses Avro. There is an example for both the old (org.apache.hadoop.mapred) and new (org.apache.hadoop.mapreduce) APIs under *examples/mr-example/src/main/java/example/*. _MapredColorCount_ is the example for the older mapred API while _MapReduceColorCount_ is the example for the newer mapreduce API. Both examples are below, but we will detail the mapred API in our subsequent examples.
+
+MapredColorCount.java:
+```java
+package example;
+
+import java.io.IOException;
+
+import org.apache.avro.*;
+import org.apache.avro.Schema.Type;
+import org.apache.avro.mapred.*;
+import org.apache.hadoop.conf.*;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.mapred.*;
+import org.apache.hadoop.util.*;
+
+import example.avro.User;
+
+public class MapredColorCount extends Configured implements Tool {
+
+ public static class ColorCountMapper extends AvroMapper<User, Pair<CharSequence, Integer>> {
+ @Override
+ public void map(User user, AvroCollector<Pair<CharSequence, Integer>> collector, Reporter reporter)
+ throws IOException {
+ CharSequence color = user.getFavoriteColor();
+ // We need this check because the User.favorite_color field has type ["string", "null"]
+ if (color == null) {
+ color = "none";
+ }
+ collector.collect(new Pair<CharSequence, Integer>(color, 1));
+ }
+ }
+
+ public static class ColorCountReducer extends AvroReducer<CharSequence, Integer,
+ Pair<CharSequence, Integer>> {
+ @Override
+ public void reduce(CharSequence key, Iterable<Integer> values,
+ AvroCollector<Pair<CharSequence, Integer>> collector,
+ Reporter reporter)
+ throws IOException {
+ int sum = 0;
+ for (Integer value : values) {
+ sum += value;
+ }
+ collector.collect(new Pair<CharSequence, Integer>(key, sum));
+ }
+ }
+
+ public int run(String[] args) throws Exception {
+ if (args.length != 2) {
+ System.err.println("Usage: MapredColorCount <input path> <output path>");
+ return -1;
+ }
+
+ JobConf conf = new JobConf(getConf(), MapredColorCount.class);
+ conf.setJobName("colorcount");
+
+ FileInputFormat.setInputPaths(conf, new Path(args[0]));
+ FileOutputFormat.setOutputPath(conf, new Path(args[1]));
+
+ AvroJob.setMapperClass(conf, ColorCountMapper.class);
+ AvroJob.setReducerClass(conf, ColorCountReducer.class);
+
+ // Note that AvroJob.setInputSchema and AvroJob.setOutputSchema set
+ // relevant config options such as input/output format, map output
+ // classes, and output key class.
+ AvroJob.setInputSchema(conf, User.getClassSchema());
+ AvroJob.setOutputSchema(conf, Pair.getPairSchema(Schema.create(Type.STRING),
+ Schema.create(Type.INT)));
+
+ JobClient.runJob(conf);
+ return 0;
+ }
+
+ public static void main(String[] args) throws Exception {
+ int res = ToolRunner.run(new Configuration(), new MapredColorCount(), args);
+ System.exit(res);
+ }
+}
+```
+
+MapReduceColorCount.java:
+```java
+package example;
+
+import java.io.IOException;
+
+import org.apache.avro.Schema;
+import org.apache.avro.mapred.AvroKey;
+import org.apache.avro.mapred.AvroValue;
+import org.apache.avro.mapreduce.AvroJob;
+import org.apache.avro.mapreduce.AvroKeyInputFormat;
+import org.apache.avro.mapreduce.AvroKeyValueOutputFormat;
+import org.apache.hadoop.conf.Configured;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.mapreduce.Job;
+import org.apache.hadoop.mapreduce.Mapper;
+import org.apache.hadoop.mapreduce.Reducer;
+import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
+import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
+import org.apache.hadoop.util.Tool;
+import org.apache.hadoop.util.ToolRunner;
+
+import example.avro.User;
+
+public class MapReduceColorCount extends Configured implements Tool {
+
+ public static class ColorCountMapper extends
+ Mapper<AvroKey<User>, NullWritable, Text, IntWritable> {
+
+ @Override
+ public void map(AvroKey<User> key, NullWritable value, Context context)
+ throws IOException, InterruptedException {
+
+ CharSequence color = key.datum().getFavoriteColor();
+ if (color == null) {
+ color = "none";
+ }
+ context.write(new Text(color.toString()), new IntWritable(1));
+ }
+ }
+
+ public static class ColorCountReducer extends
+ Reducer<Text, IntWritable, AvroKey<CharSequence>, AvroValue<Integer>> {
+
+ @Override
+ public void reduce(Text key, Iterable<IntWritable> values,
+ Context context) throws IOException, InterruptedException {
+
+ int sum = 0;
+ for (IntWritable value : values) {
+ sum += value.get();
+ }
+ context.write(new AvroKey<CharSequence>(key.toString()), new AvroValue<Integer>(sum));
+ }
+ }
+
+ public int run(String[] args) throws Exception {
+ if (args.length != 2) {
+ System.err.println("Usage: MapReduceColorCount <input path> <output path>");
+ return -1;
+ }
+
+ Job job = new Job(getConf());
+ job.setJarByClass(MapReduceColorCount.class);
+ job.setJobName("Color Count");
+
+ FileInputFormat.setInputPaths(job, new Path(args[0]));
+ FileOutputFormat.setOutputPath(job, new Path(args[1]));
+
+ job.setInputFormatClass(AvroKeyInputFormat.class);
+ job.setMapperClass(ColorCountMapper.class);
+ AvroJob.setInputKeySchema(job, User.getClassSchema());
+ job.setMapOutputKeyClass(Text.class);
+ job.setMapOutputValueClass(IntWritable.class);
+
+ job.setOutputFormatClass(AvroKeyValueOutputFormat.class);
+ job.setReducerClass(ColorCountReducer.class);
+ AvroJob.setOutputKeySchema(job, Schema.create(Schema.Type.STRING));
+ AvroJob.setOutputValueSchema(job, Schema.create(Schema.Type.INT));
+
+ return (job.waitForCompletion(true) ? 0 : 1);
+ }
+
+ public static void main(String[] args) throws Exception {
+ int res = ToolRunner.run(new MapReduceColorCount(), args);
+ System.exit(res);
+ }
+}
+```
+ColorCount reads in data files containing *User* records, defined in _examples/user.avsc_, and counts the number of instances of each favorite color. (This example draws inspiration from the canonical _WordCount_ MapReduce application.) This example uses the old MapReduce API. See MapReduceAvroWordCount, found under _doc/examples/mr-example/src/main/java/example/_ to see the new MapReduce API example. The User schema is defined as follows:
+```json
+{"namespace": "example.avro",
+ "type": "record",
+ "name": "User",
+ "fields": [
+ {"name": "name", "type": "string"},
+ {"name": "favorite_number", "type": ["int", "null"]},
+ {"name": "favorite_color", "type": ["string", "null"]}
+ ]
+}
+```
+This schema is compiled into the *User* class used by *ColorCount* via the Avro Maven plugin (see _examples/mr-example/pom.xml_ for how this is set up).
+
+*ColorCountMapper* essentially takes a *User* as input and extracts the User's favorite color, emitting the key-value pair `<favoriteColor, 1>`. _ColorCountReducer_ then adds up how many occurrences of a particular favorite color were emitted, and outputs the result as a Pair record. These Pairs are serialized to an Avro data file.
+
+## Running ColorCount
+The _ColorCount_ application is provided as a Maven project in the Avro docs under _examples/mr-example_. To build the project, including the code generation of the User schema, run:
+```shell
+mvn compile
+```
+Next, run _GenerateData_ from `examples/mr-examples` to create an Avro data file, `input/users.avro`, containing 20 Users with favorite colors chosen randomly from a list:
+```shell
+mvn exec:java -q -Dexec.mainClass=example.GenerateData
+```
+Besides creating the data file, GenerateData prints the JSON representations of the Users generated to stdout, for example:
+```json
+{"name": "user", "favorite_number": null, "favorite_color": "red"}
+{"name": "user", "favorite_number": null, "favorite_color": "green"}
+{"name": "user", "favorite_number": null, "favorite_color": "purple"}
+{"name": "user", "favorite_number": null, "favorite_color": null}
+...
+```
+Now we're ready to run ColorCount. We specify our freshly-generated input folder as the input path and output as our output folder (note that MapReduce will not start a job if the output folder already exists):
+```shell
+mvn exec:java -q -Dexec.mainClass=example.MapredColorCount -Dexec.args="input output"
+```
+Once ColorCount completes, checking the contents of the new output directory should yield the following:
+```shell
+$ ls output/
+part-00000.avro _SUCCESS
+```
+You can check the contents of the generated Avro file using the avro-tools jar:
+```shell
+$ java -jar /path/to/avro-tools-{{< avro_version >}}.jar tojson output/part-00000.avro
+{"value": 3, "key": "blue"}
+{"value": 7, "key": "green"}
+{"value": 1, "key": "none"}
+{"value": 2, "key": "orange"}
+{"value": 3, "key": "purple"}
+{"value": 2, "key": "red"}
+{"value": 2, "key": "yellow"}
+```
+Now let's go over the ColorCount example in detail.
+
+## AvroMapper - org.apache.hadoop.mapred API
+
+The easiest way to use Avro data files as input to a MapReduce job is to subclass `AvroMapper`. An `AvroMapper` defines a `map` function that takes an Avro datum as input and outputs a key/value pair represented as a Pair record. In the ColorCount example, ColorCountMapper is an AvroMapper that takes a User as input and outputs a `Pair<CharSequence, Integer>>`, where the CharSequence key is the user's favorite color and the Integer value is 1.
+```java
+public static class ColorCountMapper extends AvroMapper<User, Pair<CharSequence, Integer>> {
+ @Override
+ public void map(User user, AvroCollector<Pair<CharSequence, Integer>> collector, Reporter reporter)
+ throws IOException {
+ CharSequence color = user.getFavoriteColor();
+ // We need this check because the User.favorite_color field has type ["string", "null"]
+ if (color == null) {
+ color = "none";
+ }
+ collector.collect(new Pair<CharSequence, Integer>(color, 1));
+ }
+}
+```
+In order to use our AvroMapper, we must call AvroJob.setMapperClass and AvroJob.setInputSchema.
+```java
+AvroJob.setMapperClass(conf, ColorCountMapper.class);
+AvroJob.setInputSchema(conf, User.getClassSchema());
+```
+Note that `AvroMapper` does not implement the `Mapper` interface. Under the hood, the specified Avro data files are deserialized into AvroWrappers containing the actual data, which are processed by a Mapper that calls the configured AvroMapper's map function. AvroJob.setInputSchema sets up the relevant configuration parameters needed to make this happen, thus you should not need to call `JobConf.setMapperClass`, `JobConf.setInputFormat`, `JobConf.setMapOutputKeyClass`, `JobConf.setMapOut [...]
+
+## Mapper - org.apache.hadoop.mapreduce API
+This document will not go into all the differences between the mapred and mapreduce APIs, however will describe the main differences. As you can see, ColorCountMapper is now a subclass of the Hadoop Mapper class and is passed an AvroKey as it's key. Additionally, the AvroJob method calls were slightly changed.
+```java
+ public static class ColorCountMapper extends
+ Mapper<AvroKey<User>, NullWritable, Text, IntWritable> {
+
+ @Override
+ public void map(AvroKey<User> key, NullWritable value, Context context)
+ throws IOException, InterruptedException {
+
+ CharSequence color = key.datum().getFavoriteColor();
+ if (color == null) {
+ color = "none";
+ }
+ context.write(new Text(color.toString()), new IntWritable(1));
+ }
+ }
+```
+
+## AvroReducer - org.apache.hadoop.mapred API
+Analogously to AvroMapper, an AvroReducer defines a reducer function that takes the key/value types output by an AvroMapper (or any mapper that outputs Pairs) and outputs a key/value pair represented a Pair record. In the ColorCount example, ColorCountReducer is an AvroReducer that takes the CharSequence key representing a favorite color and the `Iterable<Integer>` representing the counts for that color (they should all be 1 in this example) and adds up the counts.
+```java
+public static class ColorCountReducer extends AvroReducer<CharSequence, Integer,
+ Pair<CharSequence, Integer>> {
+ @Override
+ public void reduce(CharSequence key, Iterable<Integer> values,
+ AvroCollector<Pair<CharSequence, Integer>> collector,
+ Reporter reporter)
+ throws IOException {
+ int sum = 0;
+ for (Integer value : values) {
+ sum += value;
+ }
+ collector.collect(new Pair<CharSequence, Integer>(key, sum));
+ }
+}
+```
+In order to use our AvroReducer, we must call AvroJob.setReducerClass and AvroJob.setOutputSchema.
+```java
+AvroJob.setReducerClass(conf, ColorCountReducer.class);
+AvroJob.setOutputSchema(conf, Pair.getPairSchema(Schema.create(Type.STRING),
+ Schema.create(Type.INT)));
+```
+Note that _AvroReducer_ does not implement the _Reducer_ interface. The intermediate Pairs output by the mapper are split into _AvroKeys_ and _AvroValues_, which are processed by a Reducer that calls the configured AvroReducer's `reduce` function. `AvroJob.setOutputSchema` sets up the relevant configuration parameters needed to make this happen, thus you should not need to call `JobConf.setReducerClass`, `JobConf.setOutputFormat`, `JobConf.setOutputKeyClass`, `JobConf.setMapOutputKeyClas [...]
+
+## Reduce - org.apache.hadoop.mapreduce API
+As before we not detail every difference between the APIs. As with the _Mapper_ change _ColorCountReducer_ is now a subclass of _Reducer_ and _AvroKey_ and _AvroValue_ are emitted. Additionally, the _AvroJob_ method calls were slightly changed.
+```java
+ public static class ColorCountReducer extends
+ Reducer<Text, IntWritable, AvroKey<CharSequence>, AvroValue<Integer>> {
+
+ @Override
+ public void reduce(Text key, Iterable<IntWritable> values,
+ Context context) throws IOException, InterruptedException {
+
+ int sum = 0;
+ for (IntWritable value : values) {
+ sum += value.get();
+ }
+ context.write(new AvroKey<CharSequence>(key.toString()), new AvroValue<Integer>(sum));
+ }
+ }
+```
+
+## Learning more
+The mapred API allows users to mix Avro AvroMappers and AvroReducers with non-Avro Mappers and Reducers and the mapreduce API allows users input Avro and output non-Avro or vice versa.
+
+The mapred package has API org.apache.avro.mapred documentation as does the `org.apache.avro.mapreduce` package. MapReduce API (`org.apache.hadoop.mapreduce`). Similarily to the mapreduce package, it's possible with the mapred API to implement your own Mappers and Reducers directly using the public classes provided in these libraries. See the `AvroWordCount` application, found under _examples/mr-example/src/main/java/example/AvroWordCount.java_ in the Avro documentation, for an example o [...]
diff --git a/doc/content/en/docs/next/SASL profile/_index.md b/doc/content/en/docs/next/SASL profile/_index.md
new file mode 100644
index 0000000..c1f469f
--- /dev/null
+++ b/doc/content/en/docs/next/SASL profile/_index.md
@@ -0,0 +1,72 @@
+---
+title: "SASL profile"
+linkTitle: "SASL profile"
+weight: 9
+---
+
+## Introduction
+SASL ([RFC 2222](https://www.ietf.org/rfc/rfc2222.txt)) provides a framework for authentication and security of network protocols. Each protocol that uses SASL is meant to define a SASL profile. This document provides a SASL profile for connection-based Avro RPC.
+
+## Overview
+SASL negotiation proceeds as a series of message interactions over a connection between a client and server using a selected SASL mechanism. The client starts this negotiation by sending its chosen mechanism name with an initial (possibly empty) message. Negotiation proceeds with the exchange of messages until either side indicates success or failure. The content of the messages is mechanism-specific. If the negotiation succeeds, then the session can proceed over the connection, otherwis [...]
+
+Some mechanisms continue to process session data after negotiation (e.g., encrypting it), while some specify that further session data is transmitted unmodifed.
+
+## Negotiation
+
+### Commands
+Avro SASL negotiation uses four one-byte commands.
+
+* 0: START Used in a client's initial message.
+* 1: CONTINUE Used while negotiation is ongoing.
+* 2: FAIL Terminates negotiation unsuccessfully.
+* 3: COMPLETE Terminates negotiation sucessfully.
+
+The format of a START message is:
+
+`| 0 | 4-byte mechanism name length | mechanism name | 4-byte payload length | payload data |`
+
+The format of a CONTINUE message is:
+
+`| 1 | 4-byte payload length | payload data |`
+
+The format of a FAIL message is:
+
+`| 2 | 4-byte message length | UTF-8 message |`
+
+The format of a COMPLETE message is:
+
+`| 3 | 4-byte payload length | payload data |`
+
+### Process
+Negotiation is initiated by a client sending a START command containing the client's chosen mechanism name and any mechanism-specific payload data.
+
+The server and client then interchange some number (possibly zero) of CONTINUE messages. Each message contains payload data that is processed by the security mechanism to generate the next message.
+
+Once either the client or server send a FAIL message then negotiation has failed. UTF-8-encoded text is included in the failure message. Once either a FAIL message has been sent or received, or any other error occurs in the negotiation, further communication on this connection must cease.
+
+Once either the client or server send a COMPLETE message then negotiation has completed successfully. Session data may now be transmitted over the connection until it is closed by either side.
+
+## Session Data
+If no SASL QOP (quality of protection) is negotiated, then all subsequent writes to/reads over this connection are written/read unmodified. In particular, messages use Avro [framing](#Message+Framing), and are of the form:
+
+`| 4-byte frame length | frame data | ... | 4 zero bytes |`
+
+If a SASL QOP is negotiated, then it must be used by the connection for all subsequent messages. This is done by wrapping each non-empty frame written using the security mechanism and unwrapping each non-empty frame read. The length written in each non-empty frame is the length of the wrapped data. Complete frames must be passed to the security mechanism for unwrapping. Unwrapped data is then passed to the application as the content of the frame.
+
+If at any point processing fails due to wrapping, unwrapping or framing errors, then all further communication on this connection must cease.
+
+## Anonymous Mechanism
+The SASL anonymous mechanism ([RFC 2245](https://www.ietf.org/rfc/rfc2222.txt)) is quite simple to implement. In particular, an initial anonymous request may be prefixed by the following static sequence:
+
+`| 0 | 0009 | ANONYMOUS | 0000 |`
+
+If a server uses the anonymous mechanism, it should check that the mechanism name in the start message prefixing the first request received is 'ANONYMOUS', then simply prefix its initial response with a COMPLETE message of:
+
+`| 3 | 0000 |`
+
+If an anonymous server recieves some other mechanism name, then it may respond with a FAIL message as simple as:
+
+`| 2 | 0000 |`
+
+Note that the anonymous mechanism need add no additional round-trip messages between client and server. The START message can be piggybacked on the initial request and the COMPLETE or FAIL message can be piggybacked on the initial response.
\ No newline at end of file
diff --git a/doc/content/en/docs/next/Specification/_index.md b/doc/content/en/docs/next/Specification/_index.md
new file mode 100755
index 0000000..55ffcee
--- /dev/null
+++ b/doc/content/en/docs/next/Specification/_index.md
@@ -0,0 +1,762 @@
+
+---
+title: "Specification"
+linkTitle: "Specification"
+weight: 4
+date: 2021-10-25
+---
+
+## Introduction
+This document defines Apache Avro. It is intended to be the authoritative specification. Implementations of Avro must adhere to this document.
+
+## Schema Declaration {#schema-declaration}
+A Schema is represented in [JSON](https://www.json.org/) by one of:
+
+* A JSON string, naming a defined type.
+* A JSON object, of the form:
+```json
+{"type": "typeName" ...attributes...}
+```
+where _typeName_ is either a primitive or derived type name, as defined below. Attributes not defined in this document are permitted as metadata, but must not affect the format of serialized data.
+* A JSON array, representing a union of embedded types.
+
+## Primitive Types
+The set of primitive type names is:
+
+* _null_: no value
+* _boolean_: a binary value
+* _int_: 32-bit signed integer
+* _long_: 64-bit signed integer
+* _float_: single precision (32-bit) IEEE 754 floating-point number
+* _double_: double precision (64-bit) IEEE 754 floating-point number
+* _bytes_: sequence of 8-bit unsigned bytes
+* _string_: unicode character sequence
+
+Primitive types have no specified attributes.
+
+Primitive type names are also defined type names. Thus, for example, the schema "string" is equivalent to:
+```json
+{"type": "string"}
+```
+
+## Complex Types
+Avro supports six kinds of complex types: _records_, _enums_, _arrays_, _maps_, _unions_ and _fixed_.
+
+### Records {#schema-record}
+Records use the type name "record" and support three attributes:
+
+* _name_: a JSON string providing the name of the record (required).
+* _namespace_, a JSON string that qualifies the name;
+* _doc_: a JSON string providing documentation to the user of this schema (optional).
+* _aliases_: a JSON array of strings, providing alternate names for this record (optional).
+* _fields_: a JSON array, listing fields (required). Each field is a JSON object with the following attributes:
+ * _name_: a JSON string providing the name of the field (required), and
+ * _doc_: a JSON string describing this field for users (optional).
+ * _type_: a [schema]({{< ref "#schema-declaration" >}} "Schema declaration"), as defined above
+ * _default_: A default value for this field, only used when reading instances that lack the field for schema evolution purposes. The presence of a default value does not make the field optional at encoding time. Permitted values depend on the field's schema type, according to the table below. Default values for union fields correspond to the first schema in the union. Default values for bytes and fixed fields are JSON strings, where Unicode code points 0-255 are mapped to unsigned 8-bi [...]
+
+*field default values*
+| **avro type** | **json type** | **example** |
+|---|---|---:|
+| null | null | null |
+| boolean | boolean | true |
+| int,long | integer | 1 |
+| float,double | number | 1.1 |
+| bytes | string | "\u00FF" |
+| string | string | "foo" |
+| record | object | {"a": 1} |
+| enum | string | "FOO" |
+| array | array | [1] |
+| map | object | {"a": 1} |
+| fixed | string | "\u00ff" |
+
+ * order: specifies how this field impacts sort ordering of this record (optional). Valid values are "ascending" (the default), "descending", or "ignore". For more details on how this is used, see the sort order section below.
+ * aliases: a JSON array of strings, providing alternate names for this field (optional).
+
+For example, a linked-list of 64-bit values may be defined with:
+```json
+{
+ "type": "record",
+ "name": "LongList",
+ "aliases": ["LinkedLongs"], // old name for this
+ "fields" : [
+ {"name": "value", "type": "long"}, // each element has a long
+ {"name": "next", "type": ["null", "LongList"]} // optional next element
+ ]
+}
+```
+
+### Enums
+Enums use the type name "enum" and support the following attributes:
+
+* _name_: a JSON string providing the name of the enum (required).
+* _namespace_, a JSON string that qualifies the name;
+* _aliases_: a JSON array of strings, providing alternate names for this enum (optional).
+* _doc_: a JSON string providing documentation to the user of this schema (optional).
+* _symbols_: a JSON array, listing symbols, as JSON strings (required). All symbols in an enum must be unique; duplicates are prohibited. Every symbol must match the regular expression [A-Za-z_][A-Za-z0-9_]* (the same requirement as for [names]({{< ref "#names" >}} "Names")).
+* _default_: A default value for this enumeration, used during resolution when the reader encounters a symbol from the writer that isn't defined in the reader's schema (optional). The value provided here must be a JSON string that's a member of the symbols array. See documentation on schema resolution for how this gets used.
+
+For example, playing card suits might be defined with:
+```json
+{
+ "type": "enum",
+ "name": "Suit",
+ "symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
+}
+```
+
+### Arrays
+Arrays use the type name "array" and support a single attribute:
+
+* _items_: the schema of the array's items.
+
+For example, an array of strings is declared with:
+```json
+{
+ "type": "array",
+ "items" : "string",
+ "default": []
+}
+```
+
+### Maps
+Maps use the type name "map" and support one attribute:
+
+* _values_: the schema of the map's values.
+
+Map keys are assumed to be strings.
+
+For example, a map from string to long is declared with:
+```json
+{
+ "type": "map",
+ "values" : "long",
+ "default": {}
+}
+```
+
+### Unions
+Unions, as mentioned above, are represented using JSON arrays. For example, ["null", "string"] declares a schema which may be either a null or string.
+
+(Note that when a [default value]({{< ref "#schema-record" >}} "Schema record") is specified for a record field whose type is a union, the type of the default value must match the first element of the union. Thus, for unions containing "null", the "null" is usually listed first, since the default value of such unions is typically null.)
+
+Unions may not contain more than one schema with the same type, except for the named types record, fixed and enum. For example, unions containing two array types or two map types are not permitted, but two types with different names are permitted. (Names permit efficient resolution when reading and writing unions.)
+
+Unions may not immediately contain other unions.
+
+### Fixed
+Fixed uses the type name "fixed" and supports two attributes:
+
+* _name_: a string naming this fixed (required).
+* _namespace_, a string that qualifies the name;
+* _aliases_: a JSON array of strings, providing alternate names for this enum (optional).
+* _size_: an integer, specifying the number of bytes per value (required).
+
+For example, 16-byte quantity may be declared with:
+```json
+{"type": "fixed", "size": 16, "name": "md5"}
+```
+
+### Names {#names}
+Record, enums and fixed are named types. Each has a fullname that is composed of two parts; a name and a namespace. Equality of names is defined on the fullname.
+
+The name portion of a fullname, record field names, and enum symbols must:
+
+* start with [A-Za-z_]
+* subsequently contain only [A-Za-z0-9_]
+
+A namespace is a dot-separated sequence of such names. The empty string may also be used as a namespace to indicate the null namespace. Equality of names (including field names and enum symbols) as well as fullnames is case-sensitive.
+
+The null namespace may not be used in a dot-separated sequence of names. So the grammar for a namespace is:
+```
+ <empty> | <name>[(<dot><name>)*]
+```
+
+In record, enum and fixed definitions, the fullname is determined in one of the following ways:
+
+* A name and namespace are both specified. For example, one might use "name": "X", "namespace": "org.foo" to indicate the fullname org.foo.X.
+* A fullname is specified. If the name specified contains a dot, then it is assumed to be a fullname, and any namespace also specified is ignored. For example, use "name": "org.foo.X" to indicate the fullname org.foo.X.
+* A name only is specified, i.e., a name that contains no dots. In this case the namespace is taken from the most tightly enclosing schema or protocol. For example, if "name": "X" is specified, and this occurs within a field of the record definition of org.foo.Y, then the fullname is org.foo.X. If there is no enclosing namespace then the null namespace is used.
+
+References to previously defined names are as in the latter two cases above: if they contain a dot they are a fullname, if they do not contain a dot, the namespace is the namespace of the enclosing definition.
+
+Primitive type names have no namespace and their names may not be defined in any namespace.
+
+A schema or protocol may not contain multiple definitions of a fullname. Further, a name must be defined before it is used ("before" in the depth-first, left-to-right traversal of the JSON parse tree, where the types attribute of a protocol is always deemed to come "before" the messages attribute.)
+
+### Aliases
+Named types and fields may have aliases. An implementation may optionally use aliases to map a writer's schema to the reader's. This faciliates both schema evolution as well as processing disparate datasets.
+
+Aliases function by re-writing the writer's schema using aliases from the reader's schema. For example, if the writer's schema was named "Foo" and the reader's schema is named "Bar" and has an alias of "Foo", then the implementation would act as though "Foo" were named "Bar" when reading. Similarly, if data was written as a record with a field named "x" and is read as a record with a field named "y" with alias "x", then the implementation would act as though "x" were named "y" when reading.
+
+A type alias may be specified either as a fully namespace-qualified, or relative to the namespace of the name it is an alias for. For example, if a type named "a.b" has aliases of "c" and "x.y", then the fully qualified names of its aliases are "a.c" and "x.y".
+
+## Data Serialization and Deserialization
+Binary encoded Avro data does not include type information or field names. The benefit is that the serialized data is small, but as a result a schema must always be used in order to read Avro data correctly. The best way to ensure that the schema is structurally identical to the one used to write the data is to use the exact same schema.
+
+Therefore, files or systems that store Avro data should always include the writer's schema for that data. Avro-based remote procedure call (RPC) systems must also guarantee that remote recipients of data have a copy of the schema used to write that data. In general, it is advisable that any reader of Avro data should use a schema that is the same (as defined more fully in [Parsing Canonical Form for Schemas]({{< ref "#parsing-canonical-form-for-schemas" >}} "Parsing Canonical Form for Sc [...]
+
+In general, both serialization and deserialization proceed as a depth-first, left-to-right traversal of the schema, serializing or deserializing primitive types as they are encountered. Therefore, it is possible, though not advisable, to read Avro data with a schema that does not have the same Parsing Canonical Form as the schema with which the data was written. In order for this to work, the serialized primitive values must be compatible, in order value by value, with the items in the d [...]
+
+### Encodings
+Avro specifies two serialization encodings: binary and JSON. Most applications will use the binary encoding, as it is smaller and faster. But, for debugging and web-based applications, the JSON encoding may sometimes be appropriate.
+
+### Binary Encoding {#binary-encoding}
+Binary encoding does not include field names, self-contained information about the types of individual bytes, nor field or record separators. Therefore readers are wholly reliant on the schema used when the data was encoded.
+
+#### Primitive Types
+Primitive types are encoded in binary as follows:
+
+* _null_ is written as zero bytes.
+* a _boolean_ is written as a single byte whose value is either 0 (false) or 1 (true).
+* _int_ and _long_ values are written using [variable-length](https://lucene.apache.org/java/3_5_0/fileformats.html#VInt) [zig-zag](https://code.google.com/apis/protocolbuffers/docs/encoding.html#types) coding. Some examples:
+
+| *value* | *hex* |
+|---|---|
+| 0 | 00 |
+|-1 | 01 |
+| 1 | 02 |
+|-2 | 03 |
+| 2 | 04 |
+|...|...|
+|-64 | 7f |
+|64 | 80 01|
+|...|...|
+
+* a _float_ is written as 4 bytes. The float is converted into a 32-bit integer using a method equivalent to Java's [floatToIntBits](https://docs.oracle.com/javase/8/docs/api/java/lang/Float.html#floatToIntBits-float-) and then encoded in little-endian format.
+* a _double_ is written as 8 bytes. The double is converted into a 64-bit integer using a method equivalent to Java's [doubleToLongBits](https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html#doubleToLongBits-double-) and then encoded in little-endian format.
+* _bytes_ are encoded as a long followed by that many bytes of data.
+* a _string_ is encoded as a long followed by that many bytes of UTF-8 encoded character data.
+For example, the three-character string "foo" would be encoded as the long value 3 (encoded as hex 06) followed by the UTF-8 encoding of 'f', 'o', and 'o' (the hex bytes 66 6f 6f):
+```
+06 66 6f 6f
+```
+
+### Complex Types
+Complex types are encoded in binary as follows:
+
+#### Records
+A record is encoded by encoding the values of its fields in the order that they are declared. In other words, a record is encoded as just the concatenation of the encodings of its fields. Field values are encoded per their schema.
+
+For example, the record schema
+```json
+{
+ "type": "record",
+ "name": "test",
+ "fields" : [
+ {"name": "a", "type": "long"},
+ {"name": "b", "type": "string"}
+ ]
+}
+```
+
+An instance of this record whose a field has value 27 (encoded as hex 36) and whose b field has value "foo" (encoded as hex bytes 06 66 6f 6f), would be encoded simply as the concatenation of these, namely the hex byte sequence:
+```
+36 06 66 6f 6f
+```
+
+#### Enums
+An enum is encoded by a int, representing the zero-based position of the symbol in the schema.
+
+For example, consider the enum:
+```json
+{"type": "enum", "name": "Foo", "symbols": ["A", "B", "C", "D"] }
+```
+
+This would be encoded by an int between zero and three, with zero indicating "A", and 3 indicating "D".
+
+#### Arrays
+Arrays are encoded as a series of blocks. Each block consists of a long count value, followed by that many array items. A block with count zero indicates the end of the array. Each item is encoded per the array's item schema.
+
+If a block's count is negative, its absolute value is used, and the count is followed immediately by a long block size indicating the number of bytes in the block. This block size permits fast skipping through data, e.g., when projecting a record to a subset of its fields.
+
+For example, the array schema
+```json
+{"type": "array", "items": "long"}
+```
+an array containing the items 3 and 27 could be encoded as the long value 2 (encoded as hex 04) followed by long values 3 and 27 (encoded as hex 06 36) terminated by zero:
+```
+04 06 36 00
+```
+
+The blocked representation permits one to read and write arrays larger than can be buffered in memory, since one can start writing items without knowing the full length of the array.
+
+#### Maps {#schema-maps}
+Maps are encoded as a series of _blocks_. Each block consists of a `long` _count_ value, followed by that many key/value pairs. A block with count zero indicates the end of the map. Each item is encoded per the map's value schema.
+
+If a block's count is negative, its absolute value is used, and the count is followed immediately by a `long` block size indicating the number of bytes in the block. This block size permits fast skipping through data, e.g., when projecting a record to a subset of its fields.
+
+The blocked representation permits one to read and write maps larger than can be buffered in memory, since one can start writing items without knowing the full length of the map.
+
+#### Unions
+A union is encoded by first writing an `int` value indicating the zero-based position within the union of the schema of its value. The value is then encoded per the indicated schema within the union.
+
+For example, the union schema ["null","string"] would encode:
+
+* _null_ as zero (the index of "null" in the union):
+`00`
+* the string "a" as one (the index of "string" in the union, encoded as hex 02), followed by the serialized string:
+`02 02 61`
+NOTE: Currently for C/C++ implementations, the positions are practically an int, but theoretically a long. In reality, we don't expect unions with 215M members
+
+#### Fixed
+Fixed instances are encoded using the number of bytes declared in the schema.
+
+### JSON Encoding
+Except for unions, the JSON encoding is the same as is used to encode [field default values]({{< ref "#schema-record" >}}).
+
+The value of a union is encoded in JSON as follows:
+
+* if its type is _null_, then it is encoded as a JSON _null_;
+* otherwise it is encoded as a JSON object with one name/value pair whose name is the type's name and whose value is the recursively encoded value. For Avro's named types (record, fixed or enum) the user-specified name is used, for other types the type name is used.
+
+For example, the union schema ["null","string","Foo"], where Foo is a record name, would encode:
+
+* _null_ as _null_;
+* the string "a" as `{"string": "a"}` and
+* a Foo instance as `{"Foo": {...}}`, where `{...}` indicates the JSON encoding of a Foo instance.
+
+Note that the original schema is still required to correctly process JSON-encoded data. For example, the JSON encoding does not distinguish between _int_ and _long_, _float_ and _double_, records and maps, enums and strings, etc.
+
+#### Single-object encoding
+In some situations a single Avro serialized object is to be stored for a longer period of time. One very common example is storing Avro records for several weeks in an [Apache Kafka](https://kafka.apache.org/) topic.
+
+In the period after a schema change this persistence system will contain records that have been written with different schemas. So the need arises to know which schema was used to write a record to support schema evolution correctly. In most cases the schema itself is too large to include in the message, so this binary wrapper format supports the use case more effectively.
+
+##### Single object encoding specification
+Single Avro objects are encoded as follows:
+
+1. A two-byte marker, `C3 01`, to show that the message is Avro and uses this single-record format (version 1).
+1. The 8-byte little-endian CRC-64-AVRO [fingerprint]({{< ref "#schema-fingerprints" >}} "Schema fingerprints") of the object's schema.
+1. The Avro object encoded using [Avro's binary encoding]({{< ref "#binary-encoding" >}}).
+
+Implementations use the 2-byte marker to determine whether a payload is Avro. This check helps avoid expensive lookups that resolve the schema from a fingerprint, when the message is not an encoded Avro payload.
+
+## Sort Order
+Avro defines a standard sort order for data. This permits data written by one system to be efficiently sorted by another system. This can be an important optimization, as sort order comparisons are sometimes the most frequent per-object operation. Note also that Avro binary-encoded data can be efficiently ordered without deserializing it to objects.
+
+Data items may only be compared if they have identical schemas. Pairwise comparisons are implemented recursively with a depth-first, left-to-right traversal of the schema. The first mismatch encountered determines the order of the items.
+
+Two items with the same schema are compared according to the following rules.
+
+* _null_ data is always equal.
+* _boolean_ data is ordered with false before true.
+* _int_, _long_, _float_ and _double_ data is ordered by ascending numeric value.
+* _bytes_ and fixed data are compared lexicographically by unsigned 8-bit values.
+* _string_ data is compared lexicographically by Unicode code point. Note that since UTF-8 is used as the binary encoding for strings, sorting of bytes and string binary data is identical.
+* _array_ data is compared lexicographically by element.
+* _enum_ data is ordered by the symbol's position in the enum schema. For example, an enum whose symbols are ["z", "a"] would sort "z" values before "a" values.
+* _union_ data is first ordered by the branch within the union, and, within that, by the type of the branch. For example, an ["int", "string"] union would order all int values before all string values, with the ints and strings themselves ordered as defined above.
+* _record_ data is ordered lexicographically by field. If a field specifies that its order is:
+ * "ascending", then the order of its values is unaltered.
+ * "descending", then the order of its values is reversed.
+ * "ignore", then its values are ignored when sorting.
+* _map_ data may not be compared. It is an error to attempt to compare data containing maps unless those maps are in an `"order":"ignore"` record field.
+
+## Object Container Files
+Avro includes a simple object container file format. A file has a schema, and all objects stored in the file must be written according to that schema, using binary encoding. Objects are stored in blocks that may be compressed. Syncronization markers are used between blocks to permit efficient splitting of files for MapReduce processing.
+
+Files may include arbitrary user-specified metadata.
+
+A file consists of:
+
+* A file header, followed by
+* one or more file data blocks.
+
+A file header consists of:
+
+* Four bytes, ASCII 'O', 'b', 'j', followed by 1.
+* file metadata, including the schema.
+* The 16-byte, randomly-generated sync marker for this file.
+
+File metadata is written as if defined by the following [map]({{< ref "#schema-maps" >}}) schema:
+```json
+{"type": "map", "values": "bytes"}
+```
+All metadata properties that start with "avro." are reserved. The following file metadata properties are currently used:
+
+* **avro.schema** contains the schema of objects stored in the file, as JSON data (required).
+* **avro.codec** the name of the compression codec used to compress blocks, as a string. Implementations are required to support the following codecs: "null" and "deflate". If codec is absent, it is assumed to be "null". The codecs are described with more detail below.
+
+A file header is thus described by the following schema:
+```json
+{"type": "record", "name": "org.apache.avro.file.Header",
+ "fields" : [
+ {"name": "magic", "type": {"type": "fixed", "name": "Magic", "size": 4}},
+ {"name": "meta", "type": {"type": "map", "values": "bytes"}},
+ {"name": "sync", "type": {"type": "fixed", "name": "Sync", "size": 16}},
+ ]
+}
+```
+
+A file data block consists of:
+
+* A long indicating the count of objects in this block.
+* A long indicating the size in bytes of the serialized objects in the current block, after any codec is applied
+* The serialized objects. If a codec is specified, this is compressed by that codec.
+* The file's 16-byte sync marker.
+
+Thus, each block's binary data can be efficiently extracted or skipped without deserializing the contents. The combination of block size, object counts, and sync markers enable detection of corrupt blocks and help ensure data integrity.
+
+### Required Codecs
+
+_null_
+
+The "null" codec simply passes through data uncompressed.
+
+_deflate_
+
+The "deflate" codec writes the data block using the deflate algorithm as specified in [RFC 1951](https://www.isi.edu/in-notes/rfc1951.txt), and typically implemented using the zlib library. Note that this format (unlike the "zlib format" in RFC 1950) does not have a checksum.
+
+### Optional Codecs
+_bzip2_
+
+The "bzip2" codec uses the [bzip2](https://sourceware.org/bzip2/) compression library.
+
+_snappy_
+
+The "snappy" codec uses Google's [Snappy](https://code.google.com/p/snappy/) compression library. Each compressed block is followed by the 4-byte, big-endian CRC32 checksum of the uncompressed data in the block.
+
+_xz_
+
+The "xz" codec uses the [XZ](https://tukaani.org/xz/) compression library.
+
+_zstandard_
+
+The "zstandard" codec uses Facebook's [Zstandard](https://facebook.github.io/zstd/) compression library.
+
+### Protocol Declaration
+Avro protocols describe RPC interfaces. Like schemas, they are defined with JSON text.
+
+A protocol is a JSON object with the following attributes:
+
+* _protocol_, a string, the name of the protocol (required);
+* _namespace_, an optional string that qualifies the name;
+* _doc_, an optional string describing this protocol;
+* _types_, an optional list of definitions of named types (records, enums, fixed and errors). An error definition is just like a record definition except it uses "error" instead of "record". Note that forward references to named types are not permitted.
+* _messages_, an optional JSON object whose keys are message names and whose values are objects whose attributes are described below. No two messages may have the same name.
+
+The name and namespace qualification rules defined for schema objects apply to protocols as well.
+
+### Messages
+A message has attributes:
+
+* a _doc_, an optional description of the message,
+* a _request_, a list of named, typed parameter schemas (this has the same form as the fields of a record declaration);
+* a _response_ schema;
+* an optional union of declared error schemas. The effective union has "string" prepended to the declared union, to permit transmission of undeclared "system" errors. For example, if the declared error union is `["AccessError"]`, then the effective union is `["string", "AccessError"]`. When no errors are declared, the effective error union is `["string"]`. Errors are serialized using the effective union; however, a protocol's JSON declaration contains only the declared union.
+* an optional one-way boolean parameter.
+
+A request parameter list is processed equivalently to an anonymous record. Since record field lists may vary between reader and writer, request parameters may also differ between the caller and responder, and such differences are resolved in the same manner as record field differences.
+
+The one-way parameter may only be true when the response type is `"null"` and no errors are listed.
+
+### Sample Protocol
+For example, one may define a simple HelloWorld protocol with:
+```json
+{
+ "namespace": "com.acme",
+ "protocol": "HelloWorld",
+ "doc": "Protocol Greetings",
+
+ "types": [
+ {"name": "Greeting", "type": "record", "fields": [
+ {"name": "message", "type": "string"}]},
+ {"name": "Curse", "type": "error", "fields": [
+ {"name": "message", "type": "string"}]}
+ ],
+
+ "messages": {
+ "hello": {
+ "doc": "Say hello.",
+ "request": [{"name": "greeting", "type": "Greeting" }],
+ "response": "Greeting",
+ "errors": ["Curse"]
+ }
+ }
+}
+```
+
+## Protocol Wire Format
+
+### Message Transport
+Messages may be transmitted via different transport mechanisms.
+
+To the transport, a _message_ is an opaque byte sequence.
+
+A transport is a system that supports:
+
+* **transmission of request messages**
+* **receipt of corresponding response messages**
+Servers may send a response message back to the client corresponding to a request message. The mechanism of correspondance is transport-specific. For example, in HTTP it is implicit, since HTTP directly supports requests and responses. But a transport that multiplexes many client threads over a single socket would need to tag messages with unique identifiers.
+
+Transports may be either stateless or stateful. In a stateless transport, messaging assumes no established connection state, while stateful transports establish connections that may be used for multiple messages. This distinction is discussed further in the [handshake](#handshake) section below.
+
+#### HTTP as Transport
+When [HTTP](https://www.w3.org/Protocols/rfc2616/rfc2616.html) is used as a transport, each Avro message exchange is an HTTP request/response pair. All messages of an Avro protocol should share a single URL at an HTTP server. Other protocols may also use that URL. Both normal and error Avro response messages should use the 200 (OK) response code. The chunked encoding may be used for requests and responses, but, regardless the Avro request and response are the entire content of an HTTP re [...]
+
+HTTP is used by Avro as a stateless transport.
+
+### Message Framing
+Avro messages are _framed_ as a list of buffers.
+
+Framing is a layer between messages and the transport. It exists to optimize certain operations.
+
+The format of framed message data is:
+
+* a series of buffers, where each buffer consists of:
+ * a four-byte, big-endian _buffer length_, followed by
+ * that many bytes of _buffer_ data.
+* a message is always terminated by a zero-length buffer.
+
+Framing is transparent to request and response message formats (described below). Any message may be presented as a single or multiple buffers.
+
+Framing can permit readers to more efficiently get different buffers from different sources and for writers to more efficiently store different buffers to different destinations. In particular, it can reduce the number of times large binary objects are copied. For example, if an RPC parameter consists of a megabyte of file data, that data can be copied directly to a socket from a file descriptor, and, on the other end, it could be written directly to a file descriptor, never entering use [...]
+
+A simple, recommended, framing policy is for writers to create a new segment whenever a single binary object is written that is larger than a normal output buffer. Small objects are then appended in buffers, while larger objects are written as their own buffers. When a reader then tries to read a large object the runtime can hand it an entire buffer directly, without having to copy it.
+
+### Handshake
+The purpose of the handshake is to ensure that the client and the server have each other's protocol definition, so that the client can correctly deserialize responses, and the server can correctly deserialize requests. Both clients and servers should maintain a cache of recently seen protocols, so that, in most cases, a handshake will be completed without extra round-trip network exchanges or the transmission of full protocol text.
+
+RPC requests and responses may not be processed until a handshake has been completed. With a stateless transport, all requests and responses are prefixed by handshakes. With a stateful transport, handshakes are only attached to requests and responses until a successful handshake response has been returned over a connection. After this, request and response payloads are sent without handshakes for the lifetime of that connection.
+
+The handshake process uses the following record schemas:
+```json
+{
+ "type": "record",
+ "name": "HandshakeRequest", "namespace":"org.apache.avro.ipc",
+ "fields": [
+ {"name": "clientHash",
+ "type": {"type": "fixed", "name": "MD5", "size": 16}},
+ {"name": "clientProtocol", "type": ["null", "string"]},
+ {"name": "serverHash", "type": "MD5"},
+ {"name": "meta", "type": ["null", {"type": "map", "values": "bytes"}]}
+ ]
+}
+{
+ "type": "record",
+ "name": "HandshakeResponse", "namespace": "org.apache.avro.ipc",
+ "fields": [
+ {"name": "match",
+ "type": {"type": "enum", "name": "HandshakeMatch",
+ "symbols": ["BOTH", "CLIENT", "NONE"]}},
+ {"name": "serverProtocol",
+ "type": ["null", "string"]},
+ {"name": "serverHash",
+ "type": ["null", {"type": "fixed", "name": "MD5", "size": 16}]},
+ {"name": "meta",
+ "type": ["null", {"type": "map", "values": "bytes"}]}
+ ]
+}
+```
+
+* A client first prefixes each request with a `HandshakeRequest` containing just the hash of its protocol and of the server's protocol (`clientHash!=null, clientProtocol=null, serverHash!=null`), where the hashes are 128-bit MD5 hashes of the JSON protocol text. If a client has never connected to a given server, it sends its hash as a guess of the server's hash, otherwise it sends the hash that it previously obtained from this server.
+The server responds with a HandshakeResponse containing one of:
+ * `match=BOTH, serverProtocol=null, serverHash=null` if the client sent the valid hash of the server's protocol and the server knows what protocol corresponds to the client's hash. In this case, the request is complete and the response data immediately follows the HandshakeResponse.
+ * `match=CLIENT, serverProtocol!=null, serverHash!=null` if the server has previously seen the client's protocol, but the client sent an incorrect hash of the server's protocol. The request is complete and the response data immediately follows the HandshakeResponse. The client must use the returned protocol to process the response and should also cache that protocol and its hash for future interactions with this server.
+ * `match=NONE` if the server has not previously seen the client's protocol. The serverHash and serverProtocol may also be non-null if the server's protocol hash was incorrect.
+In this case the client must then re-submit its request with its protocol text (`clientHash!=null, clientProtocol!=null, serverHash!=null`) and the server should respond with a successful match (match=BOTH, serverProtocol=null, serverHash=null) as above.
+
+The meta field is reserved for future handshake enhancements.
+
+### Call Format
+A _call_ consists of a request message paired with its resulting response or error message. Requests and responses contain extensible metadata, and both kinds of messages are framed as described above.
+
+The format of a call request is:
+
+* _request metadata_, a map with values of type bytes
+* the _message name_, an Avro string, followed by
+* the _message parameters_. Parameters are serialized according to the message's request declaration.
+When the empty string is used as a message name a server should ignore the parameters and return an empty response. A client may use this to ping a server or to perform a handshake without sending a protocol message.
+
+When a message is declared one-way and a stateful connection has been established by a successful handshake response, no response data is sent. Otherwise the format of the call response is:
+
+* _response metadata_, a map with values of type bytes
+* a one-byte error _flag_ boolean, followed by either:
+ * if the error flag is false, the message _response_, serialized per the message's response schema.
+ * if the error flag is true, the _error_, serialized per the message's effective error union schema.
+
+### Schema Resolution {#schema-resolution}
+A reader of Avro data, whether from an RPC or a file, can always parse that data because the original schema must be provided along with the data. However, the reader may be programmed to read data into a different schema. For example, if the data was written with a different version of the software than it is read, then fields may have been added or removed from records. This section specifies how such schema differences should be resolved.
+
+We refer to the schema used to write the data as the writer's schema, and the schema that the application expects the reader's schema. Differences between these should be resolved as follows:
+
+* It is an error if the two schemas do not _match_.
+To match, one of the following must hold:
+ * both schemas are arrays whose item types match
+ * both schemas are maps whose value types match
+ * both schemas are enums whose (unqualified) names match
+ * both schemas are fixed whose sizes and (unqualified) names match
+ * both schemas are records with the same (unqualified) name
+ * either schema is a union
+ * both schemas have same primitive type
+ * the writer's schema may be promoted to the reader's as follows:
+ * int is promotable to long, float, or double
+ * long is promotable to float or double
+ * float is promotable to double
+ * string is promotable to bytes
+ * bytes is promotable to string
+* **if both are records**:
+ * the ordering of fields may be different: fields are matched by name.
+ * schemas for fields with the same name in both records are resolved recursively.
+ * if the writer's record contains a field with a name not present in the reader's record, the writer's value for that field is ignored.
+ * if the reader's record schema has a field that contains a default value, and writer's schema does not have a field with the same name, then the reader should use the default value from its field.
+ * if the reader's record schema has a field with no default value, and writer's schema does not have a field with the same name, an error is signalled.
+* **if both are enums**:
+if the writer's symbol is not present in the reader's enum and the reader has a default value, then that value is used, otherwise an error is signalled.
+
+* **if both are arrays**:
+This resolution algorithm is applied recursively to the reader's and writer's array item schemas.
+
+* **if both are maps**:
+This resolution algorithm is applied recursively to the reader's and writer's value schemas.
+
+* **if both are unions**:
+The first schema in the reader's union that matches the selected writer's union schema is recursively resolved against it. if none match, an error is signalled.
+
+* **if reader's is a union, but writer's is not**
+The first schema in the reader's union that matches the writer's schema is recursively resolved against it. If none match, an error is signalled.
+
+* **if writer's is a union, but reader's is not**
+If the reader's schema matches the selected writer's schema, it is recursively resolved against it. If they do not match, an error is signalled.
+
+A schema's _doc_ fields are ignored for the purposes of schema resolution. Hence, the _doc_ portion of a schema may be dropped at serialization.
+
+### Parsing Canonical Form for Schemas {#parsing-canonical-form-for-schemas}
+One of the defining characteristics of Avro is that a reader must use the schema used by the writer of the data in order to know how to read the data. This assumption results in a data format that's compact and also amenable to many forms of schema evolution. However, the specification so far has not defined what it means for the reader to have the "same" schema as the writer. Does the schema need to be textually identical? Well, clearly adding or removing some whitespace to a JSON expre [...]
+
+Parsing Canonical Form is a transformation of a writer's schema that let's us define what it means for two schemas to be "the same" for the purpose of reading data written against the schema. It is called Parsing Canonical Form because the transformations strip away parts of the schema, like "doc" attributes, that are irrelevant to readers trying to parse incoming data. It is called Canonical Form because the transformations normalize the JSON text (such as the order of attributes) in a [...]
+
+The next subsection specifies the transformations that define Parsing Canonical Form. But with a well-defined canonical form, it can be convenient to go one step further, transforming these canonical forms into simple integers ("fingerprints") that can be used to uniquely identify schemas. The subsection after next recommends some standard practices for generating such fingerprints.
+
+#### Transforming into Parsing Canonical Form
+Assuming an input schema (in JSON form) that's already UTF-8 text for a _valid_ Avro schema (including all quotes as required by JSON), the following transformations will produce its Parsing Canonical Form:
+
+* [PRIMITIVES] Convert primitive schemas to their simple form (e.g., int instead of `{"type":"int"}`).
+* [FULLNAMES] Replace short names with fullnames, using applicable namespaces to do so. Then eliminate namespace attributes, which are now redundant.
+* [STRIP] Keep only attributes that are relevant to parsing data, which are: _type_, _name_, _fields_, _symbols_, _items_, _values_, _size_. Strip all others (e.g., _doc_ and _aliases_).
+* [ORDER] Order the appearance of fields of JSON objects as follows: _name_, _type_, _fields_, _symbols_, _items_, _values_, _size_. For example, if an object has _type_, _name_, and _size_ fields, then the _name_ field should appear first, followed by the _type_ and then the _size_ fields.
+* [STRINGS] For all JSON string literals in the schema text, replace any escaped characters (e.g., \uXXXX escapes) with their UTF-8 equivalents.
+* [INTEGERS] Eliminate quotes around and any leading zeros in front of JSON integer literals (which appear in the _size_ attributes of _fixed_ schemas).
+* [WHITESPACE] Eliminate all whitespace in JSON outside of string literals.
+
+#### Schema Fingerprints {#schema-fingerprints}
+"[A] fingerprinting algorithm is a procedure that maps an arbitrarily large data item (such as a computer file) to a much shorter bit string, its fingerprint, that uniquely identifies the original data for all practical purposes" (quoted from [Wikipedia](https://en.wikipedia.org/wiki/Fingerprint_(computing))). In the Avro context, fingerprints of Parsing Canonical Form can be useful in a number of applications; for example, to cache encoder and decoder objects, to tag data items with a s [...]
+
+In designing fingerprinting algorithms, there is a fundamental trade-off between the length of the fingerprint and the probability of collisions. To help application designers find appropriate points within this trade-off space, while encouraging interoperability and ease of implementation, we recommend using one of the following three algorithms when fingerprinting Avro schemas:
+
+* When applications can tolerate longer fingerprints, we recommend using the [SHA-256 digest algorithm](https://en.wikipedia.org/wiki/SHA-2) to generate 256-bit fingerprints of Parsing Canonical Forms. Most languages today have SHA-256 implementations in their libraries.
+* At the opposite extreme, the smallest fingerprint we recommend is a 64-bit [Rabin fingerprint](https://en.wikipedia.org/wiki/Rabin_fingerprint). Below, we provide pseudo-code for this algorithm that can be easily translated into any programming language. 64-bit fingerprints should guarantee uniqueness for schema caches of up to a million entries (for such a cache, the chance of a collision is 3E-8). We don't recommend shorter fingerprints, as the chances of collisions is too great (for [...]
+* Between these two extremes, we recommend using the [MD5 message digest](https://en.wikipedia.org/wiki/MD5) to generate 128-bit fingerprints. These make sense only where very large numbers of schemas are being manipulated (tens of millions); otherwise, 64-bit fingerprints should be sufficient. As with SHA-256, MD5 implementations are found in most libraries today.
+
+These fingerprints are not meant to provide any security guarantees, even the longer SHA-256-based ones. Most Avro applications should be surrounded by security measures that prevent attackers from writing random data and otherwise interfering with the consumers of schemas. We recommend that these surrounding mechanisms be used to prevent collision and pre-image attacks (i.e., "forgery") on schema fingerprints, rather than relying on the security properties of the fingerprints themselves.
+
+Rabin fingerprints are [cyclic redundancy checks](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) computed using irreducible polynomials. In the style of the Appendix of [RFC 1952](https://www.ietf.org/rfc/rfc1952.txt) (pg 10), which defines the CRC-32 algorithm, here's our definition of the 64-bit AVRO fingerprinting algorithm:
+```java
+long fingerprint64(byte[] buf) {
+ if (FP_TABLE == null) initFPTable();
+ long fp = EMPTY;
+ for (int i = 0; i < buf.length; i++)
+ fp = (fp >>> 8) ^ FP_TABLE[(int)(fp ^ buf[i]) & 0xff];
+ return fp;
+}
+
+static long EMPTY = 0xc15d213aa4d7a795L;
+static long[] FP_TABLE = null;
+
+void initFPTable() {
+ FP_TABLE = new long[256];
+ for (int i = 0; i < 256; i++) {
+ long fp = i;
+ for (int j = 0; j < 8; j++)
+ fp = (fp >>> 1) ^ (EMPTY & -(fp & 1L));
+ FP_TABLE[i] = fp;
+ }
+}
+```
+
+Readers interested in the mathematics behind this algorithm may want to read [Chapter 14 of the Second Edition of Hacker's Delight](https://books.google.com/books?id=XD9iAwAAQBAJ&pg=PA319). (Unlike RFC-1952 and the book chapter, we prepend a single one bit to messages. We do this because CRCs ignore leading zero bits, which can be problematic. Our code prepends a one-bit by initializing fingerprints using EMPTY, rather than initializing using zero as in RFC-1952 and the book chapter.)
+
+## Logical Types
+A logical type is an Avro primitive or complex type with extra attributes to represent a derived type. The attribute `logicalType` must always be present for a logical type, and is a string with the name of one of the logical types listed later in this section. Other attributes may be defined for particular logical types.
+
+A logical type is always serialized using its underlying Avro type so that values are encoded in exactly the same way as the equivalent Avro type that does not have a `logicalType` attribute. Language implementations may choose to represent logical types with an appropriate native type, although this is not required.
+
+Language implementations must ignore unknown logical types when reading, and should use the underlying Avro type. If a logical type is invalid, for example a decimal with scale greater than its precision, then implementations should ignore the logical type and use the underlying Avro type.
+
+### Decimal
+The `decimal` logical type represents an arbitrary-precision signed decimal number of the form _unscaled × 10<sup>-scale</sup>_.
+
+A `decimal` logical type annotates Avro _bytes_ or _fixed_ types. The byte array must contain the two's-complement representation of the unscaled integer value in big-endian byte order. The scale is fixed, and is specified using an attribute.
+
+The following attributes are supported:
+
+* _scale_, a JSON integer representing the scale (optional). If not specified the scale is 0.
+* _precision_, a JSON integer representing the (maximum) precision of decimals stored in this type (required).
+For example, the following schema represents decimal numbers with a maximum precision of 4 and a scale of 2:
+```json
+{
+ "type": "bytes",
+ "logicalType": "decimal",
+ "precision": 4,
+ "scale": 2
+}
+```
+Precision must be a positive integer greater than zero. If the underlying type is a _fixed_, then the precision is limited by its size. An array of length n can store at most _floor(log<sub>10</sub>(2<sup>8 × n - 1</sup> - 1))_ base-10 digits of precision.
+
+Scale must be zero or a positive integer less than or equal to the precision.
+
+For the purposes of schema resolution, two schemas that are `decimal` logical types _match_ if their scales and precisions match.
+
+### UUID
+The `uuid` logical type represents a random generated universally unique identifier (UUID).
+
+A `uuid` logical type annotates an Avro `string`. The string has to conform with [RFC-4122](https://www.ietf.org/rfc/rfc4122.txt)
+
+### Date
+The `date` logical type represents a date within the calendar, with no reference to a particular time zone or time of day.
+
+A `date` logical type annotates an Avro `int`, where the int stores the number of days from the unix epoch, 1 January 1970 (ISO calendar).
+
+The following schema represents a date:
+```json
+{
+ "type": "int",
+ "logicalType": "date"
+}
+```
+
+### Time (millisecond precision)
+The `time-millis` logical type represents a time of day, with no reference to a particular calendar, time zone or date, with a precision of one millisecond.
+
+A `time-millis` logical type annotates an Avro `int`, where the int stores the number of milliseconds after midnight, 00:00:00.000.
+
+### Time (microsecond precision)
+The `time-micros` logical type represents a time of day, with no reference to a particular calendar, time zone or date, with a precision of one microsecond.
+
+A `time-micros` logical type annotates an Avro long, where the long stores the number of microseconds after midnight, 00:00:00.000000.
+
+### Timestamp (millisecond precision)
+The `timestamp-millis` logical type represents an instant on the global timeline, independent of a particular time zone or calendar, with a precision of one millisecond. Please note that time zone information gets lost in this process. Upon reading a value back, we can only reconstruct the instant, but not the original representation. In practice, such timestamps are typically displayed to users in their local time zones, therefore they may be displayed differently depending on the execu [...]
+
+A `timestamp-millis` logical type annotates an Avro long, where the long stores the number of milliseconds from the unix epoch, 1 January 1970 00:00:00.000 UTC.
+
+### Timestamp (microsecond precision)
+The `timestamp-micros` logical type represents an instant on the global timeline, independent of a particular time zone or calendar, with a precision of one microsecond. Please note that time zone information gets lost in this process. Upon reading a value back, we can only reconstruct the instant, but not the original representation. In practice, such timestamps are typically displayed to users in their local time zones, therefore they may be displayed differently depending on the execu [...]
+
+A `timestamp-micros` logical type annotates an Avro long, where the long stores the number of microseconds from the unix epoch, 1 January 1970 00:00:00.000000 UTC.
+
+### Local timestamp (millisecond precision)
+The `local-timestamp-millis` logical type represents a timestamp in a local timezone, regardless of what specific time zone is considered local, with a precision of one millisecond.
+
+A `local-timestamp-millis` logical type annotates an Avro long, where the long stores the number of milliseconds, from 1 January 1970 00:00:00.000.
+
+### Local timestamp (microsecond precision)
+The `local-timestamp-micros` logical type represents a timestamp in a local timezone, regardless of what specific time zone is considered local, with a precision of one microsecond.
+
+A `local-timestamp-micros` logical type annotates an Avro long, where the long stores the number of microseconds, from 1 January 1970 00:00:00.000000.
+
+### Duration
+The `duration` logical type represents an amount of time defined by a number of months, days and milliseconds. This is not equivalent to a number of milliseconds, because, depending on the moment in time from which the duration is measured, the number of days in the month and number of milliseconds in a day may differ. Other standard periods such as years, quarters, hours and minutes can be expressed through these basic periods.
+
+A `duration` logical type annotates Avro `fixed` type of size 12, which stores three little-endian unsigned integers that represent durations at different granularities of time. The first stores a number in months, the second stores a number in days, and the third stores a number in milliseconds.
\ No newline at end of file
diff --git a/doc/content/en/docs/next/_index.md b/doc/content/en/docs/next/_index.md
new file mode 100755
index 0000000..c11e357
--- /dev/null
+++ b/doc/content/en/docs/next/_index.md
@@ -0,0 +1,39 @@
+
+---
+title: "Documentation for master branch"
+linkTitle: "Next (not yet released)"
+type: docs
+weight: 10
+---
+
+## Introduction
+
+Apache Avro™ is a data serialization system.
+
+Avro provides:
+
+* Rich data structures.
+* A compact, fast, binary data format.
+* A container file, to store persistent data.
+* Remote procedure call (RPC).
+* Simple integration with dynamic languages. Code generation is not required to read or write data files nor to use or implement RPC protocols. Code generation as an optional optimization, only worth implementing for statically typed languages.
+
+## Schemas
+
+Avro relies on schemas. When Avro data is read, the schema used when writing it is always present. This permits each datum to be written with no per-value overheads, making serialization both fast and small. This also facilitates use with dynamic, scripting languages, since data, together with its schema, is fully self-describing.
+
+When Avro data is stored in a file, its schema is stored with it, so that files may be processed later by any program. If the program reading the data expects a different schema this can be easily resolved, since both schemas are present.
+
+When Avro is used in RPC, the client and server exchange schemas in the connection handshake. (This can be optimized so that, for most calls, no schemas are actually transmitted.) Since both client and server both have the other's full schema, correspondence between same named fields, missing fields, extra fields, etc. can all be easily resolved.
+
+Avro schemas are defined with JSON . This facilitates implementation in languages that already have JSON libraries.
+
+## Comparison with other systems
+
+Avro provides functionality similar to systems such as [Thrift](https://thrift.apache.org/), [Protocol Buffers](https://code.google.com/p/protobuf/), etc. Avro differs from these systems in the following fundamental aspects.
+
+* Dynamic typing: Avro does not require that code be generated. Data is always accompanied by a schema that permits full processing of that data without code generation, static datatypes, etc. This facilitates construction of generic data-processing systems and languages.
+* Untagged data: Since the schema is present when data is read, considerably less type information need be encoded with data, resulting in smaller serialization size.
+* No manually-assigned field IDs: When a schema changes, both the old and new schema are always present when processing data, so differences may be resolved symbolically, using field names.
+
+
diff --git a/doc/content/en/docs/next/csharp API/_index.md b/doc/content/en/docs/next/csharp API/_index.md
new file mode 100644
index 0000000..a9cfe52
--- /dev/null
+++ b/doc/content/en/docs/next/csharp API/_index.md
@@ -0,0 +1,7 @@
+---
+title: "C# API"
+linkTitle: "C# API"
+weight: 6
+---
+
+The C# API documentation could be found <a href="../external/csharp/index.html">here</a>.
\ No newline at end of file
diff --git a/doc/content/en/docs/next/external/c++-api/AvroParse_8hh.html b/doc/content/en/docs/next/external/c++-api/AvroParse_8hh.html
new file mode 100644
index 0000000..5ef8215
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/AvroParse_8hh.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/AvroParse.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#namespaces">Namespaces</a> |
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">AvroParse.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Standalone parse functions for Avro types.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include "<a class="el" href="AvroTraits_8hh_source.html">AvroTraits.hh</a>"</code><br />
+<code>#include "Config.hh"</code><br />
+<code>#include "ResolvingReader.hh"</code><br />
+</div>
+<p><a href="AvroParse_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceavro"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html">avro</a></td></tr>
+<tr class="memdesc:namespaceavro"><td class="mdescLeft"> </td><td class="mdescRight">A bunch of templates and specializations for encoding and decoding specific types. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a0180913cf37820fd8c10a35af371945c"><td class="memTemplParams" colspan="2">template<typename Reader , typename T > </td></tr>
+<tr class="memitem:a0180913cf37820fd8c10a35af371945c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a0180913cf37820fd8c10a35af371945c">avro::parse</a> (Reader &p, T &val)</td></tr>
+<tr class="memdesc:a0180913cf37820fd8c10a35af371945c"><td class="mdescLeft"> </td><td class="mdescRight">The main parse entry point function. <a href="namespaceavro.html#a0180913cf37820fd8c10a35af371945c">More...</a><br /></td></tr>
+<tr class="separator:a0180913cf37820fd8c10a35af371945c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a71d3c0e0c943565a98085d3e2d195196"><td class="memTemplParams" colspan="2"><a id="a71d3c0e0c943565a98085d3e2d195196"></a>
+template<typename T > </td></tr>
+<tr class="memitem:a71d3c0e0c943565a98085d3e2d195196"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>avro::parse</b> (ResolvingReader &p, T &val)</td></tr>
+<tr class="separator:a71d3c0e0c943565a98085d3e2d195196"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab8df2d01eb8b8e90eb02638c40196383"><td class="memTemplParams" colspan="2"><a id="ab8df2d01eb8b8e90eb02638c40196383"></a>
+template<typename Reader , typename T > </td></tr>
+<tr class="memitem:ab8df2d01eb8b8e90eb02638c40196383"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceavro.html#ab8df2d01eb8b8e90eb02638c40196383">avro::parse</a> (Reader &p, T &val, const std::false_type &)</td></tr>
+<tr class="memdesc:ab8df2d01eb8b8e90eb02638c40196383"><td class="mdescLeft"> </td><td class="mdescRight">Type trait should be set to <a class="el" href="structavro_1_1is__serializable.html" title="Define an is_serializable trait for types we can serialize natively.">is_serializable</a> in otherwise force the compiler to complain. <br /></td></tr>
+<tr class="separator:ab8df2d01eb8b8e90eb02638c40196383"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a308e118932b6e287d53cf2743af2c921"><td class="memTemplParams" colspan="2"><a id="a308e118932b6e287d53cf2743af2c921"></a>
+template<typename Reader , typename T > </td></tr>
+<tr class="memitem:a308e118932b6e287d53cf2743af2c921"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>avro::translatingParse</b> (Reader &p, T &val, const std::false_type &)</td></tr>
+<tr class="separator:a308e118932b6e287d53cf2743af2c921"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa7ca91abb1b91493bf8dd4c3cff2b786"><td class="memTemplParams" colspan="2"><a id="aa7ca91abb1b91493bf8dd4c3cff2b786"></a>
+template<typename Reader , typename T > </td></tr>
+<tr class="memitem:aa7ca91abb1b91493bf8dd4c3cff2b786"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceavro.html#aa7ca91abb1b91493bf8dd4c3cff2b786">avro::parse</a> (Reader &p, T &val, const std::true_type &)</td></tr>
+<tr class="memdesc:aa7ca91abb1b91493bf8dd4c3cff2b786"><td class="mdescLeft"> </td><td class="mdescRight">The remainder of the file includes default implementations for serializable types. <br /></td></tr>
+<tr class="separator:aa7ca91abb1b91493bf8dd4c3cff2b786"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acf666b403b5d9046fc0945bdc6044a58"><td class="memTemplParams" colspan="2"><a id="acf666b403b5d9046fc0945bdc6044a58"></a>
+template<typename Reader > </td></tr>
+<tr class="memitem:acf666b403b5d9046fc0945bdc6044a58"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>avro::parse</b> (Reader &p, std::vector< uint8_t > &val, const std::true_type &)</td></tr>
+<tr class="separator:acf666b403b5d9046fc0945bdc6044a58"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adf2eb96e5042ef4ec95c2431a84324e9"><td class="memTemplParams" colspan="2"><a id="adf2eb96e5042ef4ec95c2431a84324e9"></a>
+template<typename T > </td></tr>
+<tr class="memitem:adf2eb96e5042ef4ec95c2431a84324e9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>avro::translatingParse</b> (ResolvingReader &p, T &val, const std::true_type &)</td></tr>
+<tr class="separator:adf2eb96e5042ef4ec95c2431a84324e9"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Standalone parse functions for Avro types. </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/AvroParse_8hh_source.html b/doc/content/en/docs/next/external/c++-api/AvroParse_8hh_source.html
new file mode 100644
index 0000000..30bed71
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/AvroParse_8hh_source.html
@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/AvroParse.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">AvroParse.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="AvroParse_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_AvroParse_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_AvroParse_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="AvroTraits_8hh.html">AvroTraits.hh</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "ResolvingReader.hh"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespaceavro.html"> 30</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  </div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  </div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">template</span><<span class="keyword">typename</span> Reader, <span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespaceavro.html#a0180913cf37820fd8c10a35af371945c"> 36</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#a0180913cf37820fd8c10a35af371945c">parse</a>(<a class="code" href="classavro_1_1ReaderImpl.html">Reader</a> &p, T &val) {</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="namespaceavro.html#a0180913cf37820fd8c10a35af371945c">parse</a>(p, val, <a class="code" href="structavro_1_1is__serializable.html">is_serializable<T></a>());</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> }</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#a0180913cf37820fd8c10a35af371945c">parse</a>(ResolvingReader &p, T &val) {</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  translatingParse(p, val, is_serializable<T>());</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">template</span><<span class="keyword">typename</span> Reader, <span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespaceavro.html#ab8df2d01eb8b8e90eb02638c40196383"> 48</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#a0180913cf37820fd8c10a35af371945c">parse</a>(<a class="code" href="classavro_1_1ReaderImpl.html">Reader</a> &p, T &val, <span class="keyword">const</span> std::false_type &) {</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  static_assert(<span class="keyword">sizeof</span>(T) == 0, <span class="stringliteral">"Not a valid type to parse"</span>);</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">template</span><<span class="keyword">typename</span> Reader, <span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">void</span> translatingParse(Reader &p, T &val, <span class="keyword">const</span> std::false_type &) {</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  static_assert(<span class="keyword">sizeof</span>(T) == 0, <span class="stringliteral">"Not a valid type to parse"</span>);</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// @{</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">template</span><<span class="keyword">typename</span> Reader, <span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="namespaceavro.html#aa7ca91abb1b91493bf8dd4c3cff2b786"> 62</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#a0180913cf37820fd8c10a35af371945c">parse</a>(<a class="code" href="classavro_1_1ReaderImpl.html">Reader</a> &p, T &val, <span class="keyword">const</span> std::true_type &) {</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  p.readValue(val);</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  </div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">template</span><<span class="keyword">typename</span> Reader></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#a0180913cf37820fd8c10a35af371945c">parse</a>(Reader &p, std::vector<uint8_t> &val, <span class="keyword">const</span> std::true_type &) {</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  p.readBytes(val);</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> }</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keywordtype">void</span> translatingParse(ResolvingReader &p, T &val, <span class="keyword">const</span> std::true_type &) {</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  p.parse(val);</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  </div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// @}</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aAvroTraits_8hh_html"><div class="ttname"><a href="AvroTraits_8hh.html">AvroTraits.hh</a></div><div class="ttdoc">This header contains type traits and similar utilities used by the library.</div></div>
+<div class="ttc" id="aclassavro_1_1ReaderImpl_html"><div class="ttname"><a href="classavro_1_1ReaderImpl.html">avro::ReaderImpl< NullValidator ></a></div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_a0180913cf37820fd8c10a35af371945c"><div class="ttname"><a href="namespaceavro.html#a0180913cf37820fd8c10a35af371945c">avro::parse</a></div><div class="ttdeci">void parse(Reader &p, T &val)</div><div class="ttdoc">The main parse entry point function.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:36</div></div>
+<div class="ttc" id="astructavro_1_1is__serializable_html"><div class="ttname"><a href="structavro_1_1is__serializable.html">avro::is_serializable</a></div><div class="ttdoc">Define an is_serializable trait for types we can serialize natively.</div><div class="ttdef"><b>Definition:</b> AvroTraits.hh:38</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/AvroSerialize_8hh.html b/doc/content/en/docs/next/external/c++-api/AvroSerialize_8hh.html
new file mode 100644
index 0000000..7ad83a4
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/AvroSerialize_8hh.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/AvroSerialize.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#namespaces">Namespaces</a> |
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">AvroSerialize.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Standalone serialize functions for Avro types.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include "<a class="el" href="AvroTraits_8hh_source.html">AvroTraits.hh</a>"</code><br />
+<code>#include "Config.hh"</code><br />
+</div>
+<p><a href="AvroSerialize_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceavro"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html">avro</a></td></tr>
+<tr class="memdesc:namespaceavro"><td class="mdescLeft"> </td><td class="mdescRight">A bunch of templates and specializations for encoding and decoding specific types. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a274e8f2e3a165ff45bf932a82127fc78"><td class="memTemplParams" colspan="2">template<typename Writer , typename T > </td></tr>
+<tr class="memitem:a274e8f2e3a165ff45bf932a82127fc78"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a274e8f2e3a165ff45bf932a82127fc78">avro::serialize</a> (Writer &s, const T &val)</td></tr>
+<tr class="memdesc:a274e8f2e3a165ff45bf932a82127fc78"><td class="mdescLeft"> </td><td class="mdescRight">The main serializer entry point function. <a href="namespaceavro.html#a274e8f2e3a165ff45bf932a82127fc78">More...</a><br /></td></tr>
+<tr class="separator:a274e8f2e3a165ff45bf932a82127fc78"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5b402438828aa0fb5fa9af70c550fa4c"><td class="memTemplParams" colspan="2"><a id="a5b402438828aa0fb5fa9af70c550fa4c"></a>
+template<typename Writer , typename T > </td></tr>
+<tr class="memitem:a5b402438828aa0fb5fa9af70c550fa4c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a5b402438828aa0fb5fa9af70c550fa4c">avro::serialize</a> (Writer &s, const T &val, const std::false_type &)</td></tr>
+<tr class="memdesc:a5b402438828aa0fb5fa9af70c550fa4c"><td class="mdescLeft"> </td><td class="mdescRight">Type trait should be set to <a class="el" href="structavro_1_1is__serializable.html" title="Define an is_serializable trait for types we can serialize natively.">is_serializable</a> in otherwise force the compiler to complain. <br /></td></tr>
+<tr class="separator:a5b402438828aa0fb5fa9af70c550fa4c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2ccf69b17032cab4d5aa953b046e929f"><td class="memTemplParams" colspan="2"><a id="a2ccf69b17032cab4d5aa953b046e929f"></a>
+template<typename Writer , typename T > </td></tr>
+<tr class="memitem:a2ccf69b17032cab4d5aa953b046e929f"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a2ccf69b17032cab4d5aa953b046e929f">avro::serialize</a> (Writer &s, T val, const std::true_type &)</td></tr>
+<tr class="memdesc:a2ccf69b17032cab4d5aa953b046e929f"><td class="mdescLeft"> </td><td class="mdescRight">The remainder of the file includes default implementations for serializable types. <br /></td></tr>
+<tr class="separator:a2ccf69b17032cab4d5aa953b046e929f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4b74cc2152c88c3957d893a2b6d4662e"><td class="memTemplParams" colspan="2"><a id="a4b74cc2152c88c3957d893a2b6d4662e"></a>
+template<typename Writer > </td></tr>
+<tr class="memitem:a4b74cc2152c88c3957d893a2b6d4662e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>avro::serialize</b> (Writer &s, const std::vector< uint8_t > &val, const std::true_type &)</td></tr>
+<tr class="separator:a4b74cc2152c88c3957d893a2b6d4662e"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Standalone serialize functions for Avro types. </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/AvroSerialize_8hh_source.html b/doc/content/en/docs/next/external/c++-api/AvroSerialize_8hh_source.html
new file mode 100644
index 0000000..07ceb3a
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/AvroSerialize_8hh_source.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/AvroSerialize.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">AvroSerialize.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="AvroSerialize_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_AvroSerialize_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_AvroSerialize_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="AvroTraits_8hh.html">AvroTraits.hh</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  </div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">template</span><<span class="keyword">typename</span> Writer, <span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespaceavro.html#a274e8f2e3a165ff45bf932a82127fc78"> 35</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#a274e8f2e3a165ff45bf932a82127fc78">serialize</a>(<a class="code" href="classavro_1_1WriterImpl.html">Writer</a> &s, <span class="keyword">const</span> T &val) {</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="namespaceavro.html#a274e8f2e3a165ff45bf932a82127fc78">serialize</a>(s, val, <a class="code" href="structavro_1_1is__serializable.html">is_serializable<T></a>());</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  </div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">template</span><<span class="keyword">typename</span> Writer, <span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespaceavro.html#a5b402438828aa0fb5fa9af70c550fa4c"> 42</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#a274e8f2e3a165ff45bf932a82127fc78">serialize</a>(<a class="code" href="classavro_1_1WriterImpl.html">Writer</a> &s, <span class="keyword">const</span> T &val, <span class="keyword">const</span> std::false_type &) {</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  static_assert(<span class="keyword">sizeof</span>(T) == 0, <span class="stringliteral">"Not a valid type to serialize"</span>);</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  </div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// @{</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">template</span><<span class="keyword">typename</span> Writer, <span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespaceavro.html#a2ccf69b17032cab4d5aa953b046e929f"> 51</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#a274e8f2e3a165ff45bf932a82127fc78">serialize</a>(<a class="code" href="classavro_1_1WriterImpl.html">Writer</a> &s, T val, <span class="keyword">const</span> std::true_type &) {</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  s.writeValue(val);</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">template</span><<span class="keyword">typename</span> Writer></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#a274e8f2e3a165ff45bf932a82127fc78">serialize</a>(Writer &s, <span class="keyword">const</span> std::vector<uint8_t> &val, <span class="keyword">const</span> std::true_type &) {</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  s.writeBytes(val.data(), val.size());</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// @}</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aAvroTraits_8hh_html"><div class="ttname"><a href="AvroTraits_8hh.html">AvroTraits.hh</a></div><div class="ttdoc">This header contains type traits and similar utilities used by the library.</div></div>
+<div class="ttc" id="aclassavro_1_1WriterImpl_html"><div class="ttname"><a href="classavro_1_1WriterImpl.html">avro::WriterImpl< NullValidator ></a></div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_a274e8f2e3a165ff45bf932a82127fc78"><div class="ttname"><a href="namespaceavro.html#a274e8f2e3a165ff45bf932a82127fc78">avro::serialize</a></div><div class="ttdeci">void serialize(Writer &s, const T &val)</div><div class="ttdoc">The main serializer entry point function.</div><div class="ttdef"><b>Definition:</b> AvroSerialize.hh:35</div></div>
+<div class="ttc" id="astructavro_1_1is__serializable_html"><div class="ttname"><a href="structavro_1_1is__serializable.html">avro::is_serializable</a></div><div class="ttdoc">Define an is_serializable trait for types we can serialize natively.</div><div class="ttdef"><b>Definition:</b> AvroTraits.hh:38</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/AvroTraits_8hh.html b/doc/content/en/docs/next/external/c++-api/AvroTraits_8hh.html
new file mode 100644
index 0000000..1245ec4
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/AvroTraits_8hh.html
@@ -0,0 +1,192 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/AvroTraits.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle">
+<div class="title">AvroTraits.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This header contains type traits and similar utilities used by the library.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include "Config.hh"</code><br />
+<code>#include "Types.hh"</code><br />
+<code>#include <cstdint></code><br />
+<code>#include <type_traits></code><br />
+</div>
+<p><a href="AvroTraits_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structavro_1_1is__serializable.html">avro::is_serializable< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Define an <a class="el" href="structavro_1_1is__serializable.html" title="Define an is_serializable trait for types we can serialize natively.">is_serializable</a> trait for types we can serialize natively. <a href="structavro_1_1is__serializable.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structavro_1_1is__promotable.html">avro::is_promotable< T ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structavro_1_1type__to__avro.html">avro::type_to_avro< T ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structavro_1_1is__defined.html">avro::is_defined< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Check if a <code>T</code> is a complete type i.e. <a href="structavro_1_1is__defined.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structavro_1_1is__not__defined.html">avro::is_not_defined< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Similar to <a class="el" href="structavro_1_1is__defined.html" title="Check if a T is a complete type i.e.">is_defined</a>, but used to check if T is not defined. <a href="structavro_1_1is__not__defined.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceavro"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html">avro</a></td></tr>
+<tr class="memdesc:namespaceavro"><td class="mdescLeft"> </td><td class="mdescRight">A bunch of templates and specializations for encoding and decoding specific types. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a0903907d3254fe1a1a018f4da4ceb04a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>DEFINE_PRIMITIVE</b>(CTYPE, AVROTYPE)</td></tr>
+<tr class="separator:a0903907d3254fe1a1a018f4da4ceb04a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abc1278d9faa11991322c707e75a92594"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>DEFINE_PROMOTABLE_PRIMITIVE</b>(CTYPE, AVROTYPE)</td></tr>
+<tr class="separator:abc1278d9faa11991322c707e75a92594"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This header contains type traits and similar utilities used by the library. </p>
+</div><h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a0903907d3254fe1a1a018f4da4ceb04a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0903907d3254fe1a1a018f4da4ceb04a">◆ </a></span>DEFINE_PRIMITIVE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DEFINE_PRIMITIVE</td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname">CTYPE, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname">AVROTYPE </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">template</span><> \</div>
+<div class="line"> struct is_serializable<CTYPE> : <span class="keyword">public</span> std::true_type {}; \</div>
+<div class="line"> \</div>
+<div class="line"> template<> \</div>
+<div class="line"> struct type_to_avro<CTYPE> { \</div>
+<div class="line"> static <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type = AVROTYPE; \</div>
+<div class="line"> };</div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">avro::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">The "type" for the schema.</div><div class="ttdef"><b>Definition:</b> Types.hh:31</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="abc1278d9faa11991322c707e75a92594"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc1278d9faa11991322c707e75a92594">◆ </a></span>DEFINE_PROMOTABLE_PRIMITIVE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DEFINE_PROMOTABLE_PRIMITIVE</td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname">CTYPE, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname">AVROTYPE </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">template</span><> \</div>
+<div class="line"> struct is_promotable<CTYPE> : <span class="keyword">public</span> std::true_type {}; \</div>
+<div class="line"> \</div>
+<div class="line"> DEFINE_PRIMITIVE(CTYPE, AVROTYPE)</div>
+</div><!-- fragment -->
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/AvroTraits_8hh_source.html b/doc/content/en/docs/next/external/c++-api/AvroTraits_8hh_source.html
new file mode 100644
index 0000000..10e02d6
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/AvroTraits_8hh_source.html
@@ -0,0 +1,193 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/AvroTraits.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">AvroTraits.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="AvroTraits_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_AvroTraits_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_AvroTraits_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "Types.hh"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <cstdint></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <type_traits></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  </div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="structavro_1_1is__serializable.html"> 38</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1is__serializable.html">is_serializable</a> : <span class="keyword">public</span> std::false_type {};</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="structavro_1_1is__promotable.html"> 41</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1is__promotable.html">is_promotable</a> : <span class="keyword">public</span> std::false_type {};</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="structavro_1_1type__to__avro.html"> 44</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1type__to__avro.html">type_to_avro</a> {</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type = <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a091926107dab9cc29dff31c8e4eee47d">AVRO_NUM_TYPES</a>;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> };</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">template</span><<span class="keyword">class</span> T></div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="structavro_1_1is__defined.html"> 56</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1is__defined.html">is_defined</a> {</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">typedef</span> <span class="keywordtype">char</span> yes[1];</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">typedef</span> <span class="keywordtype">char</span> no[2];</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">template</span><<span class="keyword">class</span> U></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">static</span> yes &test(<span class="keywordtype">char</span> (*)[<span class="keyword">sizeof</span>(U)]) { <span class="keywordflow">throw</span> 0; };</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">template</span><<span class="keyword">class</span> U></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">static</span> no &test(...) { <span class="keywordflow">throw</span> 0; };</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = <span class="keyword">sizeof</span>(test<T>(0)) == <span class="keyword">sizeof</span>(yes);</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> };</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">template</span><<span class="keyword">class</span> T></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="structavro_1_1is__not__defined.html"> 78</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1is__not__defined.html">is_not_defined</a> {</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">typedef</span> <span class="keywordtype">char</span> yes[1];</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">typedef</span> <span class="keywordtype">char</span> no[2];</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">template</span><<span class="keyword">class</span> U></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">static</span> yes &test(<span class="keywordtype">char</span> (*)[<span class="keyword">sizeof</span>(U)]) { <span class="keywordflow">throw</span> 0; };</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">template</span><<span class="keyword">class</span> U></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">static</span> no &test(...) { <span class="keywordflow">throw</span> 0; };</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = <span class="keyword">sizeof</span>(test<T>(0)) == <span class="keyword">sizeof</span>(no);</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> };</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  </div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#define DEFINE_PRIMITIVE(CTYPE, AVROTYPE) \</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor"> template<> \</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor"> struct is_serializable<CTYPE> : public std::true_type {}; \</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor"> \</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor"> template<> \</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor"> struct type_to_avro<CTYPE> { \</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor"> static const Type type = AVROTYPE; \</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor"> };</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#define DEFINE_PROMOTABLE_PRIMITIVE(CTYPE, AVROTYPE) \</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor"> template<> \</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor"> struct is_promotable<CTYPE> : public std::true_type {}; \</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor"> \</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor"> DEFINE_PRIMITIVE(CTYPE, AVROTYPE)</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> DEFINE_PROMOTABLE_PRIMITIVE(int32_t, <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a53f57f125161dc143d955e0eecafd7a3">AVRO_INT</a>)</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> DEFINE_PROMOTABLE_PRIMITIVE(int64_t, <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a692a9ce3245cea9dcbc10ee73b8c6340">AVRO_LONG</a>)</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> DEFINE_PROMOTABLE_PRIMITIVE(<span class="keywordtype">float</span>, <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a49eb3fcb0154b63104c8041e07ef02b8">AVRO_FLOAT</a>)</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> DEFINE_PRIMITIVE(<span class="keywordtype">double</span>, <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a6d280a38797d72263c8b1c83f981b800">AVRO_DOUBLE</a>)</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> DEFINE_PRIMITIVE(<span class="keywordtype">bool</span>, <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a8fbd33da2d41bf10e877dabac5af5dd2">AVRO_BOOL</a>)</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> DEFINE_PRIMITIVE(<a class="code" href="structavro_1_1Null.html">Null</a>, <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ae6058ac1a8cd7ab916450d8616c40cff">AVRO_NULL</a>)</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> DEFINE_PRIMITIVE(std::string, <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a653cfbb5f5aca522271b435e7215087f">AVRO_STRING</a>)</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> DEFINE_PRIMITIVE(std::vector<uint8_t>, <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7aa5ff10208f8bf3952647c48c1f67ca09">AVRO_BYTES</a>)</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  </div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">avro::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">The "type" for the schema.</div><div class="ttdef"><b>Definition:</b> Types.hh:31</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a091926107dab9cc29dff31c8e4eee47d"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a091926107dab9cc29dff31c8e4eee47d">avro::AVRO_NUM_TYPES</a></div><div class="ttdeci">@ AVRO_NUM_TYPES</div><div class="ttdef"><b>Definition:</b> Types.hh:49</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a49eb3fcb0154b63104c8041e07ef02b8"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a49eb3fcb0154b63104c8041e07ef02b8">avro::AVRO_FLOAT</a></div><div class="ttdeci">@ AVRO_FLOAT</div><div class="ttdef"><b>Definition:</b> Types.hh:37</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a53f57f125161dc143d955e0eecafd7a3"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a53f57f125161dc143d955e0eecafd7a3">avro::AVRO_INT</a></div><div class="ttdeci">@ AVRO_INT</div><div class="ttdef"><b>Definition:</b> Types.hh:35</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a653cfbb5f5aca522271b435e7215087f"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a653cfbb5f5aca522271b435e7215087f">avro::AVRO_STRING</a></div><div class="ttdeci">@ AVRO_STRING</div><div class="ttdef"><b>Definition:</b> Types.hh:33</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a692a9ce3245cea9dcbc10ee73b8c6340"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a692a9ce3245cea9dcbc10ee73b8c6340">avro::AVRO_LONG</a></div><div class="ttdeci">@ AVRO_LONG</div><div class="ttdef"><b>Definition:</b> Types.hh:36</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a6d280a38797d72263c8b1c83f981b800"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a6d280a38797d72263c8b1c83f981b800">avro::AVRO_DOUBLE</a></div><div class="ttdeci">@ AVRO_DOUBLE</div><div class="ttdef"><b>Definition:</b> Types.hh:38</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a8fbd33da2d41bf10e877dabac5af5dd2"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a8fbd33da2d41bf10e877dabac5af5dd2">avro::AVRO_BOOL</a></div><div class="ttdeci">@ AVRO_BOOL</div><div class="ttdef"><b>Definition:</b> Types.hh:39</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7aa5ff10208f8bf3952647c48c1f67ca09"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7aa5ff10208f8bf3952647c48c1f67ca09">avro::AVRO_BYTES</a></div><div class="ttdeci">@ AVRO_BYTES</div><div class="ttdef"><b>Definition:</b> Types.hh:34</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7ae6058ac1a8cd7ab916450d8616c40cff"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ae6058ac1a8cd7ab916450d8616c40cff">avro::AVRO_NULL</a></div><div class="ttdeci">@ AVRO_NULL</div><div class="ttdef"><b>Definition:</b> Types.hh:40</div></div>
+<div class="ttc" id="astructavro_1_1Null_html"><div class="ttname"><a href="structavro_1_1Null.html">avro::Null</a></div><div class="ttdoc">define a type to represent Avro Null in template functions</div><div class="ttdef"><b>Definition:</b> Types.hh:101</div></div>
+<div class="ttc" id="astructavro_1_1is__defined_html"><div class="ttname"><a href="structavro_1_1is__defined.html">avro::is_defined</a></div><div class="ttdoc">Check if a T is a complete type i.e.</div><div class="ttdef"><b>Definition:</b> AvroTraits.hh:56</div></div>
+<div class="ttc" id="astructavro_1_1is__not__defined_html"><div class="ttname"><a href="structavro_1_1is__not__defined.html">avro::is_not_defined</a></div><div class="ttdoc">Similar to is_defined, but used to check if T is not defined.</div><div class="ttdef"><b>Definition:</b> AvroTraits.hh:78</div></div>
+<div class="ttc" id="astructavro_1_1is__promotable_html"><div class="ttname"><a href="structavro_1_1is__promotable.html">avro::is_promotable</a></div><div class="ttdef"><b>Definition:</b> AvroTraits.hh:41</div></div>
+<div class="ttc" id="astructavro_1_1is__serializable_html"><div class="ttname"><a href="structavro_1_1is__serializable.html">avro::is_serializable</a></div><div class="ttdoc">Define an is_serializable trait for types we can serialize natively.</div><div class="ttdef"><b>Definition:</b> AvroTraits.hh:38</div></div>
+<div class="ttc" id="astructavro_1_1type__to__avro_html"><div class="ttname"><a href="structavro_1_1type__to__avro.html">avro::type_to_avro</a></div><div class="ttdef"><b>Definition:</b> AvroTraits.hh:44</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Compiler_8hh_source.html b/doc/content/en/docs/next/external/c++-api/Compiler_8hh_source.html
new file mode 100644
index 0000000..39fa0b5
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Compiler_8hh_source.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Compiler.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Compiler.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="namespaceavro.html#afac45d280b253381efc5f489b86c641f"> 1</a></span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_Compiler_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_Compiler_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <cstdint></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <istream></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1InputStream.html">InputStream</a>;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  </div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a>;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  </div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespaceavro.html#a31c14823127aff747cc83e6714de9e31"> 41</a></span> AVRO_DECL <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#a31c14823127aff747cc83e6714de9e31">compileJsonSchema</a>(std::istream &is, <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &schema);</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespaceavro.html#a23cb7c42622aad8310cffa013c022d14"> 48</a></span> AVRO_DECL <span class="keywordtype">bool</span> <a class="code" href="namespaceavro.html#a31c14823127aff747cc83e6714de9e31">compileJsonSchema</a>(std::istream &is, <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &schema,</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::string &error);</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  </div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> AVRO_DECL <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> compileJsonSchemaFromStream(<a class="code" href="classavro_1_1InputStream.html">InputStream</a> &is);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  </div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> AVRO_DECL <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> compileJsonSchemaFromMemory(<span class="keyword">const</span> uint8_t *input, <span class="keywordtype">size_t</span> len);</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> AVRO_DECL <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> compileJsonSchemaFromString(<span class="keyword">const</span> <span class="keywordtype">char</span> *input);</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> AVRO_DECL <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> compileJsonSchemaFromString(<span class="keyword">const</span> std::string &input);</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> AVRO_DECL <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> compileJsonSchemaFromFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassavro_1_1InputStream_html"><div class="ttname"><a href="classavro_1_1InputStream.html">avro::InputStream</a></div><div class="ttdoc">A no-copy input stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:36</div></div>
+<div class="ttc" id="aclassavro_1_1ValidSchema_html"><div class="ttname"><a href="classavro_1_1ValidSchema.html">avro::ValidSchema</a></div><div class="ttdoc">A ValidSchema is basically a non-mutable Schema that has passed some minimum of sanity checks.</div><div class="ttdef"><b>Definition:</b> ValidSchema.hh:40</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_a31c14823127aff747cc83e6714de9e31"><div class="ttname"><a href="namespaceavro.html#a31c14823127aff747cc83e6714de9e31">avro::compileJsonSchema</a></div><div class="ttdeci">AVRO_DECL void compileJsonSchema(std::istream &is, ValidSchema &schema)</div><div class="ttdoc">Given a stream containing a JSON schema, compiles the schema to a ValidSchema object.</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Config_8hh_source.html b/doc/content/en/docs/next/external/c++-api/Config_8hh_source.html
new file mode 100644
index 0000000..b73b741
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Config_8hh_source.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Config.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Config.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_Config_hh</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_Config_hh</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// Windows DLL support</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifdef _WIN32</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#pragma warning(disable : 4275 4251)</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  </div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#if defined(AVRO_DYN_LINK)</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#ifdef AVRO_SOURCE</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define AVRO_DECL __declspec(dllexport)</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define AVRO_DECL __declspec(dllimport)</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#endif </span><span class="comment">// AVRO_SOURCE</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#endif </span><span class="comment">// AVRO_DYN_LINK</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  </div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <intsafe.h></span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">using</span> ssize_t = SSIZE_T;</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif </span><span class="comment">// _WIN32</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#ifndef AVRO_DECL</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#define AVRO_DECL</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/DataFile_8hh_source.html b/doc/content/en/docs/next/external/c++-api/DataFile_8hh_source.html
new file mode 100644
index 0000000..7a44173
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/DataFile_8hh_source.html
@@ -0,0 +1,373 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/DataFile.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">DataFile.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_DataFile_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_DataFile_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="Encoder_8hh.html">Encoder.hh</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "Specific.hh"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "Stream.hh"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "ValidSchema.hh"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "buffer/Buffer.hh"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <map></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <vector></span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "array"</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "boost/utility.hpp"</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <boost/iostreams/filtering_stream.hpp></span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceavro.html#a348c1fae0c6b9d7524b00be30a2746b2"> 40</a></span> <span class="keyword">enum</span> <a class="code" href="namespaceavro.html#a348c1fae0c6b9d7524b00be30a2746b2">Codec</a> {</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  NULL_CODEC,</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  DEFLATE_CODEC,</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#ifdef SNAPPY_CODEC_AVAILABLE</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  SNAPPY_CODEC</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">const</span> <span class="keywordtype">int</span> SyncSize = 16;</div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespaceavro.html#a43f382a7652211425e91bdf186b00f95"> 54</a></span> <span class="keyword">typedef</span> std::array<uint8_t, SyncSize> <a class="code" href="namespaceavro.html#a43f382a7652211425e91bdf186b00f95">DataFileSync</a>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriterBase.html"> 61</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1DataFileWriterBase.html">DataFileWriterBase</a> : boost::noncopyable {</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> std::string filename_;</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> schema_;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">EncoderPtr</a> encoderPtr_;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> syncInterval_;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespaceavro.html#a348c1fae0c6b9d7524b00be30a2746b2">Codec</a> codec_;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::unique_ptr<OutputStream> stream_;</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::unique_ptr<OutputStream> buffer_;</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a43f382a7652211425e91bdf186b00f95">DataFileSync</a> sync_;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  int64_t objectCount_;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  </div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">typedef</span> std::map<std::string, std::vector<uint8_t>> Metadata;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Metadata metadata_;</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  int64_t lastSync_;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">static</span> std::unique_ptr<OutputStream> makeStream(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">static</span> <a class="code" href="namespaceavro.html#a43f382a7652211425e91bdf186b00f95">DataFileSync</a> makeSync();</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  </div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">void</span> writeHeader();</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">void</span> setMetadata(<span class="keyword">const</span> std::string &key, <span class="keyword">const</span> std::string &value);</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> sync();</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">void</span> init(<span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &schema, <span class="keywordtype">size_t</span> syncInterval, <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a348c1fae0c6b9d7524b00be30a2746b2">Codec</a> &codec);</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  </div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriterBase.html#ae4f75607d3861cf2abf5a7a4e7f38bf6"> 98</a></span>  <a class="code" href="classavro_1_1Encoder.html">Encoder</a> &<a class="code" href="classavro_1_1DataFileWriterBase.html#ae4f75607d3861cf2abf5a7a4e7f38bf6">encoder</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *encoderPtr_; }</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  </div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriterBase.html#a9e754b44700f08f5322611b65ce7c6dc"> 104</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileWriterBase.html#a9e754b44700f08f5322611b65ce7c6dc">syncIfNeeded</a>();</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriterBase.html#adc6e3658e2e6bd48ad6cad9c1f2aa9ba"> 109</a></span>  uint64_t <a class="code" href="classavro_1_1DataFileWriterBase.html#adc6e3658e2e6bd48ad6cad9c1f2aa9ba">getCurrentBlockStart</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriterBase.html#a9cf6769404775763a9be7f84d0673541"> 114</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileWriterBase.html#a9cf6769404775763a9be7f84d0673541">incr</a>() {</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  ++objectCount_;</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriterBase.html#a680f12381f5a706931357adc990a540f"> 120</a></span>  <a class="code" href="classavro_1_1DataFileWriterBase.html#a680f12381f5a706931357adc990a540f">DataFileWriterBase</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &sc [...]
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">size_t</span> syncInterval, <a class="code" href="namespaceavro.html#a348c1fae0c6b9d7524b00be30a2746b2">Codec</a> codec = NULL_CODEC);</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="classavro_1_1DataFileWriterBase.html">DataFileWriterBase</a>(std::unique_ptr<OutputStream> outputStream,</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &schema, <span class="keywordtype">size_t</span> syncInterval, <a class="code" href="namespaceavro.html#a348c1fae0c6b9d7524b00be30a2746b2">Codec</a> codec);</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  </div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  ~<a class="code" href="classavro_1_1DataFileWriterBase.html">DataFileWriterBase</a>();</div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriterBase.html#abc2bf032070c962eee3628abbb062edf"> 130</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileWriterBase.html#abc2bf032070c962eee3628abbb062edf">close</a>();</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriterBase.html#a5738729ceee2eed14e7f87b59b4715c3"> 135</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code" href="classavro_1_1DataFileWriterBase.html#a5738729ceee2eed14e7f87b59b4715c3">schema</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> schema_; }</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div>
+<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriterBase.html#a2c398864f93cb3e8ad2e8e5ac3ea61e8"> 140</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileWriterBase.html#a2c398864f93cb3e8ad2e8e5ac3ea61e8">flush</a>();</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> };</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  </div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriter.html"> 147</a></span> <span class="keyword">class </span><a class="code" href="classavro_1_1DataFileWriter.html">DataFileWriter</a> : boost::noncopyable {</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  std::unique_ptr<DataFileWriterBase> base_;</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  </div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriter.html#adf128ce4d3165dedba19b09ea478f756"> 154</a></span>  <a class="code" href="classavro_1_1DataFileWriter.html#adf128ce4d3165dedba19b09ea478f756">DataFileWriter</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code [...]
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">size_t</span> syncInterval = 16 * 1024, <a class="code" href="namespaceavro.html#a348c1fae0c6b9d7524b00be30a2746b2">Codec</a> codec = NULL_CODEC) : base_(new <a class="code" href="classavro_1_1DataFileWriterBase.html">DataFileWriterBase</a>(filename, <a class="code" href="classavro_1_1DataFileWriter.html#aafa35ead8509f13cb99905fe6dfae7e0">schema</a>, syncInterval, co [...]
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  </div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="classavro_1_1DataFileWriter.html#adf128ce4d3165dedba19b09ea478f756">DataFileWriter</a>(std::unique_ptr<OutputStream> outputStream, <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code" href="classavro_1_1DataFileWriter.html#aafa35ead8509f13cb99905fe6dfae7e0">schema</a>,</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordtype">size_t</span> syncInterval = 16 * 1024, <a class="code" href="namespaceavro.html#a348c1fae0c6b9d7524b00be30a2746b2">Codec</a> codec = NULL_CODEC) : base_(new <a class="code" href="classavro_1_1DataFileWriterBase.html">DataFileWriterBase</a>(std::move(outputStream), <a class="code" href="classavro_1_1DataFileWriter.html#aafa35ead8509f13cb99905fe6dfae7e0">schema</a>, s [...]
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  </div>
+<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriter.html#ae9dbcfac61016564f39ee9b13e36311c"> 163</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileWriter.html#ae9dbcfac61016564f39ee9b13e36311c">write</a>(<span class="keyword">const</span> T &datum) {</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  base_->syncIfNeeded();</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="namespaceavro.html#a068734327d24a1e80caeee07b70b367f">avro::encode</a>(base_->encoder(), datum);</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  base_->incr();</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  </div>
+<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriter.html#aa96372b283916cb6a8469ce15a8b3756"> 172</a></span>  uint64_t <a class="code" href="classavro_1_1DataFileWriter.html#aa96372b283916cb6a8469ce15a8b3756">getCurrentBlockStart</a>() { <span class="keywordflow">return</span> base_->getCurrentBlockStart(); }</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div>
+<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriter.html#a3ed294a4c9e3641b4cbd383ede5aedc1"> 178</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileWriter.html#a3ed294a4c9e3641b4cbd383ede5aedc1">close</a>() { base_->close(); }</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  </div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriter.html#aafa35ead8509f13cb99905fe6dfae7e0"> 183</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code" href="classavro_1_1DataFileWriter.html#aafa35ead8509f13cb99905fe6dfae7e0">schema</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> base_->schema(); }</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  </div>
+<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileWriter.html#a837519693ff84da1e86e18c5c2bba885"> 188</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileWriter.html#a837519693ff84da1e86e18c5c2bba885">flush</a>() { base_->flush(); }</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> };</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  </div>
+<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html"> 194</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1DataFileReaderBase.html">DataFileReaderBase</a> : boost::noncopyable {</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">const</span> std::string filename_;</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keyword">const</span> std::unique_ptr<InputStream> stream_;</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> decoder_;</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  int64_t objectCount_;</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">bool</span> eof_;</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="namespaceavro.html#a348c1fae0c6b9d7524b00be30a2746b2">Codec</a> codec_;</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  int64_t blockStart_{};</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  int64_t blockEnd_{};</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  </div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> readerSchema_;</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> dataSchema_;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> dataDecoder_;</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  std::unique_ptr<InputStream> dataStream_;</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keyword">typedef</span> std::map<std::string, std::vector<uint8_t>> Metadata;</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  </div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  Metadata metadata_;</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="namespaceavro.html#a43f382a7652211425e91bdf186b00f95">DataFileSync</a> sync_{};</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  </div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// for compressed buffer</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  std::unique_ptr<boost::iostreams::filtering_istream> os_;</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  std::vector<char> compressed_;</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  std::string uncompressed;</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordtype">void</span> readHeader();</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordtype">void</span> readDataBlock();</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordtype">void</span> doSeek(int64_t position);</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  </div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#adc7d7c531fec38d38bdc199050587265"> 226</a></span>  <a class="code" href="classavro_1_1Decoder.html">Decoder</a> &<a class="code" href="classavro_1_1DataFileReaderBase.html#adc7d7c531fec38d38bdc199050587265">decoder</a>() { <span class="keywordflow">return</span> *dataDecoder_; }</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  </div>
+<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#a8dd0cb6fa75a4090dcf4460484853b24"> 231</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classavro_1_1DataFileReaderBase.html#a8dd0cb6fa75a4090dcf4460484853b24">hasMore</a>();</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  </div>
+<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#aef936c83dfefadfd1814686fbf6b049d"> 236</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileReaderBase.html#aef936c83dfefadfd1814686fbf6b049d">decr</a>() { --objectCount_; }</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  </div>
+<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#af8cf08b6297b84a78efdc23846a933d3"> 244</a></span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1DataFileReaderBase.html#af8cf08b6297b84a78efdc23846a933d3">DataFileReaderBase</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  </div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1DataFileReaderBase.html">DataFileReaderBase</a>(std::unique_ptr<InputStream> inputStream);</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  </div>
+<div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#a653f576982968e7ad5acd01b7e9db86d"> 252</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileReaderBase.html#a653f576982968e7ad5acd01b7e9db86d">init</a>();</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  </div>
+<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#a432b65070ff58dd4cf3ef0d776bdd0cc"> 261</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileReaderBase.html#a432b65070ff58dd4cf3ef0d776bdd0cc">init</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &readerSchema);</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  </div>
+<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#a29930afeae18d2126de0904fa6ab4c33"> 266</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code" href="classavro_1_1DataFileReaderBase.html#a29930afeae18d2126de0904fa6ab4c33">readerSchema</a>() { <span class="keywordflow">return</span> readerSchema_; }</div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  </div>
+<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#a3dc4f150d054cde439eed281230623ab"> 271</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code" href="classavro_1_1DataFileReaderBase.html#a3dc4f150d054cde439eed281230623ab">dataSchema</a>() { <span class="keywordflow">return</span> dataSchema_; }</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  </div>
+<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#ad10eaf9462e2464c37d3a1f4eebc702b"> 276</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileReaderBase.html#ad10eaf9462e2464c37d3a1f4eebc702b">close</a>();</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  </div>
+<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#a6f2a03aeed93d71d002c429b26eeeb3d"> 282</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileReaderBase.html#a6f2a03aeed93d71d002c429b26eeeb3d">seek</a>(int64_t position);</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  </div>
+<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#aea54d09e5ea8a4d08d6bc32752844ebb"> 289</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileReaderBase.html#aea54d09e5ea8a4d08d6bc32752844ebb">sync</a>(int64_t position);</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  </div>
+<div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#aaae611991f7b24c8f7f5f3e0e59970df"> 294</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classavro_1_1DataFileReaderBase.html#aaae611991f7b24c8f7f5f3e0e59970df">pastSync</a>(int64_t position);</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  </div>
+<div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReaderBase.html#a11990c8cfacac6aa176afc183f0e3ca5"> 299</a></span>  int64_t <a class="code" href="classavro_1_1DataFileReaderBase.html#a11990c8cfacac6aa176afc183f0e3ca5">previousSync</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> };</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  </div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html"> 306</a></span> <span class="keyword">class </span><a class="code" href="classavro_1_1DataFileReader.html">DataFileReader</a> : boost::noncopyable {</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  std::unique_ptr<DataFileReaderBase> base_;</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  </div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#adf75cbffd7028e2e383e15ae8caadbe4"> 314</a></span>  <a class="code" href="classavro_1_1DataFileReader.html#adf75cbffd7028e2e383e15ae8caadbe4">DataFileReader</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code [...]
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  base_->init(<a class="code" href="classavro_1_1DataFileReader.html#adfc2ab1b9b78c213e54ddd2e551aeefd">readerSchema</a>);</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  </div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="classavro_1_1DataFileReader.html#adf75cbffd7028e2e383e15ae8caadbe4">DataFileReader</a>(std::unique_ptr<InputStream> inputStream, <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code" href="classavro_1_1DataFileReader.html#adfc2ab1b9b78c213e54ddd2e551aeefd">readerSchema</a>) : base_(new <a class="code" href="cl [...]
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  base_->init(<a class="code" href="classavro_1_1DataFileReader.html#adfc2ab1b9b78c213e54ddd2e551aeefd">readerSchema</a>);</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  </div>
+<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#ab1059583ebd55c0047b49d5933883a03"> 326</a></span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1DataFileReader.html#ab1059583ebd55c0047b49d5933883a03">DataFileReader</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) : base_(new <a class="code" href="classavro_1_1DataFileReaderBase.html">DataFileReade [...]
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  base_->init();</div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  </div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1DataFileReader.html#adf75cbffd7028e2e383e15ae8caadbe4">DataFileReader</a>(std::unique_ptr<InputStream> inputStream) : base_(new <a class="code" href="classavro_1_1DataFileReaderBase.html">DataFileReaderBase</a>(std::move(inputStream))) {</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  base_->init();</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  </div>
+<div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#a043f1a4ab0541f9eddca9f3214b9eb4a"> 343</a></span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1DataFileReader.html#a043f1a4ab0541f9eddca9f3214b9eb4a">DataFileReader</a>(std::unique_ptr<DataFileReaderBase> base) : base_(std::move(base)) {</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  base_->init();</div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  </div>
+<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#a35354b2c81a161c4b94b93aa5c6c0709"> 356</a></span>  <a class="code" href="classavro_1_1DataFileReader.html#a35354b2c81a161c4b94b93aa5c6c0709">DataFileReader</a>(std::unique_ptr<DataFileReaderBase> base,</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code" href="classavro_1_1DataFileReader.html#adfc2ab1b9b78c213e54ddd2e551aeefd">readerSchema</a>) : base_(std::move(base)) {</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  base_->init(<a class="code" href="classavro_1_1DataFileReader.html#adfc2ab1b9b78c213e54ddd2e551aeefd">readerSchema</a>);</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  </div>
+<div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#a9d75e6f33030737fb15da2c57e63ec9f"> 366</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classavro_1_1DataFileReader.html#a9d75e6f33030737fb15da2c57e63ec9f">read</a>(T &datum) {</div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span> (base_->hasMore()) {</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  base_->decr();</div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="namespaceavro.html#a9893c6f7b0f264029261056da57fbd2d">avro::decode</a>(base_->decoder(), datum);</div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  </div>
+<div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#adfc2ab1b9b78c213e54ddd2e551aeefd"> 378</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code" href="classavro_1_1DataFileReader.html#adfc2ab1b9b78c213e54ddd2e551aeefd">readerSchema</a>() { <span class="keywordflow">return</span> base_->readerSchema(); }</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  </div>
+<div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#a1e80d0b64e5eb7f8ffa5b52757171b6c"> 383</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &<a class="code" href="classavro_1_1DataFileReader.html#a1e80d0b64e5eb7f8ffa5b52757171b6c">dataSchema</a>() { <span class="keywordflow">return</span> base_->dataSchema(); }</div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  </div>
+<div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#af92068c4498f900939e3208a2c370b2e"> 388</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileReader.html#af92068c4498f900939e3208a2c370b2e">close</a>() { <span class="keywordflow">return</span> base_->close(); }</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  </div>
+<div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#aab09737c46454c2e37df404a5befcbb3"> 394</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileReader.html#aab09737c46454c2e37df404a5befcbb3">seek</a>(int64_t position) { base_->seek(position); }</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  </div>
+<div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#a3b3e2f8678c50b16ec06ea001730a112"> 401</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1DataFileReader.html#a3b3e2f8678c50b16ec06ea001730a112">sync</a>(int64_t position) { base_->sync(position); }</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  </div>
+<div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#a162788cfe221aeac97d31d9b018e8f84"> 406</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classavro_1_1DataFileReader.html#a162788cfe221aeac97d31d9b018e8f84">pastSync</a>(int64_t position) { <span class="keywordflow">return</span> base_->pastSync(position); }</div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  </div>
+<div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="classavro_1_1DataFileReader.html#a186b6aa483ed15d2ead25570da03a101"> 411</a></span>  int64_t <a class="code" href="classavro_1_1DataFileReader.html#a186b6aa483ed15d2ead25570da03a101">previousSync</a>() { <span class="keywordflow">return</span> base_->previousSync(); }</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> };</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  </div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aEncoder_8hh_html"><div class="ttname"><a href="Encoder_8hh.html">Encoder.hh</a></div><div class="ttdoc">Low level support for encoding avro values.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html">avro::DataFileReaderBase</a></div><div class="ttdoc">The type independent portion of reader.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:194</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_a11990c8cfacac6aa176afc183f0e3ca5"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#a11990c8cfacac6aa176afc183f0e3ca5">avro::DataFileReaderBase::previousSync</a></div><div class="ttdeci">int64_t previousSync() const</div><div class="ttdoc">Return the last synchronization point before our current position.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_a29930afeae18d2126de0904fa6ab4c33"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#a29930afeae18d2126de0904fa6ab4c33">avro::DataFileReaderBase::readerSchema</a></div><div class="ttdeci">const ValidSchema & readerSchema()</div><div class="ttdoc">Returns the schema for this object.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:266</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_a3dc4f150d054cde439eed281230623ab"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#a3dc4f150d054cde439eed281230623ab">avro::DataFileReaderBase::dataSchema</a></div><div class="ttdeci">const ValidSchema & dataSchema()</div><div class="ttdoc">Returns the schema stored with the data file.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:271</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_a432b65070ff58dd4cf3ef0d776bdd0cc"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#a432b65070ff58dd4cf3ef0d776bdd0cc">avro::DataFileReaderBase::init</a></div><div class="ttdeci">void init(const ValidSchema &readerSchema)</div><div class="ttdoc">Initializes the reader to read objects according to the given schema.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_a653f576982968e7ad5acd01b7e9db86d"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#a653f576982968e7ad5acd01b7e9db86d">avro::DataFileReaderBase::init</a></div><div class="ttdeci">void init()</div><div class="ttdoc">Initializes the reader so that the reader and writer schemas are the same.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_a6f2a03aeed93d71d002c429b26eeeb3d"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#a6f2a03aeed93d71d002c429b26eeeb3d">avro::DataFileReaderBase::seek</a></div><div class="ttdeci">void seek(int64_t position)</div><div class="ttdoc">Move to a specific, known synchronization point, for example one returned from tell() after sync().</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_a8dd0cb6fa75a4090dcf4460484853b24"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#a8dd0cb6fa75a4090dcf4460484853b24">avro::DataFileReaderBase::hasMore</a></div><div class="ttdeci">bool hasMore()</div><div class="ttdoc">Returns true if and only if there is more to read.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_aaae611991f7b24c8f7f5f3e0e59970df"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#aaae611991f7b24c8f7f5f3e0e59970df">avro::DataFileReaderBase::pastSync</a></div><div class="ttdeci">bool pastSync(int64_t position)</div><div class="ttdoc">Return true if past the next synchronization point after a position.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_ad10eaf9462e2464c37d3a1f4eebc702b"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#ad10eaf9462e2464c37d3a1f4eebc702b">avro::DataFileReaderBase::close</a></div><div class="ttdeci">void close()</div><div class="ttdoc">Closes the reader.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_adc7d7c531fec38d38bdc199050587265"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#adc7d7c531fec38d38bdc199050587265">avro::DataFileReaderBase::decoder</a></div><div class="ttdeci">Decoder & decoder()</div><div class="ttdoc">Returns the current decoder for this reader.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:226</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_aea54d09e5ea8a4d08d6bc32752844ebb"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#aea54d09e5ea8a4d08d6bc32752844ebb">avro::DataFileReaderBase::sync</a></div><div class="ttdeci">void sync(int64_t position)</div><div class="ttdoc">Move to the next synchronization point after a position.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_aef936c83dfefadfd1814686fbf6b049d"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#aef936c83dfefadfd1814686fbf6b049d">avro::DataFileReaderBase::decr</a></div><div class="ttdeci">void decr()</div><div class="ttdoc">Decrements the number of objects yet to read.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:236</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReaderBase_html_af8cf08b6297b84a78efdc23846a933d3"><div class="ttname"><a href="classavro_1_1DataFileReaderBase.html#af8cf08b6297b84a78efdc23846a933d3">avro::DataFileReaderBase::DataFileReaderBase</a></div><div class="ttdeci">DataFileReaderBase(const char *filename)</div><div class="ttdoc">Constructs the reader for the given file and the reader is expected to use the schema that is used wi...</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html"><div class="ttname"><a href="classavro_1_1DataFileReader.html">avro::DataFileReader</a></div><div class="ttdoc">Reads the contents of data file one after another.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:306</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_a043f1a4ab0541f9eddca9f3214b9eb4a"><div class="ttname"><a href="classavro_1_1DataFileReader.html#a043f1a4ab0541f9eddca9f3214b9eb4a">avro::DataFileReader::DataFileReader</a></div><div class="ttdeci">DataFileReader(std::unique_ptr< DataFileReaderBase > base)</div><div class="ttdoc">Constructs a reader using the reader base.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:343</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_a162788cfe221aeac97d31d9b018e8f84"><div class="ttname"><a href="classavro_1_1DataFileReader.html#a162788cfe221aeac97d31d9b018e8f84">avro::DataFileReader::pastSync</a></div><div class="ttdeci">bool pastSync(int64_t position)</div><div class="ttdoc">Return true if past the next synchronization point after a position.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:406</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_a186b6aa483ed15d2ead25570da03a101"><div class="ttname"><a href="classavro_1_1DataFileReader.html#a186b6aa483ed15d2ead25570da03a101">avro::DataFileReader::previousSync</a></div><div class="ttdeci">int64_t previousSync()</div><div class="ttdoc">Return the last synchronization point before our current position.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:411</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_a1e80d0b64e5eb7f8ffa5b52757171b6c"><div class="ttname"><a href="classavro_1_1DataFileReader.html#a1e80d0b64e5eb7f8ffa5b52757171b6c">avro::DataFileReader::dataSchema</a></div><div class="ttdeci">const ValidSchema & dataSchema()</div><div class="ttdoc">Returns the schema stored with the data file.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:383</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_a35354b2c81a161c4b94b93aa5c6c0709"><div class="ttname"><a href="classavro_1_1DataFileReader.html#a35354b2c81a161c4b94b93aa5c6c0709">avro::DataFileReader::DataFileReader</a></div><div class="ttdeci">DataFileReader(std::unique_ptr< DataFileReaderBase > base, const ValidSchema &readerSchema)</div><div class="ttdoc">Constructs a reader using the reader base.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:356</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_a3b3e2f8678c50b16ec06ea001730a112"><div class="ttname"><a href="classavro_1_1DataFileReader.html#a3b3e2f8678c50b16ec06ea001730a112">avro::DataFileReader::sync</a></div><div class="ttdeci">void sync(int64_t position)</div><div class="ttdoc">Move to the next synchronization point after a position.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:401</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_a9d75e6f33030737fb15da2c57e63ec9f"><div class="ttname"><a href="classavro_1_1DataFileReader.html#a9d75e6f33030737fb15da2c57e63ec9f">avro::DataFileReader::read</a></div><div class="ttdeci">bool read(T &datum)</div><div class="ttdoc">Reads the next entry from the data file.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:366</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_aab09737c46454c2e37df404a5befcbb3"><div class="ttname"><a href="classavro_1_1DataFileReader.html#aab09737c46454c2e37df404a5befcbb3">avro::DataFileReader::seek</a></div><div class="ttdeci">void seek(int64_t position)</div><div class="ttdoc">Move to a specific, known synchronization point, for example one returned from previousSync().</div><div class="ttdef"><b>Definition:</b> DataFile.hh:394</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_ab1059583ebd55c0047b49d5933883a03"><div class="ttname"><a href="classavro_1_1DataFileReader.html#ab1059583ebd55c0047b49d5933883a03">avro::DataFileReader::DataFileReader</a></div><div class="ttdeci">DataFileReader(const char *filename)</div><div class="ttdoc">Constructs the reader for the given file and the reader is expected to use the schema that is used wi...</div><div class="ttdef"><b>Definition:</b> DataFile.hh:326</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_adf75cbffd7028e2e383e15ae8caadbe4"><div class="ttname"><a href="classavro_1_1DataFileReader.html#adf75cbffd7028e2e383e15ae8caadbe4">avro::DataFileReader::DataFileReader</a></div><div class="ttdeci">DataFileReader(const char *filename, const ValidSchema &readerSchema)</div><div class="ttdoc">Constructs the reader for the given file and the reader is expected to use the given schema.</div><div class="ttdef"><b>Definition:</b> DataF [...]
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_adfc2ab1b9b78c213e54ddd2e551aeefd"><div class="ttname"><a href="classavro_1_1DataFileReader.html#adfc2ab1b9b78c213e54ddd2e551aeefd">avro::DataFileReader::readerSchema</a></div><div class="ttdeci">const ValidSchema & readerSchema()</div><div class="ttdoc">Returns the schema for this object.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:378</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileReader_html_af92068c4498f900939e3208a2c370b2e"><div class="ttname"><a href="classavro_1_1DataFileReader.html#af92068c4498f900939e3208a2c370b2e">avro::DataFileReader::close</a></div><div class="ttdeci">void close()</div><div class="ttdoc">Closes the reader.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:388</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriterBase_html"><div class="ttname"><a href="classavro_1_1DataFileWriterBase.html">avro::DataFileWriterBase</a></div><div class="ttdoc">Type-independent portion of DataFileWriter.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:61</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriterBase_html_a2c398864f93cb3e8ad2e8e5ac3ea61e8"><div class="ttname"><a href="classavro_1_1DataFileWriterBase.html#a2c398864f93cb3e8ad2e8e5ac3ea61e8">avro::DataFileWriterBase::flush</a></div><div class="ttdeci">void flush()</div><div class="ttdoc">Flushes any unwritten data into the file.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriterBase_html_a5738729ceee2eed14e7f87b59b4715c3"><div class="ttname"><a href="classavro_1_1DataFileWriterBase.html#a5738729ceee2eed14e7f87b59b4715c3">avro::DataFileWriterBase::schema</a></div><div class="ttdeci">const ValidSchema & schema() const</div><div class="ttdoc">Returns the schema for this data file.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:135</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriterBase_html_a680f12381f5a706931357adc990a540f"><div class="ttname"><a href="classavro_1_1DataFileWriterBase.html#a680f12381f5a706931357adc990a540f">avro::DataFileWriterBase::DataFileWriterBase</a></div><div class="ttdeci">DataFileWriterBase(const char *filename, const ValidSchema &schema, size_t syncInterval, Codec codec=NULL_CODEC)</div><div class="ttdoc">Constructs a data file writer with the given sync interval and name.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriterBase_html_a9cf6769404775763a9be7f84d0673541"><div class="ttname"><a href="classavro_1_1DataFileWriterBase.html#a9cf6769404775763a9be7f84d0673541">avro::DataFileWriterBase::incr</a></div><div class="ttdeci">void incr()</div><div class="ttdoc">Increments the object count.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:114</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriterBase_html_a9e754b44700f08f5322611b65ce7c6dc"><div class="ttname"><a href="classavro_1_1DataFileWriterBase.html#a9e754b44700f08f5322611b65ce7c6dc">avro::DataFileWriterBase::syncIfNeeded</a></div><div class="ttdeci">void syncIfNeeded()</div><div class="ttdoc">Returns true if the buffer has sufficient data for a sync to be inserted.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriterBase_html_abc2bf032070c962eee3628abbb062edf"><div class="ttname"><a href="classavro_1_1DataFileWriterBase.html#abc2bf032070c962eee3628abbb062edf">avro::DataFileWriterBase::close</a></div><div class="ttdeci">void close()</div><div class="ttdoc">Closes the current file.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriterBase_html_adc6e3658e2e6bd48ad6cad9c1f2aa9ba"><div class="ttname"><a href="classavro_1_1DataFileWriterBase.html#adc6e3658e2e6bd48ad6cad9c1f2aa9ba">avro::DataFileWriterBase::getCurrentBlockStart</a></div><div class="ttdeci">uint64_t getCurrentBlockStart() const</div><div class="ttdoc">Returns the byte offset (within the current file) of the start of the current block being written.</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriterBase_html_ae4f75607d3861cf2abf5a7a4e7f38bf6"><div class="ttname"><a href="classavro_1_1DataFileWriterBase.html#ae4f75607d3861cf2abf5a7a4e7f38bf6">avro::DataFileWriterBase::encoder</a></div><div class="ttdeci">Encoder & encoder() const</div><div class="ttdoc">Returns the current encoder for this writer.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:98</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriter_html"><div class="ttname"><a href="classavro_1_1DataFileWriter.html">avro::DataFileWriter</a></div><div class="ttdoc">An Avro datafile that can store objects of type T.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:147</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriter_html_a3ed294a4c9e3641b4cbd383ede5aedc1"><div class="ttname"><a href="classavro_1_1DataFileWriter.html#a3ed294a4c9e3641b4cbd383ede5aedc1">avro::DataFileWriter::close</a></div><div class="ttdeci">void close()</div><div class="ttdoc">Closes the current file.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:178</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriter_html_a837519693ff84da1e86e18c5c2bba885"><div class="ttname"><a href="classavro_1_1DataFileWriter.html#a837519693ff84da1e86e18c5c2bba885">avro::DataFileWriter::flush</a></div><div class="ttdeci">void flush()</div><div class="ttdoc">Flushes any unwritten data into the file.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:188</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriter_html_aa96372b283916cb6a8469ce15a8b3756"><div class="ttname"><a href="classavro_1_1DataFileWriter.html#aa96372b283916cb6a8469ce15a8b3756">avro::DataFileWriter::getCurrentBlockStart</a></div><div class="ttdeci">uint64_t getCurrentBlockStart()</div><div class="ttdoc">Returns the byte offset (within the current file) of the start of the current block being written.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:172</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriter_html_aafa35ead8509f13cb99905fe6dfae7e0"><div class="ttname"><a href="classavro_1_1DataFileWriter.html#aafa35ead8509f13cb99905fe6dfae7e0">avro::DataFileWriter::schema</a></div><div class="ttdeci">const ValidSchema & schema() const</div><div class="ttdoc">Returns the schema for this data file.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:183</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriter_html_adf128ce4d3165dedba19b09ea478f756"><div class="ttname"><a href="classavro_1_1DataFileWriter.html#adf128ce4d3165dedba19b09ea478f756">avro::DataFileWriter::DataFileWriter</a></div><div class="ttdeci">DataFileWriter(const char *filename, const ValidSchema &schema, size_t syncInterval=16 *1024, Codec codec=NULL_CODEC)</div><div class="ttdoc">Constructs a new data file.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:154</div></div>
+<div class="ttc" id="aclassavro_1_1DataFileWriter_html_ae9dbcfac61016564f39ee9b13e36311c"><div class="ttname"><a href="classavro_1_1DataFileWriter.html#ae9dbcfac61016564f39ee9b13e36311c">avro::DataFileWriter::write</a></div><div class="ttdeci">void write(const T &datum)</div><div class="ttdoc">Writes the given piece of data into the file.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:163</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html"><div class="ttname"><a href="classavro_1_1Decoder.html">avro::Decoder</a></div><div class="ttdoc">Decoder is an interface implemented by every decoder capable of decoding Avro data.</div><div class="ttdef"><b>Definition:</b> Decoder.hh:48</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html"><div class="ttname"><a href="classavro_1_1Encoder.html">avro::Encoder</a></div><div class="ttdoc">The abstract base class for all Avro encoders.</div><div class="ttdef"><b>Definition:</b> Encoder.hh:52</div></div>
+<div class="ttc" id="aclassavro_1_1ValidSchema_html"><div class="ttname"><a href="classavro_1_1ValidSchema.html">avro::ValidSchema</a></div><div class="ttdoc">A ValidSchema is basically a non-mutable Schema that has passed some minimum of sanity checks.</div><div class="ttdef"><b>Definition:</b> ValidSchema.hh:40</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_a068734327d24a1e80caeee07b70b367f"><div class="ttname"><a href="namespaceavro.html#a068734327d24a1e80caeee07b70b367f">avro::encode</a></div><div class="ttdeci">void encode(Encoder &e, const T &t)</div><div class="ttdoc">Generic encoder function that makes use of the codec_traits.</div><div class="ttdef"><b>Definition:</b> Specific.hh:343</div></div>
+<div class="ttc" id="anamespaceavro_html_a2bf627d2676075c8eeaf6a25103b5d5e"><div class="ttname"><a href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">avro::EncoderPtr</a></div><div class="ttdeci">std::shared_ptr< Encoder > EncoderPtr</div><div class="ttdoc">Shared pointer to Encoder.</div><div class="ttdef"><b>Definition:</b> Encoder.hh:147</div></div>
+<div class="ttc" id="anamespaceavro_html_a2e61ab3fbdffc13d2a20efd80c5811b1"><div class="ttname"><a href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">avro::DecoderPtr</a></div><div class="ttdeci">std::shared_ptr< Decoder > DecoderPtr</div><div class="ttdoc">Shared pointer to Decoder.</div><div class="ttdef"><b>Definition:</b> Decoder.hh:177</div></div>
+<div class="ttc" id="anamespaceavro_html_a348c1fae0c6b9d7524b00be30a2746b2"><div class="ttname"><a href="namespaceavro.html#a348c1fae0c6b9d7524b00be30a2746b2">avro::Codec</a></div><div class="ttdeci">Codec</div><div class="ttdoc">Specify type of compression to use when writing data files.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:40</div></div>
+<div class="ttc" id="anamespaceavro_html_a43f382a7652211425e91bdf186b00f95"><div class="ttname"><a href="namespaceavro.html#a43f382a7652211425e91bdf186b00f95">avro::DataFileSync</a></div><div class="ttdeci">std::array< uint8_t, SyncSize > DataFileSync</div><div class="ttdoc">The sync value.</div><div class="ttdef"><b>Definition:</b> DataFile.hh:54</div></div>
+<div class="ttc" id="anamespaceavro_html_a9893c6f7b0f264029261056da57fbd2d"><div class="ttname"><a href="namespaceavro.html#a9893c6f7b0f264029261056da57fbd2d">avro::decode</a></div><div class="ttdeci">void decode(Decoder &d, T &t)</div><div class="ttdoc">Generic decoder function that makes use of the codec_traits.</div><div class="ttdef"><b>Definition:</b> Specific.hh:351</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Decoder_8hh.html b/doc/content/en/docs/next/external/c++-api/Decoder_8hh.html
new file mode 100644
index 0000000..21516e6
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Decoder_8hh.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Decoder.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#typedef-members">Typedefs</a> |
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">Decoder.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Low level support for decoding avro values.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include "Config.hh"</code><br />
+<code>#include <cstdint></code><br />
+<code>#include <memory></code><br />
+<code>#include <string></code><br />
+<code>#include <vector></code><br />
+<code>#include "Stream.hh"</code><br />
+<code>#include "ValidSchema.hh"</code><br />
+</div>
+<p><a href="Decoder_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classavro_1_1Decoder.html">avro::Decoder</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classavro_1_1Decoder.html" title="Decoder is an interface implemented by every decoder capable of decoding Avro data.">Decoder</a> is an interface implemented by every decoder capable of decoding Avro data. <a href="classavro_1_1Decoder.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classavro_1_1ResolvingDecoder.html">avro::ResolvingDecoder</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classavro_1_1ResolvingDecoder.html" title="ResolvingDecoder is derived from Decoder, with an additional function to obtain the field ordering of...">ResolvingDecoder</a> is derived from <a class="el" href="classavro_1_1Decoder.html">Decoder</a>, with an additional function to obtain the field ordering of fields within a record. <a href="classavro_1_1ResolvingDecoder.html#details">More...</a> [...]
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceavro"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html">avro</a></td></tr>
+<tr class="memdesc:namespaceavro"><td class="mdescLeft"> </td><td class="mdescRight">A bunch of templates and specializations for encoding and decoding specific types. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:a2e61ab3fbdffc13d2a20efd80c5811b1"><td class="memItemLeft" align="right" valign="top"><a id="a2e61ab3fbdffc13d2a20efd80c5811b1"></a>
+using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">avro::DecoderPtr</a> = std::shared_ptr< Decoder ></td></tr>
+<tr class="memdesc:a2e61ab3fbdffc13d2a20efd80c5811b1"><td class="mdescLeft"> </td><td class="mdescRight">Shared pointer to <a class="el" href="classavro_1_1Decoder.html" title="Decoder is an interface implemented by every decoder capable of decoding Avro data.">Decoder</a>. <br /></td></tr>
+<tr class="separator:a2e61ab3fbdffc13d2a20efd80c5811b1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac198aa7cfb3f53cfe4fa993f52fad2d7"><td class="memItemLeft" align="right" valign="top"><a id="ac198aa7cfb3f53cfe4fa993f52fad2d7"></a>
+using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#ac198aa7cfb3f53cfe4fa993f52fad2d7">avro::ResolvingDecoderPtr</a> = std::shared_ptr< ResolvingDecoder ></td></tr>
+<tr class="memdesc:ac198aa7cfb3f53cfe4fa993f52fad2d7"><td class="mdescLeft"> </td><td class="mdescRight">Shared pointer to <a class="el" href="classavro_1_1ResolvingDecoder.html" title="ResolvingDecoder is derived from Decoder, with an additional function to obtain the field ordering of...">ResolvingDecoder</a>. <br /></td></tr>
+<tr class="separator:ac198aa7cfb3f53cfe4fa993f52fad2d7"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a04f78e53cb84a0189b626e6a5726b148"><td class="memItemLeft" align="right" valign="top"><a id="a04f78e53cb84a0189b626e6a5726b148"></a>
+AVRO_DECL DecoderPtr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a04f78e53cb84a0189b626e6a5726b148">avro::binaryDecoder</a> ()</td></tr>
+<tr class="memdesc:a04f78e53cb84a0189b626e6a5726b148"><td class="mdescLeft"> </td><td class="mdescRight">Returns an decoder that can decode binary Avro standard. <br /></td></tr>
+<tr class="separator:a04f78e53cb84a0189b626e6a5726b148"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9408498d77f42a536074433cc541d8ae"><td class="memItemLeft" align="right" valign="top"><a id="a9408498d77f42a536074433cc541d8ae"></a>
+AVRO_DECL DecoderPtr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a9408498d77f42a536074433cc541d8ae">avro::validatingDecoder</a> (const ValidSchema &schema, const DecoderPtr &base)</td></tr>
+<tr class="memdesc:a9408498d77f42a536074433cc541d8ae"><td class="mdescLeft"> </td><td class="mdescRight">Returns an decoder that validates sequence of calls to an underlying <a class="el" href="classavro_1_1Decoder.html" title="Decoder is an interface implemented by every decoder capable of decoding Avro data.">Decoder</a> against the given schema. <br /></td></tr>
+<tr class="separator:a9408498d77f42a536074433cc541d8ae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7ac8a9c93b0621227de3dcca383e36ff"><td class="memItemLeft" align="right" valign="top"><a id="a7ac8a9c93b0621227de3dcca383e36ff"></a>
+AVRO_DECL DecoderPtr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a7ac8a9c93b0621227de3dcca383e36ff">avro::jsonDecoder</a> (const ValidSchema &schema)</td></tr>
+<tr class="memdesc:a7ac8a9c93b0621227de3dcca383e36ff"><td class="mdescLeft"> </td><td class="mdescRight">Returns an decoder that can decode Avro standard for JSON. <br /></td></tr>
+<tr class="separator:a7ac8a9c93b0621227de3dcca383e36ff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeef8b583abe36b25a8d2094d7a3d4b96"><td class="memItemLeft" align="right" valign="top">AVRO_DECL ResolvingDecoderPtr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#aeef8b583abe36b25a8d2094d7a3d4b96">avro::resolvingDecoder</a> (const ValidSchema &writer, const ValidSchema &reader, const DecoderPtr &base)</td></tr>
+<tr class="memdesc:aeef8b583abe36b25a8d2094d7a3d4b96"><td class="mdescLeft"> </td><td class="mdescRight">Returns a decoder that decodes avro data from base written according to writerSchema and resolves against readerSchema. <a href="namespaceavro.html#aeef8b583abe36b25a8d2094d7a3d4b96">More...</a><br /></td></tr>
+<tr class="separator:aeef8b583abe36b25a8d2094d7a3d4b96"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Low level support for decoding avro values. </p>
+<p>This class has two types of functions. One type of functions support decoding of leaf values (for example, decodeLong and decodeString). These functions have analogs in Encoder.</p>
+<p>The other type of functions support decoding of maps and arrays. These functions are arrayStart, startItem, and arrayEnd (and similar functions for maps). </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Decoder_8hh_source.html b/doc/content/en/docs/next/external/c++-api/Decoder_8hh_source.html
new file mode 100644
index 0000000..5df0fbe
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Decoder_8hh_source.html
@@ -0,0 +1,235 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Decoder.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Decoder.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="Decoder_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_Decoder_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_Decoder_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <cstdint></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <memory></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <vector></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Stream.hh"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ValidSchema.hh"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  </div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html"> 48</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1Decoder.html">Decoder</a> {</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> ~<a class="code" href="classavro_1_1Decoder.html">Decoder</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a4a2306d75ec6a6ef84215c5781267eaf"> 54</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Decoder.html#a4a2306d75ec6a6ef84215c5781267eaf">init</a>(<a class="code" href="classavro_1_1InputStream.html">InputStream</a> &is) = 0;</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a2d4d3b59b0840b8cddae07a50d9757a8"> 57</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Decoder.html#a2d4d3b59b0840b8cddae07a50d9757a8">decodeNull</a>() = 0;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a6fb5d57e25e6558f1efec83a1796788c"> 60</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classavro_1_1Decoder.html#a6fb5d57e25e6558f1efec83a1796788c">decodeBool</a>() = 0;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a40caf8fe0ae133f2e19542db5cf30109"> 63</a></span>  <span class="keyword">virtual</span> int32_t <a class="code" href="classavro_1_1Decoder.html#a40caf8fe0ae133f2e19542db5cf30109">decodeInt</a>() = 0;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a8bb879546d0c95c0b31bd644eb934973"> 66</a></span>  <span class="keyword">virtual</span> int64_t <a class="code" href="classavro_1_1Decoder.html#a8bb879546d0c95c0b31bd644eb934973">decodeLong</a>() = 0;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a704768e7ff55ea8736b54737a52bac4c"> 69</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">float</span> <a class="code" href="classavro_1_1Decoder.html#a704768e7ff55ea8736b54737a52bac4c">decodeFloat</a>() = 0;</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#acdd007718928920fd65b643fefb6e9ab"> 72</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classavro_1_1Decoder.html#acdd007718928920fd65b643fefb6e9ab">decodeDouble</a>() = 0;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#adf991b9e4d42bc0d6e992435192714ad"> 75</a></span>  std::string <a class="code" href="classavro_1_1Decoder.html#adf991b9e4d42bc0d6e992435192714ad">decodeString</a>() {</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  std::string result;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  decodeString(result);</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  </div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#aa8066eb634df77f083d36b1d88980153"> 84</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Decoder.html#aa8066eb634df77f083d36b1d88980153">decodeString</a>(std::string &value) = 0;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#ab8b150983caf510f12855cd124a38e5c"> 87</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Decoder.html#ab8b150983caf510f12855cd124a38e5c">skipString</a>() = 0;</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a50882d78ce6fe028ff03206b60231d63"> 90</a></span>  std::vector<uint8_t> <a class="code" href="classavro_1_1Decoder.html#a50882d78ce6fe028ff03206b60231d63">decodeBytes</a>() {</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  std::vector<uint8_t> result;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  decodeBytes(result);</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a778c603f5008ec8d1756f30e6ab5acab"> 98</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Decoder.html#a778c603f5008ec8d1756f30e6ab5acab">decodeBytes</a>(std::vector<uint8_t> &value) = 0;</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  </div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a4bafd4865694ded2060ef579241f0686"> 101</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Decoder.html#a4bafd4865694ded2060ef579241f0686">skipBytes</a>() = 0;</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#abff413217a31b08e9f66e361b2a18b6e"> 109</a></span>  std::vector<uint8_t> <a class="code" href="classavro_1_1Decoder.html#abff413217a31b08e9f66e361b2a18b6e">decodeFixed</a>(<span class="keywordtype">size_t</span> n) {</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  std::vector<uint8_t> result;</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  decodeFixed(n, result);</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a156efba788d2aa51d17a57edf7793632"> 121</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Decoder.html#a156efba788d2aa51d17a57edf7793632">decodeFixed</a>(<span class="keywordtype">size_t</span> n, std::vector<uint8_t> &value) = 0;</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  </div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a11670ef98740c8d639ebdfb3790f28be"> 124</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Decoder.html#a11670ef98740c8d639ebdfb3790f28be">skipFixed</a>(<span class="keywordtype">size_t</span> n) = 0;</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div>
+<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a833593bf32b78174bfc6e319ad518847"> 127</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1Decoder.html#a833593bf32b78174bfc6e319ad518847">decodeEnum</a>() = 0;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a6901142577da580531e1ebac610e5b49"> 130</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1Decoder.html#a6901142577da580531e1ebac610e5b49">arrayStart</a>() = 0;</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a4629a6b123b1eed417879b3092ce0a82"> 133</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1Decoder.html#a4629a6b123b1eed417879b3092ce0a82">arrayNext</a>() = 0;</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div>
+<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a861e396bae1f736632948ba99c7b4317"> 139</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1Decoder.html#a861e396bae1f736632948ba99c7b4317">skipArray</a>() = 0;</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a50e8a7d7e4fd123ffc6219f75fd03175"> 142</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1Decoder.html#a50e8a7d7e4fd123ffc6219f75fd03175">mapStart</a>() = 0;</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  </div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a06c3be19c33ce5cd04478be5f6d7e454"> 145</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1Decoder.html#a06c3be19c33ce5cd04478be5f6d7e454">mapNext</a>() = 0;</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a70cfe7538606efec884549eba9c7545e"> 151</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1Decoder.html#a70cfe7538606efec884549eba9c7545e">skipMap</a>() = 0;</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  </div>
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#a5aa55c2e0fe4e1cb728cdd6283c4f219"> 154</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1Decoder.html#a5aa55c2e0fe4e1cb728cdd6283c4f219">decodeUnionIndex</a>() = 0;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  </div>
+<div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classavro_1_1Decoder.html#ad8e3537882cf6ac05e0d02130873b77a"> 171</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Decoder.html#ad8e3537882cf6ac05e0d02130873b77a">drain</a>() = 0;</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> };</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div>
+<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1"> 177</a></span> <span class="keyword">using</span> <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> = std::shared_ptr<Decoder>;</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  </div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classavro_1_1ResolvingDecoder.html"> 183</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1ResolvingDecoder.html">ResolvingDecoder</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1Decoder.html">Decoder</a> {</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classavro_1_1ResolvingDecoder.html#a5a07137b2c4e560036e3b87790c9421b"> 190</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::vector<size_t> &<a class="code" href="classavro_1_1ResolvingDecoder.html#a5a07137b2c4e560036e3b87790c9421b">fieldOrder</a>() = 0;</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> };</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  </div>
+<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="namespaceavro.html#ac198aa7cfb3f53cfe4fa993f52fad2d7"> 196</a></span> <span class="keyword">using</span> <a class="code" href="namespaceavro.html#ac198aa7cfb3f53cfe4fa993f52fad2d7">ResolvingDecoderPtr</a> = std::shared_ptr<ResolvingDecoder>;</div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="namespaceavro.html#a04f78e53cb84a0189b626e6a5726b148"> 200</a></span> AVRO_DECL <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> <a class="code" href="namespaceavro.html#a04f78e53cb84a0189b626e6a5726b148">binaryDecoder</a>();</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  </div>
+<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="namespaceavro.html#a9408498d77f42a536074433cc541d8ae"> 206</a></span> AVRO_DECL <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> <a class="code" href="namespaceavro.html#a9408498d77f42a536074433cc541d8ae">validatingDecoder</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &schema,</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> &base);</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div>
+<div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="namespaceavro.html#a7ac8a9c93b0621227de3dcca383e36ff"> 212</a></span> AVRO_DECL <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> <a class="code" href="namespaceavro.html#a7ac8a9c93b0621227de3dcca383e36ff">jsonDecoder</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &schema);</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  </div>
+<div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="namespaceavro.html#aeef8b583abe36b25a8d2094d7a3d4b96"> 220</a></span> AVRO_DECL <a class="code" href="namespaceavro.html#ac198aa7cfb3f53cfe4fa993f52fad2d7">ResolvingDecoderPtr</a> <a class="code" href="namespaceavro.html#aeef8b583abe36b25a8d2094d7a3d4b96">resolvingDecoder</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &writer,</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &reader, <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> &base);</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  </div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  </div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html"><div class="ttname"><a href="classavro_1_1Decoder.html">avro::Decoder</a></div><div class="ttdoc">Decoder is an interface implemented by every decoder capable of decoding Avro data.</div><div class="ttdef"><b>Definition:</b> Decoder.hh:48</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a06c3be19c33ce5cd04478be5f6d7e454"><div class="ttname"><a href="classavro_1_1Decoder.html#a06c3be19c33ce5cd04478be5f6d7e454">avro::Decoder::mapNext</a></div><div class="ttdeci">virtual size_t mapNext()=0</div><div class="ttdoc">Returns the number of entries in next chunk. 0 if last.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a11670ef98740c8d639ebdfb3790f28be"><div class="ttname"><a href="classavro_1_1Decoder.html#a11670ef98740c8d639ebdfb3790f28be">avro::Decoder::skipFixed</a></div><div class="ttdeci">virtual void skipFixed(size_t n)=0</div><div class="ttdoc">Skips fixed length binary on the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a156efba788d2aa51d17a57edf7793632"><div class="ttname"><a href="classavro_1_1Decoder.html#a156efba788d2aa51d17a57edf7793632">avro::Decoder::decodeFixed</a></div><div class="ttdeci">virtual void decodeFixed(size_t n, std::vector< uint8_t > &value)=0</div><div class="ttdoc">Decodes a fixed from the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a2d4d3b59b0840b8cddae07a50d9757a8"><div class="ttname"><a href="classavro_1_1Decoder.html#a2d4d3b59b0840b8cddae07a50d9757a8">avro::Decoder::decodeNull</a></div><div class="ttdeci">virtual void decodeNull()=0</div><div class="ttdoc">Decodes a null from the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a40caf8fe0ae133f2e19542db5cf30109"><div class="ttname"><a href="classavro_1_1Decoder.html#a40caf8fe0ae133f2e19542db5cf30109">avro::Decoder::decodeInt</a></div><div class="ttdeci">virtual int32_t decodeInt()=0</div><div class="ttdoc">Decodes a 32-bit int from the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a4629a6b123b1eed417879b3092ce0a82"><div class="ttname"><a href="classavro_1_1Decoder.html#a4629a6b123b1eed417879b3092ce0a82">avro::Decoder::arrayNext</a></div><div class="ttdeci">virtual size_t arrayNext()=0</div><div class="ttdoc">Returns the number of entries in next chunk. 0 if last.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a4a2306d75ec6a6ef84215c5781267eaf"><div class="ttname"><a href="classavro_1_1Decoder.html#a4a2306d75ec6a6ef84215c5781267eaf">avro::Decoder::init</a></div><div class="ttdeci">virtual void init(InputStream &is)=0</div><div class="ttdoc">All future decoding will come from is, which should be valid until replaced by another call to init()...</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a4bafd4865694ded2060ef579241f0686"><div class="ttname"><a href="classavro_1_1Decoder.html#a4bafd4865694ded2060ef579241f0686">avro::Decoder::skipBytes</a></div><div class="ttdeci">virtual void skipBytes()=0</div><div class="ttdoc">Skips bytes on the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a50882d78ce6fe028ff03206b60231d63"><div class="ttname"><a href="classavro_1_1Decoder.html#a50882d78ce6fe028ff03206b60231d63">avro::Decoder::decodeBytes</a></div><div class="ttdeci">std::vector< uint8_t > decodeBytes()</div><div class="ttdoc">Decodes arbitrary binary data from the current stream.</div><div class="ttdef"><b>Definition:</b> Decoder.hh:90</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a50e8a7d7e4fd123ffc6219f75fd03175"><div class="ttname"><a href="classavro_1_1Decoder.html#a50e8a7d7e4fd123ffc6219f75fd03175">avro::Decoder::mapStart</a></div><div class="ttdeci">virtual size_t mapStart()=0</div><div class="ttdoc">Start decoding a map. Returns the number of entries in first chunk.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a5aa55c2e0fe4e1cb728cdd6283c4f219"><div class="ttname"><a href="classavro_1_1Decoder.html#a5aa55c2e0fe4e1cb728cdd6283c4f219">avro::Decoder::decodeUnionIndex</a></div><div class="ttdeci">virtual size_t decodeUnionIndex()=0</div><div class="ttdoc">Decodes a branch of a union. The actual value is to follow.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a6901142577da580531e1ebac610e5b49"><div class="ttname"><a href="classavro_1_1Decoder.html#a6901142577da580531e1ebac610e5b49">avro::Decoder::arrayStart</a></div><div class="ttdeci">virtual size_t arrayStart()=0</div><div class="ttdoc">Start decoding an array. Returns the number of entries in first chunk.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a6fb5d57e25e6558f1efec83a1796788c"><div class="ttname"><a href="classavro_1_1Decoder.html#a6fb5d57e25e6558f1efec83a1796788c">avro::Decoder::decodeBool</a></div><div class="ttdeci">virtual bool decodeBool()=0</div><div class="ttdoc">Decodes a bool from the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a704768e7ff55ea8736b54737a52bac4c"><div class="ttname"><a href="classavro_1_1Decoder.html#a704768e7ff55ea8736b54737a52bac4c">avro::Decoder::decodeFloat</a></div><div class="ttdeci">virtual float decodeFloat()=0</div><div class="ttdoc">Decodes a single-precision floating point number from current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a70cfe7538606efec884549eba9c7545e"><div class="ttname"><a href="classavro_1_1Decoder.html#a70cfe7538606efec884549eba9c7545e">avro::Decoder::skipMap</a></div><div class="ttdeci">virtual size_t skipMap()=0</div><div class="ttdoc">Tries to skip a map.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a778c603f5008ec8d1756f30e6ab5acab"><div class="ttname"><a href="classavro_1_1Decoder.html#a778c603f5008ec8d1756f30e6ab5acab">avro::Decoder::decodeBytes</a></div><div class="ttdeci">virtual void decodeBytes(std::vector< uint8_t > &value)=0</div><div class="ttdoc">Decodes arbitrary binary data from the current stream and puts it in value.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a833593bf32b78174bfc6e319ad518847"><div class="ttname"><a href="classavro_1_1Decoder.html#a833593bf32b78174bfc6e319ad518847">avro::Decoder::decodeEnum</a></div><div class="ttdeci">virtual size_t decodeEnum()=0</div><div class="ttdoc">Decodes enum from the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a861e396bae1f736632948ba99c7b4317"><div class="ttname"><a href="classavro_1_1Decoder.html#a861e396bae1f736632948ba99c7b4317">avro::Decoder::skipArray</a></div><div class="ttdeci">virtual size_t skipArray()=0</div><div class="ttdoc">Tries to skip an array.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_a8bb879546d0c95c0b31bd644eb934973"><div class="ttname"><a href="classavro_1_1Decoder.html#a8bb879546d0c95c0b31bd644eb934973">avro::Decoder::decodeLong</a></div><div class="ttdeci">virtual int64_t decodeLong()=0</div><div class="ttdoc">Decodes a 64-bit signed int from the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_aa8066eb634df77f083d36b1d88980153"><div class="ttname"><a href="classavro_1_1Decoder.html#aa8066eb634df77f083d36b1d88980153">avro::Decoder::decodeString</a></div><div class="ttdeci">virtual void decodeString(std::string &value)=0</div><div class="ttdoc">Decodes a UTF-8 string from the stream and assigns it to value.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_ab8b150983caf510f12855cd124a38e5c"><div class="ttname"><a href="classavro_1_1Decoder.html#ab8b150983caf510f12855cd124a38e5c">avro::Decoder::skipString</a></div><div class="ttdeci">virtual void skipString()=0</div><div class="ttdoc">Skips a string on the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_abff413217a31b08e9f66e361b2a18b6e"><div class="ttname"><a href="classavro_1_1Decoder.html#abff413217a31b08e9f66e361b2a18b6e">avro::Decoder::decodeFixed</a></div><div class="ttdeci">std::vector< uint8_t > decodeFixed(size_t n)</div><div class="ttdoc">Decodes fixed length binary from the current stream.</div><div class="ttdef"><b>Definition:</b> Decoder.hh:109</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_acdd007718928920fd65b643fefb6e9ab"><div class="ttname"><a href="classavro_1_1Decoder.html#acdd007718928920fd65b643fefb6e9ab">avro::Decoder::decodeDouble</a></div><div class="ttdeci">virtual double decodeDouble()=0</div><div class="ttdoc">Decodes a double-precision floating point number from current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_ad8e3537882cf6ac05e0d02130873b77a"><div class="ttname"><a href="classavro_1_1Decoder.html#ad8e3537882cf6ac05e0d02130873b77a">avro::Decoder::drain</a></div><div class="ttdeci">virtual void drain()=0</div><div class="ttdoc">Drains any additional data at the end of the current entry in a stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html_adf991b9e4d42bc0d6e992435192714ad"><div class="ttname"><a href="classavro_1_1Decoder.html#adf991b9e4d42bc0d6e992435192714ad">avro::Decoder::decodeString</a></div><div class="ttdeci">std::string decodeString()</div><div class="ttdoc">Decodes a UTF-8 string from the current stream.</div><div class="ttdef"><b>Definition:</b> Decoder.hh:75</div></div>
+<div class="ttc" id="aclassavro_1_1InputStream_html"><div class="ttname"><a href="classavro_1_1InputStream.html">avro::InputStream</a></div><div class="ttdoc">A no-copy input stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:36</div></div>
+<div class="ttc" id="aclassavro_1_1ResolvingDecoder_html"><div class="ttname"><a href="classavro_1_1ResolvingDecoder.html">avro::ResolvingDecoder</a></div><div class="ttdoc">ResolvingDecoder is derived from Decoder, with an additional function to obtain the field ordering of...</div><div class="ttdef"><b>Definition:</b> Decoder.hh:183</div></div>
+<div class="ttc" id="aclassavro_1_1ResolvingDecoder_html_a5a07137b2c4e560036e3b87790c9421b"><div class="ttname"><a href="classavro_1_1ResolvingDecoder.html#a5a07137b2c4e560036e3b87790c9421b">avro::ResolvingDecoder::fieldOrder</a></div><div class="ttdeci">virtual const std::vector< size_t > & fieldOrder()=0</div><div class="ttdoc">Returns the order of fields for records.</div></div>
+<div class="ttc" id="aclassavro_1_1ValidSchema_html"><div class="ttname"><a href="classavro_1_1ValidSchema.html">avro::ValidSchema</a></div><div class="ttdoc">A ValidSchema is basically a non-mutable Schema that has passed some minimum of sanity checks.</div><div class="ttdef"><b>Definition:</b> ValidSchema.hh:40</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_a04f78e53cb84a0189b626e6a5726b148"><div class="ttname"><a href="namespaceavro.html#a04f78e53cb84a0189b626e6a5726b148">avro::binaryDecoder</a></div><div class="ttdeci">AVRO_DECL DecoderPtr binaryDecoder()</div><div class="ttdoc">Returns an decoder that can decode binary Avro standard.</div></div>
+<div class="ttc" id="anamespaceavro_html_a2e61ab3fbdffc13d2a20efd80c5811b1"><div class="ttname"><a href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">avro::DecoderPtr</a></div><div class="ttdeci">std::shared_ptr< Decoder > DecoderPtr</div><div class="ttdoc">Shared pointer to Decoder.</div><div class="ttdef"><b>Definition:</b> Decoder.hh:177</div></div>
+<div class="ttc" id="anamespaceavro_html_a7ac8a9c93b0621227de3dcca383e36ff"><div class="ttname"><a href="namespaceavro.html#a7ac8a9c93b0621227de3dcca383e36ff">avro::jsonDecoder</a></div><div class="ttdeci">AVRO_DECL DecoderPtr jsonDecoder(const ValidSchema &schema)</div><div class="ttdoc">Returns an decoder that can decode Avro standard for JSON.</div></div>
+<div class="ttc" id="anamespaceavro_html_a9408498d77f42a536074433cc541d8ae"><div class="ttname"><a href="namespaceavro.html#a9408498d77f42a536074433cc541d8ae">avro::validatingDecoder</a></div><div class="ttdeci">AVRO_DECL DecoderPtr validatingDecoder(const ValidSchema &schema, const DecoderPtr &base)</div><div class="ttdoc">Returns an decoder that validates sequence of calls to an underlying Decoder against the given schema...</div></div>
+<div class="ttc" id="anamespaceavro_html_ac198aa7cfb3f53cfe4fa993f52fad2d7"><div class="ttname"><a href="namespaceavro.html#ac198aa7cfb3f53cfe4fa993f52fad2d7">avro::ResolvingDecoderPtr</a></div><div class="ttdeci">std::shared_ptr< ResolvingDecoder > ResolvingDecoderPtr</div><div class="ttdoc">Shared pointer to ResolvingDecoder.</div><div class="ttdef"><b>Definition:</b> Decoder.hh:196</div></div>
+<div class="ttc" id="anamespaceavro_html_aeef8b583abe36b25a8d2094d7a3d4b96"><div class="ttname"><a href="namespaceavro.html#aeef8b583abe36b25a8d2094d7a3d4b96">avro::resolvingDecoder</a></div><div class="ttdeci">AVRO_DECL ResolvingDecoderPtr resolvingDecoder(const ValidSchema &writer, const ValidSchema &reader, const DecoderPtr &base)</div><div class="ttdoc">Returns a decoder that decodes avro data from base written according to writerSchema and resolves aga...</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Encoder_8hh.html b/doc/content/en/docs/next/external/c++-api/Encoder_8hh.html
new file mode 100644
index 0000000..0de6a89
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Encoder_8hh.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Encoder.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#typedef-members">Typedefs</a> |
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">Encoder.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Low level support for encoding avro values.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include "Config.hh"</code><br />
+<code>#include <cstdint></code><br />
+<code>#include <memory></code><br />
+<code>#include <string></code><br />
+<code>#include <vector></code><br />
+<code>#include "Stream.hh"</code><br />
+<code>#include "ValidSchema.hh"</code><br />
+</div>
+<p><a href="Encoder_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classavro_1_1Encoder.html">avro::Encoder</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The abstract base class for all Avro encoders. <a href="classavro_1_1Encoder.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceavro"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html">avro</a></td></tr>
+<tr class="memdesc:namespaceavro"><td class="mdescLeft"> </td><td class="mdescRight">A bunch of templates and specializations for encoding and decoding specific types. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:a2bf627d2676075c8eeaf6a25103b5d5e"><td class="memItemLeft" align="right" valign="top"><a id="a2bf627d2676075c8eeaf6a25103b5d5e"></a>
+using </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">avro::EncoderPtr</a> = std::shared_ptr< Encoder ></td></tr>
+<tr class="memdesc:a2bf627d2676075c8eeaf6a25103b5d5e"><td class="mdescLeft"> </td><td class="mdescRight">Shared pointer to <a class="el" href="classavro_1_1Encoder.html" title="The abstract base class for all Avro encoders.">Encoder</a>. <br /></td></tr>
+<tr class="separator:a2bf627d2676075c8eeaf6a25103b5d5e"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ad0158bd2fc76615b68db68d7e4f7c4f6"><td class="memItemLeft" align="right" valign="top"><a id="ad0158bd2fc76615b68db68d7e4f7c4f6"></a>
+AVRO_DECL EncoderPtr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#ad0158bd2fc76615b68db68d7e4f7c4f6">avro::binaryEncoder</a> ()</td></tr>
+<tr class="memdesc:ad0158bd2fc76615b68db68d7e4f7c4f6"><td class="mdescLeft"> </td><td class="mdescRight">Returns an encoder that can encode binary Avro standard. <br /></td></tr>
+<tr class="separator:ad0158bd2fc76615b68db68d7e4f7c4f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1ba750d980390623baeae24bc24b286e"><td class="memItemLeft" align="right" valign="top"><a id="a1ba750d980390623baeae24bc24b286e"></a>
+AVRO_DECL EncoderPtr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a1ba750d980390623baeae24bc24b286e">avro::validatingEncoder</a> (const ValidSchema &schema, const EncoderPtr &base)</td></tr>
+<tr class="memdesc:a1ba750d980390623baeae24bc24b286e"><td class="mdescLeft"> </td><td class="mdescRight">Returns an encoder that validates sequence of calls to an underlying <a class="el" href="classavro_1_1Encoder.html" title="The abstract base class for all Avro encoders.">Encoder</a> against the given schema. <br /></td></tr>
+<tr class="separator:a1ba750d980390623baeae24bc24b286e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0847ef62f42f6f0d0af28da9f7c7cf15"><td class="memItemLeft" align="right" valign="top"><a id="a0847ef62f42f6f0d0af28da9f7c7cf15"></a>
+AVRO_DECL EncoderPtr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#a0847ef62f42f6f0d0af28da9f7c7cf15">avro::jsonEncoder</a> (const ValidSchema &schema)</td></tr>
+<tr class="memdesc:a0847ef62f42f6f0d0af28da9f7c7cf15"><td class="mdescLeft"> </td><td class="mdescRight">Returns an encoder that encodes Avro standard for JSON. <br /></td></tr>
+<tr class="separator:a0847ef62f42f6f0d0af28da9f7c7cf15"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa6028342a629213643d27da4a0aba5d"><td class="memItemLeft" align="right" valign="top"><a id="aaa6028342a629213643d27da4a0aba5d"></a>
+AVRO_DECL EncoderPtr </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html#aaa6028342a629213643d27da4a0aba5d">avro::jsonPrettyEncoder</a> (const ValidSchema &schema)</td></tr>
+<tr class="memdesc:aaa6028342a629213643d27da4a0aba5d"><td class="mdescLeft"> </td><td class="mdescRight">Returns an encoder that encodes Avro standard for pretty printed JSON. <br /></td></tr>
+<tr class="separator:aaa6028342a629213643d27da4a0aba5d"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Low level support for encoding avro values. </p>
+<p>This class has two types of functions. One type of functions support the writing of leaf values (for example, encodeLong and encodeString). These functions have analogs in Decoder.</p>
+<p>The other type of functions support the writing of maps and arrays. These functions are arrayStart, startItem, and arrayEnd (and similar functions for maps). Some implementations of Encoder handle the buffering required to break large maps and arrays into blocks, which is necessary for applications that want to do streaming. </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Encoder_8hh_source.html b/doc/content/en/docs/next/external/c++-api/Encoder_8hh_source.html
new file mode 100644
index 0000000..9cd5e6c
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Encoder_8hh_source.html
@@ -0,0 +1,209 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Encoder.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Encoder.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="Encoder_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_Encoder_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_Encoder_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <cstdint></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <memory></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <vector></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Stream.hh"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ValidSchema.hh"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  </div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html"> 52</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1Encoder.html">Encoder</a> {</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> ~<a class="code" href="classavro_1_1Encoder.html">Encoder</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a675355be38b2119a1f7472e483267bb3"> 58</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a675355be38b2119a1f7472e483267bb3">init</a>(<a class="code" href="classavro_1_1OutputStream.html">OutputStream</a> &os) = 0;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a1e1e41b92bf0697d15195b93eb9b7d3f"> 61</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a1e1e41b92bf0697d15195b93eb9b7d3f">flush</a>() = 0;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a5efdd888b4ace425d7e0365f97f26adb"> 65</a></span>  <span class="keyword">virtual</span> int64_t <a class="code" href="classavro_1_1Encoder.html#a5efdd888b4ace425d7e0365f97f26adb">byteCount</a>() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a045d364d43e248fd7d26a7cd16a90280"> 68</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a045d364d43e248fd7d26a7cd16a90280">encodeNull</a>() = 0;</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a9dac9450771d09264423dda397c9ff36"> 71</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a9dac9450771d09264423dda397c9ff36">encodeBool</a>(<span class="keywordtype">bool</span> b) = 0;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  </div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a02731a348c4f6e188f06ea3baf1acd6a"> 74</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a02731a348c4f6e188f06ea3baf1acd6a">encodeInt</a>(int32_t i) = 0;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  </div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#acc35a30b1abae65b7ee1cd7099176ec3"> 77</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#acc35a30b1abae65b7ee1cd7099176ec3">encodeLong</a>(int64_t l) = 0;</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#ae01a48f4379d987e62c0f5e07f9207b0"> 80</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#ae01a48f4379d987e62c0f5e07f9207b0">encodeFloat</a>(<span class="keywordtype">float</span> f) = 0;</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#aae207bdcf9a236714f8620f8d90103a7"> 83</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#aae207bdcf9a236714f8620f8d90103a7">encodeDouble</a>(<span class="keywordtype">double</span> d) = 0;</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a688ca5d7521bb443286df7566da56098"> 86</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a688ca5d7521bb443286df7566da56098">encodeString</a>(<span class="keyword">const</span> std::string &s) = 0;</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div>
+<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#aba2cb33247ac28fc523b2bddb36bace9"> 94</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#aba2cb33247ac28fc523b2bddb36bace9">encodeBytes</a>(<span class="keyword">const</span> uint8_t *bytes, <span class="keywordtype">size_t</span> len) = 0;</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#add8c2db9736653e6d984962912d61e50"> 101</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#add8c2db9736653e6d984962912d61e50">encodeBytes</a>(<span class="keyword">const</span> std::vector<uint8_t> &bytes) {</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  uint8_t b = 0;</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  encodeBytes(bytes.empty() ? &b : bytes.data(), bytes.size());</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a862c707fc838006a8bcbb247ffeb0cb4"> 107</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a862c707fc838006a8bcbb247ffeb0cb4">encodeFixed</a>(<span class="keyword">const</span> uint8_t *bytes, <span class="keywordtype">size_t</span> len) = 0;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a911b82ef2f18c70d8f30dab01eeb7f07"> 114</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a911b82ef2f18c70d8f30dab01eeb7f07">encodeFixed</a>(<span class="keyword">const</span> std::vector<uint8_t> &bytes) {</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  encodeFixed(bytes.data(), bytes.size());</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#ad0aaf43bd98946374f363200c639ae64"> 119</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#ad0aaf43bd98946374f363200c639ae64">encodeEnum</a>(<span class="keywordtype">size_t</span> e) = 0;</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  </div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a05589deffd95703c5d9ae926cf3babe4"> 122</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a05589deffd95703c5d9ae926cf3babe4">arrayStart</a>() = 0;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a4bb2e74e6423a297afd5eff7137525a9"> 125</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a4bb2e74e6423a297afd5eff7137525a9">arrayEnd</a>() = 0;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  </div>
+<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#aa4a6889e30a8f3d42f271ae7db96d1df"> 128</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#aa4a6889e30a8f3d42f271ae7db96d1df">mapStart</a>() = 0;</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#aa5dbbf4a0389243495e0d88f66394bf8"> 131</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#aa5dbbf4a0389243495e0d88f66394bf8">mapEnd</a>() = 0;</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a21783fff674cb65402c7bf8448c9b85f"> 135</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a21783fff674cb65402c7bf8448c9b85f">setItemCount</a>(<span class="keywordtype">size_t</span> count) = 0;</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#a8cbf8bb99e04f02fa0d7ebe3427193e3"> 138</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#a8cbf8bb99e04f02fa0d7ebe3427193e3">startItem</a>() = 0;</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classavro_1_1Encoder.html#aea8694647b788511892d53f9bfab29e5"> 141</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1Encoder.html#aea8694647b788511892d53f9bfab29e5">encodeUnionIndex</a>(<span class="keywordtype">size_t</span> e) = 0;</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> };</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  </div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e"> 147</a></span> <span class="keyword">using</span> <a class="code" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">EncoderPtr</a> = std::shared_ptr<Encoder>;</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  </div>
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="namespaceavro.html#ad0158bd2fc76615b68db68d7e4f7c4f6"> 152</a></span> AVRO_DECL <a class="code" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">EncoderPtr</a> <a class="code" href="namespaceavro.html#ad0158bd2fc76615b68db68d7e4f7c4f6">binaryEncoder</a>();</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  </div>
+<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="namespaceavro.html#a1ba750d980390623baeae24bc24b286e"> 158</a></span> AVRO_DECL <a class="code" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">EncoderPtr</a> <a class="code" href="namespaceavro.html#a1ba750d980390623baeae24bc24b286e">validatingEncoder</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &schema,</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">EncoderPtr</a> &base);</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  </div>
+<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="namespaceavro.html#a0847ef62f42f6f0d0af28da9f7c7cf15"> 164</a></span> AVRO_DECL <a class="code" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">EncoderPtr</a> <a class="code" href="namespaceavro.html#a0847ef62f42f6f0d0af28da9f7c7cf15">jsonEncoder</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &schema);</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  </div>
+<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="namespaceavro.html#aaa6028342a629213643d27da4a0aba5d"> 169</a></span> AVRO_DECL <a class="code" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">EncoderPtr</a> <a class="code" href="namespaceavro.html#aaa6028342a629213643d27da4a0aba5d">jsonPrettyEncoder</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &schema);</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  </div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  </div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html"><div class="ttname"><a href="classavro_1_1Encoder.html">avro::Encoder</a></div><div class="ttdoc">The abstract base class for all Avro encoders.</div><div class="ttdef"><b>Definition:</b> Encoder.hh:52</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a02731a348c4f6e188f06ea3baf1acd6a"><div class="ttname"><a href="classavro_1_1Encoder.html#a02731a348c4f6e188f06ea3baf1acd6a">avro::Encoder::encodeInt</a></div><div class="ttdeci">virtual void encodeInt(int32_t i)=0</div><div class="ttdoc">Encodes a 32-bit int to the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a045d364d43e248fd7d26a7cd16a90280"><div class="ttname"><a href="classavro_1_1Encoder.html#a045d364d43e248fd7d26a7cd16a90280">avro::Encoder::encodeNull</a></div><div class="ttdeci">virtual void encodeNull()=0</div><div class="ttdoc">Encodes a null to the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a05589deffd95703c5d9ae926cf3babe4"><div class="ttname"><a href="classavro_1_1Encoder.html#a05589deffd95703c5d9ae926cf3babe4">avro::Encoder::arrayStart</a></div><div class="ttdeci">virtual void arrayStart()=0</div><div class="ttdoc">Indicates that an array of items is being encoded.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a1e1e41b92bf0697d15195b93eb9b7d3f"><div class="ttname"><a href="classavro_1_1Encoder.html#a1e1e41b92bf0697d15195b93eb9b7d3f">avro::Encoder::flush</a></div><div class="ttdeci">virtual void flush()=0</div><div class="ttdoc">Flushes any data in internal buffers.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a21783fff674cb65402c7bf8448c9b85f"><div class="ttname"><a href="classavro_1_1Encoder.html#a21783fff674cb65402c7bf8448c9b85f">avro::Encoder::setItemCount</a></div><div class="ttdeci">virtual void setItemCount(size_t count)=0</div><div class="ttdoc">Indicates that count number of items are to follow in the current array or map.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a4bb2e74e6423a297afd5eff7137525a9"><div class="ttname"><a href="classavro_1_1Encoder.html#a4bb2e74e6423a297afd5eff7137525a9">avro::Encoder::arrayEnd</a></div><div class="ttdeci">virtual void arrayEnd()=0</div><div class="ttdoc">Indicates that the current array of items have ended.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a5efdd888b4ace425d7e0365f97f26adb"><div class="ttname"><a href="classavro_1_1Encoder.html#a5efdd888b4ace425d7e0365f97f26adb">avro::Encoder::byteCount</a></div><div class="ttdeci">virtual int64_t byteCount() const =0</div><div class="ttdoc">Returns the number of bytes produced so far.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a675355be38b2119a1f7472e483267bb3"><div class="ttname"><a href="classavro_1_1Encoder.html#a675355be38b2119a1f7472e483267bb3">avro::Encoder::init</a></div><div class="ttdeci">virtual void init(OutputStream &os)=0</div><div class="ttdoc">All future encodings will go to os, which should be valid until it is reset with another call to init...</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a688ca5d7521bb443286df7566da56098"><div class="ttname"><a href="classavro_1_1Encoder.html#a688ca5d7521bb443286df7566da56098">avro::Encoder::encodeString</a></div><div class="ttdeci">virtual void encodeString(const std::string &s)=0</div><div class="ttdoc">Encodes a UTF-8 string to the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a862c707fc838006a8bcbb247ffeb0cb4"><div class="ttname"><a href="classavro_1_1Encoder.html#a862c707fc838006a8bcbb247ffeb0cb4">avro::Encoder::encodeFixed</a></div><div class="ttdeci">virtual void encodeFixed(const uint8_t *bytes, size_t len)=0</div><div class="ttdoc">Encodes fixed length binary to the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a8cbf8bb99e04f02fa0d7ebe3427193e3"><div class="ttname"><a href="classavro_1_1Encoder.html#a8cbf8bb99e04f02fa0d7ebe3427193e3">avro::Encoder::startItem</a></div><div class="ttdeci">virtual void startItem()=0</div><div class="ttdoc">Marks a beginning of an item in the current array or map.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a911b82ef2f18c70d8f30dab01eeb7f07"><div class="ttname"><a href="classavro_1_1Encoder.html#a911b82ef2f18c70d8f30dab01eeb7f07">avro::Encoder::encodeFixed</a></div><div class="ttdeci">void encodeFixed(const std::vector< uint8_t > &bytes)</div><div class="ttdoc">Encodes an Avro data type Fixed.</div><div class="ttdef"><b>Definition:</b> Encoder.hh:114</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_a9dac9450771d09264423dda397c9ff36"><div class="ttname"><a href="classavro_1_1Encoder.html#a9dac9450771d09264423dda397c9ff36">avro::Encoder::encodeBool</a></div><div class="ttdeci">virtual void encodeBool(bool b)=0</div><div class="ttdoc">Encodes a bool to the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_aa4a6889e30a8f3d42f271ae7db96d1df"><div class="ttname"><a href="classavro_1_1Encoder.html#aa4a6889e30a8f3d42f271ae7db96d1df">avro::Encoder::mapStart</a></div><div class="ttdeci">virtual void mapStart()=0</div><div class="ttdoc">Indicates that a map of items is being encoded.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_aa5dbbf4a0389243495e0d88f66394bf8"><div class="ttname"><a href="classavro_1_1Encoder.html#aa5dbbf4a0389243495e0d88f66394bf8">avro::Encoder::mapEnd</a></div><div class="ttdeci">virtual void mapEnd()=0</div><div class="ttdoc">Indicates that the current map of items have ended.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_aae207bdcf9a236714f8620f8d90103a7"><div class="ttname"><a href="classavro_1_1Encoder.html#aae207bdcf9a236714f8620f8d90103a7">avro::Encoder::encodeDouble</a></div><div class="ttdeci">virtual void encodeDouble(double d)=0</div><div class="ttdoc">Encodes a double-precision floating point number to the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_aba2cb33247ac28fc523b2bddb36bace9"><div class="ttname"><a href="classavro_1_1Encoder.html#aba2cb33247ac28fc523b2bddb36bace9">avro::Encoder::encodeBytes</a></div><div class="ttdeci">virtual void encodeBytes(const uint8_t *bytes, size_t len)=0</div><div class="ttdoc">Encodes arbitrary binary data into the current stream as Avro "bytes" data type.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_acc35a30b1abae65b7ee1cd7099176ec3"><div class="ttname"><a href="classavro_1_1Encoder.html#acc35a30b1abae65b7ee1cd7099176ec3">avro::Encoder::encodeLong</a></div><div class="ttdeci">virtual void encodeLong(int64_t l)=0</div><div class="ttdoc">Encodes a 64-bit signed int to the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_ad0aaf43bd98946374f363200c639ae64"><div class="ttname"><a href="classavro_1_1Encoder.html#ad0aaf43bd98946374f363200c639ae64">avro::Encoder::encodeEnum</a></div><div class="ttdeci">virtual void encodeEnum(size_t e)=0</div><div class="ttdoc">Encodes enum to the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_add8c2db9736653e6d984962912d61e50"><div class="ttname"><a href="classavro_1_1Encoder.html#add8c2db9736653e6d984962912d61e50">avro::Encoder::encodeBytes</a></div><div class="ttdeci">void encodeBytes(const std::vector< uint8_t > &bytes)</div><div class="ttdoc">Encodes arbitrary binary data into the current stream as Avro "bytes" data type.</div><div class="ttdef"><b>Definition:</b> Encoder.hh:101</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_ae01a48f4379d987e62c0f5e07f9207b0"><div class="ttname"><a href="classavro_1_1Encoder.html#ae01a48f4379d987e62c0f5e07f9207b0">avro::Encoder::encodeFloat</a></div><div class="ttdeci">virtual void encodeFloat(float f)=0</div><div class="ttdoc">Encodes a single-precision floating point number to the current stream.</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html_aea8694647b788511892d53f9bfab29e5"><div class="ttname"><a href="classavro_1_1Encoder.html#aea8694647b788511892d53f9bfab29e5">avro::Encoder::encodeUnionIndex</a></div><div class="ttdeci">virtual void encodeUnionIndex(size_t e)=0</div><div class="ttdoc">Encodes a branch of a union. The actual value is to follow.</div></div>
+<div class="ttc" id="aclassavro_1_1OutputStream_html"><div class="ttname"><a href="classavro_1_1OutputStream.html">avro::OutputStream</a></div><div class="ttdoc">A no-copy output stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:108</div></div>
+<div class="ttc" id="aclassavro_1_1ValidSchema_html"><div class="ttname"><a href="classavro_1_1ValidSchema.html">avro::ValidSchema</a></div><div class="ttdoc">A ValidSchema is basically a non-mutable Schema that has passed some minimum of sanity checks.</div><div class="ttdef"><b>Definition:</b> ValidSchema.hh:40</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_a0847ef62f42f6f0d0af28da9f7c7cf15"><div class="ttname"><a href="namespaceavro.html#a0847ef62f42f6f0d0af28da9f7c7cf15">avro::jsonEncoder</a></div><div class="ttdeci">AVRO_DECL EncoderPtr jsonEncoder(const ValidSchema &schema)</div><div class="ttdoc">Returns an encoder that encodes Avro standard for JSON.</div></div>
+<div class="ttc" id="anamespaceavro_html_a1ba750d980390623baeae24bc24b286e"><div class="ttname"><a href="namespaceavro.html#a1ba750d980390623baeae24bc24b286e">avro::validatingEncoder</a></div><div class="ttdeci">AVRO_DECL EncoderPtr validatingEncoder(const ValidSchema &schema, const EncoderPtr &base)</div><div class="ttdoc">Returns an encoder that validates sequence of calls to an underlying Encoder against the given schema...</div></div>
+<div class="ttc" id="anamespaceavro_html_a2bf627d2676075c8eeaf6a25103b5d5e"><div class="ttname"><a href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">avro::EncoderPtr</a></div><div class="ttdeci">std::shared_ptr< Encoder > EncoderPtr</div><div class="ttdoc">Shared pointer to Encoder.</div><div class="ttdef"><b>Definition:</b> Encoder.hh:147</div></div>
+<div class="ttc" id="anamespaceavro_html_aaa6028342a629213643d27da4a0aba5d"><div class="ttname"><a href="namespaceavro.html#aaa6028342a629213643d27da4a0aba5d">avro::jsonPrettyEncoder</a></div><div class="ttdeci">AVRO_DECL EncoderPtr jsonPrettyEncoder(const ValidSchema &schema)</div><div class="ttdoc">Returns an encoder that encodes Avro standard for pretty printed JSON.</div></div>
+<div class="ttc" id="anamespaceavro_html_ad0158bd2fc76615b68db68d7e4f7c4f6"><div class="ttname"><a href="namespaceavro.html#ad0158bd2fc76615b68db68d7e4f7c4f6">avro::binaryEncoder</a></div><div class="ttdeci">AVRO_DECL EncoderPtr binaryEncoder()</div><div class="ttdoc">Returns an encoder that can encode binary Avro standard.</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Exception_8hh_source.html b/doc/content/en/docs/next/external/c++-api/Exception_8hh_source.html
new file mode 100644
index 0000000..fbc0701
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Exception_8hh_source.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Exception.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Exception.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_Exception_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_Exception_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <boost/format.hpp></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <stdexcept></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  </div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  </div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classavro_1_1Exception.html"> 31</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1Exception.html">Exception</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> std::runtime_error {</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="keyword">const</span> std::string &msg) : std::runtime_error(msg) {}</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  </div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="keyword">const</span> boost::format &msg) : std::runtime_error(boost::str(msg)) {}</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> };</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  </div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassavro_1_1Exception_html"><div class="ttname"><a href="classavro_1_1Exception.html">avro::Exception</a></div><div class="ttdoc">Wrapper for std::runtime_error that provides convenience constructor for boost::format objects.</div><div class="ttdef"><b>Definition:</b> Exception.hh:31</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/GenericDatum_8hh_source.html b/doc/content/en/docs/next/external/c++-api/GenericDatum_8hh_source.html
new file mode 100644
index 0000000..09d5469
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/GenericDatum_8hh_source.html
@@ -0,0 +1,535 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/GenericDatum.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">GenericDatum.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_GenericDatum_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_GenericDatum_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <cstdint></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <map></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <vector></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  </div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#if __cplusplus >= 201703L</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <any></span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "boost/any.hpp"</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "LogicalType.hh"</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "Node.hh"</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "ValidSchema.hh"</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html"> 61</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> {</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type_;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classavro_1_1LogicalType.html">LogicalType</a> logicalType_;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#if __cplusplus >= 201703L</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::any value_;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  boost::any value_;</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> t)</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  : type_(t), logicalType_(LogicalType::NONE) {}</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> t, <a class="code" href="classavro_1_1LogicalType.html">LogicalType</a> logicalType)</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  : type_(t), logicalType_(logicalType) {}</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> t, <a class="code" href="classavro_1_1LogicalType.html">LogicalType</a> logicalType, <span class="keyword">const</span> T &v)</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  : type_(t), logicalType_(logicalType), value_(v) {}</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  </div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">void</span> init(<span class="keyword">const</span> NodePtr &schema);</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  </div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="classavro_1_1LogicalType.html">LogicalType</a> logicalType() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  </div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">const</span> T &value() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  T &value();</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div>
+<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#a0d5f2a0774106439dd820d79f8662039"> 117</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classavro_1_1GenericDatum.html#a0d5f2a0774106439dd820d79f8662039">isUnion</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> type_ == <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279 [...]
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  </div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">size_t</span> unionBranch() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  </div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">void</span> selectBranch(<span class="keywordtype">size_t</span> branch);</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  </div>
+<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#a9f3697e64a096186ab5c333f5a83d7a7"> 132</a></span>  <a class="code" href="classavro_1_1GenericDatum.html#a9f3697e64a096186ab5c333f5a83d7a7">GenericDatum</a>() : type_(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ae6058ac1a8cd7ab916450d8616c40cff">AVRO_NULL</a>), logicalType_(<a class="code" href="classavro_1_1LogicalType.html">LogicalType< [...]
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  </div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// NOLINTNEXTLINE(google-explicit-constructor)</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#a8a92257347758e7f3000aa0888a9009e"> 137</a></span>  <a class="code" href="classavro_1_1GenericDatum.html#a8a92257347758e7f3000aa0888a9009e">GenericDatum</a>(<span class="keywordtype">bool</span> v)</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  : type_(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a8fbd33da2d41bf10e877dabac5af5dd2">AVRO_BOOL</a>), logicalType_(<a class="code" href="classavro_1_1LogicalType.html">LogicalType</a>::NONE), value_(v) {}</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// NOLINTNEXTLINE(google-explicit-constructor)</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#a927d1c81b258dc1cdda7826c55c299bd"> 143</a></span>  <a class="code" href="classavro_1_1GenericDatum.html#a927d1c81b258dc1cdda7826c55c299bd">GenericDatum</a>(int32_t v)</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  : type_(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a53f57f125161dc143d955e0eecafd7a3">AVRO_INT</a>), logicalType_(<a class="code" href="classavro_1_1LogicalType.html">LogicalType</a>::NONE), value_(v) {}</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  </div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// NOLINTNEXTLINE(google-explicit-constructor)</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#add8b1c9c4958763c998aa244721cf69a"> 149</a></span>  <a class="code" href="classavro_1_1GenericDatum.html#add8b1c9c4958763c998aa244721cf69a">GenericDatum</a>(int64_t v)</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  : type_(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a692a9ce3245cea9dcbc10ee73b8c6340">AVRO_LONG</a>), logicalType_(<a class="code" href="classavro_1_1LogicalType.html">LogicalType</a>::NONE), value_(v) {}</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// NOLINTNEXTLINE(google-explicit-constructor)</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#af47b6ea2e5eae50b09ffb38ebf8888e5"> 155</a></span>  <a class="code" href="classavro_1_1GenericDatum.html#af47b6ea2e5eae50b09ffb38ebf8888e5">GenericDatum</a>(<span class="keywordtype">float</span> v)</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  : type_(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a49eb3fcb0154b63104c8041e07ef02b8">AVRO_FLOAT</a>), logicalType_(<a class="code" href="classavro_1_1LogicalType.html">LogicalType</a>::NONE), value_(v) {}</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// NOLINTNEXTLINE(google-explicit-constructor)</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#acfa4dac5a57faac9fdc7ae38ef0b3615"> 161</a></span>  <a class="code" href="classavro_1_1GenericDatum.html#acfa4dac5a57faac9fdc7ae38ef0b3615">GenericDatum</a>(<span class="keywordtype">double</span> v)</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  : type_(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a6d280a38797d72263c8b1c83f981b800">AVRO_DOUBLE</a>), logicalType_(<a class="code" href="classavro_1_1LogicalType.html">LogicalType</a>::NONE), value_(v) {}</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  </div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// NOLINTNEXTLINE(google-explicit-constructor)</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#ac5819473724ee744495ed4495d375373"> 167</a></span>  <a class="code" href="classavro_1_1GenericDatum.html#ac5819473724ee744495ed4495d375373">GenericDatum</a>(<span class="keyword">const</span> std::string &v)</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  : type_(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a653cfbb5f5aca522271b435e7215087f">AVRO_STRING</a>), logicalType_(<a class="code" href="classavro_1_1LogicalType.html">LogicalType</a>::NONE), value_(v) {}</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  </div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// NOLINTNEXTLINE(google-explicit-constructor)</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#afdbb9bcb8aa6e967c36d4f06a7c3d2cb"> 174</a></span>  <a class="code" href="classavro_1_1GenericDatum.html#afdbb9bcb8aa6e967c36d4f06a7c3d2cb">GenericDatum</a>(<span class="keyword">const</span> std::vector<uint8_t> &v) : type_(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7aa5ff10208f8bf3952647c48c1f67ca09">AVRO_BYTES</a>), logicalTy [...]
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  </div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// NOLINTNEXTLINE(google-explicit-constructor)</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#ae4114927e789d6bdd293437d5ccb5327"> 184</a></span>  <a class="code" href="classavro_1_1GenericDatum.html#ae4114927e789d6bdd293437d5ccb5327">GenericDatum</a>(<span class="keyword">const</span> NodePtr &schema);</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  </div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#ad735e0104e29b4226f987e3ea298f2fc"> 193</a></span>  <a class="code" href="classavro_1_1GenericDatum.html#ad735e0104e29b4226f987e3ea298f2fc">GenericDatum</a>(<span class="keyword">const</span> NodePtr &schema, <span class="keyword">const</span> T &v) : type_(schema->type()), logicalType_(schema->logicalType()) {</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  init(schema);</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor">#if __cplusplus >= 201703L</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  *std::any_cast<T>(&value_) = v;</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  *boost::any_cast<T>(&value_) = v;</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  </div>
+<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#a879e7b725023bfd8246e15f07cb5bef0"> 208</a></span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1GenericDatum.html#a879e7b725023bfd8246e15f07cb5bef0">GenericDatum</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &schema);</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> };</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  </div>
+<div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classavro_1_1GenericContainer.html"> 214</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a> {</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  NodePtr schema_;</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> assertType(<span class="keyword">const</span> NodePtr &schema, <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type);</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  </div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classavro_1_1GenericContainer.html#abd0076ffe0a8e8f1fa531a524adeb5e2"> 222</a></span>  <a class="code" href="classavro_1_1GenericContainer.html#abd0076ffe0a8e8f1fa531a524adeb5e2">GenericContainer</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type, <span class="keyword">const</span> NodePtr &s) : schema_(s) {</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  assertType(s, type);</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  </div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classavro_1_1GenericContainer.html#a2d34ae4fc2ceb52885511ebc332361d3"> 228</a></span>  <span class="keyword">const</span> NodePtr &<a class="code" href="classavro_1_1GenericContainer.html#a2d34ae4fc2ceb52885511ebc332361d3">schema</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> schema_;</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> };</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  </div>
+<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classavro_1_1GenericUnion.html"> 236</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1GenericUnion.html">GenericUnion</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a> {</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordtype">size_t</span> curBranch_;</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> datum_;</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  </div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classavro_1_1GenericUnion.html#a29a00498e168284778c0e782e385e968"> 246</a></span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1GenericUnion.html#a29a00498e168284778c0e782e385e968">GenericUnion</a>(<span class="keyword">const</span> NodePtr &schema) : <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a>(<a class="code" href="namespaceavro.ht [...]
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  selectBranch(0);</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  </div>
+<div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classavro_1_1GenericUnion.html#a97b5f0a1aaffc36fa8797a17cf8abe0f"> 253</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1GenericUnion.html#a97b5f0a1aaffc36fa8797a17cf8abe0f">currentBranch</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> curBranch_; }</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  </div>
+<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classavro_1_1GenericUnion.html#a3568de30ef5ae41f5edfb7c6112929aa"> 259</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericUnion.html#a3568de30ef5ae41f5edfb7c6112929aa">selectBranch</a>(<span class="keywordtype">size_t</span> branch) {</div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span> (curBranch_ != branch) {</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  datum_ = <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a>(schema()->leafAt(branch));</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  curBranch_ = branch;</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  </div>
+<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classavro_1_1GenericUnion.html#a6d5e24f3a1123a2dba13bb3267610793"> 270</a></span>  <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &<a class="code" href="classavro_1_1GenericUnion.html#a6d5e24f3a1123a2dba13bb3267610793">datum</a>() {</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> datum_;</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  </div>
+<div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classavro_1_1GenericUnion.html#acbf23bb39585ac1d57f4efc481304300"> 278</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &<a class="code" href="classavro_1_1GenericUnion.html#acbf23bb39585ac1d57f4efc481304300">datum</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> datum_;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> };</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  </div>
+<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classavro_1_1GenericRecord.html"> 286</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1GenericRecord.html">GenericRecord</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a> {</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  std::vector<GenericDatum> fields_;</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  </div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classavro_1_1GenericRecord.html#a7707d865e3a788e0e6e03131b92fc245"> 294</a></span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1GenericRecord.html#a7707d865e3a788e0e6e03131b92fc245">GenericRecord</a>(<span class="keyword">const</span> NodePtr &schema);</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  </div>
+<div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classavro_1_1GenericRecord.html#a9767db73c93f49538882d3d675949322"> 299</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1GenericRecord.html#a9767db73c93f49538882d3d675949322">fieldCount</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> fields_.size();</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  </div>
+<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classavro_1_1GenericRecord.html#a5915f50d1f5ca011bdfa79d1b11567bf"> 306</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1GenericRecord.html#a5915f50d1f5ca011bdfa79d1b11567bf">fieldIndex</a>(<span class="keyword">const</span> std::string &name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordtype">size_t</span> index = 0;</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span> (!schema()->nameIndex(name, index)) {</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"Invalid field name: "</span> + name);</div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> index;</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  </div>
+<div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classavro_1_1GenericRecord.html#a1fe56d116f33bc7080478384c20cb23e"> 318</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classavro_1_1GenericRecord.html#a1fe56d116f33bc7080478384c20cb23e">hasField</a>(<span class="keyword">const</span> std::string &name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordtype">size_t</span> index = 0;</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">return</span> schema()->nameIndex(name, index);</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  </div>
+<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classavro_1_1GenericRecord.html#a1eb55fe5cc56805dae0ecfdf14ac5339"> 326</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &<a class="code" href="classavro_1_1GenericRecord.html#a1eb55fe5cc56805dae0ecfdf14ac5339">field</a>(<span class="keyword">const</span> std::string &name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">return</span> fieldAt(fieldIndex(name));</div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  </div>
+<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classavro_1_1GenericRecord.html#a03edd615e245e47d7a58bedf534c5a9a"> 334</a></span>  <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &<a class="code" href="classavro_1_1GenericRecord.html#a03edd615e245e47d7a58bedf534c5a9a">field</a>(<span class="keyword">const</span> std::string &name) {</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> fieldAt(fieldIndex(name));</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  </div>
+<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classavro_1_1GenericRecord.html#a29c2793a54a7e223548290a0fbf046ef"> 341</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &<a class="code" href="classavro_1_1GenericRecord.html#a29c2793a54a7e223548290a0fbf046ef">fieldAt</a>(<span class="keywordtype">size_t</span> pos)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> fields_[pos];</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  </div>
+<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classavro_1_1GenericRecord.html#a1528ea45824d7fa38bae6154e0dbe13d"> 349</a></span>  <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &<a class="code" href="classavro_1_1GenericRecord.html#a1528ea45824d7fa38bae6154e0dbe13d">fieldAt</a>(<span class="keywordtype">size_t</span> pos) {</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">return</span> fields_[pos];</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  </div>
+<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="classavro_1_1GenericRecord.html#ac746dbb1206cfecedf218ec7a71b9224"> 356</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericRecord.html#ac746dbb1206cfecedf218ec7a71b9224">setFieldAt</a>(<span class="keywordtype">size_t</span> pos, <span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &v) {</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// assertSameType(v, schema()->leafAt(pos));</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  fields_[pos] = v;</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> };</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  </div>
+<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classavro_1_1GenericArray.html"> 365</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1GenericArray.html">GenericArray</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a> {</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classavro_1_1GenericArray.html#a04552a9b532d5ba113171e7c4b733430"> 370</a></span>  <span class="keyword">typedef</span> std::vector<GenericDatum> <a class="code" href="classavro_1_1GenericArray.html#a04552a9b532d5ba113171e7c4b733430">Value</a>;</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  </div>
+<div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classavro_1_1GenericArray.html#a5c2644016d6563e86b34407afdef3002"> 376</a></span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1GenericArray.html#a5c2644016d6563e86b34407afdef3002">GenericArray</a>(<span class="keyword">const</span> NodePtr &schema) : <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a>(<a class="code" href="namespaceavro.ht [...]
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  </div>
+<div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classavro_1_1GenericArray.html#a0aa7b193bf37c8c5b23edd33f9253463"> 382</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1GenericArray.html#a04552a9b532d5ba113171e7c4b733430">Value</a> &<a class="code" href="classavro_1_1GenericArray.html#a0aa7b193bf37c8c5b23edd33f9253463">value</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> value_;</div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  </div>
+<div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classavro_1_1GenericArray.html#aee04b5a44b83c2930e98c8fa4e3d0a83"> 389</a></span>  <a class="code" href="classavro_1_1GenericArray.html#a04552a9b532d5ba113171e7c4b733430">Value</a> &<a class="code" href="classavro_1_1GenericArray.html#aee04b5a44b83c2930e98c8fa4e3d0a83">value</a>() {</div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">return</span> value_;</div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  </div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  Value value_;</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> };</div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  </div>
+<div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classavro_1_1GenericMap.html"> 400</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1GenericMap.html">GenericMap</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a> {</div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="classavro_1_1GenericMap.html#aec2e8334cf0a74168460fc52d3b98bc2"> 405</a></span>  <span class="keyword">typedef</span> std::vector<std::pair<std::string, GenericDatum>> <a class="code" href="classavro_1_1GenericMap.html#aec2e8334cf0a74168460fc52d3b98bc2">Value</a>;</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  </div>
+<div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="classavro_1_1GenericMap.html#a44649fa4cc1cb26983411ce0dbc36372"> 411</a></span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1GenericMap.html#a44649fa4cc1cb26983411ce0dbc36372">GenericMap</a>(<span class="keyword">const</span> NodePtr &schema) : <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a>(<a class="code" href="namespaceavro.html#a29 [...]
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  </div>
+<div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="classavro_1_1GenericMap.html#a1a11f5d6c35cb3b201ddce90e90ae62c"> 417</a></span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1GenericMap.html#aec2e8334cf0a74168460fc52d3b98bc2">Value</a> &<a class="code" href="classavro_1_1GenericMap.html#a1a11f5d6c35cb3b201ddce90e90ae62c">value</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> value_;</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  </div>
+<div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classavro_1_1GenericMap.html#acd91fdec08d8e16acdeefef4bb84038b"> 424</a></span>  <a class="code" href="classavro_1_1GenericMap.html#aec2e8334cf0a74168460fc52d3b98bc2">Value</a> &<a class="code" href="classavro_1_1GenericMap.html#acd91fdec08d8e16acdeefef4bb84038b">value</a>() {</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">return</span> value_;</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  </div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  Value value_;</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> };</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  </div>
+<div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="classavro_1_1GenericEnum.html"> 435</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1GenericEnum.html">GenericEnum</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a> {</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordtype">size_t</span> value_;</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  </div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keyword">static</span> <span class="keywordtype">size_t</span> index(<span class="keyword">const</span> NodePtr &schema, <span class="keyword">const</span> std::string &symbol) {</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordtype">size_t</span> result;</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (schema->nameIndex(symbol, result)) {</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"No such symbol"</span>);</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  </div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00451"></a><span class="lineno"><a class="line" href="classavro_1_1GenericEnum.html#aed0dc0b87604920599d11dc1150f24ac"> 451</a></span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1GenericEnum.html#aed0dc0b87604920599d11dc1150f24ac">GenericEnum</a>(<span class="keyword">const</span> NodePtr &schema) : <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a>(<a class="code" href="namespaceavro.html# [...]
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  }</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  </div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="classavro_1_1GenericEnum.html">GenericEnum</a>(<span class="keyword">const</span> NodePtr &schema, <span class="keyword">const</span> std::string &symbol) : <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a9154a0e620b5b68d6342967cd5c35597">AVRO_ENUM</a>, schema), value_(inde [...]
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  </div>
+<div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="classavro_1_1GenericEnum.html#a34bc243c7f3c7abcd184d92a85bf8297"> 461</a></span>  <span class="keyword">const</span> std::string &<a class="code" href="classavro_1_1GenericEnum.html#a34bc243c7f3c7abcd184d92a85bf8297">symbol</a>(<span class="keywordtype">size_t</span> n) {</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">if</span> (n < schema()->names()) {</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">return</span> schema()->nameAt(n);</div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"Not as many symbols"</span>);</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  </div>
+<div class="line"><a name="l00472"></a><span class="lineno"><a class="line" href="classavro_1_1GenericEnum.html#acd895a97db48c65f83b331abbf36b118"> 472</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1GenericEnum.html#acd895a97db48c65f83b331abbf36b118">index</a>(<span class="keyword">const</span> std::string &symbol)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">return</span> index(schema(), symbol);</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  </div>
+<div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classavro_1_1GenericEnum.html#a9552ec38fc939863b73ae0b410561caa"> 479</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1GenericEnum.html#a9552ec38fc939863b73ae0b410561caa">set</a>(<span class="keyword">const</span> std::string &symbol) {</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">return</span> value_ = index(symbol);</div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  </div>
+<div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classavro_1_1GenericEnum.html#a5831e6bfef444fcae3c9d1afd4b0ef5b"> 486</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericEnum.html#a5831e6bfef444fcae3c9d1afd4b0ef5b">set</a>(<span class="keywordtype">size_t</span> n) {</div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">if</span> (n < schema()->names()) {</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  value_ = n;</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"Not as many symbols"</span>);</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  </div>
+<div class="line"><a name="l00497"></a><span class="lineno"><a class="line" href="classavro_1_1GenericEnum.html#a676a5c3079ab031a916f708b9210ec13"> 497</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1GenericEnum.html#a676a5c3079ab031a916f708b9210ec13">value</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">return</span> value_;</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  }</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  </div>
+<div class="line"><a name="l00504"></a><span class="lineno"><a class="line" href="classavro_1_1GenericEnum.html#a60182bf72e0512ff38cb5c26bd589d45"> 504</a></span>  <span class="keyword">const</span> std::string &<a class="code" href="classavro_1_1GenericEnum.html#a60182bf72e0512ff38cb5c26bd589d45">symbol</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">return</span> schema()->nameAt(value_);</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  }</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> };</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  </div>
+<div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="classavro_1_1GenericFixed.html"> 512</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1GenericFixed.html">GenericFixed</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a> {</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  std::vector<uint8_t> value_;</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  </div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00520"></a><span class="lineno"><a class="line" href="classavro_1_1GenericFixed.html#ac44c584cbf71294a5f610d21f739f50a"> 520</a></span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1GenericFixed.html#ac44c584cbf71294a5f610d21f739f50a">GenericFixed</a>(<span class="keyword">const</span> NodePtr &schema) : <a class="code" href="classavro_1_1GenericContainer.html">GenericContainer</a>(<a class="code" href="namespaceavro.ht [...]
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  value_.resize(schema->fixedSize());</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  }</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  </div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <a class="code" href="classavro_1_1GenericFixed.html">GenericFixed</a>(<span class="keyword">const</span> NodePtr &schema, <span class="keyword">const</span> std::vector<uint8_t> &v);</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  </div>
+<div class="line"><a name="l00529"></a><span class="lineno"><a class="line" href="classavro_1_1GenericFixed.html#a2c1d15466d516a77f597a58f8ab4e5ab"> 529</a></span>  <span class="keyword">const</span> std::vector<uint8_t> &<a class="code" href="classavro_1_1GenericFixed.html#a2c1d15466d516a77f597a58f8ab4e5ab">value</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">return</span> value_;</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  </div>
+<div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="classavro_1_1GenericFixed.html#a826fbd7c41a7ba6d7a4a4bdf9b2c3585"> 536</a></span>  std::vector<uint8_t> &<a class="code" href="classavro_1_1GenericFixed.html#a826fbd7c41a7ba6d7a4a4bdf9b2c3585">value</a>() {</div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">return</span> value_;</div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  }</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> };</div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  </div>
+<div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#aae8325a782f95c74c98886c061c4269f"> 541</a></span> <span class="keyword">inline</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> <a class="code" href="classavro_1_1GenericDatum.html#aae8325a782f95c74c98886c061c4269f">GenericDatum::type</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">return</span> (type_ == <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9">AVRO_UNION</a>) ?</div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="preprocessor">#if __cplusplus >= 201703L</span></div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  std::any_cast<GenericUnion>(&value_)->datum().type()</div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  :</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  boost::any_cast<GenericUnion>(&value_)->datum().type()</div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  :</div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  type_;</div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> }</div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  </div>
+<div class="line"><a name="l00553"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#a38d4967a20cde4ae59a5298538a3be29"> 553</a></span> <span class="keyword">inline</span> <a class="code" href="classavro_1_1LogicalType.html">LogicalType</a> <a class="code" href="classavro_1_1GenericDatum.html#a38d4967a20cde4ae59a5298538a3be29">GenericDatum::logicalType</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">return</span> (type_ == <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9">AVRO_UNION</a>) ?</div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <span class="preprocessor">#if __cplusplus >= 201703L</span></div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  std::any_cast<GenericUnion>(&value_)->datum().logicalType() :</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  boost::any_cast<GenericUnion>(&value_)->datum().logicalType() :</div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  logicalType_;</div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> }</div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  </div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#a014b36566fa3d8503a4fc848bce89d70"> 564</a></span> T &<a class="code" href="classavro_1_1GenericDatum.html#a489e7aa51a1235b2c3954d90c7672e28">GenericDatum::value</a>() {</div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">return</span> (type_ == <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9">AVRO_UNION</a>) ?</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor">#if __cplusplus >= 201703L</span></div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  std::any_cast<GenericUnion>(&value_)->datum().value<T>()</div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  : *std::any_cast<T>(&value_);</div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  boost::any_cast<GenericUnion>(&value_)->datum().value<T>()</div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  : *boost::any_cast<T>(&value_);</div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> }</div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  </div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#a489e7aa51a1235b2c3954d90c7672e28"> 576</a></span> <span class="keyword">const</span> T &<a class="code" href="classavro_1_1GenericDatum.html#a489e7aa51a1235b2c3954d90c7672e28">GenericDatum::value</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">return</span> (type_ == <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9">AVRO_UNION</a>) ?</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="preprocessor">#if __cplusplus >= 201703L</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  std::any_cast<GenericUnion>(&value_)->datum().value<T>()</div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  : *std::any_cast<T>(&value_);</div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  boost::any_cast<GenericUnion>(&value_)->datum().value<T>()</div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  : *boost::any_cast<T>(&value_);</div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> }</div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  </div>
+<div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#a8db327b430ee8312046da9001ffa1cca"> 587</a></span> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classavro_1_1GenericDatum.html#a8db327b430ee8312046da9001ffa1cca">GenericDatum::unionBranch</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="preprocessor">#if __cplusplus >= 201703L</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">return</span> std::any_cast<GenericUnion>(&value_)->currentBranch();</div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">return</span> boost::any_cast<GenericUnion>(&value_)->currentBranch();</div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> }</div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  </div>
+<div class="line"><a name="l00595"></a><span class="lineno"><a class="line" href="classavro_1_1GenericDatum.html#a89a1e97a11ef65f86474efc40b638349"> 595</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericDatum.html#a89a1e97a11ef65f86474efc40b638349">GenericDatum::selectBranch</a>(<span class="keywordtype">size_t</span> branch) {</div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="preprocessor">#if __cplusplus >= 201703L</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  std::any_cast<GenericUnion>(&value_)->selectBranch(branch);</div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  boost::any_cast<GenericUnion>(&value_)->selectBranch(branch);</div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> }</div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  </div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="preprocessor">#endif </span><span class="comment">// avro_GenericDatum_hh__</span></div>
+<div class="ttc" id="aclassavro_1_1Exception_html"><div class="ttname"><a href="classavro_1_1Exception.html">avro::Exception</a></div><div class="ttdoc">Wrapper for std::runtime_error that provides convenience constructor for boost::format objects.</div><div class="ttdef"><b>Definition:</b> Exception.hh:31</div></div>
+<div class="ttc" id="aclassavro_1_1GenericArray_html"><div class="ttname"><a href="classavro_1_1GenericArray.html">avro::GenericArray</a></div><div class="ttdoc">The generic container for Avro arrays.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:365</div></div>
+<div class="ttc" id="aclassavro_1_1GenericArray_html_a04552a9b532d5ba113171e7c4b733430"><div class="ttname"><a href="classavro_1_1GenericArray.html#a04552a9b532d5ba113171e7c4b733430">avro::GenericArray::Value</a></div><div class="ttdeci">std::vector< GenericDatum > Value</div><div class="ttdoc">The contents type for the array.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:370</div></div>
+<div class="ttc" id="aclassavro_1_1GenericArray_html_a0aa7b193bf37c8c5b23edd33f9253463"><div class="ttname"><a href="classavro_1_1GenericArray.html#a0aa7b193bf37c8c5b23edd33f9253463">avro::GenericArray::value</a></div><div class="ttdeci">const Value & value() const</div><div class="ttdoc">Returns the contents of this array.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:382</div></div>
+<div class="ttc" id="aclassavro_1_1GenericArray_html_a5c2644016d6563e86b34407afdef3002"><div class="ttname"><a href="classavro_1_1GenericArray.html#a5c2644016d6563e86b34407afdef3002">avro::GenericArray::GenericArray</a></div><div class="ttdeci">GenericArray(const NodePtr &schema)</div><div class="ttdoc">Constructs a generic array corresponding to the given schema schema, which should be of Avro type arr...</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:376</div></div>
+<div class="ttc" id="aclassavro_1_1GenericArray_html_aee04b5a44b83c2930e98c8fa4e3d0a83"><div class="ttname"><a href="classavro_1_1GenericArray.html#aee04b5a44b83c2930e98c8fa4e3d0a83">avro::GenericArray::value</a></div><div class="ttdeci">Value & value()</div><div class="ttdoc">Returns the reference to the contents of this array.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:389</div></div>
+<div class="ttc" id="aclassavro_1_1GenericContainer_html"><div class="ttname"><a href="classavro_1_1GenericContainer.html">avro::GenericContainer</a></div><div class="ttdoc">The base class for all generic type for containers.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:214</div></div>
+<div class="ttc" id="aclassavro_1_1GenericContainer_html_a2d34ae4fc2ceb52885511ebc332361d3"><div class="ttname"><a href="classavro_1_1GenericContainer.html#a2d34ae4fc2ceb52885511ebc332361d3">avro::GenericContainer::schema</a></div><div class="ttdeci">const NodePtr & schema() const</div><div class="ttdoc">Returns the schema for this object.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:228</div></div>
+<div class="ttc" id="aclassavro_1_1GenericContainer_html_abd0076ffe0a8e8f1fa531a524adeb5e2"><div class="ttname"><a href="classavro_1_1GenericContainer.html#abd0076ffe0a8e8f1fa531a524adeb5e2">avro::GenericContainer::GenericContainer</a></div><div class="ttdeci">GenericContainer(Type type, const NodePtr &s)</div><div class="ttdoc">Constructs a container corresponding to the given schema.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:222</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html"><div class="ttname"><a href="classavro_1_1GenericDatum.html">avro::GenericDatum</a></div><div class="ttdoc">Generic datum which can hold any Avro type.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:61</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_a0d5f2a0774106439dd820d79f8662039"><div class="ttname"><a href="classavro_1_1GenericDatum.html#a0d5f2a0774106439dd820d79f8662039">avro::GenericDatum::isUnion</a></div><div class="ttdeci">bool isUnion() const</div><div class="ttdoc">Returns true if and only if this datum is a union.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:117</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_a38d4967a20cde4ae59a5298538a3be29"><div class="ttname"><a href="classavro_1_1GenericDatum.html#a38d4967a20cde4ae59a5298538a3be29">avro::GenericDatum::logicalType</a></div><div class="ttdeci">LogicalType logicalType() const</div><div class="ttdoc">The avro logical type that augments the main data type this datum holds.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:553</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_a489e7aa51a1235b2c3954d90c7672e28"><div class="ttname"><a href="classavro_1_1GenericDatum.html#a489e7aa51a1235b2c3954d90c7672e28">avro::GenericDatum::value</a></div><div class="ttdeci">const T & value() const</div><div class="ttdoc">Returns the value held by this datum.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:576</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_a879e7b725023bfd8246e15f07cb5bef0"><div class="ttname"><a href="classavro_1_1GenericDatum.html#a879e7b725023bfd8246e15f07cb5bef0">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum(const ValidSchema &schema)</div><div class="ttdoc">Constructs a datum corresponding to the given avro type.</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_a89a1e97a11ef65f86474efc40b638349"><div class="ttname"><a href="classavro_1_1GenericDatum.html#a89a1e97a11ef65f86474efc40b638349">avro::GenericDatum::selectBranch</a></div><div class="ttdeci">void selectBranch(size_t branch)</div><div class="ttdoc">Selects a new branch in the union if this is a union.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:595</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_a8a92257347758e7f3000aa0888a9009e"><div class="ttname"><a href="classavro_1_1GenericDatum.html#a8a92257347758e7f3000aa0888a9009e">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum(bool v)</div><div class="ttdoc">Makes a new AVRO_BOOL datum whose value is of type bool.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:137</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_a8db327b430ee8312046da9001ffa1cca"><div class="ttname"><a href="classavro_1_1GenericDatum.html#a8db327b430ee8312046da9001ffa1cca">avro::GenericDatum::unionBranch</a></div><div class="ttdeci">size_t unionBranch() const</div><div class="ttdoc">Returns the index of the current branch, if this is a union.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:587</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_a927d1c81b258dc1cdda7826c55c299bd"><div class="ttname"><a href="classavro_1_1GenericDatum.html#a927d1c81b258dc1cdda7826c55c299bd">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum(int32_t v)</div><div class="ttdoc">Makes a new AVRO_INT datum whose value is of type int32_t.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:143</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_a9f3697e64a096186ab5c333f5a83d7a7"><div class="ttname"><a href="classavro_1_1GenericDatum.html#a9f3697e64a096186ab5c333f5a83d7a7">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum()</div><div class="ttdoc">Makes a new AVRO_NULL datum.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:132</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_aae8325a782f95c74c98886c061c4269f"><div class="ttname"><a href="classavro_1_1GenericDatum.html#aae8325a782f95c74c98886c061c4269f">avro::GenericDatum::type</a></div><div class="ttdeci">Type type() const</div><div class="ttdoc">The avro data type this datum holds.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:541</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_ac5819473724ee744495ed4495d375373"><div class="ttname"><a href="classavro_1_1GenericDatum.html#ac5819473724ee744495ed4495d375373">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum(const std::string &v)</div><div class="ttdoc">Makes a new AVRO_STRING datum whose value is of type std::string.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:167</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_acfa4dac5a57faac9fdc7ae38ef0b3615"><div class="ttname"><a href="classavro_1_1GenericDatum.html#acfa4dac5a57faac9fdc7ae38ef0b3615">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum(double v)</div><div class="ttdoc">Makes a new AVRO_DOUBLE datum whose value is of type double.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:161</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_ad735e0104e29b4226f987e3ea298f2fc"><div class="ttname"><a href="classavro_1_1GenericDatum.html#ad735e0104e29b4226f987e3ea298f2fc">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum(const NodePtr &schema, const T &v)</div><div class="ttdoc">Constructs a datum corresponding to the given avro type and set the value.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:193</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_add8b1c9c4958763c998aa244721cf69a"><div class="ttname"><a href="classavro_1_1GenericDatum.html#add8b1c9c4958763c998aa244721cf69a">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum(int64_t v)</div><div class="ttdoc">Makes a new AVRO_LONG datum whose value is of type int64_t.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:149</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_ae4114927e789d6bdd293437d5ccb5327"><div class="ttname"><a href="classavro_1_1GenericDatum.html#ae4114927e789d6bdd293437d5ccb5327">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum(const NodePtr &schema)</div><div class="ttdoc">Constructs a datum corresponding to the given avro type.</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_af47b6ea2e5eae50b09ffb38ebf8888e5"><div class="ttname"><a href="classavro_1_1GenericDatum.html#af47b6ea2e5eae50b09ffb38ebf8888e5">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum(float v)</div><div class="ttdoc">Makes a new AVRO_FLOAT datum whose value is of type float.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:155</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html_afdbb9bcb8aa6e967c36d4f06a7c3d2cb"><div class="ttname"><a href="classavro_1_1GenericDatum.html#afdbb9bcb8aa6e967c36d4f06a7c3d2cb">avro::GenericDatum::GenericDatum</a></div><div class="ttdeci">GenericDatum(const std::vector< uint8_t > &v)</div><div class="ttdoc">Makes a new AVRO_BYTES datum whose value is of type std::vector<uint8_t>.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:174</div></div>
+<div class="ttc" id="aclassavro_1_1GenericEnum_html"><div class="ttname"><a href="classavro_1_1GenericEnum.html">avro::GenericEnum</a></div><div class="ttdoc">Generic container for Avro enum.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:435</div></div>
+<div class="ttc" id="aclassavro_1_1GenericEnum_html_a34bc243c7f3c7abcd184d92a85bf8297"><div class="ttname"><a href="classavro_1_1GenericEnum.html#a34bc243c7f3c7abcd184d92a85bf8297">avro::GenericEnum::symbol</a></div><div class="ttdeci">const std::string & symbol(size_t n)</div><div class="ttdoc">Returns the symbol corresponding to the cardinal n.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:461</div></div>
+<div class="ttc" id="aclassavro_1_1GenericEnum_html_a5831e6bfef444fcae3c9d1afd4b0ef5b"><div class="ttname"><a href="classavro_1_1GenericEnum.html#a5831e6bfef444fcae3c9d1afd4b0ef5b">avro::GenericEnum::set</a></div><div class="ttdeci">void set(size_t n)</div><div class="ttdoc">Set the value for this enum corresponding to the given cardinal n.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:486</div></div>
+<div class="ttc" id="aclassavro_1_1GenericEnum_html_a60182bf72e0512ff38cb5c26bd589d45"><div class="ttname"><a href="classavro_1_1GenericEnum.html#a60182bf72e0512ff38cb5c26bd589d45">avro::GenericEnum::symbol</a></div><div class="ttdeci">const std::string & symbol() const</div><div class="ttdoc">Returns the symbol for the current value of this enum.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:504</div></div>
+<div class="ttc" id="aclassavro_1_1GenericEnum_html_a676a5c3079ab031a916f708b9210ec13"><div class="ttname"><a href="classavro_1_1GenericEnum.html#a676a5c3079ab031a916f708b9210ec13">avro::GenericEnum::value</a></div><div class="ttdeci">size_t value() const</div><div class="ttdoc">Returns the cardinal for the current value of this enum.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:497</div></div>
+<div class="ttc" id="aclassavro_1_1GenericEnum_html_a9552ec38fc939863b73ae0b410561caa"><div class="ttname"><a href="classavro_1_1GenericEnum.html#a9552ec38fc939863b73ae0b410561caa">avro::GenericEnum::set</a></div><div class="ttdeci">size_t set(const std::string &symbol)</div><div class="ttdoc">Set the value for this enum corresponding to the given symbol symbol.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:479</div></div>
+<div class="ttc" id="aclassavro_1_1GenericEnum_html_acd895a97db48c65f83b331abbf36b118"><div class="ttname"><a href="classavro_1_1GenericEnum.html#acd895a97db48c65f83b331abbf36b118">avro::GenericEnum::index</a></div><div class="ttdeci">size_t index(const std::string &symbol) const</div><div class="ttdoc">Returns the cardinal for the given symbol symbol.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:472</div></div>
+<div class="ttc" id="aclassavro_1_1GenericEnum_html_aed0dc0b87604920599d11dc1150f24ac"><div class="ttname"><a href="classavro_1_1GenericEnum.html#aed0dc0b87604920599d11dc1150f24ac">avro::GenericEnum::GenericEnum</a></div><div class="ttdeci">GenericEnum(const NodePtr &schema)</div><div class="ttdoc">Constructs a generic enum corresponding to the given schema schema, which should be of Avro type enum...</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:451</div></div>
+<div class="ttc" id="aclassavro_1_1GenericFixed_html"><div class="ttname"><a href="classavro_1_1GenericFixed.html">avro::GenericFixed</a></div><div class="ttdoc">Generic container for Avro fixed.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:512</div></div>
+<div class="ttc" id="aclassavro_1_1GenericFixed_html_a2c1d15466d516a77f597a58f8ab4e5ab"><div class="ttname"><a href="classavro_1_1GenericFixed.html#a2c1d15466d516a77f597a58f8ab4e5ab">avro::GenericFixed::value</a></div><div class="ttdeci">const std::vector< uint8_t > & value() const</div><div class="ttdoc">Returns the contents of this fixed.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:529</div></div>
+<div class="ttc" id="aclassavro_1_1GenericFixed_html_a826fbd7c41a7ba6d7a4a4bdf9b2c3585"><div class="ttname"><a href="classavro_1_1GenericFixed.html#a826fbd7c41a7ba6d7a4a4bdf9b2c3585">avro::GenericFixed::value</a></div><div class="ttdeci">std::vector< uint8_t > & value()</div><div class="ttdoc">Returns the reference to the contents of this fixed.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:536</div></div>
+<div class="ttc" id="aclassavro_1_1GenericFixed_html_ac44c584cbf71294a5f610d21f739f50a"><div class="ttname"><a href="classavro_1_1GenericFixed.html#ac44c584cbf71294a5f610d21f739f50a">avro::GenericFixed::GenericFixed</a></div><div class="ttdeci">GenericFixed(const NodePtr &schema)</div><div class="ttdoc">Constructs a generic enum corresponding to the given schema schema, which should be of Avro type fixe...</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:520</div></div>
+<div class="ttc" id="aclassavro_1_1GenericMap_html"><div class="ttname"><a href="classavro_1_1GenericMap.html">avro::GenericMap</a></div><div class="ttdoc">The generic container for Avro maps.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:400</div></div>
+<div class="ttc" id="aclassavro_1_1GenericMap_html_a1a11f5d6c35cb3b201ddce90e90ae62c"><div class="ttname"><a href="classavro_1_1GenericMap.html#a1a11f5d6c35cb3b201ddce90e90ae62c">avro::GenericMap::value</a></div><div class="ttdeci">const Value & value() const</div><div class="ttdoc">Returns the contents of this map.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:417</div></div>
+<div class="ttc" id="aclassavro_1_1GenericMap_html_a44649fa4cc1cb26983411ce0dbc36372"><div class="ttname"><a href="classavro_1_1GenericMap.html#a44649fa4cc1cb26983411ce0dbc36372">avro::GenericMap::GenericMap</a></div><div class="ttdeci">GenericMap(const NodePtr &schema)</div><div class="ttdoc">Constructs a generic map corresponding to the given schema schema, which should be of Avro type map.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:411</div></div>
+<div class="ttc" id="aclassavro_1_1GenericMap_html_acd91fdec08d8e16acdeefef4bb84038b"><div class="ttname"><a href="classavro_1_1GenericMap.html#acd91fdec08d8e16acdeefef4bb84038b">avro::GenericMap::value</a></div><div class="ttdeci">Value & value()</div><div class="ttdoc">Returns the reference to the contents of this map.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:424</div></div>
+<div class="ttc" id="aclassavro_1_1GenericMap_html_aec2e8334cf0a74168460fc52d3b98bc2"><div class="ttname"><a href="classavro_1_1GenericMap.html#aec2e8334cf0a74168460fc52d3b98bc2">avro::GenericMap::Value</a></div><div class="ttdeci">std::vector< std::pair< std::string, GenericDatum > > Value</div><div class="ttdoc">The contents type for the map.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:405</div></div>
+<div class="ttc" id="aclassavro_1_1GenericRecord_html"><div class="ttname"><a href="classavro_1_1GenericRecord.html">avro::GenericRecord</a></div><div class="ttdoc">The generic container for Avro records.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:286</div></div>
+<div class="ttc" id="aclassavro_1_1GenericRecord_html_a03edd615e245e47d7a58bedf534c5a9a"><div class="ttname"><a href="classavro_1_1GenericRecord.html#a03edd615e245e47d7a58bedf534c5a9a">avro::GenericRecord::field</a></div><div class="ttdeci">GenericDatum & field(const std::string &name)</div><div class="ttdoc">Returns the reference to the field with the given name name, which can be used to change the contents...</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:334</div></div>
+<div class="ttc" id="aclassavro_1_1GenericRecord_html_a1528ea45824d7fa38bae6154e0dbe13d"><div class="ttname"><a href="classavro_1_1GenericRecord.html#a1528ea45824d7fa38bae6154e0dbe13d">avro::GenericRecord::fieldAt</a></div><div class="ttdeci">GenericDatum & fieldAt(size_t pos)</div><div class="ttdoc">Returns the reference to the field at the given position pos, which can be used to change the content...</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:349</div></div>
+<div class="ttc" id="aclassavro_1_1GenericRecord_html_a1eb55fe5cc56805dae0ecfdf14ac5339"><div class="ttname"><a href="classavro_1_1GenericRecord.html#a1eb55fe5cc56805dae0ecfdf14ac5339">avro::GenericRecord::field</a></div><div class="ttdeci">const GenericDatum & field(const std::string &name) const</div><div class="ttdoc">Returns the field with the given name name.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:326</div></div>
+<div class="ttc" id="aclassavro_1_1GenericRecord_html_a1fe56d116f33bc7080478384c20cb23e"><div class="ttname"><a href="classavro_1_1GenericRecord.html#a1fe56d116f33bc7080478384c20cb23e">avro::GenericRecord::hasField</a></div><div class="ttdeci">bool hasField(const std::string &name) const</div><div class="ttdoc">Returns true if a field with the given name name is located in this r false otherwise.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:318</div></div>
+<div class="ttc" id="aclassavro_1_1GenericRecord_html_a29c2793a54a7e223548290a0fbf046ef"><div class="ttname"><a href="classavro_1_1GenericRecord.html#a29c2793a54a7e223548290a0fbf046ef">avro::GenericRecord::fieldAt</a></div><div class="ttdeci">const GenericDatum & fieldAt(size_t pos) const</div><div class="ttdoc">Returns the field at the given position pos.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:341</div></div>
+<div class="ttc" id="aclassavro_1_1GenericRecord_html_a5915f50d1f5ca011bdfa79d1b11567bf"><div class="ttname"><a href="classavro_1_1GenericRecord.html#a5915f50d1f5ca011bdfa79d1b11567bf">avro::GenericRecord::fieldIndex</a></div><div class="ttdeci">size_t fieldIndex(const std::string &name) const</div><div class="ttdoc">Returns index of the field with the given name name.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:306</div></div>
+<div class="ttc" id="aclassavro_1_1GenericRecord_html_a7707d865e3a788e0e6e03131b92fc245"><div class="ttname"><a href="classavro_1_1GenericRecord.html#a7707d865e3a788e0e6e03131b92fc245">avro::GenericRecord::GenericRecord</a></div><div class="ttdeci">GenericRecord(const NodePtr &schema)</div><div class="ttdoc">Constructs a generic record corresponding to the given schema schema, which should be of Avro type re...</div></div>
+<div class="ttc" id="aclassavro_1_1GenericRecord_html_a9767db73c93f49538882d3d675949322"><div class="ttname"><a href="classavro_1_1GenericRecord.html#a9767db73c93f49538882d3d675949322">avro::GenericRecord::fieldCount</a></div><div class="ttdeci">size_t fieldCount() const</div><div class="ttdoc">Returns the number of fields in the current record.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:299</div></div>
+<div class="ttc" id="aclassavro_1_1GenericRecord_html_ac746dbb1206cfecedf218ec7a71b9224"><div class="ttname"><a href="classavro_1_1GenericRecord.html#ac746dbb1206cfecedf218ec7a71b9224">avro::GenericRecord::setFieldAt</a></div><div class="ttdeci">void setFieldAt(size_t pos, const GenericDatum &v)</div><div class="ttdoc">Replaces the field at the given position pos with v.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:356</div></div>
+<div class="ttc" id="aclassavro_1_1GenericUnion_html"><div class="ttname"><a href="classavro_1_1GenericUnion.html">avro::GenericUnion</a></div><div class="ttdoc">Generic container for unions.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:236</div></div>
+<div class="ttc" id="aclassavro_1_1GenericUnion_html_a29a00498e168284778c0e782e385e968"><div class="ttname"><a href="classavro_1_1GenericUnion.html#a29a00498e168284778c0e782e385e968">avro::GenericUnion::GenericUnion</a></div><div class="ttdeci">GenericUnion(const NodePtr &schema)</div><div class="ttdoc">Constructs a generic union corresponding to the given schema schema, and the given value.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:246</div></div>
+<div class="ttc" id="aclassavro_1_1GenericUnion_html_a3568de30ef5ae41f5edfb7c6112929aa"><div class="ttname"><a href="classavro_1_1GenericUnion.html#a3568de30ef5ae41f5edfb7c6112929aa">avro::GenericUnion::selectBranch</a></div><div class="ttdeci">void selectBranch(size_t branch)</div><div class="ttdoc">Selects a new branch.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:259</div></div>
+<div class="ttc" id="aclassavro_1_1GenericUnion_html_a6d5e24f3a1123a2dba13bb3267610793"><div class="ttname"><a href="classavro_1_1GenericUnion.html#a6d5e24f3a1123a2dba13bb3267610793">avro::GenericUnion::datum</a></div><div class="ttdeci">GenericDatum & datum()</div><div class="ttdoc">Returns the datum corresponding to the currently selected branch in this union.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:270</div></div>
+<div class="ttc" id="aclassavro_1_1GenericUnion_html_a97b5f0a1aaffc36fa8797a17cf8abe0f"><div class="ttname"><a href="classavro_1_1GenericUnion.html#a97b5f0a1aaffc36fa8797a17cf8abe0f">avro::GenericUnion::currentBranch</a></div><div class="ttdeci">size_t currentBranch() const</div><div class="ttdoc">Returns the index of the current branch.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:253</div></div>
+<div class="ttc" id="aclassavro_1_1GenericUnion_html_acbf23bb39585ac1d57f4efc481304300"><div class="ttname"><a href="classavro_1_1GenericUnion.html#acbf23bb39585ac1d57f4efc481304300">avro::GenericUnion::datum</a></div><div class="ttdeci">const GenericDatum & datum() const</div><div class="ttdoc">Returns the datum corresponding to the currently selected branch in this union.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:278</div></div>
+<div class="ttc" id="aclassavro_1_1LogicalType_html"><div class="ttname"><a href="classavro_1_1LogicalType.html">avro::LogicalType</a></div><div class="ttdef"><b>Definition:</b> LogicalType.hh:28</div></div>
+<div class="ttc" id="aclassavro_1_1ValidSchema_html"><div class="ttname"><a href="classavro_1_1ValidSchema.html">avro::ValidSchema</a></div><div class="ttdoc">A ValidSchema is basically a non-mutable Schema that has passed some minimum of sanity checks.</div><div class="ttdef"><b>Definition:</b> ValidSchema.hh:40</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">avro::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">The "type" for the schema.</div><div class="ttdef"><b>Definition:</b> Types.hh:31</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a44369402b245cfed83f5ae543a84de2c"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a44369402b245cfed83f5ae543a84de2c">avro::AVRO_MAP</a></div><div class="ttdeci">@ AVRO_MAP</div><div class="ttdef"><b>Definition:</b> Types.hh:45</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a49eb3fcb0154b63104c8041e07ef02b8"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a49eb3fcb0154b63104c8041e07ef02b8">avro::AVRO_FLOAT</a></div><div class="ttdeci">@ AVRO_FLOAT</div><div class="ttdef"><b>Definition:</b> Types.hh:37</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a53f57f125161dc143d955e0eecafd7a3"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a53f57f125161dc143d955e0eecafd7a3">avro::AVRO_INT</a></div><div class="ttdeci">@ AVRO_INT</div><div class="ttdef"><b>Definition:</b> Types.hh:35</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a653cfbb5f5aca522271b435e7215087f"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a653cfbb5f5aca522271b435e7215087f">avro::AVRO_STRING</a></div><div class="ttdeci">@ AVRO_STRING</div><div class="ttdef"><b>Definition:</b> Types.hh:33</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a692a9ce3245cea9dcbc10ee73b8c6340"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a692a9ce3245cea9dcbc10ee73b8c6340">avro::AVRO_LONG</a></div><div class="ttdeci">@ AVRO_LONG</div><div class="ttdef"><b>Definition:</b> Types.hh:36</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a6d280a38797d72263c8b1c83f981b800"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a6d280a38797d72263c8b1c83f981b800">avro::AVRO_DOUBLE</a></div><div class="ttdeci">@ AVRO_DOUBLE</div><div class="ttdef"><b>Definition:</b> Types.hh:38</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9">avro::AVRO_UNION</a></div><div class="ttdeci">@ AVRO_UNION</div><div class="ttdef"><b>Definition:</b> Types.hh:46</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a8fbd33da2d41bf10e877dabac5af5dd2"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a8fbd33da2d41bf10e877dabac5af5dd2">avro::AVRO_BOOL</a></div><div class="ttdeci">@ AVRO_BOOL</div><div class="ttdef"><b>Definition:</b> Types.hh:39</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a9154a0e620b5b68d6342967cd5c35597"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a9154a0e620b5b68d6342967cd5c35597">avro::AVRO_ENUM</a></div><div class="ttdeci">@ AVRO_ENUM</div><div class="ttdef"><b>Definition:</b> Types.hh:43</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7aa5ff10208f8bf3952647c48c1f67ca09"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7aa5ff10208f8bf3952647c48c1f67ca09">avro::AVRO_BYTES</a></div><div class="ttdeci">@ AVRO_BYTES</div><div class="ttdef"><b>Definition:</b> Types.hh:34</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7ad79083497fa17d6fe8d83416c06601eb"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ad79083497fa17d6fe8d83416c06601eb">avro::AVRO_ARRAY</a></div><div class="ttdeci">@ AVRO_ARRAY</div><div class="ttdef"><b>Definition:</b> Types.hh:44</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7ae6058ac1a8cd7ab916450d8616c40cff"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ae6058ac1a8cd7ab916450d8616c40cff">avro::AVRO_NULL</a></div><div class="ttdeci">@ AVRO_NULL</div><div class="ttdef"><b>Definition:</b> Types.hh:40</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7aff4ee863b4a5df4f182a2a86402417e7"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7aff4ee863b4a5df4f182a2a86402417e7">avro::AVRO_FIXED</a></div><div class="ttdeci">@ AVRO_FIXED</div><div class="ttdef"><b>Definition:</b> Types.hh:47</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Generic_8hh_source.html b/doc/content/en/docs/next/external/c++-api/Generic_8hh_source.html
new file mode 100644
index 0000000..56a65be
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Generic_8hh_source.html
@@ -0,0 +1,203 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Generic.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Generic.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_Generic_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_Generic_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <boost/utility.hpp></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="Decoder_8hh.html">Decoder.hh</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="Encoder_8hh.html">Encoder.hh</a>"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "GenericDatum.hh"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Types.hh"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classavro_1_1GenericReader.html"> 34</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1GenericReader.html">GenericReader</a> : boost::noncopyable {</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> schema_;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> isResolving_;</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> decoder_;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> read(<a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &datum, <a class="code" href="classavro_1_1Decoder.html">Decoder</a> &d, <span class="keywordtype">bool</span> isResolving);</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  </div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classavro_1_1GenericReader.html#aefc6503659467f9c3649e34ac9323204"> 45</a></span>  <a class="code" href="classavro_1_1GenericReader.html#aefc6503659467f9c3649e34ac9323204">GenericReader</a>(<a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> s, <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> &decoder [...]
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classavro_1_1GenericReader.html#ac84a8322543af3bfab5739aff040adbb"> 52</a></span>  <a class="code" href="classavro_1_1GenericReader.html#ac84a8322543af3bfab5739aff040adbb">GenericReader</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &writerSchema,</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> &readerSchema, <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">DecoderPtr</a> &decoder);</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classavro_1_1GenericReader.html#ae3a46b79b2119f1ac3e4e3b217c612cf"> 58</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericReader.html#ae3a46b79b2119f1ac3e4e3b217c612cf">read</a>(<a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &datum) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classavro_1_1GenericReader.html#ac7ec76bc1e4e7136e8ab6b8ee73c5d07"> 65</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericReader.html#ac7ec76bc1e4e7136e8ab6b8ee73c5d07">drain</a>() {</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  decoder_->drain();</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classavro_1_1GenericReader.html#abd947cb446ad1c3e102dc718670450ab"> 71</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericReader.html#abd947cb446ad1c3e102dc718670450ab">read</a>(<a class="code" href="classavro_1_1Decoder.html">Decoder</a> &d, <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> & [...]
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  </div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classavro_1_1GenericReader.html#ad7d5d16596914c2da5ee6b1ddcd4173c"> 76</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericReader.html#ad7d5d16596914c2da5ee6b1ddcd4173c">read</a>(<a class="code" href="classavro_1_1Decoder.html">Decoder</a> &d, <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> & [...]
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classavro_1_1GenericWriter.html"> 82</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1GenericWriter.html">GenericWriter</a> : boost::noncopyable {</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> schema_;</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">const</span> <a class="code" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">EncoderPtr</a> encoder_;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> write(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &datum, <a class="code" href="classavro_1_1Encoder.html">Encoder</a> &e);</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classavro_1_1GenericWriter.html#a0462f1239870f16513c96f3d1d645a4b"> 92</a></span>  <a class="code" href="classavro_1_1GenericWriter.html#a0462f1239870f16513c96f3d1d645a4b">GenericWriter</a>(<a class="code" href="classavro_1_1ValidSchema.html">ValidSchema</a> s, <a class="code" href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">EncoderPtr</a> encoder);</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  </div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classavro_1_1GenericWriter.html#aeddfd15a3d8b5eb62e0ebe4ded2ea04c"> 97</a></span>  <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericWriter.html#aeddfd15a3d8b5eb62e0ebe4ded2ea04c">write</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &datum) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  </div>
+<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classavro_1_1GenericWriter.html#a98ee30c39fbce747ec0b81cbdfce4b2f"> 102</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericWriter.html#a98ee30c39fbce747ec0b81cbdfce4b2f">write</a>(<a class="code" href="classavro_1_1Encoder.html">Encoder</a> &e, <span class="keyword">const</span> <a class="code" href="classavro_1_1Gener [...]
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  </div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classavro_1_1GenericWriter.html#a22b226b5198c75c13cae6d251bbadc32"> 108</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classavro_1_1GenericWriter.html#a22b226b5198c75c13cae6d251bbadc32">write</a>(<a class="code" href="classavro_1_1Encoder.html">Encoder</a> &e, <span class="keyword">const</span> <a class="code" href="classavro_1_1Gener [...]
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  write(e, g);</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> };</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="structavro_1_1codec__traits.html"> 114</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1codec__traits.html">codec_traits</a>;</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  </div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keyword">template</span><></div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="structavro_1_1codec__traits_3_01std_1_1pair_3_01ValidSchema_00_01GenericDatum_01_4_01_4.html"> 122</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1codec__traits.html">codec_traits</a><std::pair<ValidSchema, GenericDatum>> {</div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="structavro_1_1codec__traits_3_01std_1_1pair_3_01ValidSchema_00_01GenericDatum_01_4_01_4.html#a357ac3db75730634e1acb673fb78b193"> 124</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structavro_1_1codec__traits_3_01std_1_1pair_3_01ValidSchema_00_01GenericDatum_01_4_01_4.html#a357ac3db75730634e1acb673fb78b193">encode</a>(<a class="code" href= [...]
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">const</span> std::pair<ValidSchema, GenericDatum> &p) {</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  GenericWriter::write(e, p.second, p.first);</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="structavro_1_1codec__traits_3_01std_1_1pair_3_01ValidSchema_00_01GenericDatum_01_4_01_4.html#a0f6ed09fd5c9bb23b22ceed5d19dd309"> 130</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structavro_1_1codec__traits_3_01std_1_1pair_3_01ValidSchema_00_01GenericDatum_01_4_01_4.html#a0f6ed09fd5c9bb23b22ceed5d19dd309">decode</a>(<a class="code" href= [...]
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  GenericReader::read(d, p.second, p.first);</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> };</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword">template</span><></div>
+<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="structavro_1_1codec__traits_3_01GenericDatum_01_4.html"> 139</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1codec__traits.html">codec_traits</a><<a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a>> {</div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="structavro_1_1codec__traits_3_01GenericDatum_01_4.html#a46f0232c412e764ee38287ea858e477f"> 141</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structavro_1_1codec__traits_3_01GenericDatum_01_4.html#a46f0232c412e764ee38287ea858e477f">encode</a>(<a class="code" href="classavro_1_1Encoder.html">Encoder</a> &e, <span class="keyword">const< [...]
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  GenericWriter::write(e, g);</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div>
+<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="structavro_1_1codec__traits_3_01GenericDatum_01_4.html#afaab9e045278f405df11816ed1e53163"> 146</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structavro_1_1codec__traits_3_01GenericDatum_01_4.html#afaab9e045278f405df11816ed1e53163">decode</a>(<a class="code" href="classavro_1_1Decoder.html">Decoder</a> &d, <a class="code" href="classa [...]
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  GenericReader::read(d, g);</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> };</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  </div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aDecoder_8hh_html"><div class="ttname"><a href="Decoder_8hh.html">Decoder.hh</a></div><div class="ttdoc">Low level support for decoding avro values.</div></div>
+<div class="ttc" id="aEncoder_8hh_html"><div class="ttname"><a href="Encoder_8hh.html">Encoder.hh</a></div><div class="ttdoc">Low level support for encoding avro values.</div></div>
+<div class="ttc" id="aclassavro_1_1Decoder_html"><div class="ttname"><a href="classavro_1_1Decoder.html">avro::Decoder</a></div><div class="ttdoc">Decoder is an interface implemented by every decoder capable of decoding Avro data.</div><div class="ttdef"><b>Definition:</b> Decoder.hh:48</div></div>
+<div class="ttc" id="aclassavro_1_1Encoder_html"><div class="ttname"><a href="classavro_1_1Encoder.html">avro::Encoder</a></div><div class="ttdoc">The abstract base class for all Avro encoders.</div><div class="ttdef"><b>Definition:</b> Encoder.hh:52</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html"><div class="ttname"><a href="classavro_1_1GenericDatum.html">avro::GenericDatum</a></div><div class="ttdoc">Generic datum which can hold any Avro type.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:61</div></div>
+<div class="ttc" id="aclassavro_1_1GenericReader_html"><div class="ttname"><a href="classavro_1_1GenericReader.html">avro::GenericReader</a></div><div class="ttdoc">A utility class to read generic datum from decoders.</div><div class="ttdef"><b>Definition:</b> Generic.hh:34</div></div>
+<div class="ttc" id="aclassavro_1_1GenericReader_html_abd947cb446ad1c3e102dc718670450ab"><div class="ttname"><a href="classavro_1_1GenericReader.html#abd947cb446ad1c3e102dc718670450ab">avro::GenericReader::read</a></div><div class="ttdeci">static void read(Decoder &d, GenericDatum &g)</div><div class="ttdoc">Reads a generic datum from the stream, using the given schema.</div></div>
+<div class="ttc" id="aclassavro_1_1GenericReader_html_ac7ec76bc1e4e7136e8ab6b8ee73c5d07"><div class="ttname"><a href="classavro_1_1GenericReader.html#ac7ec76bc1e4e7136e8ab6b8ee73c5d07">avro::GenericReader::drain</a></div><div class="ttdeci">void drain()</div><div class="ttdoc">Drains any residual bytes in the input stream (e.g.</div><div class="ttdef"><b>Definition:</b> Generic.hh:65</div></div>
+<div class="ttc" id="aclassavro_1_1GenericReader_html_ac84a8322543af3bfab5739aff040adbb"><div class="ttname"><a href="classavro_1_1GenericReader.html#ac84a8322543af3bfab5739aff040adbb">avro::GenericReader::GenericReader</a></div><div class="ttdeci">GenericReader(const ValidSchema &writerSchema, const ValidSchema &readerSchema, const DecoderPtr &decoder)</div><div class="ttdoc">Constructs a reader for the given reader's schema readerSchema using the given decoder which holds d [...]
+<div class="ttc" id="aclassavro_1_1GenericReader_html_ad7d5d16596914c2da5ee6b1ddcd4173c"><div class="ttname"><a href="classavro_1_1GenericReader.html#ad7d5d16596914c2da5ee6b1ddcd4173c">avro::GenericReader::read</a></div><div class="ttdeci">static void read(Decoder &d, GenericDatum &g, const ValidSchema &s)</div><div class="ttdoc">Reads a generic datum from the stream, using the given schema.</div></div>
+<div class="ttc" id="aclassavro_1_1GenericReader_html_ae3a46b79b2119f1ac3e4e3b217c612cf"><div class="ttname"><a href="classavro_1_1GenericReader.html#ae3a46b79b2119f1ac3e4e3b217c612cf">avro::GenericReader::read</a></div><div class="ttdeci">void read(GenericDatum &datum) const</div><div class="ttdoc">Reads a value off the decoder.</div></div>
+<div class="ttc" id="aclassavro_1_1GenericReader_html_aefc6503659467f9c3649e34ac9323204"><div class="ttname"><a href="classavro_1_1GenericReader.html#aefc6503659467f9c3649e34ac9323204">avro::GenericReader::GenericReader</a></div><div class="ttdeci">GenericReader(ValidSchema s, const DecoderPtr &decoder)</div><div class="ttdoc">Constructs a reader for the given schema using the given decoder.</div></div>
+<div class="ttc" id="aclassavro_1_1GenericWriter_html"><div class="ttname"><a href="classavro_1_1GenericWriter.html">avro::GenericWriter</a></div><div class="ttdoc">A utility class to write generic datum to encoders.</div><div class="ttdef"><b>Definition:</b> Generic.hh:82</div></div>
+<div class="ttc" id="aclassavro_1_1GenericWriter_html_a0462f1239870f16513c96f3d1d645a4b"><div class="ttname"><a href="classavro_1_1GenericWriter.html#a0462f1239870f16513c96f3d1d645a4b">avro::GenericWriter::GenericWriter</a></div><div class="ttdeci">GenericWriter(ValidSchema s, EncoderPtr encoder)</div><div class="ttdoc">Constructs a writer for the given schema using the given encoder.</div></div>
+<div class="ttc" id="aclassavro_1_1GenericWriter_html_a22b226b5198c75c13cae6d251bbadc32"><div class="ttname"><a href="classavro_1_1GenericWriter.html#a22b226b5198c75c13cae6d251bbadc32">avro::GenericWriter::write</a></div><div class="ttdeci">static void write(Encoder &e, const GenericDatum &g, const ValidSchema &)</div><div class="ttdoc">Writes a generic datum on to the stream, using the given schema.</div><div class="ttdef"><b>Definition:</b> Generic.hh:108</div></div>
+<div class="ttc" id="aclassavro_1_1GenericWriter_html_a98ee30c39fbce747ec0b81cbdfce4b2f"><div class="ttname"><a href="classavro_1_1GenericWriter.html#a98ee30c39fbce747ec0b81cbdfce4b2f">avro::GenericWriter::write</a></div><div class="ttdeci">static void write(Encoder &e, const GenericDatum &g)</div><div class="ttdoc">Writes a generic datum on to the stream.</div></div>
+<div class="ttc" id="aclassavro_1_1GenericWriter_html_aeddfd15a3d8b5eb62e0ebe4ded2ea04c"><div class="ttname"><a href="classavro_1_1GenericWriter.html#aeddfd15a3d8b5eb62e0ebe4ded2ea04c">avro::GenericWriter::write</a></div><div class="ttdeci">void write(const GenericDatum &datum) const</div><div class="ttdoc">Writes a value onto the encoder.</div></div>
+<div class="ttc" id="aclassavro_1_1ValidSchema_html"><div class="ttname"><a href="classavro_1_1ValidSchema.html">avro::ValidSchema</a></div><div class="ttdoc">A ValidSchema is basically a non-mutable Schema that has passed some minimum of sanity checks.</div><div class="ttdef"><b>Definition:</b> ValidSchema.hh:40</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_a2bf627d2676075c8eeaf6a25103b5d5e"><div class="ttname"><a href="namespaceavro.html#a2bf627d2676075c8eeaf6a25103b5d5e">avro::EncoderPtr</a></div><div class="ttdeci">std::shared_ptr< Encoder > EncoderPtr</div><div class="ttdoc">Shared pointer to Encoder.</div><div class="ttdef"><b>Definition:</b> Encoder.hh:147</div></div>
+<div class="ttc" id="anamespaceavro_html_a2e61ab3fbdffc13d2a20efd80c5811b1"><div class="ttname"><a href="namespaceavro.html#a2e61ab3fbdffc13d2a20efd80c5811b1">avro::DecoderPtr</a></div><div class="ttdeci">std::shared_ptr< Decoder > DecoderPtr</div><div class="ttdoc">Shared pointer to Decoder.</div><div class="ttdef"><b>Definition:</b> Decoder.hh:177</div></div>
+<div class="ttc" id="astructavro_1_1codec__traits_3_01GenericDatum_01_4_html_a46f0232c412e764ee38287ea858e477f"><div class="ttname"><a href="structavro_1_1codec__traits_3_01GenericDatum_01_4.html#a46f0232c412e764ee38287ea858e477f">avro::codec_traits< GenericDatum >::encode</a></div><div class="ttdeci">static void encode(Encoder &e, const GenericDatum &g)</div><div class="ttdoc">Encodes.</div><div class="ttdef"><b>Definition:</b> Generic.hh:141</div></div>
+<div class="ttc" id="astructavro_1_1codec__traits_3_01GenericDatum_01_4_html_afaab9e045278f405df11816ed1e53163"><div class="ttname"><a href="structavro_1_1codec__traits_3_01GenericDatum_01_4.html#afaab9e045278f405df11816ed1e53163">avro::codec_traits< GenericDatum >::decode</a></div><div class="ttdeci">static void decode(Decoder &d, GenericDatum &g)</div><div class="ttdoc">Decodes.</div><div class="ttdef"><b>Definition:</b> Generic.hh:146</div></div>
+<div class="ttc" id="astructavro_1_1codec__traits_3_01std_1_1pair_3_01ValidSchema_00_01GenericDatum_01_4_01_4_html_a0f6ed09fd5c9bb23b22ceed5d19dd309"><div class="ttname"><a href="structavro_1_1codec__traits_3_01std_1_1pair_3_01ValidSchema_00_01GenericDatum_01_4_01_4.html#a0f6ed09fd5c9bb23b22ceed5d19dd309">avro::codec_traits< std::pair< ValidSchema, GenericDatum > >::decode</a></div><div class="ttdeci">static void decode(Decoder &d, std::pair< ValidSchema, GenericDatum [...]
+<div class="ttc" id="astructavro_1_1codec__traits_3_01std_1_1pair_3_01ValidSchema_00_01GenericDatum_01_4_01_4_html_a357ac3db75730634e1acb673fb78b193"><div class="ttname"><a href="structavro_1_1codec__traits_3_01std_1_1pair_3_01ValidSchema_00_01GenericDatum_01_4_01_4.html#a357ac3db75730634e1acb673fb78b193">avro::codec_traits< std::pair< ValidSchema, GenericDatum > >::encode</a></div><div class="ttdeci">static void encode(Encoder &e, const std::pair< ValidSchema, Generic [...]
+<div class="ttc" id="astructavro_1_1codec__traits_html"><div class="ttname"><a href="structavro_1_1codec__traits.html">avro::codec_traits</a></div><div class="ttdoc">Codec_traits tells avro how to encode and decode an object of given type.</div><div class="ttdef"><b>Definition:</b> Generic.hh:114</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Layout_8hh.html b/doc/content/en/docs/next/external/c++-api/Layout_8hh.html
new file mode 100644
index 0000000..b19c0d3
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Layout_8hh.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Layout.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">Layout.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include "Config.hh"</code><br />
+<code>#include <boost/noncopyable.hpp></code><br />
+</div>
+<p><a href="Layout_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classavro_1_1Layout.html">avro::Layout</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classavro_1_1PrimitiveLayout.html">avro::PrimitiveLayout</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classavro_1_1CompoundLayout.html">avro::CompoundLayout</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceavro"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceavro.html">avro</a></td></tr>
+<tr class="memdesc:namespaceavro"><td class="mdescLeft"> </td><td class="mdescRight">A bunch of templates and specializations for encoding and decoding specific types. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Layout_8hh_source.html b/doc/content/en/docs/next/external/c++-api/Layout_8hh_source.html
new file mode 100644
index 0000000..df9dc65
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Layout_8hh_source.html
@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Layout.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Layout.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="Layout_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_Layout_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_Layout_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <boost/noncopyable.hpp></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  </div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classavro_1_1Layout.html"> 30</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1Layout.html">Layout</a> : <span class="keyword">private</span> boost::noncopyable {</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1Layout.html">Layout</a>(<span class="keywordtype">size_t</span> offset = 0) : offset_(offset) {}</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">size_t</span> offset()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">return</span> offset_;</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  }</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> ~<a class="code" href="classavro_1_1Layout.html">Layout</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> offset_;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> };</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classavro_1_1PrimitiveLayout.html"> 44</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1PrimitiveLayout.html">PrimitiveLayout</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1Layout.html">Layout</a> {</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1PrimitiveLayout.html">PrimitiveLayout</a>(<span class="keywordtype">size_t</span> offset = 0) : <a class="code" href="classavro_1_1Layout.html">Layout</a>(offset) {}</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classavro_1_1CompoundLayout.html"> 49</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1CompoundLayout.html">CompoundLayout</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1Layout.html">Layout</a> {</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  </div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1CompoundLayout.html">CompoundLayout</a>(<span class="keywordtype">size_t</span> offset = 0) : <a class="code" href="classavro_1_1Layout.html">Layout</a>(offset) {}</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> add(std::unique_ptr<Layout> &layout) {</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  layouts_.push_back(std::move(layout));</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1Layout.html">Layout</a> &at(<span class="keywordtype">size_t</span> idx)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> *layouts_.at(idx);</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::vector<std::unique_ptr<Layout>> layouts_;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  </div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassavro_1_1CompoundLayout_html"><div class="ttname"><a href="classavro_1_1CompoundLayout.html">avro::CompoundLayout</a></div><div class="ttdef"><b>Definition:</b> Layout.hh:49</div></div>
+<div class="ttc" id="aclassavro_1_1Layout_html"><div class="ttname"><a href="classavro_1_1Layout.html">avro::Layout</a></div><div class="ttdef"><b>Definition:</b> Layout.hh:30</div></div>
+<div class="ttc" id="aclassavro_1_1PrimitiveLayout_html"><div class="ttname"><a href="classavro_1_1PrimitiveLayout.html">avro::PrimitiveLayout</a></div><div class="ttdef"><b>Definition:</b> Layout.hh:44</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/LogicalType_8hh_source.html b/doc/content/en/docs/next/external/c++-api/LogicalType_8hh_source.html
new file mode 100644
index 0000000..4618cb7
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/LogicalType_8hh_source.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/LogicalType.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">LogicalType.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_LogicalType_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_LogicalType_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <iostream></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  </div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classavro_1_1LogicalType.html"> 28</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1LogicalType.html">LogicalType</a> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">enum</span> Type {</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  NONE,</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  DECIMAL,</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  DATE,</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  TIME_MILLIS,</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  TIME_MICROS,</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  TIMESTAMP_MILLIS,</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  TIMESTAMP_MICROS,</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  DURATION,</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  UUID</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  };</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1LogicalType.html">LogicalType</a>(Type type);</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  Type type() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  </div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Precision and scale can only be set for the DECIMAL logical type.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Precision must be positive and scale must be either positive or zero. The</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// setters will throw an exception if they are called on any type other</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// than DECIMAL.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> setPrecision(<span class="keywordtype">int</span> precision);</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">int</span> precision()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> precision_; }</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> setScale(<span class="keywordtype">int</span> scale);</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">int</span> scale()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> scale_; }</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">void</span> printJson(std::ostream &os) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  Type type_;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">int</span> precision_;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">int</span> scale_;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> };</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassavro_1_1LogicalType_html"><div class="ttname"><a href="classavro_1_1LogicalType.html">avro::LogicalType</a></div><div class="ttdef"><b>Definition:</b> LogicalType.hh:28</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/NodeConcepts_8hh_source.html b/doc/content/en/docs/next/external/c++-api/NodeConcepts_8hh_source.html
new file mode 100644
index 0000000..44da3ca
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/NodeConcepts_8hh_source.html
@@ -0,0 +1,269 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/NodeConcepts.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">NodeConcepts.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_NodeConcepts_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_NodeConcepts_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "Exception.hh"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <map></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <vector></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespaceavro_1_1concepts.html"> 47</a></span> <span class="keyword">namespace </span>concepts {</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">template</span><<span class="keyword">typename</span> Attribute></div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="structavro_1_1concepts_1_1NoAttribute.html"> 50</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">NoAttribute</a> {</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> hasAttribute = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  </div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">size_t</span> size()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> add(<span class="keyword">const</span> Attribute & <span class="comment">/* attr */</span>) {</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// There must be an add function for the generic NodeImpl, but the</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Node APIs ensure that it is never called, the throw here is</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// just in case</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"This type does not have attribute"</span>);</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">const</span> Attribute &get(<span class="keywordtype">size_t</span> <span class="comment">/* index */</span> = 0)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// There must be an get function for the generic NodeImpl, but the</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Node APIs ensure that it is never called, the throw here is</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// just in case</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"This type does not have attribute"</span>);</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  Attribute &get(<span class="keywordtype">size_t</span> <span class="comment">/* index */</span> = 0) {</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// There must be an get function for the generic NodeImpl, but the</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// Node APIs ensure that it is never called, the throw here is</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// just in case</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"This type does not have attribute"</span>);</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keyword">template</span><<span class="keyword">typename</span> Attribute></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="structavro_1_1concepts_1_1SingleAttribute.html"> 80</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">SingleAttribute</a> {</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> hasAttribute = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  </div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">SingleAttribute</a>() : attr_() {}</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">explicit</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">SingleAttribute</a>(<span class="keyword">const</span> Attribute &a) : attr_(a) {}</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// copy constructing from another single attribute is allowed</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">SingleAttribute</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">SingleAttribute<Attribute></a> &rhs) : attr_(rhs.attr_) {}</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// copy constructing from a no attribute is allowed</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">explicit</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">SingleAttribute</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">NoAttribute<Attribute></a> &rhs) : attr_() {}</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  </div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">size_t</span> size()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">void</span> add(<span class="keyword">const</span> Attribute &attr) {</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  attr_ = attr;</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  </div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">const</span> Attribute &get(<span class="keywordtype">size_t</span> index = 0)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (index != 0) {</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"SingleAttribute has only 1 value"</span>);</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> attr_;</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  </div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  Attribute &get(<span class="keywordtype">size_t</span> index = 0) {</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (index != 0) {</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"SingleAttribute has only 1 value"</span>);</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> attr_;</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">friend</span> <span class="keyword">struct </span><a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiAttribute</a>;</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  Attribute attr_;</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> };</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  </div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">template</span><<span class="keyword">typename</span> Attribute></div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="structavro_1_1concepts_1_1MultiAttribute.html"> 121</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiAttribute</a> {</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> hasAttribute = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiAttribute</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// copy constructing from another single attribute is allowed, it</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// pushes the attribute</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">explicit</span> <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiAttribute</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">SingleAttribute<Attribute></a> &rhs) {</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// since map is the only type that does this we know it's</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// final size will be two, so reserve</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  attrs_.reserve(2);</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  attrs_.push_back(rhs.attr_);</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiAttribute</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiAttribute<Attribute></a> &rhs) : attrs_(rhs.attrs_) {}</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">explicit</span> <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiAttribute</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">NoAttribute<Attribute></a> &rhs) {}</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  </div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordtype">size_t</span> size()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> attrs_.size();</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  </div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">void</span> add(<span class="keyword">const</span> Attribute &attr) {</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  attrs_.push_back(attr);</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">const</span> Attribute &get(<span class="keywordtype">size_t</span> index = 0)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> attrs_.at(index);</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  </div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  Attribute &get(<span class="keywordtype">size_t</span> index) {</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> attrs_.at(index);</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  </div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  std::vector<Attribute> attrs_;</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> };</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  </div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="structavro_1_1concepts_1_1NameIndexConcept.html"> 160</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1concepts_1_1NameIndexConcept.html">NameIndexConcept</a> {</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  </div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordtype">bool</span> lookup(<span class="keyword">const</span> std::string &name, <span class="keywordtype">size_t</span> &index)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"Name index does not exist"</span>);</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  </div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordtype">bool</span> add(const ::std::string &name, <span class="keywordtype">size_t</span>) {</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"Name index does not exist"</span>);</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> };</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  </div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">template</span><></div>
+<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="structavro_1_1concepts_1_1NameIndexConcept_3_01MultiAttribute_3_01std_1_1string_01_4_01_4.html"> 172</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1concepts_1_1NameIndexConcept.html">NameIndexConcept</a><<a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiAttribute</a><std::string>> {</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">using</span> IndexMap = std::map<std::string, size_t>;</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  </div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">bool</span> lookup(<span class="keyword">const</span> std::string &name, <span class="keywordtype">size_t</span> &index)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">auto</span> iter = map_.find(name);</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span> (iter == map_.end()) {</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  index = iter->second;</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  </div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordtype">bool</span> add(const ::std::string &name, <span class="keywordtype">size_t</span> index) {</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordtype">bool</span> added = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">auto</span> lb = map_.lower_bound(name);</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span> (lb == map_.end() || map_.key_comp()(name, lb->first)) {</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  map_.insert(lb, IndexMap::value_type(name, index));</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  added = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> added;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  </div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  IndexMap map_;</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> };</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  </div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> } <span class="comment">// namespace concepts</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  </div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassavro_1_1Exception_html"><div class="ttname"><a href="classavro_1_1Exception.html">avro::Exception</a></div><div class="ttdoc">Wrapper for std::runtime_error that provides convenience constructor for boost::format objects.</div><div class="ttdef"><b>Definition:</b> Exception.hh:31</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="astructavro_1_1concepts_1_1MultiAttribute_html"><div class="ttname"><a href="structavro_1_1concepts_1_1MultiAttribute.html">avro::concepts::MultiAttribute</a></div><div class="ttdef"><b>Definition:</b> NodeConcepts.hh:121</div></div>
+<div class="ttc" id="astructavro_1_1concepts_1_1NameIndexConcept_html"><div class="ttname"><a href="structavro_1_1concepts_1_1NameIndexConcept.html">avro::concepts::NameIndexConcept</a></div><div class="ttdef"><b>Definition:</b> NodeConcepts.hh:160</div></div>
+<div class="ttc" id="astructavro_1_1concepts_1_1NoAttribute_html"><div class="ttname"><a href="structavro_1_1concepts_1_1NoAttribute.html">avro::concepts::NoAttribute</a></div><div class="ttdef"><b>Definition:</b> NodeConcepts.hh:50</div></div>
+<div class="ttc" id="astructavro_1_1concepts_1_1SingleAttribute_html"><div class="ttname"><a href="structavro_1_1concepts_1_1SingleAttribute.html">avro::concepts::SingleAttribute</a></div><div class="ttdef"><b>Definition:</b> NodeConcepts.hh:80</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/NodeImpl_8hh_source.html b/doc/content/en/docs/next/external/c++-api/NodeImpl_8hh_source.html
new file mode 100644
index 0000000..2d6df4d
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/NodeImpl_8hh_source.html
@@ -0,0 +1,653 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/NodeImpl.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">NodeImpl.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_NodeImpl_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_NodeImpl_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "GenericDatum.hh"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  </div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <iomanip></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <iostream></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <limits></span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <memory></span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <set></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <sstream></span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <utility></span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Node.hh"</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "NodeConcepts.hh"</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  </div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  </div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  </div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">template</span><</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">class </span>NameConcept,</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">class </span>LeavesConcept,</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class </span>LeafNamesConcept,</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class </span>SizeConcept></div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classavro_1_1NodeImpl.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="classavro_1_1NodeImpl.html">NodeImpl</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1Node.html">Node</a> {</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type) : <a class="code" href="classavro_1_1Node.html">Node</a>(type),</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  nameAttribute_(),</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  docAttribute_(),</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd">leafAttributes_</a>(),</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  leafNameAttributes_(),</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  sizeAttribute_() {}</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type,</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">const</span> NameConcept &name,</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> LeavesConcept &leaves,</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">const</span> LeafNamesConcept &leafNames,</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">const</span> SizeConcept &size) : <a class="code" href="classavro_1_1Node.html">Node</a>(type),</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  nameAttribute_(name),</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  docAttribute_(),</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd">leafAttributes_</a>(leaves),</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  leafNameAttributes_(leafNames),</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  sizeAttribute_(size) {}</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// Ctor with "doc"</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type,</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">const</span> NameConcept &name,</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">concepts::SingleAttribute<std::string></a> &doc,</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">const</span> LeavesConcept &leaves,</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">const</span> LeafNamesConcept &leafNames,</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">const</span> SizeConcept &size) : <a class="code" href="classavro_1_1Node.html">Node</a>(type),</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  nameAttribute_(name),</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  docAttribute_(doc),</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd">leafAttributes_</a>(leaves),</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  leafNameAttributes_(leafNames),</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  sizeAttribute_(size) {}</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> swap(<a class="code" href="classavro_1_1NodeImpl.html">NodeImpl</a> &impl) {</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::swap(nameAttribute_, impl.nameAttribute_);</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  std::swap(docAttribute_, impl.docAttribute_);</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  std::swap(<a class="code" href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd">leafAttributes_</a>, impl.<a class="code" href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd">leafAttributes_</a>);</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  std::swap(leafNameAttributes_, impl.leafNameAttributes_);</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::swap(sizeAttribute_, impl.sizeAttribute_);</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::swap(nameIndex_, impl.nameIndex_);</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">bool</span> hasName()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// e.g.: true for single and multi-attributes, false for no-attributes.</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> NameConcept::hasAttribute;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  </div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">void</span> doSetName(<span class="keyword">const</span> <a class="code" href="classavro_1_1Name.html">Name</a> &name)<span class="keyword"> override </span>{</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  nameAttribute_.add(name);</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  </div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1Name.html">Name</a> &name()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> nameAttribute_.get();</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">void</span> doSetDoc(<span class="keyword">const</span> std::string &doc)<span class="keyword"> override </span>{</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  docAttribute_.add(doc);</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">const</span> std::string &getDoc()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> docAttribute_.get();</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">void</span> doAddLeaf(<span class="keyword">const</span> NodePtr &newLeaf) <span class="keyword">final</span> {</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd">leafAttributes_</a>.add(newLeaf);</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">size_t</span> leaves()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> <a class="code" href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd">leafAttributes_</a>.size();</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">const</span> NodePtr &leafAt(<span class="keywordtype">size_t</span> index)<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> <a class="code" href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd">leafAttributes_</a>.get(index);</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  </div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> doAddName(<span class="keyword">const</span> std::string &name)<span class="keyword"> override </span>{</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span> (!nameIndex_.add(name, leafNameAttributes_.size())) {</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(boost::format(<span class="stringliteral">"Cannot add duplicate name: %1%"</span>) % name);</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  leafNameAttributes_.add(name);</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">size_t</span> names()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> leafNameAttributes_.size();</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  </div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">const</span> std::string &nameAt(<span class="keywordtype">size_t</span> index)<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> leafNameAttributes_.get(index);</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">bool</span> nameIndex(<span class="keyword">const</span> std::string &name, <span class="keywordtype">size_t</span> &index)<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> nameIndex_.lookup(name, index);</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordtype">void</span> doSetFixedSize(<span class="keywordtype">size_t</span> size)<span class="keyword"> override </span>{</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  sizeAttribute_.add(size);</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">size_t</span> fixedSize()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> sizeAttribute_.get();</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  </div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordtype">bool</span> isValid() <span class="keyword">const override</span> = 0;</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  </div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordtype">void</span> printBasicInfo(std::ostream &os) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  </div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordtype">void</span> setLeafToSymbolic(<span class="keywordtype">size_t</span> index, <span class="keyword">const</span> NodePtr &node) <span class="keyword">override</span>;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  </div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> furtherResolution(<span class="keyword">const</span> <a class="code" href="classavro_1_1Node.html">Node</a> &reader)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> match = <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3a86f5b5067a89554ec0750cc077049175">RESOLVE_NO_MATCH</a>;</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span> (reader.type() == <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7acfdf8d57cc8f759934fe19a3a31ee129">AVRO_SYMBOLIC</a>) {</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  </div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// resolve the symbolic type, and check again</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">const</span> NodePtr &node = reader.leafAt(0);</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  match = resolve(*node);</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (reader.type() == <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9">AVRO_UNION</a>) {</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  </div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">// in this case, need to see if there is an exact match for the</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// writer's type, or if not, the first one that can be promoted to a</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// match</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  </div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < reader.leaves(); ++i) {</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  </div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">const</span> NodePtr &node = reader.leafAt(i);</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> thisMatch = resolve(*node);</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// if matched then the search is done</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (thisMatch == <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3ad0049d58769053c630bdb7318249a94d">RESOLVE_MATCH</a>) {</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  match = thisMatch;</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  </div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// thisMatch is either no match, or promotable, this will set match to</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// promotable if it hasn't been set already</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span> (match == <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3a86f5b5067a89554ec0750cc077049175">RESOLVE_NO_MATCH</a>) {</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  match = thisMatch;</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  </div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> match;</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  </div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  NameConcept nameAttribute_;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  </div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// Rem: NameConcept type is HasName (= SingleAttribute<Name>), we use std::string instead</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">concepts::SingleAttribute<std::string></a> docAttribute_; </div>
+<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd"> 196</a></span>  LeavesConcept <a class="code" href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd">leafAttributes_</a>;</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  LeafNamesConcept leafNameAttributes_;</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  SizeConcept sizeAttribute_;</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="structavro_1_1concepts_1_1NameIndexConcept.html">concepts::NameIndexConcept<LeafNamesConcept></a> nameIndex_;</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> };</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  </div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">using</span> <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">NoName</a> = <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">concepts::NoAttribute<Name></a>;</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keyword">using</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasName</a> = <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">concepts::SingleAttribute<Name></a>;</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  </div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">using</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasDoc</a> = <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">concepts::SingleAttribute<std::string></a>;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  </div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="keyword">using</span> <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">NoLeaves</a> = <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">concepts::NoAttribute<NodePtr></a>;</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">using</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">SingleLeaf</a> = <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">concepts::SingleAttribute<NodePtr></a>;</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keyword">using</span> <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiLeaves</a> = <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">concepts::MultiAttribute<NodePtr></a>;</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  </div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keyword">using</span> <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">NoLeafNames</a> = <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">concepts::NoAttribute<std::string></a>;</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keyword">using</span> <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">LeafNames</a> = <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">concepts::MultiAttribute<std::string></a>;</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  </div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">using</span> <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">NoSize</a> = <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">concepts::NoAttribute<int></a>;</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="keyword">using</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasSize</a> = <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">concepts::SingleAttribute<int></a>;</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  </div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="keyword">using</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplPrimitive</a> = <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl<NoName, NoLeaves, NoLeafNames, NoSize></a>;</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="keyword">using</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplSymbolic</a> = <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl<HasName, NoLeaves, NoLeafNames, NoSize></a>;</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  </div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="keyword">using</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplRecord</a> = <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl<HasName, MultiLeaves, LeafNames, NoSize></a>;</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">using</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplEnum</a> = <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl<HasName, NoLeaves, LeafNames, NoSize></a>;</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="keyword">using</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplArray</a> = <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl<NoName, SingleLeaf, NoLeafNames, NoSize></a>;</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="keyword">using</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplMap</a> = <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl<NoName, MultiLeaves, NoLeafNames, NoSize></a>;</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">using</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplUnion</a> = <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl<NoName, MultiLeaves, NoLeafNames, NoSize></a>;</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="keyword">using</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplFixed</a> = <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl<HasName, NoLeaves, NoLeafNames, HasSize></a>;</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div>
+<div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classavro_1_1NodePrimitive.html"> 227</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1NodePrimitive.html">NodePrimitive</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplPrimitive</a> {</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1NodePrimitive.html">NodePrimitive</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type) : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplPrimitive</a>(type) {}</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  </div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> resolve(<span class="keyword">const</span> <a class="code" href="classavro_1_1Node.html">Node</a> &reader) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  </div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordtype">void</span> printJson(std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  </div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordtype">bool</span> isValid()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  </div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordtype">void</span> printDefaultToJson(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &g, std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> };</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  </div>
+<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classavro_1_1NodeSymbolic.html"> 242</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1NodeSymbolic.html">NodeSymbolic</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplSymbolic</a> {</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keyword">using</span> NodeWeakPtr = std::weak_ptr<Node>;</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  </div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="classavro_1_1NodeSymbolic.html">NodeSymbolic</a>() : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplSymbolic</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7acfdf8d57cc8f759934fe19a3a31ee129">AVRO_SYMBOLIC</a>) {}</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  </div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1NodeSymbolic.html">NodeSymbolic</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasName</a> &name) : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplSymbolic</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7acfdf8d57cc8f759934fe19a3a [...]
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  </div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="classavro_1_1NodeSymbolic.html">NodeSymbolic</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasName</a> &name, <span class="keyword">const</span> NodePtr &n) : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplSymbolic</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7acfdf8d57cc8f [...]
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> resolve(<span class="keyword">const</span> <a class="code" href="classavro_1_1Node.html">Node</a> &reader) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  </div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordtype">void</span> printJson(std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  </div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordtype">bool</span> isValid()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">return</span> (nameAttribute_.size() == 1);</div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  </div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">void</span> printDefaultToJson(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &g, std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  </div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordtype">bool</span> isSet()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">return</span> (actualNode_.lock() != <span class="keyword">nullptr</span>);</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  </div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  NodePtr getNode()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  NodePtr node = actualNode_.lock();</div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (!node) {</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(boost::format(<span class="stringliteral">"Could not follow symbol %1%"</span>) % name());</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> node;</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  </div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">void</span> setNode(<span class="keyword">const</span> NodePtr &node) {</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  actualNode_ = node;</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  </div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  NodeWeakPtr actualNode_;</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> };</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  </div>
+<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classavro_1_1NodeRecord.html"> 281</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1NodeRecord.html">NodeRecord</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplRecord</a> {</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  std::vector<GenericDatum> defaultValues;</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  </div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="classavro_1_1NodeRecord.html">NodeRecord</a>() : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplRecord</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a56769d2bfc0a8c97c14a5d249fa9ade3">AVRO_RECORD</a>) {}</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <a class="code" href="classavro_1_1NodeRecord.html">NodeRecord</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasName</a> &name, <span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiLeaves</a> &fields,</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">LeafNames</a> &fieldsNames,</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  std::vector<GenericDatum> dv);</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  </div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="classavro_1_1NodeRecord.html">NodeRecord</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasName</a> &name, <span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasDoc</a> &doc, <span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1MultiA [...]
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">LeafNames</a> &fieldsNames,</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  std::vector<GenericDatum> dv) : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplRecord</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a56769d2bfc0a8c97c14a5d249fa9ade3">AVRO_RECORD</a>, name, doc, fields, fieldsNames, <a class="code" href="structavro_1_1concepts_1_1NoAttribute.html">NoSize</a>()),</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  defaultValues(std::move(dv)) {</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < leafNameAttributes_.size(); ++i) {</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span> (!nameIndex_.add(leafNameAttributes_.get(i), i)) {</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(boost::format(</div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="stringliteral">"Cannot add duplicate field: %1%"</span>)</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  % leafNameAttributes_.get(i));</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  </div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordtype">void</span> swap(<a class="code" href="classavro_1_1NodeRecord.html">NodeRecord</a> &r) {</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  NodeImplRecord::swap(r);</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  defaultValues.swap(r.defaultValues);</div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> resolve(<span class="keyword">const</span> <a class="code" href="classavro_1_1Node.html">Node</a> &reader) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  </div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordtype">void</span> printJson(std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  </div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordtype">bool</span> isValid()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> ((nameAttribute_.size() == 1) && (leafAttributes_.size() == leafNameAttributes_.size()));</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  </div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &defaultValueAt(<span class="keywordtype">size_t</span> index)<span class="keyword"> override </span>{</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> defaultValues[index];</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  </div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordtype">void</span> printDefaultToJson(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &g, std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> };</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  </div>
+<div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classavro_1_1NodeEnum.html"> 323</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1NodeEnum.html">NodeEnum</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplEnum</a> {</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="classavro_1_1NodeEnum.html">NodeEnum</a>() : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplEnum</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a9154a0e620b5b68d6342967cd5c35597">AVRO_ENUM</a>) {}</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  </div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="classavro_1_1NodeEnum.html">NodeEnum</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasName</a> &name, <span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">LeafNames</a> &symbols) : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplEnum</a>(<a class="code" hr [...]
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < leafNameAttributes_.size(); ++i) {</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span> (!nameIndex_.add(leafNameAttributes_.get(i), i)) {</div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(boost::format(<span class="stringliteral">"Cannot add duplicate enum: %1%"</span>) % leafNameAttributes_.get(i));</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  </div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> resolve(<span class="keyword">const</span> <a class="code" href="classavro_1_1Node.html">Node</a> &reader) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  </div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordtype">void</span> printJson(std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  </div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordtype">bool</span> isValid()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">return</span> (</div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  (nameAttribute_.size() == 1) && (leafNameAttributes_.size() > 0));</div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  </div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordtype">void</span> printDefaultToJson(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &g, std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> };</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  </div>
+<div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classavro_1_1NodeArray.html"> 347</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1NodeArray.html">NodeArray</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplArray</a> {</div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="classavro_1_1NodeArray.html">NodeArray</a>() : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplArray</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ad79083497fa17d6fe8d83416c06601eb">AVRO_ARRAY</a>) {}</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  </div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1NodeArray.html">NodeArray</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">SingleLeaf</a> &items) : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplArray</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ad79083497fa17d6fe8d83416c06601 [...]
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  </div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> resolve(<span class="keyword">const</span> <a class="code" href="classavro_1_1Node.html">Node</a> &reader) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  </div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordtype">void</span> printJson(std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  </div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordtype">bool</span> isValid()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">return</span> (leafAttributes_.size() == 1);</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  </div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordtype">void</span> printDefaultToJson(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &g, std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> };</div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  </div>
+<div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classavro_1_1NodeMap.html"> 364</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1NodeMap.html">NodeMap</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplMap</a> {</div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="classavro_1_1NodeMap.html">NodeMap</a>();</div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  </div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1NodeMap.html">NodeMap</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">SingleLeaf</a> &values) : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplMap</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a44369402b245cfed83f5ae543a84de2c">A [...]
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="comment">// need to add the key for the map too</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  NodePtr key(<span class="keyword">new</span> <a class="code" href="classavro_1_1NodePrimitive.html">NodePrimitive</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a653cfbb5f5aca522271b435e7215087f">AVRO_STRING</a>));</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  doAddLeaf(key);</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  </div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="comment">// key goes before value</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  std::swap(leafAttributes_.get(0), leafAttributes_.get(1));</div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  }</div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  </div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> resolve(<span class="keyword">const</span> <a class="code" href="classavro_1_1Node.html">Node</a> &reader) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  </div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordtype">void</span> printJson(std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  </div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordtype">bool</span> isValid()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">return</span> (leafAttributes_.size() == 2);</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  </div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordtype">void</span> printDefaultToJson(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &g, std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> };</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  </div>
+<div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classavro_1_1NodeUnion.html"> 388</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1NodeUnion.html">NodeUnion</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplUnion</a> {</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="classavro_1_1NodeUnion.html">NodeUnion</a>() : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplUnion</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9">AVRO_UNION</a>) {}</div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  </div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1NodeUnion.html">NodeUnion</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1MultiAttribute.html">MultiLeaves</a> &types) : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplUnion</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02 [...]
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  </div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> resolve(<span class="keyword">const</span> <a class="code" href="classavro_1_1Node.html">Node</a> &reader) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  </div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordtype">void</span> printJson(std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  </div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordtype">bool</span> isValid()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  std::set<std::string> seen;</div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">if</span> (leafAttributes_.size() >= 1) {</div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < leafAttributes_.size(); ++i) {</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  std::string name;</div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keyword">const</span> NodePtr &n = leafAttributes_.get(i);</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">switch</span> (n->type()) {</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a653cfbb5f5aca522271b435e7215087f">AVRO_STRING</a>:</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  name = <span class="stringliteral">"string"</span>;</div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7aa5ff10208f8bf3952647c48c1f67ca09">AVRO_BYTES</a>:</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  name = <span class="stringliteral">"bytes"</span>;</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a53f57f125161dc143d955e0eecafd7a3">AVRO_INT</a>:</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  name = <span class="stringliteral">"int"</span>;</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a692a9ce3245cea9dcbc10ee73b8c6340">AVRO_LONG</a>:</div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  name = <span class="stringliteral">"long"</span>;</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a49eb3fcb0154b63104c8041e07ef02b8">AVRO_FLOAT</a>:</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  name = <span class="stringliteral">"float"</span>;</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a6d280a38797d72263c8b1c83f981b800">AVRO_DOUBLE</a>:</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  name = <span class="stringliteral">"double"</span>;</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a8fbd33da2d41bf10e877dabac5af5dd2">AVRO_BOOL</a>:</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  name = <span class="stringliteral">"bool"</span>;</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ae6058ac1a8cd7ab916450d8616c40cff">AVRO_NULL</a>:</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  name = <span class="stringliteral">"null"</span>;</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ad79083497fa17d6fe8d83416c06601eb">AVRO_ARRAY</a>:</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  name = <span class="stringliteral">"array"</span>;</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a44369402b245cfed83f5ae543a84de2c">AVRO_MAP</a>:</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  name = <span class="stringliteral">"map"</span>;</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a56769d2bfc0a8c97c14a5d249fa9ade3">AVRO_RECORD</a>:</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a9154a0e620b5b68d6342967cd5c35597">AVRO_ENUM</a>:</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9">AVRO_UNION</a>:</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7aff4ee863b4a5df4f182a2a86402417e7">AVRO_FIXED</a>:</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7acfdf8d57cc8f759934fe19a3a31ee129">AVRO_SYMBOLIC</a>:</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  name = n->name().fullname();</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span> (seen.find(name) != seen.end()) {</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  seen.insert(name);</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  }</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  }</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  </div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordtype">void</span> printDefaultToJson(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &g, std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> };</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  </div>
+<div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classavro_1_1NodeFixed.html"> 457</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1NodeFixed.html">NodeFixed</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImplFixed</a> {</div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="classavro_1_1NodeFixed.html">NodeFixed</a>() : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplFixed</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7aff4ee863b4a5df4f182a2a86402417e7">AVRO_FIXED</a>) {}</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  </div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <a class="code" href="classavro_1_1NodeFixed.html">NodeFixed</a>(<span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasName</a> &name, <span class="keyword">const</span> <a class="code" href="structavro_1_1concepts_1_1SingleAttribute.html">HasSize</a> &size) : <a class="code" href="classavro_1_1NodeImpl.html">NodeImplFixed</a>(<a class="code" hre [...]
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  </div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> resolve(<span class="keyword">const</span> <a class="code" href="classavro_1_1Node.html">Node</a> &reader) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  </div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordtype">void</span> printJson(std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  </div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordtype">bool</span> isValid()<span class="keyword"> const override </span>{</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">return</span> (</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  (nameAttribute_.size() == 1) && (sizeAttribute_.size() == 1));</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  }</div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  </div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordtype">void</span> printDefaultToJson(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &g, std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const override</span>;</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> };</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  </div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="keyword">template</span><<span class="keyword">class</span> A, <span class="keyword">class</span> B, <span class="keyword">class</span> C, <span class="keyword">class</span> D></div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <a class="code" href="classavro_1_1NodeImpl.html">NodeImpl<A, B, C, D>::setLeafToSymbolic</a>(<span class="keywordtype">size_t</span> index, <span class="keyword">const</span> NodePtr &node) {</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span> (!B::hasAttribute) {</div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"Cannot change leaf node for nonexistent leaf"</span>);</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  }</div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  </div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keyword">auto</span> &replaceNode = <span class="keyword">const_cast<</span>NodePtr &<span class="keyword">></span>(leafAttributes_.get(index));</div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">if</span> (replaceNode->name() != node->name()) {</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">throw</span> Exception(<span class="stringliteral">"Symbolic name does not match the name of the schema it references"</span>);</div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  }</div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  </div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keyword">auto</span> symbol = std::make_shared<NodeSymbolic>();</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  symbol->setName(node->name());</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  symbol->setNode(node);</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  replaceNode = symbol;</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> }</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  </div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="keyword">template</span><<span class="keyword">class</span> A, <span class="keyword">class</span> B, <span class="keyword">class</span> C, <span class="keyword">class</span> D></div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> NodeImpl<A, B, C, D>::printBasicInfo(std::ostream &os)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  os << type();</div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">if</span> (hasName()) {</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  os << <span class="charliteral">' '</span> << nameAttribute_.get();</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  }</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  </div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">if</span> (D::hasAttribute) {</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  os << <span class="stringliteral">" "</span> << sizeAttribute_.get();</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  }</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  os << <span class="charliteral">'\n'</span>;</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordtype">int</span> count = leaves();</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  count = count ? count : names();</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < count; ++i) {</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">if</span> (C::hasAttribute) {</div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  os << <span class="stringliteral">"name "</span> << nameAt(i) << <span class="charliteral">'\n'</span>;</div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  }</div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">if</span> (type() != <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7acfdf8d57cc8f759934fe19a3a31ee129">AVRO_SYMBOLIC</a> && leafAttributes_.hasAttribute) {</div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  leafAt(i)->printBasicInfo(os);</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  }</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  }</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceavro.html#a6b8f675115ecd69b17ad03b2ce22c3b8">isCompound</a>(type())) {</div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  os << <span class="stringliteral">"end "</span> << type() << <span class="charliteral">'\n'</span>;</div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> }</div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  </div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="keyword">inline</span> NodePtr resolveSymbol(<span class="keyword">const</span> NodePtr &node) {</div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">if</span> (node->type() != <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7acfdf8d57cc8f759934fe19a3a31ee129">AVRO_SYMBOLIC</a>) {</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">throw</span> Exception(<span class="stringliteral">"Only symbolic nodes may be resolved"</span>);</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  }</div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  std::shared_ptr<NodeSymbolic> symNode = std::static_pointer_cast<NodeSymbolic>(node);</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">return</span> symNode->getNode();</div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> }</div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  </div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="keyword">inline</span> std::string intToHex(T i) {</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  std::stringstream stream;</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  stream << <span class="stringliteral">"\\u"</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  << std::setfill(<span class="charliteral">'0'</span>) << std::setw(<span class="keyword">sizeof</span>(T))</div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  << std::hex << i;</div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">return</span> stream.str();</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> }</div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  </div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span> } <span class="comment">// namespace avro</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  </div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="preprocessor">#endif</span></div>
+<div class="ttc" id="aclassavro_1_1Exception_html"><div class="ttname"><a href="classavro_1_1Exception.html">avro::Exception</a></div><div class="ttdoc">Wrapper for std::runtime_error that provides convenience constructor for boost::format objects.</div><div class="ttdef"><b>Definition:</b> Exception.hh:31</div></div>
+<div class="ttc" id="aclassavro_1_1GenericDatum_html"><div class="ttname"><a href="classavro_1_1GenericDatum.html">avro::GenericDatum</a></div><div class="ttdoc">Generic datum which can hold any Avro type.</div><div class="ttdef"><b>Definition:</b> GenericDatum.hh:61</div></div>
+<div class="ttc" id="aclassavro_1_1Name_html"><div class="ttname"><a href="classavro_1_1Name.html">avro::Name</a></div><div class="ttdef"><b>Definition:</b> Node.hh:41</div></div>
+<div class="ttc" id="aclassavro_1_1NodeArray_html"><div class="ttname"><a href="classavro_1_1NodeArray.html">avro::NodeArray</a></div><div class="ttdef"><b>Definition:</b> NodeImpl.hh:347</div></div>
+<div class="ttc" id="aclassavro_1_1NodeEnum_html"><div class="ttname"><a href="classavro_1_1NodeEnum.html">avro::NodeEnum</a></div><div class="ttdef"><b>Definition:</b> NodeImpl.hh:323</div></div>
+<div class="ttc" id="aclassavro_1_1NodeFixed_html"><div class="ttname"><a href="classavro_1_1NodeFixed.html">avro::NodeFixed</a></div><div class="ttdef"><b>Definition:</b> NodeImpl.hh:457</div></div>
+<div class="ttc" id="aclassavro_1_1NodeImpl_html"><div class="ttname"><a href="classavro_1_1NodeImpl.html">avro::NodeImpl</a></div><div class="ttdoc">Implementation details for Node.</div><div class="ttdef"><b>Definition:</b> NodeImpl.hh:46</div></div>
+<div class="ttc" id="aclassavro_1_1NodeImpl_html_aaf1c70fc8f8be7b5b92cbc68f1d0f7fd"><div class="ttname"><a href="classavro_1_1NodeImpl.html#aaf1c70fc8f8be7b5b92cbc68f1d0f7fd">avro::NodeImpl::leafAttributes_</a></div><div class="ttdeci">LeavesConcept leafAttributes_</div><div class="ttdoc">Doc used to compare schemas.</div><div class="ttdef"><b>Definition:</b> NodeImpl.hh:196</div></div>
+<div class="ttc" id="aclassavro_1_1NodeMap_html"><div class="ttname"><a href="classavro_1_1NodeMap.html">avro::NodeMap</a></div><div class="ttdef"><b>Definition:</b> NodeImpl.hh:364</div></div>
+<div class="ttc" id="aclassavro_1_1NodePrimitive_html"><div class="ttname"><a href="classavro_1_1NodePrimitive.html">avro::NodePrimitive</a></div><div class="ttdef"><b>Definition:</b> NodeImpl.hh:227</div></div>
+<div class="ttc" id="aclassavro_1_1NodeRecord_html"><div class="ttname"><a href="classavro_1_1NodeRecord.html">avro::NodeRecord</a></div><div class="ttdef"><b>Definition:</b> NodeImpl.hh:281</div></div>
+<div class="ttc" id="aclassavro_1_1NodeSymbolic_html"><div class="ttname"><a href="classavro_1_1NodeSymbolic.html">avro::NodeSymbolic</a></div><div class="ttdef"><b>Definition:</b> NodeImpl.hh:242</div></div>
+<div class="ttc" id="aclassavro_1_1NodeUnion_html"><div class="ttname"><a href="classavro_1_1NodeUnion.html">avro::NodeUnion</a></div><div class="ttdef"><b>Definition:</b> NodeImpl.hh:388</div></div>
+<div class="ttc" id="aclassavro_1_1Node_html"><div class="ttname"><a href="classavro_1_1Node.html">avro::Node</a></div><div class="ttdoc">Node is the building block for parse trees.</div><div class="ttdef"><b>Definition:</b> Node.hh:90</div></div>
+<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">avro::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">The "type" for the schema.</div><div class="ttdef"><b>Definition:</b> Types.hh:31</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a44369402b245cfed83f5ae543a84de2c"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a44369402b245cfed83f5ae543a84de2c">avro::AVRO_MAP</a></div><div class="ttdeci">@ AVRO_MAP</div><div class="ttdef"><b>Definition:</b> Types.hh:45</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a49eb3fcb0154b63104c8041e07ef02b8"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a49eb3fcb0154b63104c8041e07ef02b8">avro::AVRO_FLOAT</a></div><div class="ttdeci">@ AVRO_FLOAT</div><div class="ttdef"><b>Definition:</b> Types.hh:37</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a53f57f125161dc143d955e0eecafd7a3"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a53f57f125161dc143d955e0eecafd7a3">avro::AVRO_INT</a></div><div class="ttdeci">@ AVRO_INT</div><div class="ttdef"><b>Definition:</b> Types.hh:35</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a56769d2bfc0a8c97c14a5d249fa9ade3"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a56769d2bfc0a8c97c14a5d249fa9ade3">avro::AVRO_RECORD</a></div><div class="ttdeci">@ AVRO_RECORD</div><div class="ttdef"><b>Definition:</b> Types.hh:42</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a653cfbb5f5aca522271b435e7215087f"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a653cfbb5f5aca522271b435e7215087f">avro::AVRO_STRING</a></div><div class="ttdeci">@ AVRO_STRING</div><div class="ttdef"><b>Definition:</b> Types.hh:33</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a692a9ce3245cea9dcbc10ee73b8c6340"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a692a9ce3245cea9dcbc10ee73b8c6340">avro::AVRO_LONG</a></div><div class="ttdeci">@ AVRO_LONG</div><div class="ttdef"><b>Definition:</b> Types.hh:36</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a6d280a38797d72263c8b1c83f981b800"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a6d280a38797d72263c8b1c83f981b800">avro::AVRO_DOUBLE</a></div><div class="ttdeci">@ AVRO_DOUBLE</div><div class="ttdef"><b>Definition:</b> Types.hh:38</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a83c5aa9e51fda5279e0e5cee0eba02d9">avro::AVRO_UNION</a></div><div class="ttdeci">@ AVRO_UNION</div><div class="ttdef"><b>Definition:</b> Types.hh:46</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a8fbd33da2d41bf10e877dabac5af5dd2"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a8fbd33da2d41bf10e877dabac5af5dd2">avro::AVRO_BOOL</a></div><div class="ttdeci">@ AVRO_BOOL</div><div class="ttdef"><b>Definition:</b> Types.hh:39</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7a9154a0e620b5b68d6342967cd5c35597"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7a9154a0e620b5b68d6342967cd5c35597">avro::AVRO_ENUM</a></div><div class="ttdeci">@ AVRO_ENUM</div><div class="ttdef"><b>Definition:</b> Types.hh:43</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7aa5ff10208f8bf3952647c48c1f67ca09"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7aa5ff10208f8bf3952647c48c1f67ca09">avro::AVRO_BYTES</a></div><div class="ttdeci">@ AVRO_BYTES</div><div class="ttdef"><b>Definition:</b> Types.hh:34</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7acfdf8d57cc8f759934fe19a3a31ee129"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7acfdf8d57cc8f759934fe19a3a31ee129">avro::AVRO_SYMBOLIC</a></div><div class="ttdeci">@ AVRO_SYMBOLIC</div><div class="ttdef"><b>Definition:</b> Types.hh:53</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7ad79083497fa17d6fe8d83416c06601eb"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ad79083497fa17d6fe8d83416c06601eb">avro::AVRO_ARRAY</a></div><div class="ttdeci">@ AVRO_ARRAY</div><div class="ttdef"><b>Definition:</b> Types.hh:44</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7ae6058ac1a8cd7ab916450d8616c40cff"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7ae6058ac1a8cd7ab916450d8616c40cff">avro::AVRO_NULL</a></div><div class="ttdeci">@ AVRO_NULL</div><div class="ttdef"><b>Definition:</b> Types.hh:40</div></div>
+<div class="ttc" id="anamespaceavro_html_a29e528c3fe1cb5660067a02721fae0b7aff4ee863b4a5df4f182a2a86402417e7"><div class="ttname"><a href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7aff4ee863b4a5df4f182a2a86402417e7">avro::AVRO_FIXED</a></div><div class="ttdeci">@ AVRO_FIXED</div><div class="ttdef"><b>Definition:</b> Types.hh:47</div></div>
+<div class="ttc" id="anamespaceavro_html_a6b8f675115ecd69b17ad03b2ce22c3b8"><div class="ttname"><a href="namespaceavro.html#a6b8f675115ecd69b17ad03b2ce22c3b8">avro::isCompound</a></div><div class="ttdeci">constexpr bool isCompound(Type t) noexcept</div><div class="ttdoc">Returns true if and only if the given type is a non primitive valid type.</div><div class="ttdef"><b>Definition:</b> Types.hh:71</div></div>
+<div class="ttc" id="anamespaceavro_html_ad17da92a723dce9b89e7c845749615b3"><div class="ttname"><a href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">avro::SchemaResolution</a></div><div class="ttdeci">SchemaResolution</div><div class="ttdef"><b>Definition:</b> SchemaResolution.hh:26</div></div>
+<div class="ttc" id="anamespaceavro_html_ad17da92a723dce9b89e7c845749615b3a86f5b5067a89554ec0750cc077049175"><div class="ttname"><a href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3a86f5b5067a89554ec0750cc077049175">avro::RESOLVE_NO_MATCH</a></div><div class="ttdeci">@ RESOLVE_NO_MATCH</div><div class="ttdoc">The schemas definitely do not match.</div><div class="ttdef"><b>Definition:</b> SchemaResolution.hh:30</div></div>
+<div class="ttc" id="anamespaceavro_html_ad17da92a723dce9b89e7c845749615b3ad0049d58769053c630bdb7318249a94d"><div class="ttname"><a href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3ad0049d58769053c630bdb7318249a94d">avro::RESOLVE_MATCH</a></div><div class="ttdeci">@ RESOLVE_MATCH</div><div class="ttdoc">The schemas match at a cursory level.</div><div class="ttdef"><b>Definition:</b> SchemaResolution.hh:37</div></div>
+<div class="ttc" id="astructavro_1_1concepts_1_1MultiAttribute_html"><div class="ttname"><a href="structavro_1_1concepts_1_1MultiAttribute.html">avro::concepts::MultiAttribute</a></div><div class="ttdef"><b>Definition:</b> NodeConcepts.hh:121</div></div>
+<div class="ttc" id="astructavro_1_1concepts_1_1NameIndexConcept_html"><div class="ttname"><a href="structavro_1_1concepts_1_1NameIndexConcept.html">avro::concepts::NameIndexConcept< LeafNamesConcept ></a></div></div>
+<div class="ttc" id="astructavro_1_1concepts_1_1NoAttribute_html"><div class="ttname"><a href="structavro_1_1concepts_1_1NoAttribute.html">avro::concepts::NoAttribute</a></div><div class="ttdef"><b>Definition:</b> NodeConcepts.hh:50</div></div>
+<div class="ttc" id="astructavro_1_1concepts_1_1SingleAttribute_html"><div class="ttname"><a href="structavro_1_1concepts_1_1SingleAttribute.html">avro::concepts::SingleAttribute< std::string ></a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/content/en/docs/next/external/c++-api/Node_8hh_source.html b/doc/content/en/docs/next/external/c++-api/Node_8hh_source.html
new file mode 100644
index 0000000..e3e5173
--- /dev/null
+++ b/doc/content/en/docs/next/external/c++-api/Node_8hh_source.html
@@ -0,0 +1,276 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Avro C++: api/Node.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Avro C++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Node.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * "License"); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * limitations under the License.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_Node_hh__</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_Node_hh__</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Config.hh"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <boost/noncopyable.hpp></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <cassert></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <memory></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <utility></span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Exception.hh"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "LogicalType.hh"</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SchemaResolution.hh"</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Types.hh"</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  </div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>Node;</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>GenericDatum;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">using</span> NodePtr = std::shared_ptr<Node>;</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  </div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classavro_1_1Name.html"> 41</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1Name.html">Name</a> {</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::string ns_;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::string simpleName_;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classavro_1_1Name.html">Name</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1Name.html">Name</a>(<span class="keyword">const</span> std::string &fullname);</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classavro_1_1Name.html">Name</a>(std::string simpleName, std::string ns) : ns_(std::move(ns)), simpleName_(std::move(simpleName)) { check(); }</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::string fullname() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> std::string &ns()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ns_; }</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">const</span> std::string &simpleName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> simpleName_; }</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> ns(std::string n) { ns_ = std::move(n); }</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">void</span> simpleName(std::string n) { simpleName_ = std::move(n); }</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">void</span> fullname(<span class="keyword">const</span> std::string &n);</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">bool</span> operator<(<span class="keyword">const</span> <a class="code" href="classavro_1_1Name.html">Name</a> &n) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span> check() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="classavro_1_1Name.html">Name</a> &n) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <a class="code" href="classavro_1_1Name.html">Name</a> &n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !((*this) == n); }</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">void</span> clear() {</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ns_.clear();</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  simpleName_.clear();</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">explicit</span> <span class="keyword">operator</span> std::string()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> fullname();</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> };</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">inline</span> std::ostream &operator<<(std::ostream &os, <span class="keyword">const</span> <a class="code" href="classavro_1_1Name.html">Name</a> &n) {</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> os << n.fullname();</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> }</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classavro_1_1Node.html"> 90</a></span> <span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1Node.html">Node</a> : <span class="keyword">private</span> boost::noncopyable {</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">explicit</span> <a class="code" href="classavro_1_1Node.html">Node</a>(<a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type) : type_(type),</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  logicalType_(LogicalType::NONE),</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  locked_(<span class="keyword">false</span>) {}</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> ~<a class="code" href="classavro_1_1Node.html">Node</a>();</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  </div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="namespaceavro.html#a29e528c3fe1cb5660067a02721fae0b7">Type</a> type()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> type_;</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classavro_1_1LogicalType.html">LogicalType</a> logicalType()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> logicalType_;</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">void</span> setLogicalType(<a class="code" href="classavro_1_1LogicalType.html">LogicalType</a> logicalType);</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">void</span> lock() {</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  locked_ = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">bool</span> locked()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> locked_;</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  </div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasName() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> setName(<span class="keyword">const</span> <a class="code" href="classavro_1_1Name.html">Name</a> &name) {</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  checkLock();</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  checkName(name);</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  doSetName(name);</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classavro_1_1Name.html">Name</a> &name() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  </div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string &getDoc() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">void</span> setDoc(<span class="keyword">const</span> std::string &doc) {</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  checkLock();</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  doSetDoc(doc);</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  </div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordtype">void</span> addLeaf(<span class="keyword">const</span> NodePtr &newLeaf) {</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  checkLock();</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  doAddLeaf(newLeaf);</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> leaves() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> NodePtr &leafAt(<span class="keywordtype">size_t</span> index) <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &defaultValueAt(<span class="keywordtype">size_t</span> index) {</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(boost::format(<span class="stringliteral">"No default value at: %1%"</span>) % index);</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordtype">void</span> addName(<span class="keyword">const</span> std::string &name) {</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  checkLock();</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  checkName(<a class="code" href="classavro_1_1Name.html">Name</a>(name));</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  doAddName(name);</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> names() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string &nameAt(<span class="keywordtype">size_t</span> index) <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> nameIndex(<span class="keyword">const</span> std::string &name, <span class="keywordtype">size_t</span> &index) <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  </div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordtype">void</span> setFixedSize(<span class="keywordtype">size_t</span> size) {</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  checkLock();</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  doSetFixedSize(size);</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> fixedSize() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  </div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isValid() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">virtual</span> <a class="code" href="namespaceavro.html#ad17da92a723dce9b89e7c845749615b3">SchemaResolution</a> resolve(<span class="keyword">const</span> <a class="code" href="classavro_1_1Node.html">Node</a> &reader) <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  </div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> printJson(std::ostream &os, <span class="keywordtype">size_t</span> depth) <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  </div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> printBasicInfo(std::ostream &os) <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  </div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> setLeafToSymbolic(<span class="keywordtype">size_t</span> index, <span class="keyword">const</span> NodePtr &node) = 0;</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  </div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// Serialize the default value GenericDatum g for the node contained</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// in a record node.</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> printDefaultToJson(<span class="keyword">const</span> <a class="code" href="classavro_1_1GenericDatum.html">GenericDatum</a> &g, std::ostream &os,</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordtype">size_t</span> depth) <span class="keyword">const</span> = 0;</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  </div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordtype">void</span> checkLock()<span class="keyword"> const </span>{</div>
... 169200 lines suppressed ...