2024-09-08 08:32:31 +06:00
|
|
|
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#include <cstdint>
|
|
|
|
|
|
|
|
enum SymbolType
|
|
|
|
{
|
|
|
|
Symbol_None,
|
|
|
|
Symbol_Section,
|
|
|
|
Symbol_Function,
|
|
|
|
Symbol_Comment,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct Symbol
|
|
|
|
{
|
2024-09-28 22:44:27 +06:00
|
|
|
mutable std::string name{};
|
2024-09-08 08:32:31 +06:00
|
|
|
uint32_t address{};
|
|
|
|
uint32_t size{};
|
2024-09-28 22:44:27 +06:00
|
|
|
mutable SymbolType type{};
|
2024-09-08 08:32:31 +06:00
|
|
|
};
|
|
|
|
|
|
|
|
struct SymbolComparer
|
|
|
|
{
|
|
|
|
using is_transparent = void;
|
|
|
|
|
|
|
|
bool operator()(const Symbol& lhs, size_t rhs) const
|
|
|
|
{
|
2024-09-18 20:39:05 +03:00
|
|
|
return lhs.address < rhs;
|
2024-09-08 08:32:31 +06:00
|
|
|
}
|
|
|
|
|
|
|
|
bool operator()(size_t lhs, const Symbol& rhs) const
|
|
|
|
{
|
|
|
|
return lhs < rhs.address;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool operator()(const Symbol& lhs, const Symbol& rhs) const
|
|
|
|
{
|
2024-09-18 20:39:05 +03:00
|
|
|
return lhs.address < rhs.address;
|
2024-09-08 08:32:31 +06:00
|
|
|
}
|
|
|
|
};
|