#pragma once #include "IWritingStep.h" #include "OutputStreamProcessor.h" #include "Zone/Zone.h" #include #include class IWritingStep; class ZoneWriter { std::vector> m_steps; std::vector> m_processors; bool m_processor_chain_dirty; IWritingStream* BuildWritingChain(IWritingStream* rootStream); public: std::vector> m_blocks; ZoneWriter(); void AddXBlock(std::unique_ptr block); void AddWritingStep(std::unique_ptr step); void AddStreamProcessor(std::unique_ptr streamProcessor); void RemoveStreamProcessor(const OutputStreamProcessor* streamProcessor); bool WriteZone(std::ostream& stream); };