Lines Matching refs:OB
23 OB << Desc; \
27 static void outputSpaceIfNecessary(OutputBuffer &OB) { in outputSpaceIfNecessary() argument
28 if (OB.empty()) in outputSpaceIfNecessary()
31 char C = OB.back(); in outputSpaceIfNecessary()
33 OB << " "; in outputSpaceIfNecessary()
36 static void outputSingleQualifier(OutputBuffer &OB, Qualifiers Q) { in outputSingleQualifier() argument
39 OB << "const"; in outputSingleQualifier()
42 OB << "volatile"; in outputSingleQualifier()
45 OB << "__restrict"; in outputSingleQualifier()
52 static bool outputQualifierIfPresent(OutputBuffer &OB, Qualifiers Q, in outputQualifierIfPresent() argument
58 OB << " "; in outputQualifierIfPresent()
60 outputSingleQualifier(OB, Mask); in outputQualifierIfPresent()
64 static void outputQualifiers(OutputBuffer &OB, Qualifiers Q, bool SpaceBefore, in outputQualifiers() argument
69 size_t Pos1 = OB.getCurrentPosition(); in outputQualifiers()
70 SpaceBefore = outputQualifierIfPresent(OB, Q, Q_Const, SpaceBefore); in outputQualifiers()
71 SpaceBefore = outputQualifierIfPresent(OB, Q, Q_Volatile, SpaceBefore); in outputQualifiers()
72 SpaceBefore = outputQualifierIfPresent(OB, Q, Q_Restrict, SpaceBefore); in outputQualifiers()
73 size_t Pos2 = OB.getCurrentPosition(); in outputQualifiers()
75 OB << " "; in outputQualifiers()
78 static void outputCallingConvention(OutputBuffer &OB, CallingConv CC) { in outputCallingConvention() argument
79 outputSpaceIfNecessary(OB); in outputCallingConvention()
83 OB << "__cdecl"; in outputCallingConvention()
86 OB << "__fastcall"; in outputCallingConvention()
89 OB << "__pascal"; in outputCallingConvention()
92 OB << "__regcall"; in outputCallingConvention()
95 OB << "__stdcall"; in outputCallingConvention()
98 OB << "__thiscall"; in outputCallingConvention()
101 OB << "__eabi"; in outputCallingConvention()
104 OB << "__vectorcall"; in outputCallingConvention()
107 OB << "__clrcall"; in outputCallingConvention()
110 OB << "__attribute__((__swiftcall__)) "; in outputCallingConvention()
113 OB << "__attribute__((__swiftasynccall__)) "; in outputCallingConvention()
121 OutputBuffer OB; in toString() local
122 initializeOutputBuffer(nullptr, nullptr, OB, 1024); in toString()
123 this->output(OB, Flags); in toString()
124 StringView SV = OB; in toString()
126 std::free(OB.getBuffer()); in toString()
130 void PrimitiveTypeNode::outputPre(OutputBuffer &OB, OutputFlags Flags) const { in outputPre() argument
154 outputQualifiers(OB, Quals, true, false); in outputPre()
157 void NodeArrayNode::output(OutputBuffer &OB, OutputFlags Flags) const { in output() argument
158 output(OB, Flags, ", "); in output()
161 void NodeArrayNode::output(OutputBuffer &OB, OutputFlags Flags, in output() argument
166 Nodes[0]->output(OB, Flags); in output()
168 OB << Separator; in output()
169 Nodes[I]->output(OB, Flags); in output()
173 void EncodedStringLiteralNode::output(OutputBuffer &OB, in output() argument
177 OB << "L\""; in output()
180 OB << "\""; in output()
183 OB << "u\""; in output()
186 OB << "U\""; in output()
189 OB << DecodedString << "\""; in output()
191 OB << "..."; in output()
194 void IntegerLiteralNode::output(OutputBuffer &OB, OutputFlags Flags) const { in output() argument
196 OB << '-'; in output()
197 OB << Value; in output()
200 void TemplateParameterReferenceNode::output(OutputBuffer &OB, in output() argument
203 OB << "{"; in output()
205 OB << "&"; in output()
208 Symbol->output(OB, Flags); in output()
210 OB << ", "; in output()
214 OB << ThunkOffsets[0]; in output()
216 OB << ", " << ThunkOffsets[I]; in output()
219 OB << "}"; in output()
222 void IdentifierNode::outputTemplateParameters(OutputBuffer &OB, in outputTemplateParameters() argument
226 OB << "<"; in outputTemplateParameters()
227 TemplateParams->output(OB, Flags); in outputTemplateParameters()
228 OB << ">"; in outputTemplateParameters()
231 void DynamicStructorIdentifierNode::output(OutputBuffer &OB, in output() argument
234 OB << "`dynamic atexit destructor for "; in output()
236 OB << "`dynamic initializer for "; in output()
239 OB << "`"; in output()
240 Variable->output(OB, Flags); in output()
241 OB << "''"; in output()
243 OB << "'"; in output()
244 Name->output(OB, Flags); in output()
245 OB << "''"; in output()
249 void NamedIdentifierNode::output(OutputBuffer &OB, OutputFlags Flags) const { in output() argument
250 OB << Name; in output()
251 outputTemplateParameters(OB, Flags); in output()
254 void IntrinsicFunctionIdentifierNode::output(OutputBuffer &OB, in output() argument
352 outputTemplateParameters(OB, Flags); in output()
355 void LocalStaticGuardIdentifierNode::output(OutputBuffer &OB, in output() argument
358 OB << "`local static thread guard'"; in output()
360 OB << "`local static guard'"; in output()
362 OB << "{" << ScopeIndex << "}"; in output()
365 void ConversionOperatorIdentifierNode::output(OutputBuffer &OB, in output() argument
367 OB << "operator"; in output()
368 outputTemplateParameters(OB, Flags); in output()
369 OB << " "; in output()
370 TargetType->output(OB, Flags); in output()
373 void StructorIdentifierNode::output(OutputBuffer &OB, OutputFlags Flags) const { in output() argument
375 OB << "~"; in output()
376 Class->output(OB, Flags); in output()
377 outputTemplateParameters(OB, Flags); in output()
380 void LiteralOperatorIdentifierNode::output(OutputBuffer &OB, in output() argument
382 OB << "operator \"\"" << Name; in output()
383 outputTemplateParameters(OB, Flags); in output()
386 void FunctionSignatureNode::outputPre(OutputBuffer &OB, in outputPre() argument
390 OB << "public: "; in outputPre()
392 OB << "protected: "; in outputPre()
394 OB << "private: "; in outputPre()
400 OB << "static "; in outputPre()
403 OB << "virtual "; in outputPre()
406 OB << "extern \"C\" "; in outputPre()
410 ReturnType->outputPre(OB, Flags); in outputPre()
411 OB << " "; in outputPre()
415 outputCallingConvention(OB, CallConvention); in outputPre()
418 void FunctionSignatureNode::outputPost(OutputBuffer &OB, in outputPost() argument
421 OB << "("; in outputPost()
423 Params->output(OB, Flags); in outputPost()
425 OB << "void"; in outputPost()
428 if (OB.back() != '(') in outputPost()
429 OB << ", "; in outputPost()
430 OB << "..."; in outputPost()
432 OB << ")"; in outputPost()
436 OB << " const"; in outputPost()
438 OB << " volatile"; in outputPost()
440 OB << " __restrict"; in outputPost()
442 OB << " __unaligned"; in outputPost()
445 OB << " noexcept"; in outputPost()
448 OB << " &"; in outputPost()
450 OB << " &&"; in outputPost()
453 ReturnType->outputPost(OB, Flags); in outputPost()
456 void ThunkSignatureNode::outputPre(OutputBuffer &OB, OutputFlags Flags) const { in outputPre() argument
457 OB << "[thunk]: "; in outputPre()
459 FunctionSignatureNode::outputPre(OB, Flags); in outputPre()
462 void ThunkSignatureNode::outputPost(OutputBuffer &OB, OutputFlags Flags) const { in outputPost() argument
464 OB << "`adjustor{" << ThisAdjust.StaticOffset << "}'"; in outputPost()
467 OB << "`vtordispex{" << ThisAdjust.VBPtrOffset << ", " in outputPost()
471 OB << "`vtordisp{" << ThisAdjust.VtordispOffset << ", " in outputPost()
476 FunctionSignatureNode::outputPost(OB, Flags); in outputPost()
479 void PointerTypeNode::outputPre(OutputBuffer &OB, OutputFlags Flags) const { in outputPre() argument
485 Sig->outputPre(OB, OF_NoCallingConvention); in outputPre()
487 Pointee->outputPre(OB, Flags); in outputPre()
489 outputSpaceIfNecessary(OB); in outputPre()
492 OB << "__unaligned "; in outputPre()
495 OB << "("; in outputPre()
497 OB << "("; in outputPre()
500 outputCallingConvention(OB, Sig->CallConvention); in outputPre()
501 OB << " "; in outputPre()
505 ClassParent->output(OB, Flags); in outputPre()
506 OB << "::"; in outputPre()
511 OB << "*"; in outputPre()
514 OB << "&"; in outputPre()
517 OB << "&&"; in outputPre()
522 outputQualifiers(OB, Quals, false, false); in outputPre()
525 void PointerTypeNode::outputPost(OutputBuffer &OB, OutputFlags Flags) const { in outputPost() argument
528 OB << ")"; in outputPost()
530 Pointee->outputPost(OB, Flags); in outputPost()
533 void TagTypeNode::outputPre(OutputBuffer &OB, OutputFlags Flags) const { in outputPre() argument
541 OB << " "; in outputPre()
543 QualifiedName->output(OB, Flags); in outputPre()
544 outputQualifiers(OB, Quals, true, false); in outputPre()
547 void TagTypeNode::outputPost(OutputBuffer &OB, OutputFlags Flags) const {} in outputPost() argument
549 void ArrayTypeNode::outputPre(OutputBuffer &OB, OutputFlags Flags) const { in outputPre() argument
550 ElementType->outputPre(OB, Flags); in outputPre()
551 outputQualifiers(OB, Quals, true, false); in outputPre()
554 void ArrayTypeNode::outputOneDimension(OutputBuffer &OB, OutputFlags Flags, in outputOneDimension() argument
559 ILN->output(OB, Flags); in outputOneDimension()
562 void ArrayTypeNode::outputDimensionsImpl(OutputBuffer &OB, in outputDimensionsImpl() argument
567 outputOneDimension(OB, Flags, Dimensions->Nodes[0]); in outputDimensionsImpl()
569 OB << "]["; in outputDimensionsImpl()
570 outputOneDimension(OB, Flags, Dimensions->Nodes[I]); in outputDimensionsImpl()
574 void ArrayTypeNode::outputPost(OutputBuffer &OB, OutputFlags Flags) const { in outputPost() argument
575 OB << "["; in outputPost()
576 outputDimensionsImpl(OB, Flags); in outputPost()
577 OB << "]"; in outputPost()
579 ElementType->outputPost(OB, Flags); in outputPost()
582 void SymbolNode::output(OutputBuffer &OB, OutputFlags Flags) const { in output() argument
583 Name->output(OB, Flags); in output()
586 void FunctionSymbolNode::output(OutputBuffer &OB, OutputFlags Flags) const { in output() argument
587 Signature->outputPre(OB, Flags); in output()
588 outputSpaceIfNecessary(OB); in output()
589 Name->output(OB, Flags); in output()
590 Signature->outputPost(OB, Flags); in output()
593 void VariableSymbolNode::output(OutputBuffer &OB, OutputFlags Flags) const { in output() argument
611 OB << AccessSpec << ": "; in output()
613 OB << "static "; in output()
616 Type->outputPre(OB, Flags); in output()
617 outputSpaceIfNecessary(OB); in output()
619 Name->output(OB, Flags); in output()
621 Type->outputPost(OB, Flags); in output()
624 void CustomTypeNode::outputPre(OutputBuffer &OB, OutputFlags Flags) const { in outputPre() argument
625 Identifier->output(OB, Flags); in outputPre()
627 void CustomTypeNode::outputPost(OutputBuffer &OB, OutputFlags Flags) const {} in outputPost() argument
629 void QualifiedNameNode::output(OutputBuffer &OB, OutputFlags Flags) const { in output() argument
630 Components->output(OB, Flags, "::"); in output()
633 void RttiBaseClassDescriptorNode::output(OutputBuffer &OB, in output() argument
635 OB << "`RTTI Base Class Descriptor at ("; in output()
636 OB << NVOffset << ", " << VBPtrOffset << ", " << VBTableOffset << ", " in output()
638 OB << ")'"; in output()
641 void LocalStaticGuardVariableNode::output(OutputBuffer &OB, in output() argument
643 Name->output(OB, Flags); in output()
646 void VcallThunkIdentifierNode::output(OutputBuffer &OB, in output() argument
648 OB << "`vcall'{" << OffsetInVTable << ", {flat}}"; in output()
651 void SpecialTableSymbolNode::output(OutputBuffer &OB, OutputFlags Flags) const { in output() argument
652 outputQualifiers(OB, Quals, false, true); in output()
653 Name->output(OB, Flags); in output()
655 OB << "{for `"; in output()
656 TargetName->output(OB, Flags); in output()
657 OB << "'}"; in output()