Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===- SymbolRecordMapping.h ------------------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
 
9
#ifndef LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORDMAPPING_H
10
#define LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORDMAPPING_H
11
 
12
#include "llvm/DebugInfo/CodeView/CodeViewRecordIO.h"
13
#include "llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h"
14
 
15
namespace llvm {
16
class BinaryStreamReader;
17
class BinaryStreamWriter;
18
 
19
namespace codeview {
20
class SymbolRecordMapping : public SymbolVisitorCallbacks {
21
public:
22
  explicit SymbolRecordMapping(BinaryStreamReader &Reader,
23
                               CodeViewContainer Container)
24
      : IO(Reader), Container(Container) {}
25
  explicit SymbolRecordMapping(BinaryStreamWriter &Writer,
26
                               CodeViewContainer Container)
27
      : IO(Writer), Container(Container) {}
28
 
29
  Error visitSymbolBegin(CVSymbol &Record) override;
30
  Error visitSymbolEnd(CVSymbol &Record) override;
31
 
32
#define SYMBOL_RECORD(EnumName, EnumVal, Name)                                 \
33
  Error visitKnownRecord(CVSymbol &CVR, Name &Record) override;
34
#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
35
#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
36
 
37
private:
38
  std::optional<SymbolKind> Kind;
39
 
40
  CodeViewRecordIO IO;
41
  CodeViewContainer Container;
42
};
43
}
44
}
45
 
46
#endif