Lines Matching refs:OS
115 virtual void writeAccessors(raw_ostream &OS) const = 0;
116 virtual void writeAccessorDefinitions(raw_ostream &OS) const {} in writeAccessorDefinitions()
117 virtual void writeCloneArgs(raw_ostream &OS) const = 0;
118 virtual void writeTemplateInstantiationArgs(raw_ostream &OS) const = 0;
119 virtual void writeTemplateInstantiation(raw_ostream &OS) const {} in writeTemplateInstantiation()
120 virtual void writeCtorBody(raw_ostream &OS) const {} in writeCtorBody()
121 virtual void writeCtorInitializers(raw_ostream &OS) const = 0;
122 virtual void writeCtorParameters(raw_ostream &OS) const = 0;
123 virtual void writeDeclarations(raw_ostream &OS) const = 0;
124 virtual void writePCHReadArgs(raw_ostream &OS) const = 0;
125 virtual void writePCHReadDecls(raw_ostream &OS) const = 0;
126 virtual void writePCHWrite(raw_ostream &OS) const = 0;
127 virtual void writeValue(raw_ostream &OS) const = 0;
128 virtual void writeDump(raw_ostream &OS) const = 0;
129 virtual void writeDumpChildren(raw_ostream &OS) const {} in writeDumpChildren()
130 virtual void writeHasChildren(raw_ostream &OS) const { OS << "false"; } in writeHasChildren()
143 void writeAccessors(raw_ostream &OS) const { in writeAccessors()
144 OS << " " << type << " get" << getUpperName() << "() const {\n"; in writeAccessors()
145 OS << " return " << getLowerName() << ";\n"; in writeAccessors()
146 OS << " }"; in writeAccessors()
148 void writeCloneArgs(raw_ostream &OS) const { in writeCloneArgs()
149 OS << getLowerName(); in writeCloneArgs()
151 void writeTemplateInstantiationArgs(raw_ostream &OS) const { in writeTemplateInstantiationArgs()
152 OS << "A->get" << getUpperName() << "()"; in writeTemplateInstantiationArgs()
154 void writeCtorInitializers(raw_ostream &OS) const { in writeCtorInitializers()
155 OS << getLowerName() << "(" << getUpperName() << ")"; in writeCtorInitializers()
157 void writeCtorParameters(raw_ostream &OS) const { in writeCtorParameters()
158 OS << type << " " << getUpperName(); in writeCtorParameters()
160 void writeDeclarations(raw_ostream &OS) const { in writeDeclarations()
161 OS << type << " " << getLowerName() << ";"; in writeDeclarations()
163 void writePCHReadDecls(raw_ostream &OS) const { in writePCHReadDecls()
165 OS << " " << type << " " << getLowerName() << " = " << read << ";\n"; in writePCHReadDecls()
167 void writePCHReadArgs(raw_ostream &OS) const { in writePCHReadArgs()
168 OS << getLowerName(); in writePCHReadArgs()
170 void writePCHWrite(raw_ostream &OS) const { in writePCHWrite()
171 OS << " " << WritePCHRecord(type, "SA->get" + in writePCHWrite()
174 void writeValue(raw_ostream &OS) const { in writeValue()
176 OS << "\" << get" << getUpperName() << "()->getNameInfo().getAsString() << \""; in writeValue()
178 OS << "\" << get" << getUpperName() << "()->getName() << \""; in writeValue()
180 OS << "\" << get" << getUpperName() << "().getAsString() << \""; in writeValue()
182 OS << "\" << get" << getUpperName() << "().getRawEncoding() << \""; in writeValue()
184 OS << "\" << get" << getUpperName() << "() << \""; in writeValue()
187 void writeDump(raw_ostream &OS) const { in writeDump()
189 OS << " OS << \" \";\n"; in writeDump()
190 OS << " dumpBareDeclRef(SA->get" << getUpperName() << "());\n"; in writeDump()
192 OS << " OS << \" \" << SA->get" << getUpperName() in writeDump()
195 OS << " OS << \" \" << SA->get" << getUpperName() in writeDump()
198 OS << " OS << \" \";\n"; in writeDump()
199 OS << " SA->get" << getUpperName() << "().print(OS, *SM);\n"; in writeDump()
201 OS << " if (SA->get" << getUpperName() << "()) OS << \" " in writeDump()
204 OS << " OS << \" \" << SA->get" << getUpperName() << "();\n"; in writeDump()
217 void writeAccessors(raw_ostream &OS) const { in writeAccessors()
218 OS << " llvm::StringRef get" << getUpperName() << "() const {\n"; in writeAccessors()
219 OS << " return llvm::StringRef(" << getLowerName() << ", " in writeAccessors()
221 OS << " }\n"; in writeAccessors()
222 OS << " unsigned get" << getUpperName() << "Length() const {\n"; in writeAccessors()
223 OS << " return " << getLowerName() << "Length;\n"; in writeAccessors()
224 OS << " }\n"; in writeAccessors()
225 OS << " void set" << getUpperName() in writeAccessors()
227 OS << " " << getLowerName() << "Length = S.size();\n"; in writeAccessors()
228 OS << " this->" << getLowerName() << " = new (C, 1) char [" in writeAccessors()
230 OS << " std::memcpy(this->" << getLowerName() << ", S.data(), " in writeAccessors()
232 OS << " }"; in writeAccessors()
234 void writeCloneArgs(raw_ostream &OS) const { in writeCloneArgs()
235 OS << "get" << getUpperName() << "()"; in writeCloneArgs()
237 void writeTemplateInstantiationArgs(raw_ostream &OS) const { in writeTemplateInstantiationArgs()
238 OS << "A->get" << getUpperName() << "()"; in writeTemplateInstantiationArgs()
240 void writeCtorBody(raw_ostream &OS) const { in writeCtorBody()
241 OS << " std::memcpy(" << getLowerName() << ", " << getUpperName() in writeCtorBody()
244 void writeCtorInitializers(raw_ostream &OS) const { in writeCtorInitializers()
245 OS << getLowerName() << "Length(" << getUpperName() << ".size())," in writeCtorInitializers()
249 void writeCtorParameters(raw_ostream &OS) const { in writeCtorParameters()
250 OS << "llvm::StringRef " << getUpperName(); in writeCtorParameters()
252 void writeDeclarations(raw_ostream &OS) const { in writeDeclarations()
253 OS << "unsigned " << getLowerName() << "Length;\n"; in writeDeclarations()
254 OS << "char *" << getLowerName() << ";"; in writeDeclarations()
256 void writePCHReadDecls(raw_ostream &OS) const { in writePCHReadDecls()
257 OS << " std::string " << getLowerName() in writePCHReadDecls()
260 void writePCHReadArgs(raw_ostream &OS) const { in writePCHReadArgs()
261 OS << getLowerName(); in writePCHReadArgs()
263 void writePCHWrite(raw_ostream &OS) const { in writePCHWrite()
264 OS << " AddString(SA->get" << getUpperName() << "(), Record);\n"; in writePCHWrite()
266 void writeValue(raw_ostream &OS) const { in writeValue()
267 OS << "\\\"\" << get" << getUpperName() << "() << \"\\\""; in writeValue()
269 void writeDump(raw_ostream &OS) const { in writeDump()
270 OS << " OS << \" \\\"\" << SA->get" << getUpperName() in writeDump()
281 void writeAccessors(raw_ostream &OS) const { in writeAccessors()
282 OS << " bool is" << getUpperName() << "Dependent() const;\n"; in writeAccessors()
284 OS << " unsigned get" << getUpperName() << "(ASTContext &Ctx) const;\n"; in writeAccessors()
286 OS << " bool is" << getUpperName() << "Expr() const {\n"; in writeAccessors()
287 OS << " return is" << getLowerName() << "Expr;\n"; in writeAccessors()
288 OS << " }\n"; in writeAccessors()
290 OS << " Expr *get" << getUpperName() << "Expr() const {\n"; in writeAccessors()
291 OS << " assert(is" << getLowerName() << "Expr);\n"; in writeAccessors()
292 OS << " return " << getLowerName() << "Expr;\n"; in writeAccessors()
293 OS << " }\n"; in writeAccessors()
295 OS << " TypeSourceInfo *get" << getUpperName() << "Type() const {\n"; in writeAccessors()
296 OS << " assert(!is" << getLowerName() << "Expr);\n"; in writeAccessors()
297 OS << " return " << getLowerName() << "Type;\n"; in writeAccessors()
298 OS << " }"; in writeAccessors()
300 void writeAccessorDefinitions(raw_ostream &OS) const { in writeAccessorDefinitions()
301 OS << "bool " << getAttrName() << "Attr::is" << getUpperName() in writeAccessorDefinitions()
303 OS << " if (is" << getLowerName() << "Expr)\n"; in writeAccessorDefinitions()
304 OS << " return " << getLowerName() << "Expr && (" << getLowerName() in writeAccessorDefinitions()
307 OS << " else\n"; in writeAccessorDefinitions()
308 OS << " return " << getLowerName() in writeAccessorDefinitions()
310 OS << "}\n"; in writeAccessorDefinitions()
317 OS << "unsigned " << getAttrName() << "Attr::get" << getUpperName() in writeAccessorDefinitions()
319 OS << " assert(!is" << getUpperName() << "Dependent());\n"; in writeAccessorDefinitions()
320 OS << " if (is" << getLowerName() << "Expr)\n"; in writeAccessorDefinitions()
321 OS << " return (" << getLowerName() << "Expr ? " << getLowerName() in writeAccessorDefinitions()
324 OS << " else\n"; in writeAccessorDefinitions()
325 OS << " return 0; // FIXME\n"; in writeAccessorDefinitions()
326 OS << "}\n"; in writeAccessorDefinitions()
328 void writeCloneArgs(raw_ostream &OS) const { in writeCloneArgs()
329 OS << "is" << getLowerName() << "Expr, is" << getLowerName() in writeCloneArgs()
334 void writeTemplateInstantiationArgs(raw_ostream &OS) const { in writeTemplateInstantiationArgs()
338 void writeCtorBody(raw_ostream &OS) const { in writeCtorBody()
339 OS << " if (is" << getLowerName() << "Expr)\n"; in writeCtorBody()
340 OS << " " << getLowerName() << "Expr = reinterpret_cast<Expr *>(" in writeCtorBody()
342 OS << " else\n"; in writeCtorBody()
343 OS << " " << getLowerName() in writeCtorBody()
347 void writeCtorInitializers(raw_ostream &OS) const { in writeCtorInitializers()
348 OS << "is" << getLowerName() << "Expr(Is" << getUpperName() << "Expr)"; in writeCtorInitializers()
350 void writeCtorParameters(raw_ostream &OS) const { in writeCtorParameters()
351 OS << "bool Is" << getUpperName() << "Expr, void *" << getUpperName(); in writeCtorParameters()
353 void writeDeclarations(raw_ostream &OS) const { in writeDeclarations()
354 OS << "bool is" << getLowerName() << "Expr;\n"; in writeDeclarations()
355 OS << "union {\n"; in writeDeclarations()
356 OS << "Expr *" << getLowerName() << "Expr;\n"; in writeDeclarations()
357 OS << "TypeSourceInfo *" << getLowerName() << "Type;\n"; in writeDeclarations()
358 OS << "};"; in writeDeclarations()
360 void writePCHReadArgs(raw_ostream &OS) const { in writePCHReadArgs()
361 OS << "is" << getLowerName() << "Expr, " << getLowerName() << "Ptr"; in writePCHReadArgs()
363 void writePCHReadDecls(raw_ostream &OS) const { in writePCHReadDecls()
364 OS << " bool is" << getLowerName() << "Expr = Record[Idx++];\n"; in writePCHReadDecls()
365 OS << " void *" << getLowerName() << "Ptr;\n"; in writePCHReadDecls()
366 OS << " if (is" << getLowerName() << "Expr)\n"; in writePCHReadDecls()
367 OS << " " << getLowerName() << "Ptr = ReadExpr(F);\n"; in writePCHReadDecls()
368 OS << " else\n"; in writePCHReadDecls()
369 OS << " " << getLowerName() in writePCHReadDecls()
372 void writePCHWrite(raw_ostream &OS) const { in writePCHWrite()
373 OS << " Record.push_back(SA->is" << getUpperName() << "Expr());\n"; in writePCHWrite()
374 OS << " if (SA->is" << getUpperName() << "Expr())\n"; in writePCHWrite()
375 OS << " AddStmt(SA->get" << getUpperName() << "Expr());\n"; in writePCHWrite()
376 OS << " else\n"; in writePCHWrite()
377 OS << " AddTypeSourceInfo(SA->get" << getUpperName() in writePCHWrite()
380 void writeValue(raw_ostream &OS) const { in writeValue()
381 OS << "\";\n" in writeValue()
385 void writeDump(raw_ostream &OS) const { in writeDump()
387 void writeDumpChildren(raw_ostream &OS) const { in writeDumpChildren()
388 OS << " if (SA->is" << getUpperName() << "Expr()) {\n"; in writeDumpChildren()
389 OS << " lastChild();\n"; in writeDumpChildren()
390 OS << " dumpStmt(SA->get" << getUpperName() << "Expr());\n"; in writeDumpChildren()
391 OS << " } else\n"; in writeDumpChildren()
392 OS << " dumpType(SA->get" << getUpperName() in writeDumpChildren()
395 void writeHasChildren(raw_ostream &OS) const { in writeHasChildren()
396 OS << "SA->is" << getUpperName() << "Expr()"; in writeHasChildren()
410 void writeAccessors(raw_ostream &OS) const { in writeAccessors()
411 OS << " typedef " << type << "* " << getLowerName() << "_iterator;\n"; in writeAccessors()
412 OS << " " << getLowerName() << "_iterator " << getLowerName() in writeAccessors()
414 OS << " return " << getLowerName() << ";\n"; in writeAccessors()
415 OS << " }\n"; in writeAccessors()
416 OS << " " << getLowerName() << "_iterator " << getLowerName() in writeAccessors()
418 OS << " return " << getLowerName() << " + " << getLowerName() in writeAccessors()
420 OS << " }\n"; in writeAccessors()
421 OS << " unsigned " << getLowerName() << "_size() const {\n" in writeAccessors()
423 OS << " }"; in writeAccessors()
425 void writeCloneArgs(raw_ostream &OS) const { in writeCloneArgs()
426 OS << getLowerName() << ", " << getLowerName() << "Size"; in writeCloneArgs()
428 void writeTemplateInstantiationArgs(raw_ostream &OS) const { in writeTemplateInstantiationArgs()
430 OS << "A->" << getLowerName() << "_begin(), " in writeTemplateInstantiationArgs()
433 void writeCtorBody(raw_ostream &OS) const { in writeCtorBody()
435 OS << " std::memcpy(" << getLowerName() << ", " << getUpperName() in writeCtorBody()
438 void writeCtorInitializers(raw_ostream &OS) const { in writeCtorInitializers()
439 OS << getLowerName() << "Size(" << getUpperName() << "Size), " in writeCtorInitializers()
443 void writeCtorParameters(raw_ostream &OS) const { in writeCtorParameters()
444 OS << getType() << " *" << getUpperName() << ", unsigned " in writeCtorParameters()
447 void writeDeclarations(raw_ostream &OS) const { in writeDeclarations()
448 OS << " unsigned " << getLowerName() << "Size;\n"; in writeDeclarations()
449 OS << " " << getType() << " *" << getLowerName() << ";"; in writeDeclarations()
451 void writePCHReadDecls(raw_ostream &OS) const { in writePCHReadDecls()
452 OS << " unsigned " << getLowerName() << "Size = Record[Idx++];\n"; in writePCHReadDecls()
453 OS << " SmallVector<" << type << ", 4> " << getLowerName() in writePCHReadDecls()
455 OS << " " << getLowerName() << ".reserve(" << getLowerName() in writePCHReadDecls()
457 OS << " for (unsigned i = " << getLowerName() << "Size; i; --i)\n"; in writePCHReadDecls()
460 OS << " " << getLowerName() << ".push_back(" << read << ");\n"; in writePCHReadDecls()
462 void writePCHReadArgs(raw_ostream &OS) const { in writePCHReadArgs()
463 OS << getLowerName() << ".data(), " << getLowerName() << "Size"; in writePCHReadArgs()
465 void writePCHWrite(raw_ostream &OS) const{ in writePCHWrite()
466 OS << " Record.push_back(SA->" << getLowerName() << "_size());\n"; in writePCHWrite()
467 OS << " for (" << getAttrName() << "Attr::" << getLowerName() in writePCHWrite()
470 OS << " " << WritePCHRecord(type, "(*i)"); in writePCHWrite()
472 void writeValue(raw_ostream &OS) const { in writeValue()
473 OS << "\";\n"; in writeValue()
474 OS << " bool isFirst = true;\n" in writeValue()
482 OS << " OS << \""; in writeValue()
484 void writeDump(raw_ostream &OS) const { in writeDump()
485 OS << " for (" << getAttrName() << "Attr::" << getLowerName() in writeDump()
488 OS << " OS << \" \" << *I;\n"; in writeDump()
509 void writeAccessors(raw_ostream &OS) const { in writeAccessors()
510 OS << " " << type << " get" << getUpperName() << "() const {\n"; in writeAccessors()
511 OS << " return " << getLowerName() << ";\n"; in writeAccessors()
512 OS << " }"; in writeAccessors()
514 void writeCloneArgs(raw_ostream &OS) const { in writeCloneArgs()
515 OS << getLowerName(); in writeCloneArgs()
517 void writeTemplateInstantiationArgs(raw_ostream &OS) const { in writeTemplateInstantiationArgs()
518 OS << "A->get" << getUpperName() << "()"; in writeTemplateInstantiationArgs()
520 void writeCtorInitializers(raw_ostream &OS) const { in writeCtorInitializers()
521 OS << getLowerName() << "(" << getUpperName() << ")"; in writeCtorInitializers()
523 void writeCtorParameters(raw_ostream &OS) const { in writeCtorParameters()
524 OS << type << " " << getUpperName(); in writeCtorParameters()
526 void writeDeclarations(raw_ostream &OS) const { in writeDeclarations()
532 OS << "public:\n"; in writeDeclarations()
533 OS << " enum " << type << " {\n"; in writeDeclarations()
535 OS << " " << *i << ",\n"; in writeDeclarations()
536 OS << " " << *e << "\n"; in writeDeclarations()
537 OS << " };\n"; in writeDeclarations()
538 OS << "private:\n"; in writeDeclarations()
539 OS << " " << type << " " << getLowerName() << ";"; in writeDeclarations()
541 void writePCHReadDecls(raw_ostream &OS) const { in writePCHReadDecls()
542 OS << " " << getAttrName() << "Attr::" << type << " " << getLowerName() in writePCHReadDecls()
546 void writePCHReadArgs(raw_ostream &OS) const { in writePCHReadArgs()
547 OS << getLowerName(); in writePCHReadArgs()
549 void writePCHWrite(raw_ostream &OS) const { in writePCHWrite()
550 OS << "Record.push_back(SA->get" << getUpperName() << "());\n"; in writePCHWrite()
552 void writeValue(raw_ostream &OS) const { in writeValue()
553 OS << "\" << get" << getUpperName() << "() << \""; in writeValue()
555 void writeDump(raw_ostream &OS) const { in writeDump()
556 OS << " switch(SA->get" << getUpperName() << "()) {\n"; in writeDump()
559 OS << " case " << getAttrName() << "Attr::" << *I << ":\n"; in writeDump()
560 OS << " OS << \" " << *I << "\";\n"; in writeDump()
561 OS << " break;\n"; in writeDump()
563 OS << " }\n"; in writeDump()
573 void writeAccessors(raw_ostream &OS) const { in writeAccessors()
574 OS << " VersionTuple get" << getUpperName() << "() const {\n"; in writeAccessors()
575 OS << " return " << getLowerName() << ";\n"; in writeAccessors()
576 OS << " }\n"; in writeAccessors()
577 OS << " void set" << getUpperName() in writeAccessors()
579 OS << " " << getLowerName() << " = V;\n"; in writeAccessors()
580 OS << " }"; in writeAccessors()
582 void writeCloneArgs(raw_ostream &OS) const { in writeCloneArgs()
583 OS << "get" << getUpperName() << "()"; in writeCloneArgs()
585 void writeTemplateInstantiationArgs(raw_ostream &OS) const { in writeTemplateInstantiationArgs()
586 OS << "A->get" << getUpperName() << "()"; in writeTemplateInstantiationArgs()
588 void writeCtorBody(raw_ostream &OS) const { in writeCtorBody()
590 void writeCtorInitializers(raw_ostream &OS) const { in writeCtorInitializers()
591 OS << getLowerName() << "(" << getUpperName() << ")"; in writeCtorInitializers()
593 void writeCtorParameters(raw_ostream &OS) const { in writeCtorParameters()
594 OS << "VersionTuple " << getUpperName(); in writeCtorParameters()
596 void writeDeclarations(raw_ostream &OS) const { in writeDeclarations()
597 OS << "VersionTuple " << getLowerName() << ";\n"; in writeDeclarations()
599 void writePCHReadDecls(raw_ostream &OS) const { in writePCHReadDecls()
600 OS << " VersionTuple " << getLowerName() in writePCHReadDecls()
603 void writePCHReadArgs(raw_ostream &OS) const { in writePCHReadArgs()
604 OS << getLowerName(); in writePCHReadArgs()
606 void writePCHWrite(raw_ostream &OS) const { in writePCHWrite()
607 OS << " AddVersionTuple(SA->get" << getUpperName() << "(), Record);\n"; in writePCHWrite()
609 void writeValue(raw_ostream &OS) const { in writeValue()
610 OS << getLowerName() << "=\" << get" << getUpperName() << "() << \""; in writeValue()
612 void writeDump(raw_ostream &OS) const { in writeDump()
613 OS << " OS << \" \" << SA->get" << getUpperName() << "();\n"; in writeDump()
623 void writeTemplateInstantiationArgs(raw_ostream &OS) const { in writeTemplateInstantiationArgs()
624 OS << "tempInst" << getUpperName(); in writeTemplateInstantiationArgs()
627 void writeTemplateInstantiation(raw_ostream &OS) const { in writeTemplateInstantiation()
628 OS << " " << getType() << " tempInst" << getUpperName() << ";\n"; in writeTemplateInstantiation()
629 OS << " {\n"; in writeTemplateInstantiation()
630 OS << " EnterExpressionEvaluationContext " in writeTemplateInstantiation()
632 OS << " ExprResult " << "Result = S.SubstExpr(" in writeTemplateInstantiation()
634 OS << " tempInst" << getUpperName() << " = " in writeTemplateInstantiation()
636 OS << " }\n"; in writeTemplateInstantiation()
639 void writeDump(raw_ostream &OS) const { in writeDump()
642 void writeDumpChildren(raw_ostream &OS) const { in writeDumpChildren()
643 OS << " lastChild();\n"; in writeDumpChildren()
644 OS << " dumpStmt(SA->get" << getUpperName() << "());\n"; in writeDumpChildren()
646 void writeHasChildren(raw_ostream &OS) const { OS << "true"; } in writeHasChildren()
655 void writeTemplateInstantiationArgs(raw_ostream &OS) const { in writeTemplateInstantiationArgs()
656 OS << "tempInst" << getUpperName() << ", " in writeTemplateInstantiationArgs()
660 void writeTemplateInstantiation(raw_ostream &OS) const { in writeTemplateInstantiation()
661 OS << " " << getType() << " *tempInst" << getUpperName() in writeTemplateInstantiation()
664 OS << " {\n"; in writeTemplateInstantiation()
665 OS << " EnterExpressionEvaluationContext " in writeTemplateInstantiation()
667 OS << " " << getType() << " *TI = tempInst" << getUpperName() in writeTemplateInstantiation()
669 OS << " " << getType() << " *I = A->" << getLowerName() in writeTemplateInstantiation()
671 OS << " " << getType() << " *E = A->" << getLowerName() in writeTemplateInstantiation()
673 OS << " for (; I != E; ++I, ++TI) {\n"; in writeTemplateInstantiation()
674 OS << " ExprResult Result = S.SubstExpr(*I, TemplateArgs);\n"; in writeTemplateInstantiation()
675 OS << " *TI = Result.takeAs<Expr>();\n"; in writeTemplateInstantiation()
676 OS << " }\n"; in writeTemplateInstantiation()
677 OS << " }\n"; in writeTemplateInstantiation()
680 void writeDump(raw_ostream &OS) const { in writeDump()
683 void writeDumpChildren(raw_ostream &OS) const { in writeDumpChildren()
684 OS << " for (" << getAttrName() << "Attr::" << getLowerName() in writeDumpChildren()
687 OS << " if (I + 1 == E)\n"; in writeDumpChildren()
688 OS << " lastChild();\n"; in writeDumpChildren()
689 OS << " dumpStmt(*I);\n"; in writeDumpChildren()
690 OS << " }\n"; in writeDumpChildren()
693 void writeHasChildren(raw_ostream &OS) const { in writeHasChildren()
694 OS << "SA->" << getLowerName() << "_begin() != " in writeHasChildren()
744 static void writeAvailabilityValue(raw_ostream &OS) { in writeAvailabilityValue() argument
745 OS << "\" << getPlatform()->getName();\n" in writeAvailabilityValue()
754 raw_ostream &OS) { in writePrettyPrintFunction() argument
757 OS << "void " << R.getName() << "Attr::printPretty(" in writePrettyPrintFunction()
761 OS << "}\n\n"; in writePrettyPrintFunction()
765 OS << in writePrettyPrintFunction()
803 OS << in writePrettyPrintFunction()
807 if (Args.size()) OS << "("; in writePrettyPrintFunction()
809 writeAvailabilityValue(OS); in writePrettyPrintFunction()
813 if (I != Args.begin()) OS << ", "; in writePrettyPrintFunction()
814 (*I)->writeValue(OS); in writePrettyPrintFunction()
818 if (Args.size()) OS << ")"; in writePrettyPrintFunction()
819 OS << Suffix.str() + "\";\n"; in writePrettyPrintFunction()
821 OS << in writePrettyPrintFunction()
827 OS << "}\n"; in writePrettyPrintFunction()
829 OS << "}\n\n"; in writePrettyPrintFunction()
854 static void writeAttrAccessorDefinition(Record &R, raw_ostream &OS) { in writeAttrAccessorDefinition() argument
866 OS << " bool " << Name << "() const { return SpellingListIndex == "; in writeAttrAccessorDefinition()
868 OS << getSpellingListIndex(SpellingList, *Spellings[Index]); in writeAttrAccessorDefinition()
870 OS << " ||\n SpellingListIndex == "; in writeAttrAccessorDefinition()
872 OS << "; }\n"; in writeAttrAccessorDefinition()
880 void EmitClangAttrClass(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrClass() argument
881 emitSourceFileHeader("Attribute classes' definitions", OS); in EmitClangAttrClass()
883 OS << "#ifndef LLVM_CLANG_ATTR_CLASSES_INC\n"; in EmitClangAttrClass()
884 OS << "#define LLVM_CLANG_ATTR_CLASSES_INC\n\n"; in EmitClangAttrClass()
905 OS << "class " << R.getName() << "Attr : public " << SuperName << " {\n"; in EmitClangAttrClass()
920 Arg->writeDeclarations(OS); in EmitClangAttrClass()
921 OS << "\n\n"; in EmitClangAttrClass()
926 OS << "\n public:\n"; in EmitClangAttrClass()
927 OS << " " << R.getName() << "Attr(SourceRange R, ASTContext &Ctx\n"; in EmitClangAttrClass()
930 OS << " , "; in EmitClangAttrClass()
931 (*ai)->writeCtorParameters(OS); in EmitClangAttrClass()
932 OS << "\n"; in EmitClangAttrClass()
935 OS << " , "; in EmitClangAttrClass()
936 OS << "unsigned SI = 0\n"; in EmitClangAttrClass()
938 OS << " )\n"; in EmitClangAttrClass()
939 OS << " : " << SuperName << "(attr::" << R.getName() << ", R, SI)\n"; in EmitClangAttrClass()
942 OS << " , "; in EmitClangAttrClass()
943 (*ai)->writeCtorInitializers(OS); in EmitClangAttrClass()
944 OS << "\n"; in EmitClangAttrClass()
947 OS << " {\n"; in EmitClangAttrClass()
950 (*ai)->writeCtorBody(OS); in EmitClangAttrClass()
951 OS << "\n"; in EmitClangAttrClass()
953 OS << " }\n\n"; in EmitClangAttrClass()
955 OS << " virtual " << R.getName() << "Attr *clone (ASTContext &C) const;\n"; in EmitClangAttrClass()
956 OS << " virtual void printPretty(raw_ostream &OS,\n" in EmitClangAttrClass()
959 writeAttrAccessorDefinition(R, OS); in EmitClangAttrClass()
962 (*ai)->writeAccessors(OS); in EmitClangAttrClass()
963 OS << "\n\n"; in EmitClangAttrClass()
966 OS << R.getValueAsString("AdditionalMembers"); in EmitClangAttrClass()
967 OS << "\n\n"; in EmitClangAttrClass()
969 OS << " static bool classof(const Attr *A) { return A->getKind() == " in EmitClangAttrClass()
973 OS << " virtual bool isLateParsed() const { return " in EmitClangAttrClass()
976 OS << "};\n\n"; in EmitClangAttrClass()
979 OS << "#endif\n"; in EmitClangAttrClass()
983 void EmitClangAttrExprArgsList(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrExprArgsList() argument
985 "expression arguments", OS); in EmitClangAttrExprArgsList()
1018 OS << ".Case(\"" << (*I)->getValueAsString("Name") << "\", " in EmitClangAttrExprArgsList()
1025 void EmitClangAttrImpl(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrImpl() argument
1026 emitSourceFileHeader("Attribute classes' member function definitions", OS); in EmitClangAttrImpl()
1044 (*ai)->writeAccessorDefinitions(OS); in EmitClangAttrImpl()
1046 OS << R.getName() << "Attr *" << R.getName() in EmitClangAttrImpl()
1048 OS << " return new (C) " << R.getName() << "Attr(getLocation(), C"; in EmitClangAttrImpl()
1050 OS << ", "; in EmitClangAttrImpl()
1051 (*ai)->writeCloneArgs(OS); in EmitClangAttrImpl()
1053 OS << ", getSpellingListIndex());\n}\n\n"; in EmitClangAttrImpl()
1055 writePrettyPrintFunction(R, Args, OS); in EmitClangAttrImpl()
1061 static void EmitAttrList(raw_ostream &OS, StringRef Class, in EmitAttrList() argument
1071 OS << Class << "(" << (*i)->getName() << ")\n"; in EmitAttrList()
1074 OS << "LAST_" << Class << "(" << (*i)->getName() << ")\n\n"; in EmitAttrList()
1081 void EmitClangAttrList(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrList() argument
1082 emitSourceFileHeader("List of all attributes that Clang recognizes", OS); in EmitClangAttrList()
1084 OS << "#ifndef LAST_ATTR\n"; in EmitClangAttrList()
1085 OS << "#define LAST_ATTR(NAME) ATTR(NAME)\n"; in EmitClangAttrList()
1086 OS << "#endif\n\n"; in EmitClangAttrList()
1088 OS << "#ifndef INHERITABLE_ATTR\n"; in EmitClangAttrList()
1089 OS << "#define INHERITABLE_ATTR(NAME) ATTR(NAME)\n"; in EmitClangAttrList()
1090 OS << "#endif\n\n"; in EmitClangAttrList()
1092 OS << "#ifndef LAST_INHERITABLE_ATTR\n"; in EmitClangAttrList()
1093 OS << "#define LAST_INHERITABLE_ATTR(NAME) INHERITABLE_ATTR(NAME)\n"; in EmitClangAttrList()
1094 OS << "#endif\n\n"; in EmitClangAttrList()
1096 OS << "#ifndef INHERITABLE_PARAM_ATTR\n"; in EmitClangAttrList()
1097 OS << "#define INHERITABLE_PARAM_ATTR(NAME) ATTR(NAME)\n"; in EmitClangAttrList()
1098 OS << "#endif\n\n"; in EmitClangAttrList()
1100 OS << "#ifndef LAST_INHERITABLE_PARAM_ATTR\n"; in EmitClangAttrList()
1101 OS << "#define LAST_INHERITABLE_PARAM_ATTR(NAME)" in EmitClangAttrList()
1103 OS << "#endif\n\n"; in EmitClangAttrList()
1105 OS << "#ifndef MS_INHERITANCE_ATTR\n"; in EmitClangAttrList()
1106 OS << "#define MS_INHERITANCE_ATTR(NAME) INHERITABLE_ATTR(NAME)\n"; in EmitClangAttrList()
1107 OS << "#endif\n\n"; in EmitClangAttrList()
1109 OS << "#ifndef LAST_MS_INHERITANCE_ATTR\n"; in EmitClangAttrList()
1110 OS << "#define LAST_MS_INHERITANCE_ATTR(NAME)" in EmitClangAttrList()
1112 OS << "#endif\n\n"; in EmitClangAttrList()
1134 EmitAttrList(OS, "INHERITABLE_PARAM_ATTR", InhParamAttrs); in EmitClangAttrList()
1135 EmitAttrList(OS, "MS_INHERITANCE_ATTR", MSInhAttrs); in EmitClangAttrList()
1136 EmitAttrList(OS, "INHERITABLE_ATTR", InhAttrs); in EmitClangAttrList()
1137 EmitAttrList(OS, "ATTR", NonInhAttrs); in EmitClangAttrList()
1139 OS << "#undef LAST_ATTR\n"; in EmitClangAttrList()
1140 OS << "#undef INHERITABLE_ATTR\n"; in EmitClangAttrList()
1141 OS << "#undef MS_INHERITANCE_ATTR\n"; in EmitClangAttrList()
1142 OS << "#undef LAST_INHERITABLE_ATTR\n"; in EmitClangAttrList()
1143 OS << "#undef LAST_INHERITABLE_PARAM_ATTR\n"; in EmitClangAttrList()
1144 OS << "#undef LAST_MS_INHERITANCE_ATTR\n"; in EmitClangAttrList()
1145 OS << "#undef ATTR\n"; in EmitClangAttrList()
1149 void EmitClangAttrPCHRead(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrPCHRead() argument
1150 emitSourceFileHeader("Attribute deserialization code", OS); in EmitClangAttrPCHRead()
1159 OS << " switch (Kind) {\n"; in EmitClangAttrPCHRead()
1160 OS << " default:\n"; in EmitClangAttrPCHRead()
1161 OS << " assert(0 && \"Unknown attribute!\");\n"; in EmitClangAttrPCHRead()
1162 OS << " break;\n"; in EmitClangAttrPCHRead()
1168 OS << " case attr::" << R.getName() << ": {\n"; in EmitClangAttrPCHRead()
1170 OS << " bool isInherited = Record[Idx++];\n"; in EmitClangAttrPCHRead()
1176 A->writePCHReadDecls(OS); in EmitClangAttrPCHRead()
1178 OS << " New = new (Context) " << R.getName() << "Attr(Range, Context"; in EmitClangAttrPCHRead()
1180 OS << ", "; in EmitClangAttrPCHRead()
1181 (*ri)->writePCHReadArgs(OS); in EmitClangAttrPCHRead()
1183 OS << ");\n"; in EmitClangAttrPCHRead()
1185 OS << " cast<InheritableAttr>(New)->setInherited(isInherited);\n"; in EmitClangAttrPCHRead()
1186 OS << " break;\n"; in EmitClangAttrPCHRead()
1187 OS << " }\n"; in EmitClangAttrPCHRead()
1189 OS << " }\n"; in EmitClangAttrPCHRead()
1193 void EmitClangAttrPCHWrite(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrPCHWrite() argument
1194 emitSourceFileHeader("Attribute serialization code", OS); in EmitClangAttrPCHWrite()
1200 OS << " switch (A->getKind()) {\n"; in EmitClangAttrPCHWrite()
1201 OS << " default:\n"; in EmitClangAttrPCHWrite()
1202 OS << " llvm_unreachable(\"Unknown attribute kind!\");\n"; in EmitClangAttrPCHWrite()
1203 OS << " break;\n"; in EmitClangAttrPCHWrite()
1208 OS << " case attr::" << R.getName() << ": {\n"; in EmitClangAttrPCHWrite()
1211 OS << " const " << R.getName() << "Attr *SA = cast<" << R.getName() in EmitClangAttrPCHWrite()
1214 OS << " Record.push_back(SA->isInherited());\n"; in EmitClangAttrPCHWrite()
1216 createArgument(**ai, R.getName())->writePCHWrite(OS); in EmitClangAttrPCHWrite()
1217 OS << " break;\n"; in EmitClangAttrPCHWrite()
1218 OS << " }\n"; in EmitClangAttrPCHWrite()
1220 OS << " }\n"; in EmitClangAttrPCHWrite()
1224 void EmitClangAttrSpellingList(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrSpellingList() argument
1226 OS); in EmitClangAttrSpellingList()
1236 OS << ".Case(\"" << (*I)->getValueAsString("Name") << "\", true)\n"; in EmitClangAttrSpellingList()
1242 void EmitClangAttrSpellingListIndex(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrSpellingListIndex() argument
1244 "into internal identifiers", OS); in EmitClangAttrSpellingListIndex()
1246 OS << in EmitClangAttrSpellingListIndex()
1266 OS << in EmitClangAttrSpellingListIndex()
1272 OS << " case AT_" << R.getName() << " : {\n"; in EmitClangAttrSpellingListIndex()
1280 OS << " if (Name == \"" in EmitClangAttrSpellingListIndex()
1293 OS << " break;\n"; in EmitClangAttrSpellingListIndex()
1294 OS << " }\n"; in EmitClangAttrSpellingListIndex()
1298 OS << " }\n"; in EmitClangAttrSpellingListIndex()
1299 OS << " return Index;\n"; in EmitClangAttrSpellingListIndex()
1303 void EmitClangAttrLateParsedList(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrLateParsedList() argument
1305 "attributes", OS); in EmitClangAttrLateParsedList()
1324 OS << ".Case(\"" << (*I)->getValueAsString("Name") << "\", " in EmitClangAttrLateParsedList()
1332 void EmitClangAttrTemplateInstantiate(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrTemplateInstantiate() argument
1333 emitSourceFileHeader("Template instantiation code for attributes", OS); in EmitClangAttrTemplateInstantiate()
1337 OS << "namespace clang {\n" in EmitClangAttrTemplateInstantiate()
1352 OS << " case attr::" << R.getName() << ": {\n"; in EmitClangAttrTemplateInstantiate()
1356 OS << " return NULL;\n"; in EmitClangAttrTemplateInstantiate()
1357 OS << " }\n"; in EmitClangAttrTemplateInstantiate()
1361 OS << " const " << R.getName() << "Attr *A = cast<" in EmitClangAttrTemplateInstantiate()
1366 OS << " return A->clone(C);\n"; in EmitClangAttrTemplateInstantiate()
1367 OS << " }\n"; in EmitClangAttrTemplateInstantiate()
1387 (*ai)->writeTemplateInstantiation(OS); in EmitClangAttrTemplateInstantiate()
1389 OS << " return new (C) " << R.getName() << "Attr(A->getLocation(), C"; in EmitClangAttrTemplateInstantiate()
1391 OS << ", "; in EmitClangAttrTemplateInstantiate()
1392 (*ai)->writeTemplateInstantiationArgs(OS); in EmitClangAttrTemplateInstantiate()
1394 OS << ");\n }\n"; in EmitClangAttrTemplateInstantiate()
1396 OS << " } // end switch\n" in EmitClangAttrTemplateInstantiate()
1405 void EmitClangAttrParsedAttrList(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrParsedAttrList() argument
1406 emitSourceFileHeader("List of all attributes that Clang recognizes", OS); in EmitClangAttrParsedAttrList()
1408 OS << "#ifndef PARSED_ATTR\n"; in EmitClangAttrParsedAttrList()
1409 OS << "#define PARSED_ATTR(NAME) NAME\n"; in EmitClangAttrParsedAttrList()
1410 OS << "#endif\n\n"; in EmitClangAttrParsedAttrList()
1431 OS << "PARSED_ATTR(" << Spelling << ")\n"; in EmitClangAttrParsedAttrList()
1436 OS << "PARSED_ATTR(" << AttrName << ")\n"; in EmitClangAttrParsedAttrList()
1443 void EmitClangAttrParsedAttrKinds(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrParsedAttrKinds() argument
1444 emitSourceFileHeader("Attribute name matcher", OS); in EmitClangAttrParsedAttrKinds()
1487 OS << "static AttributeList::Kind getAttrKind(StringRef Name) {\n"; in EmitClangAttrParsedAttrKinds()
1488 StringMatcher("Name", Matches, OS).Emit(); in EmitClangAttrParsedAttrKinds()
1489 OS << "return AttributeList::UnknownAttribute;\n" in EmitClangAttrParsedAttrKinds()
1494 void EmitClangAttrDump(RecordKeeper &Records, raw_ostream &OS) { in EmitClangAttrDump() argument
1495 emitSourceFileHeader("Attribute dumper", OS); in EmitClangAttrDump()
1497 OS << in EmitClangAttrDump()
1508 OS << " case attr::" << R.getName() << ": {\n"; in EmitClangAttrDump()
1511 OS << " const " << R.getName() << "Attr *SA = cast<" << R.getName() in EmitClangAttrDump()
1515 createArgument(**I, R.getName())->writeDump(OS); in EmitClangAttrDump()
1518 OS << " bool OldMoreChildren = hasMoreChildren();\n"; in EmitClangAttrDump()
1519 OS << " bool MoreChildren = OldMoreChildren;\n"; in EmitClangAttrDump()
1524 OS << " MoreChildren = OldMoreChildren"; in EmitClangAttrDump()
1526 OS << " || "; in EmitClangAttrDump()
1527 createArgument(**Next, R.getName())->writeHasChildren(OS); in EmitClangAttrDump()
1529 OS << ";\n"; in EmitClangAttrDump()
1530 OS << " setMoreChildren(MoreChildren);\n"; in EmitClangAttrDump()
1532 createArgument(**I, R.getName())->writeDumpChildren(OS); in EmitClangAttrDump()
1536 OS << " setMoreChildren(OldMoreChildren);\n"; in EmitClangAttrDump()
1538 OS << in EmitClangAttrDump()
1542 OS << " }\n"; in EmitClangAttrDump()