Lines Matching full:diff
86 const auto [resolved, typedefs] = diff::ResolveTypedefs(graph, id); in GetResolvedDescription()
101 const diff::Comparison& comparison, std::ostream& os, in PrintComparison()
147 using Seen = std::unordered_map<diff::Comparison, bool, diff::HashComparison>;
153 void Report(const diff::Comparison&);
160 void Print(const diff::Comparison&, size_t, const std::string&);
163 void Plain::Print(const diff::Comparison& comparison, size_t indent, in Print()
173 const auto& diff = it->second; in Print() local
175 const bool holds_changes = diff.holds_changes; in Print()
185 } else if (!diff.details.empty()) { in Print()
191 for (const auto& detail : diff.details) { in Print()
192 if (detail.edge == diff::Comparison{}) { in Print()
204 void Plain::Report(const diff::Comparison& comparison) { in Report()
205 // unpack then print - want symbol diff forest rather than symbols diff tree in Report()
206 const auto& diff = reporting_.outcomes.at(comparison); in Report() local
207 for (const auto& detail : diff.details) { in Report()
214 // Print the subtree of a diff graph starting at a given node and stopping at
217 // no diff and no path to a diff that does not pass through a node that can hold
218 // diffs. Return whether the diff node's tree was intrinisically interesting.
224 void Report(const diff::Comparison&);
230 std::unordered_set<diff::Comparison, diff::HashComparison> seen_;
231 std::deque<diff::Comparison> todo_;
233 bool Print(const diff::Comparison&, bool, std::ostream&, size_t,
237 bool Flat::Print(const diff::Comparison& comparison, bool stop, in Print()
245 // Look up the diff (including node and edge changes). in Print()
249 const auto& diff = it->second; in Print() local
252 if (diff.holds_changes && stop) { in Print()
253 // If it's a new diff-holding node, queue it. in Print()
260 // a diff-holding node. in Print()
261 if (!diff.holds_changes && !stop) { in Print()
265 // Indent before describing diff details. in Print()
267 bool interesting = diff.has_changes; in Print()
268 for (const auto& detail : diff.details) { in Print()
269 if (detail.edge == diff::Comparison{}) { in Print()
271 // Node changes may not be interesting, if we allow non-change diff in Print()
274 // Edge changes are interesting if the target diff node is. in Print()
276 // Set the stop flag to prevent recursion past diff-holding nodes. in Print()
289 void Flat::Report(const diff::Comparison& comparison) { in Report()
290 // We want a symbol diff forest rather than a symbol table diff tree, so in Report()
292 const auto& diff = reporting_.outcomes.at(comparison); in Report() local
293 for (const auto& detail : diff.details) { in Report()
312 std::unordered_map<diff::Comparison, size_t, diff::HashComparison>& ids, in VizId()
313 const diff::Comparison& comparison) { in VizId()
318 const Reporting& reporting, const diff::Comparison& comparison, in VizPrint()
319 std::unordered_set<diff::Comparison, diff::HashComparison>& seen, in VizPrint()
320 std::unordered_map<diff::Comparison, size_t, diff::HashComparison>& ids, in VizPrint()
351 const auto& diff = it->second; in VizPrint() local
352 const char* colour = diff.has_changes ? "color=red, " : ""; in VizPrint()
353 const char* shape = diff.holds_changes ? "shape=rectangle, " : ""; in VizPrint()
367 for (const auto& detail : diff.details) { in VizPrint()
368 if (detail.edge == diff::Comparison{}) { in VizPrint()
383 void ReportViz(const Reporting& reporting, const diff::Comparison& comparison, in ReportViz()
385 output << "digraph \"ABI diff\" {\n"; in ReportViz()
386 std::unordered_set<diff::Comparison, diff::HashComparison> seen; in ReportViz()
387 std::unordered_map<diff::Comparison, size_t, diff::HashComparison> ids; in ReportViz()
405 void Report(const Reporting& reporting, const diff::Comparison& comparison, in Report()
439 bool FidelityDiff(const stg::FidelityDiff& diff, std::ostream& output) { in FidelityDiff() argument
441 auto print_bucket = [&diff, &output, &diffs_reported](auto&& from, in FidelityDiff()
445 auto it = diff.symbol_transitions.find(transition); in FidelityDiff()
446 if (it != diff.symbol_transitions.end()) { in FidelityDiff()
451 auto it = diff.type_transitions.find(transition); in FidelityDiff()
452 if (it != diff.type_transitions.end()) { in FidelityDiff()