Home | History | Annotate | Download | only in CodeView
      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 
     17 namespace llvm {
     18 namespace codeview {
     19 class TypeCollection;
     20 class TypeVisitorCallbacks;
     21 
     22 enum 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 
     31 Error visitTypeRecord(CVType &Record, TypeIndex Index,
     32                       TypeVisitorCallbacks &Callbacks,
     33                       VisitorDataSource Source = VDS_BytesPresent);
     34 Error visitTypeRecord(CVType &Record, TypeVisitorCallbacks &Callbacks,
     35                       VisitorDataSource Source = VDS_BytesPresent);
     36 
     37 Error visitMemberRecord(CVMemberRecord Record, TypeVisitorCallbacks &Callbacks,
     38                         VisitorDataSource Source = VDS_BytesPresent);
     39 Error visitMemberRecord(TypeLeafKind Kind, ArrayRef<uint8_t> Record,
     40                         TypeVisitorCallbacks &Callbacks);
     41 
     42 Error visitMemberRecordStream(ArrayRef<uint8_t> FieldList,
     43                               TypeVisitorCallbacks &Callbacks);
     44 
     45 Error visitTypeStream(const CVTypeArray &Types, TypeVisitorCallbacks &Callbacks,
     46                       VisitorDataSource Source = VDS_BytesPresent);
     47 Error visitTypeStream(CVTypeRange Types, TypeVisitorCallbacks &Callbacks);
     48 Error visitTypeStream(TypeCollection &Types, TypeVisitorCallbacks &Callbacks);
     49 
     50 } // end namespace codeview
     51 } // end namespace llvm
     52 
     53 #endif // LLVM_DEBUGINFO_CODEVIEW_CVTYPEVISITOR_H
     54