#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