1d88c1a5aSDimitry Andric //===- SymbolRecordMapping.h ------------------------------------*- C++ -*-===// 2d88c1a5aSDimitry Andric // 3d88c1a5aSDimitry Andric // The LLVM Compiler Infrastructure 4d88c1a5aSDimitry Andric // 5d88c1a5aSDimitry Andric // This file is distributed under the University of Illinois Open Source 6d88c1a5aSDimitry Andric // License. See LICENSE.TXT for details. 7d88c1a5aSDimitry Andric // 8d88c1a5aSDimitry Andric //===----------------------------------------------------------------------===// 9d88c1a5aSDimitry Andric 10d88c1a5aSDimitry Andric #ifndef LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORDMAPPING_H 11d88c1a5aSDimitry Andric #define LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORDMAPPING_H 12d88c1a5aSDimitry Andric 13d88c1a5aSDimitry Andric #include "llvm/DebugInfo/CodeView/CodeViewRecordIO.h" 14d88c1a5aSDimitry Andric #include "llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h" 15d88c1a5aSDimitry Andric 16d88c1a5aSDimitry Andric namespace llvm { 177a7e6055SDimitry Andric class BinaryStreamReader; 187a7e6055SDimitry Andric class BinaryStreamWriter; 19d88c1a5aSDimitry Andric 20d88c1a5aSDimitry Andric namespace codeview { 21d88c1a5aSDimitry Andric class SymbolRecordMapping : public SymbolVisitorCallbacks { 22d88c1a5aSDimitry Andric public: SymbolRecordMapping(BinaryStreamReader & Reader,CodeViewContainer Container)23*6d97bb29SDimitry Andric explicit SymbolRecordMapping(BinaryStreamReader &Reader, 24*6d97bb29SDimitry Andric CodeViewContainer Container) 25*6d97bb29SDimitry Andric : IO(Reader), Container(Container) {} SymbolRecordMapping(BinaryStreamWriter & Writer,CodeViewContainer Container)26*6d97bb29SDimitry Andric explicit SymbolRecordMapping(BinaryStreamWriter &Writer, 27*6d97bb29SDimitry Andric CodeViewContainer Container) 28*6d97bb29SDimitry Andric : IO(Writer), Container(Container) {} 29d88c1a5aSDimitry Andric 30d88c1a5aSDimitry Andric Error visitSymbolBegin(CVSymbol &Record) override; 31d88c1a5aSDimitry Andric Error visitSymbolEnd(CVSymbol &Record) override; 32d88c1a5aSDimitry Andric 33d88c1a5aSDimitry Andric #define SYMBOL_RECORD(EnumName, EnumVal, Name) \ 34d88c1a5aSDimitry Andric Error visitKnownRecord(CVSymbol &CVR, Name &Record) override; 35d88c1a5aSDimitry Andric #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName) 36f9448bf3SDimitry Andric #include "llvm/DebugInfo/CodeView/CodeViewSymbols.def" 37d88c1a5aSDimitry Andric 38d88c1a5aSDimitry Andric private: 39d88c1a5aSDimitry Andric Optional<SymbolKind> Kind; 40d88c1a5aSDimitry Andric 41d88c1a5aSDimitry Andric CodeViewRecordIO IO; 42*6d97bb29SDimitry Andric CodeViewContainer Container; 43d88c1a5aSDimitry Andric }; 44d88c1a5aSDimitry Andric } 45d88c1a5aSDimitry Andric } 46d88c1a5aSDimitry Andric 47d88c1a5aSDimitry Andric #endif 48