CVTypeVisitor.h revision 321369
1//===- CVTypeVisitor.h ------------------------------------------*- 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_CODEVIEW_CVTYPEVISITOR_H
11#define LLVM_DEBUGINFO_CODEVIEW_CVTYPEVISITOR_H
12
13#include "llvm/DebugInfo/CodeView/CVRecord.h"
14#include "llvm/DebugInfo/CodeView/TypeRecord.h"
15#include "llvm/Support/Error.h"
16
17namespace llvm {
18namespace codeview {
19class TypeCollection;
20class TypeVisitorCallbacks;
21
22enum VisitorDataSource {
23  VDS_BytesPresent, // The record bytes are passed into the the visitation
24                    // function.  The algorithm should first deserialize them
25                    // before passing them on through the pipeline.
26  VDS_BytesExternal // The record bytes are not present, and it is the
27                    // responsibility of the visitor callback interface to
28                    // supply the bytes.
29};
30
31Error visitTypeRecord(CVType &Record, TypeIndex Index,
32                      TypeVisitorCallbacks &Callbacks,
33                      VisitorDataSource Source = VDS_BytesPresent);
34Error visitTypeRecord(CVType &Record, TypeVisitorCallbacks &Callbacks,
35                      VisitorDataSource Source = VDS_BytesPresent);
36
37Error visitMemberRecord(CVMemberRecord Record, TypeVisitorCallbacks &Callbacks,
38                        VisitorDataSource Source = VDS_BytesPresent);
39Error visitMemberRecord(TypeLeafKind Kind, ArrayRef<uint8_t> Record,
40                        TypeVisitorCallbacks &Callbacks);
41
42Error visitMemberRecordStream(ArrayRef<uint8_t> FieldList,
43                              TypeVisitorCallbacks &Callbacks);
44
45Error visitTypeStream(const CVTypeArray &Types, TypeVisitorCallbacks &Callbacks,
46                      VisitorDataSource Source = VDS_BytesPresent);
47Error visitTypeStream(CVTypeRange Types, TypeVisitorCallbacks &Callbacks);
48Error visitTypeStream(TypeCollection &Types, TypeVisitorCallbacks &Callbacks);
49
50} // end namespace codeview
51} // end namespace llvm
52
53#endif // LLVM_DEBUGINFO_CODEVIEW_CVTYPEVISITOR_H
54