CompilationUnit.h 945 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. * Copyright (c) 2020, Itamar S. <itamar8910@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include "AbbreviationsMap.h"
  8. #include <AK/Noncopyable.h>
  9. #include <AK/Types.h>
  10. namespace Debug::Dwarf {
  11. class DwarfInfo;
  12. class DIE;
  13. class CompilationUnit {
  14. AK_MAKE_NONCOPYABLE(CompilationUnit);
  15. AK_MAKE_NONMOVABLE(CompilationUnit);
  16. public:
  17. CompilationUnit(const DwarfInfo& dwarf_info, u32 offset, const CompilationUnitHeader&);
  18. u32 offset() const { return m_offset; }
  19. u32 size() const { return m_header.length() + sizeof(u32); }
  20. DIE root_die() const;
  21. DIE get_die_at_offset(u32 offset) const;
  22. const DwarfInfo& dwarf_info() const { return m_dwarf_info; }
  23. const AbbreviationsMap& abbreviations_map() const { return m_abbreviations; }
  24. private:
  25. const DwarfInfo& m_dwarf_info;
  26. u32 m_offset { 0 };
  27. CompilationUnitHeader m_header;
  28. AbbreviationsMap m_abbreviations;
  29. };
  30. }