1343171Sdim//===- NativeTypeFunctionSig.h - info about function signature ---*- C++-*-===// 2343171Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6343171Sdim// 7343171Sdim//===----------------------------------------------------------------------===// 8343171Sdim 9343171Sdim#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEFUNCTIONSIG_H 10343171Sdim#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEFUNCTIONSIG_H 11343171Sdim 12343171Sdim#include "llvm/ADT/Optional.h" 13343171Sdim#include "llvm/ADT/SmallVector.h" 14343171Sdim#include "llvm/DebugInfo/CodeView/CodeView.h" 15343171Sdim#include "llvm/DebugInfo/CodeView/TypeRecord.h" 16343171Sdim#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h" 17343171Sdim#include "llvm/DebugInfo/PDB/Native/NativeSession.h" 18343171Sdim 19343171Sdimnamespace llvm { 20343171Sdimnamespace pdb { 21343171Sdim 22343171Sdimclass NativeTypeUDT; 23343171Sdim 24343171Sdimclass NativeTypeFunctionSig : public NativeRawSymbol { 25343171Sdimprotected: 26343171Sdim void initialize() override; 27343171Sdim 28343171Sdimpublic: 29343171Sdim NativeTypeFunctionSig(NativeSession &Session, SymIndexId Id, 30343171Sdim codeview::TypeIndex TI, codeview::ProcedureRecord Proc); 31343171Sdim 32343171Sdim NativeTypeFunctionSig(NativeSession &Session, SymIndexId Id, 33343171Sdim codeview::TypeIndex TI, 34343171Sdim codeview::MemberFunctionRecord MemberFunc); 35343171Sdim 36343171Sdim ~NativeTypeFunctionSig() override; 37343171Sdim 38343171Sdim void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, 39343171Sdim PdbSymbolIdField RecurseIdFields) const override; 40343171Sdim 41343171Sdim std::unique_ptr<IPDBEnumSymbols> 42343171Sdim findChildren(PDB_SymType Type) const override; 43343171Sdim 44343171Sdim SymIndexId getClassParentId() const override; 45343171Sdim PDB_CallingConv getCallingConvention() const override; 46343171Sdim uint32_t getCount() const override; 47343171Sdim SymIndexId getTypeId() const override; 48343171Sdim int32_t getThisAdjust() const override; 49343171Sdim bool hasConstructor() const override; 50343171Sdim bool isConstType() const override; 51343171Sdim bool isConstructorVirtualBase() const override; 52343171Sdim bool isCxxReturnUdt() const override; 53343171Sdim bool isUnalignedType() const override; 54343171Sdim bool isVolatileType() const override; 55343171Sdim 56343171Sdimprivate: 57343171Sdim void initializeArgList(codeview::TypeIndex ArgListTI); 58343171Sdim 59343171Sdim union { 60343171Sdim codeview::MemberFunctionRecord MemberFunc; 61343171Sdim codeview::ProcedureRecord Proc; 62343171Sdim }; 63343171Sdim 64343171Sdim SymIndexId ClassParentId = 0; 65343171Sdim codeview::TypeIndex Index; 66343171Sdim codeview::ArgListRecord ArgList; 67343171Sdim bool IsMemberFunction = false; 68343171Sdim}; 69343171Sdim 70343171Sdim} // namespace pdb 71343171Sdim} // namespace llvm 72343171Sdim 73343171Sdim#endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEPOINTER_H