Rebrand to XenonRecomp.

This commit is contained in:
Skyth
2025-01-19 22:39:12 +03:00
parent 7fb8af1bad
commit 87e350906b
54 changed files with 69 additions and 64 deletions

63
XenonUtils/symbol_table.h Normal file
View File

@@ -0,0 +1,63 @@
#pragma once
#include "symbol.h"
#include <set>
class SymbolTable : public std::multiset<Symbol, SymbolComparer>
{
public:
const_iterator find(size_t address) const
{
auto [beginIt, endIt] = equal_range(address);
if (beginIt == endIt)
{
return end();
}
size_t closest{ address - beginIt->address };
auto match = end();
for (auto it = beginIt; it != endIt; ++it)
{
if (address < it->address || address >= it->address + it->size)
{
continue;
}
const size_t distance = address - it->address;
if (distance <= closest)
{
match = it;
closest = distance;
}
}
return match;
}
iterator find(size_t address)
{
auto [beginIt, endIt] = equal_range(address);
if (beginIt == endIt)
{
return end();
}
size_t closest{ address - beginIt->address };
auto match = end();
for (auto it = beginIt; it != endIt; ++it)
{
if (address < it->address || address >= it->address + it->size)
{
continue;
}
const size_t distance = address - it->address;
if (distance <= closest)
{
match = it;
closest = distance;
}
}
return match;
}
};