/3rd_party/llvm/lib/DebugInfo/DWARFDebugAbbrev.h

https://code.google.com/p/softart/ · C++ Header · 73 lines · 52 code · 13 blank · 8 comment · 0 complexity · c1bed9779877a3252c8f7b1bfe211ace MD5 · raw file

  1. //===-- DWARFDebugAbbrev.h --------------------------------------*- C++ -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. #ifndef LLVM_DEBUGINFO_DWARFDEBUGABBREV_H
  10. #define LLVM_DEBUGINFO_DWARFDEBUGABBREV_H
  11. #include "DWARFAbbreviationDeclaration.h"
  12. #include <list>
  13. #include <map>
  14. #include <vector>
  15. namespace llvm {
  16. typedef std::vector<DWARFAbbreviationDeclaration>
  17. DWARFAbbreviationDeclarationColl;
  18. typedef DWARFAbbreviationDeclarationColl::iterator
  19. DWARFAbbreviationDeclarationCollIter;
  20. typedef DWARFAbbreviationDeclarationColl::const_iterator
  21. DWARFAbbreviationDeclarationCollConstIter;
  22. class DWARFAbbreviationDeclarationSet {
  23. uint32_t Offset;
  24. uint32_t IdxOffset;
  25. std::vector<DWARFAbbreviationDeclaration> Decls;
  26. public:
  27. DWARFAbbreviationDeclarationSet()
  28. : Offset(0), IdxOffset(0) {}
  29. DWARFAbbreviationDeclarationSet(uint32_t offset, uint32_t idxOffset)
  30. : Offset(offset), IdxOffset(idxOffset) {}
  31. void clear() {
  32. IdxOffset = 0;
  33. Decls.clear();
  34. }
  35. uint32_t getOffset() const { return Offset; }
  36. void dump(raw_ostream &OS) const;
  37. bool extract(DataExtractor data, uint32_t* offset_ptr);
  38. const DWARFAbbreviationDeclaration *
  39. getAbbreviationDeclaration(uint32_t abbrCode) const;
  40. };
  41. class DWARFDebugAbbrev {
  42. public:
  43. typedef std::map<uint64_t, DWARFAbbreviationDeclarationSet>
  44. DWARFAbbreviationDeclarationCollMap;
  45. typedef DWARFAbbreviationDeclarationCollMap::iterator
  46. DWARFAbbreviationDeclarationCollMapIter;
  47. typedef DWARFAbbreviationDeclarationCollMap::const_iterator
  48. DWARFAbbreviationDeclarationCollMapConstIter;
  49. private:
  50. DWARFAbbreviationDeclarationCollMap AbbrevCollMap;
  51. mutable DWARFAbbreviationDeclarationCollMapConstIter PrevAbbrOffsetPos;
  52. public:
  53. DWARFDebugAbbrev();
  54. const DWARFAbbreviationDeclarationSet *
  55. getAbbreviationDeclarationSet(uint64_t cu_abbr_offset) const;
  56. void dump(raw_ostream &OS) const;
  57. void parse(DataExtractor data);
  58. };
  59. }
  60. #endif