| 575 | |
| 576 | |
| 577 | std::vector<FirmwareNinjaDeviceAccesses> FirmwareNinja::GetBoardDeviceAccesses( |
| 578 | const std::vector<FirmwareNinjaFunctionMemoryAccesses>& fma) |
| 579 | { |
| 580 | std::vector<FirmwareNinjaDeviceAccesses> result; |
| 581 | if (fma.empty()) |
| 582 | return result; |
| 583 | |
| 584 | auto platform = m_view->GetDefaultPlatform(); |
| 585 | if (!platform) |
| 586 | return result; |
| 587 | |
| 588 | auto arch = platform->GetArchitecture(); |
| 589 | if (!arch) |
| 590 | return result; |
| 591 | |
| 592 | BNFirmwareNinjaFunctionMemoryAccesses** fmaArray = MemoryInfoVectorToArray(fma); |
| 593 | BNFirmwareNinjaDeviceAccesses* accesses; |
| 594 | int count = BNFirmwareNinjaGetBoardDeviceAccesses(m_object, fmaArray, fma.size(), &accesses, arch->GetObject()); |
| 595 | FreeMemoryInfoArray(fmaArray, fma.size()); |
| 596 | if (count <= 0) |
| 597 | return result; |
| 598 | |
| 599 | result.reserve(count); |
| 600 | for (size_t i = 0; i < count; i++) |
| 601 | result.push_back({accesses[i].name, accesses[i].total, accesses[i].unique}); |
| 602 | |
| 603 | BNFirmwareNinjaFreeBoardDeviceAccesses(accesses, count); |
| 604 | sort(result.begin(), result.end(), [](const FirmwareNinjaDeviceAccesses& a, const FirmwareNinjaDeviceAccesses& b) { |
| 605 | return a.total > b.total; |
| 606 | }); |
| 607 | |
| 608 | return result; |
| 609 | } |
| 610 | |
| 611 | |
| 612 | Ref<FirmwareNinjaReferenceNode> FirmwareNinja::GetReferenceTree( |
nothing calls this directly
no test coverage detected