1*89cb50c9SDimitry Andric //===- DebugSymbolsSubsection.cpp -------------------------------*- C++ -*-===//
2*89cb50c9SDimitry Andric //
3*89cb50c9SDimitry Andric //                     The LLVM Compiler Infrastructure
4*89cb50c9SDimitry Andric //
5*89cb50c9SDimitry Andric // This file is distributed under the University of Illinois Open Source
6*89cb50c9SDimitry Andric // License. See LICENSE.TXT for details.
7*89cb50c9SDimitry Andric //
8*89cb50c9SDimitry Andric //===----------------------------------------------------------------------===//
9*89cb50c9SDimitry Andric 
10*89cb50c9SDimitry Andric #include "llvm/DebugInfo/CodeView/DebugSymbolsSubsection.h"
11*89cb50c9SDimitry Andric 
12*89cb50c9SDimitry Andric using namespace llvm;
13*89cb50c9SDimitry Andric using namespace llvm::codeview;
14*89cb50c9SDimitry Andric 
initialize(BinaryStreamReader Reader)15*89cb50c9SDimitry Andric Error DebugSymbolsSubsectionRef::initialize(BinaryStreamReader Reader) {
16*89cb50c9SDimitry Andric   return Reader.readArray(Records, Reader.getLength());
17*89cb50c9SDimitry Andric }
18*89cb50c9SDimitry Andric 
calculateSerializedSize() const19*89cb50c9SDimitry Andric uint32_t DebugSymbolsSubsection::calculateSerializedSize() const {
20*89cb50c9SDimitry Andric   return Length;
21*89cb50c9SDimitry Andric }
22*89cb50c9SDimitry Andric 
commit(BinaryStreamWriter & Writer) const23*89cb50c9SDimitry Andric Error DebugSymbolsSubsection::commit(BinaryStreamWriter &Writer) const {
24*89cb50c9SDimitry Andric   for (const auto &Record : Records) {
25*89cb50c9SDimitry Andric     if (auto EC = Writer.writeBytes(Record.RecordData))
26*89cb50c9SDimitry Andric       return EC;
27*89cb50c9SDimitry Andric   }
28*89cb50c9SDimitry Andric   return Error::success();
29*89cb50c9SDimitry Andric }
30*89cb50c9SDimitry Andric 
addSymbol(CVSymbol Symbol)31*89cb50c9SDimitry Andric void DebugSymbolsSubsection::addSymbol(CVSymbol Symbol) {
32*89cb50c9SDimitry Andric   Records.push_back(Symbol);
33*89cb50c9SDimitry Andric   Length += Symbol.length();
34*89cb50c9SDimitry Andric }