blob: 0d7a286a11a6e32d8ffaf844b2134fe33df8a028 [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001//===- IPDBDataStream.h - base interface for child enumerator ---*- 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
10#ifndef LLVM_DEBUGINFO_PDB_IPDBDATASTREAM_H
11#define LLVM_DEBUGINFO_PDB_IPDBDATASTREAM_H
12
13#include "llvm/ADT/Optional.h"
14#include "llvm/ADT/SmallVector.h"
15#include <cstdint>
16#include <string>
17
18namespace llvm {
19namespace pdb {
20
21/// IPDBDataStream defines an interface used to represent a stream consisting
22/// of a name and a series of records whose formats depend on the particular
23/// stream type.
24class IPDBDataStream {
25public:
26 using RecordType = SmallVector<uint8_t, 32>;
27
28 virtual ~IPDBDataStream();
29
30 virtual uint32_t getRecordCount() const = 0;
31 virtual std::string getName() const = 0;
32 virtual Optional<RecordType> getItemAtIndex(uint32_t Index) const = 0;
33 virtual bool getNext(RecordType &Record) = 0;
34 virtual void reset() = 0;
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010035};
36
37} // end namespace pdb
38} // end namespace llvm
39
40#endif // LLVM_DEBUGINFO_PDB_IPDBDATASTREAM_H