syntax = "proto3"; package objdiff.report; // Progress info for a report or unit message Measures { // Overall match percent, including partially matched functions and data float fuzzy_match_percent = 1; // Total size of code in bytes uint64 total_code = 2; // Fully matched code size in bytes uint64 matched_code = 3; // Fully matched code percent float matched_code_percent = 4; // Total size of data in bytes uint64 total_data = 5; // Fully matched data size in bytes uint64 matched_data = 6; // Fully matched data percent float matched_data_percent = 7; // Total number of functions uint32 total_functions = 8; // Fully matched functions uint32 matched_functions = 9; // Fully matched functions percent float matched_functions_percent = 10; // Completed (or "linked") code size in bytes uint64 complete_code = 11; // Completed (or "linked") code percent float complete_code_percent = 12; // Completed (or "linked") data size in bytes uint64 complete_data = 13; // Completed (or "linked") data percent float complete_data_percent = 14; } // Project progress report message Report { // Overall progress info Measures measures = 1; // Units within this report repeated ReportUnit units = 2; // Report version uint32 version = 3; // Progress categories repeated ReportCategory categories = 4; } message ReportCategory { // The ID of the category string id = 1; // The name of the category string name = 2; // Progress info for this category Measures measures = 3; } // A unit of the report (usually a translation unit) message ReportUnit { // The name of the unit string name = 1; // Progress info for this unit Measures measures = 2; // Sections within this unit repeated ReportItem sections = 3; // Functions within this unit repeated ReportItem functions = 4; // Extra metadata for this unit optional ReportUnitMetadata metadata = 5; } // Extra metadata for a unit message ReportUnitMetadata { // Whether this unit is marked as complete (or "linked") optional bool complete = 1; // The name of the module this unit belongs to optional string module_name = 2; // The ID of the module this unit belongs to optional uint32 module_id = 3; // The path to the source file of this unit optional string source_path = 4; // Progress categories for this unit repeated string progress_categories = 5; // Whether this unit is automatically generated (not user-provided) optional bool auto_generated = 6; } // A section or function within a unit message ReportItem { // The name of the item string name = 1; // The size of the item in bytes uint64 size = 2; // The overall match percent for this item float fuzzy_match_percent = 3; // Extra metadata for this item optional ReportItemMetadata metadata = 4; } // Extra metadata for an item message ReportItemMetadata { // The demangled name of the function optional string demangled_name = 1; // The virtual address of the function or section optional uint64 virtual_address = 2; } // A pair of reports to compare and generate changes message ChangesInput { // The previous report Report from = 1; // The current report Report to = 2; } // Changes between two reports message Changes { // The progress info for the previous report Measures from = 1; // The progress info for the current report Measures to = 2; // Units that changed repeated ChangeUnit units = 3; } // A changed unit message ChangeUnit { // The name of the unit string name = 1; // The previous progress info (omitted if new) optional Measures from = 2; // The current progress info (omitted if removed) optional Measures to = 3; // Sections that changed repeated ChangeItem sections = 4; // Functions that changed repeated ChangeItem functions = 5; // Extra metadata for this unit optional ReportUnitMetadata metadata = 6; } // A changed section or function message ChangeItem { // The name of the item string name = 1; // The previous progress info (omitted if new) optional ChangeItemInfo from = 2; // The current progress info (omitted if removed) optional ChangeItemInfo to = 3; // Extra metadata for this item optional ReportItemMetadata metadata = 4; } // Progress info for a section or function message ChangeItemInfo { // The overall match percent for this item float fuzzy_match_percent = 1; // The size of the item in bytes uint64 size = 2; }