ManualSectionNode.h 873 B

12345678910111213141516171819202122232425262728293031323334
  1. #pragma once
  2. #include "ManualNode.h"
  3. class ManualSectionNode : public ManualNode {
  4. public:
  5. virtual ~ManualSectionNode() override {}
  6. ManualSectionNode(String section, String name)
  7. : m_section(section)
  8. , m_full_name(String::format("%s. %s", section.characters(), name.characters()))
  9. {
  10. }
  11. virtual NonnullOwnPtrVector<ManualNode>& children() const override
  12. {
  13. reify_if_needed();
  14. return m_children;
  15. }
  16. virtual const ManualNode* parent() const override { return nullptr; }
  17. virtual String name() const override { return m_full_name; }
  18. const String& section_name() const { return m_section; }
  19. String path() const;
  20. private:
  21. void reify_if_needed() const;
  22. String m_section;
  23. String m_full_name;
  24. mutable NonnullOwnPtrVector<ManualNode> m_children;
  25. mutable bool m_reified { false };
  26. };