#ifndef DOCUMENT_HH #define DOCUMENT_HH #include "tag.hh" #include "transport.hh" #include #include class Document { public: virtual ~Document() = default; static std::unique_ptr create(std::string title); virtual void add_style(std::string rel_path) = 0; virtual void add_script(std::string src_path) = 0; virtual void add_script(std::unique_ptr script) = 0; virtual Tag* body() = 0; virtual std::unique_ptr build(Transport* transport) = 0; protected: Document() = default; Document(Document const&) = delete; Document& operator=(Document const&) = delete; }; #endif // DOCUMENT_HH