//===- ModuleSubstream.cpp --------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "llvm/DebugInfo/CodeView/ModuleSubstream.h" #include "llvm/DebugInfo/CodeView/StreamReader.h" using namespace llvm; using namespace llvm::codeview; ModuleSubstream::ModuleSubstream() : Kind(ModuleSubstreamKind::None) {} ModuleSubstream::ModuleSubstream(ModuleSubstreamKind Kind, StreamRef Data) : Kind(Kind), Data(Data) {} Error ModuleSubstream::initialize(StreamRef Stream, ModuleSubstream &Info) { const ModuleSubsectionHeader *Header; StreamReader Reader(Stream); if (auto EC = Reader.readObject(Header)) return EC; ModuleSubstreamKind Kind = static_cast<ModuleSubstreamKind>(uint32_t(Header->Kind)); if (auto EC = Reader.readStreamRef(Info.Data, Header->Length)) return EC; Info.Kind = Kind; return Error::success(); } uint32_t ModuleSubstream::getRecordLength() const { return sizeof(ModuleSubsectionHeader) + Data.getLength(); } ModuleSubstreamKind ModuleSubstream::getSubstreamKind() const { return Kind; } StreamRef ModuleSubstream::getRecordData() const { return Data; }