#ifndef FURC_AST_PROGRAM_HPP #define FURC_AST_PROGRAM_HPP #include "furc/ast/declaration.hpp" #include "furc/ast/node.hpp" #include namespace furc { namespace ast { class program_node : public node { public: program_node() = default; node_t category() const override { return node_t::Program; } public: void push(node_handle&& declaration) { m_declarations.push_back(std::move(declaration)); } const std::vector>& declarations() const { return m_declarations; } public: std::ostream& print(std::ostream& os) const override; protected: bool equal(const node& rhs) const override; private: std::vector> m_declarations; }; } // namespace ast } // namespace furc #endif // FURC_AST_PROGRAM_HPP