static bool diffAndPrint(StringRef Label, PDBFile &File1, PDBFile &File2, T V1, T V2) { if (V1 == V2) { outs() << formatv(" {0}: No differences detected!\n", Label); return false; } outs().indent(2) << Label << "\n"; outs().indent(4) << formatv("{0}: {1}\n", File1.getFilePath(), V1); outs().indent(4) << formatv("{0}: {1}\n", File2.getFilePath(), V2); return true; }
static bool diffAndPrint(StringRef Label, PDBFile &File1, PDBFile &File2, ArrayRef<T> V1, ArrayRef<T> V2) { if (V1 == V2) { outs() << formatv(" {0}: No differences detected!\n", Label); return false; } outs().indent(2) << Label << "\n"; outs().indent(4) << formatv("{0}: {1}\n", File1.getFilePath(), make_range(V1.begin(), V1.end())); outs().indent(4) << formatv("{0}: {1}\n", File2.getFilePath(), make_range(V2.begin(), V2.end())); return true; }
static bool printSymmetricDifferences(PDBFile &File1, PDBFile &File2, T &&OnlyRange1, T &&OnlyRange2, StringRef Label) { bool HasDiff = false; if (!OnlyRange1.empty()) { HasDiff = true; outs() << formatv(" {0} {1}(s) only in ({2})\n", OnlyRange1.size(), Label, File1.getFilePath()); for (const auto &Item : OnlyRange1) outs() << formatv(" {0}\n", Label, Item); } if (!OnlyRange2.empty()) { HasDiff = true; outs() << formatv(" {0} {1}(s) only in ({2})\n", OnlyRange2.size(), File2.getFilePath()); for (const auto &Item : OnlyRange2) outs() << formatv(" {0}\n", Item); } return HasDiff; }