mirror of
https://github.com/hedge-dev/XenonRecomp.git
synced 2025-07-23 05:23:59 +00:00
Symbol table
This commit is contained in:
54
PowerUtils/section.h
Normal file
54
PowerUtils/section.h
Normal file
@@ -0,0 +1,54 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include <cstdint>
|
||||
|
||||
enum SectionFlags : uint8_t
|
||||
{
|
||||
SectionFlags_None = 0,
|
||||
SectionFlags_Data = 1,
|
||||
SectionFlags_Code = 2
|
||||
};
|
||||
|
||||
struct Section
|
||||
{
|
||||
std::string name{};
|
||||
size_t base{};
|
||||
uint32_t size{};
|
||||
SectionFlags flags{};
|
||||
uint8_t* data{};
|
||||
|
||||
bool operator<(size_t address) const
|
||||
{
|
||||
return address < base;
|
||||
}
|
||||
|
||||
bool operator>(size_t address) const
|
||||
{
|
||||
return address >= (base + size);
|
||||
}
|
||||
|
||||
bool operator==(size_t address) const
|
||||
{
|
||||
return address >= base && address < base + size;
|
||||
}
|
||||
};
|
||||
|
||||
struct SectionComparer
|
||||
{
|
||||
using is_transparent = void;
|
||||
|
||||
bool operator()(const Section& lhs, size_t rhs) const
|
||||
{
|
||||
return rhs > lhs.base + lhs.size;
|
||||
}
|
||||
|
||||
bool operator()(size_t lhs, const Section& rhs) const
|
||||
{
|
||||
return lhs < rhs.base;
|
||||
}
|
||||
|
||||
bool operator()(const Section& lhs, const Section& rhs) const
|
||||
{
|
||||
return (lhs.base + lhs.size) < rhs.base;
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user