From fc4547b412e28164af1bf8981234c6af959ccc0b Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Tue, 13 Jun 2023 10:07:16 +0200 Subject: WIP --- sax/src/sax_processor_builder.cc | 62 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 sax/src/sax_processor_builder.cc (limited to 'sax/src/sax_processor_builder.cc') diff --git a/sax/src/sax_processor_builder.cc b/sax/src/sax_processor_builder.cc new file mode 100644 index 0000000..8817099 --- /dev/null +++ b/sax/src/sax_processor_builder.cc @@ -0,0 +1,62 @@ +#include "sax_processor_builder.hh" + +#include "processor.hh" +#include "sax_processor.hh" + +#include +#include + +namespace modxml { +namespace sax { + +namespace { + +class ProcessorBuilderImpl : public ProcessorBuilder { + public: + ProcessorBuilder* force_encoding(std::string const& str) override { + force_encoding_ = str; + return this; + } + + ProcessorBuilder* custom_decoder_factory( + std::shared_ptr custom_decoder_factory) override { + decoder_factory_ = std::move(custom_decoder_factory); + return this; + } + + ProcessorBuilder* set_default_buffer_size(std::size_t size) override { + default_buffer_size_ = size; + return this; + } + + ProcessorBuilder* set_max_buffer_size(std::size_t size) override { + max_buffer_size_ = size; + return this; + } + + std::unique_ptr build( + std::shared_ptr delegate) const override { + return create_processor(std::move(delegate), + decoder_factory_, + force_encoding_, + default_buffer_size_, + max_buffer_size_); + } + + ProcessorBuilderImpl() = default; + + private: + std::shared_ptr decoder_factory_; + std::optional force_encoding_; + std::optional default_buffer_size_; + std::optional max_buffer_size_; +}; + +} // namespace + +std::unique_ptr ProcessorBuilder::create() { + return std::make_unique(); +} + +} // namespace sax +} // namespace modxml -- cgit v1.2.3-70-g09d2