include "common.fbs"; namespace xe.debug.proto; enum ModuleType:byte { Kernel = 0, User = 1, } table Module { object:XObject; type:ModuleType; name:string; path:string; // TODO(benvanik): xex info/etc? } table ListModulesRequest { } struct ListModuleEntry { handle:uint; function_count:uint; } table ListModulesResponse { entry:[ListModuleEntry]; } table GetModuleRequest { module_id:uint; } table GetModuleResponse { module:Module; } table FunctionEntry { identifier:ulong; address_start:uint; address_end:uint; name:string; } table Function { identifier:ulong; address_start:uint; address_end:uint; name:string; machine_code_start:uint; machine_code_end:uint; disasm_hir_raw:string; disasm_hir_opt:string; } table ListFunctionsRequest { module_id:uint; function_index_start:uint; function_index_end:uint; } table ListFunctionsResponse { entry:[FunctionEntry]; } table GetFunctionRequest { identifier:ulong; } table GetFunctionResponse { function:Function; }