Line data Source code
1 : //===- 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 :
18 : namespace llvm {
19 : namespace 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.
24 0 : class IPDBDataStream {
25 : public:
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;
35 : };
36 :
37 : } // end namespace pdb
38 : } // end namespace llvm
39 :
40 : #endif // LLVM_DEBUGINFO_PDB_IPDBDATASTREAM_H
|