Lines Matching full:os

30 static raw_ostream &write_cstring(raw_ostream &OS, llvm::StringRef Str) {
31 OS << '"';
32 OS.write_escaped(Str);
33 OS << '"';
34 return OS;
91 void emit(raw_ostream &OS) const {
92 OS << ShouldParse;
93 OS << ", ";
94 OS << ShouldAlwaysEmit;
95 OS << ", ";
96 OS << KeyPath;
97 OS << ", ";
98 emitScopedNormalizedValue(OS, DefaultValue);
99 OS << ", ";
100 OS << ImpliedCheck;
101 OS << ", ";
102 emitScopedNormalizedValue(OS, ImpliedValue);
103 OS << ", ";
104 OS << Normalizer;
105 OS << ", ";
106 OS << Denormalizer;
107 OS << ", ";
108 OS << ValueMerger;
109 OS << ", ";
110 OS << ValueExtractor;
111 OS << ", ";
112 OS << TableIndex;
115 std::optional<StringRef> emitValueTable(raw_ostream &OS) const {
118 OS << "static const SimpleEnumValue " << ValueTableName << "[] = {\n";
120 OS << "{";
121 write_cstring(OS, Values[I]);
122 OS << ",";
123 OS << "static_cast<unsigned>(";
124 emitScopedNormalizedValue(OS, NormalizedValues[I]);
125 OS << ")},";
127 OS << "};\n";
132 void emitScopedNormalizedValue(raw_ostream &OS,
135 OS << NormalizedValuesScope << "::";
136 OS << NormalizedValue;
195 raw_ostream &OS, std::vector<std::pair<std::vector<std::string>, StringRef>>
214 OS << ", (std::array<std::pair<std::array<unsigned, " << MaxVisibilityPerHelp
225 OS << "std::make_pair(std::array<unsigned, " << MaxVisibilityPerHelp
231 OS << *Visibility;
233 OS << ", ";
236 OS << "}}, ";
239 write_cstring(OS, Help);
241 OS << "nullptr";
242 OS << ")";
245 OS << ", ";
247 OS << " }})";
253 static void EmitOptParser(RecordKeeper &Records, raw_ostream &OS) {
259 emitSourceFileHeader("Option Parsing Definitions", OS);
285 OS << "/////////\n";
286 OS << "// Prefixes\n\n";
287 OS << "#ifdef PREFIX\n";
288 OS << "#define COMMA ,\n";
290 OS << "PREFIX(";
293 OS << Prefix.second;
296 OS << ", {";
298 OS << "llvm::StringLiteral(\"" << PrefixKey << "\") COMMA ";
300 OS << "llvm::StringLiteral(\"\")})\n";
302 OS << "#undef COMMA\n";
303 OS << "#endif // PREFIX\n\n";
306 OS << "/////////\n";
307 OS << "// Prefix Union\n\n";
308 OS << "#ifdef PREFIX_UNION\n";
309 OS << "#define COMMA ,\n";
310 OS << "PREFIX_UNION({\n";
312 OS << "llvm::StringLiteral(\"" << Prefix << "\") COMMA ";
314 OS << "llvm::StringLiteral(\"\")})\n";
315 OS << "#undef COMMA\n";
316 OS << "#endif // PREFIX_UNION\n\n";
319 OS << "/////////\n";
320 OS << "// ValuesCode\n\n";
321 OS << "#ifdef OPTTABLE_VALUES_CODE\n";
327 OS << "#define VALUES_CODE " << getOptionName(R) << "_Values\n";
328 OS << R.getValueAsString("ValuesCode") << "\n";
329 OS << "#undef VALUES_CODE\n";
332 OS << "#endif\n";
334 OS << "/////////\n";
335 OS << "// Groups\n\n";
336 OS << "#ifdef OPTION\n";
339 OS << "OPTION(";
342 OS << "llvm::ArrayRef<llvm::StringLiteral>()";
345 OS << ", \"" << R.getValueAsString("Name") << '"';
348 OS << ", " << getOptionName(R);
351 OS << ", Group";
354 OS << ", ";
356 OS << getOptionName(*DI->getDef());
358 OS << "INVALID";
361 OS << ", INVALID, nullptr, 0, 0, 0";
365 OS << ",\n";
366 OS << " ";
367 write_cstring(OS, R.getValueAsString("HelpText"));
369 OS << ", nullptr";
372 EmitHelpTextsForVariants(OS, {});
375 OS << ", nullptr";
378 OS << ", nullptr)\n";
380 OS << "\n";
382 OS << "//////////\n";
383 OS << "// Options\n\n";
385 auto WriteOptRecordFields = [&](raw_ostream &OS, const Record &R) {
388 OS << Prefixes[PrefixKeyT(RPrefixes.begin(), RPrefixes.end())] << ", ";
391 write_cstring(OS, getOptionPrefixedName(R));
394 OS << ", " << getOptionName(R);
397 OS << ", " << R.getValueAsDef("Kind")->getValueAsString("Name");
400 OS << ", ";
406 OS << getOptionName(*DI->getDef());
408 OS << "INVALID";
411 OS << ", ";
413 OS << getOptionName(*DI->getDef());
415 OS << "INVALID";
421 OS << ", ";
424 OS << "nullptr";
426 OS << "\"";
428 OS << AliasArg << "\\0";
429 OS << "\"";
433 OS << ", ";
437 OS << (NumFlags++ ? " | " : "") << cast<DefInit>(I)->getDef()->getName();
440 OS << (NumFlags++ ? " | " : "")
444 OS << '0';
447 OS << ", ";
451 OS << (NumVisFlags++ ? " | " : "")
455 OS << (NumVisFlags++ ? " | " : "")
459 OS << '0';
462 OS << ", " << R.getValueAsInt("NumArgs");
466 OS << ",\n";
467 OS << " ";
468 write_cstring(OS, R.getValueAsString("HelpText"));
470 OS << ", nullptr";
486 EmitHelpTextsForVariants(OS, HelpTextsForVariants);
489 OS << ", ";
491 write_cstring(OS, R.getValueAsString("MetaVarName"));
493 OS << "nullptr";
496 OS << ", ";
498 write_cstring(OS, R.getValueAsString("Values"));
500 OS << getOptionName(R) << "_Values";
502 OS << "nullptr";
513 OS << "OPTION(";
514 WriteOptRecordFields(OS, R);
515 OS << ")\n";
519 OS << "#endif // OPTION\n";
544 OS << "#ifdef " << MI.getMacroName() << "\n";
545 OS << MI.getMacroName() << "(";
546 WriteOptRecordFields(OS, MI.R);
547 OS << ", ";
548 MI.emit(OS);
549 OS << ")\n";
550 OS << "#endif // " << MI.getMacroName() << "\n";
553 OS << "\n";
554 OS << "#ifdef SIMPLE_ENUM_VALUE_TABLE";
555 OS << "\n";
556 OS << MarshallingInfo::ValueTablePreamble;
559 if (auto MaybeValueTableName = MI.emitValueTable(OS))
562 OS << MarshallingInfo::ValueTablesDecl << "{";
564 OS << "{" << ValueTableName << ", std::size(" << ValueTableName << ")},\n";
565 OS << "};\n";
566 OS << "static const unsigned SimpleEnumValueTablesSize = "
569 OS << "#endif // SIMPLE_ENUM_VALUE_TABLE\n";
570 OS << "\n";
572 OS << "\n";