Error TypeDumpVisitor::visitKnownRecord(CVType &CVR, MemberFunctionRecord &MF) { printTypeIndex("ReturnType", MF.getReturnType()); printTypeIndex("ClassType", MF.getClassType()); printTypeIndex("ThisType", MF.getThisType()); W->printEnum("CallingConvention", uint8_t(MF.getCallConv()), makeArrayRef(CallingConventions)); W->printFlags("FunctionOptions", uint8_t(MF.getOptions()), makeArrayRef(FunctionOptionEnum)); W->printNumber("NumParameters", MF.getParameterCount()); printTypeIndex("ArgListType", MF.getArgumentList()); W->printNumber("ThisAdjustment", MF.getThisPointerAdjustment()); return Error::success(); }
TypeIndex TypeTableBuilder::writeKnownType(const MemberFunctionRecord &Record) { TypeRecordBuilder Builder(Record.getKind()); Builder.writeTypeIndex(Record.getReturnType()); Builder.writeTypeIndex(Record.getClassType()); Builder.writeTypeIndex(Record.getThisType()); Builder.writeUInt8(static_cast<uint8_t>(Record.getCallConv())); Builder.writeUInt8(static_cast<uint8_t>(Record.getOptions())); Builder.writeUInt16(Record.getParameterCount()); Builder.writeTypeIndex(Record.getArgumentList()); Builder.writeInt32(Record.getThisPointerAdjustment()); return writeRecord(Builder); }
void CVTypeDumperImpl::visitMemberFunction(TypeLeafKind Leaf, MemberFunctionRecord &MF) { printTypeIndex("ReturnType", MF.getReturnType()); printTypeIndex("ClassType", MF.getClassType()); printTypeIndex("ThisType", MF.getThisType()); W.printEnum("CallingConvention", uint8_t(MF.getCallConv()), makeArrayRef(CallingConventions)); W.printFlags("FunctionOptions", uint8_t(MF.getOptions()), makeArrayRef(FunctionOptionEnum)); W.printNumber("NumParameters", MF.getParameterCount()); printTypeIndex("ArgListType", MF.getArgumentList()); W.printNumber("ThisAdjustment", MF.getThisPointerAdjustment()); StringRef ReturnTypeName = getTypeName(MF.getReturnType()); StringRef ClassTypeName = getTypeName(MF.getClassType()); StringRef ArgListTypeName = getTypeName(MF.getArgumentList()); SmallString<256> TypeName(ReturnTypeName); TypeName.push_back(' '); TypeName.append(ClassTypeName); TypeName.append("::"); TypeName.append(ArgListTypeName); Name = CVTD.saveName(TypeName); }