impr: Refactor and modularize data information view

This commit is contained in:
WerWolv
2024-02-21 00:06:52 +01:00
parent a2ffac9424
commit 56e7c15064
25 changed files with 852 additions and 628 deletions

View File

@@ -1255,4 +1255,21 @@ namespace hex {
}
namespace ContentRegistry::DataInformation {
namespace impl {
static AutoReset<std::vector<CreateCallback>> s_informationSectionConstructors;
const std::vector<CreateCallback>& getInformationSectionConstructors() {
return *s_informationSectionConstructors;
}
void addInformationSectionCreator(const CreateCallback &callback) {
s_informationSectionConstructors->emplace_back(callback);
}
}
}
}

View File

@@ -471,8 +471,8 @@ namespace hex {
return s_windowResizable;
}
static std::vector<AutoResetBase*> s_autoResetObjects;
void addAutoResetObject(AutoResetBase *object) {
static std::vector<hex::impl::AutoResetBase*> s_autoResetObjects;
void addAutoResetObject(hex::impl::AutoResetBase *object) {
s_autoResetObjects.emplace_back(object);
}

View File

@@ -72,6 +72,12 @@ namespace hex {
throw TaskInterruptor();
}
void Task::update() const {
if (m_shouldInterrupt.load(std::memory_order_relaxed)) [[unlikely]]
throw TaskInterruptor();
}
void Task::setMaxValue(u64 value) {
m_maxValue = value;
}

View File

@@ -113,9 +113,9 @@ namespace hex::magic {
return "";
}
std::string getDescription(prv::Provider *provider, size_t size, bool firstEntryOnly) {
std::string getDescription(prv::Provider *provider, u64 address, size_t size, bool firstEntryOnly) {
std::vector<u8> buffer(std::min<u64>(provider->getSize(), size), 0x00);
provider->read(provider->getBaseAddress(), buffer.data(), buffer.size());
provider->read(provider->getBaseAddress() + address, buffer.data(), buffer.size());
return getDescription(buffer, firstEntryOnly);
}
@@ -138,16 +138,16 @@ namespace hex::magic {
return "";
}
std::string getMIMEType(prv::Provider *provider, size_t size, bool firstEntryOnly) {
std::string getMIMEType(prv::Provider *provider, u64 address, size_t size, bool firstEntryOnly) {
std::vector<u8> buffer(std::min<u64>(provider->getSize(), size), 0x00);
provider->read(provider->getBaseAddress(), buffer.data(), buffer.size());
provider->read(provider->getBaseAddress() + address, buffer.data(), buffer.size());
return getMIMEType(buffer, firstEntryOnly);
}
std::string getExtensions(prv::Provider *provider, size_t size, bool firstEntryOnly) {
std::string getExtensions(prv::Provider *provider, u64 address, size_t size, bool firstEntryOnly) {
std::vector<u8> buffer(std::min<u64>(provider->getSize(), size), 0x00);
provider->read(provider->getBaseAddress(), buffer.data(), buffer.size());
provider->read(provider->getBaseAddress() + address, buffer.data(), buffer.size());
return getExtensions(buffer, firstEntryOnly);
}
@@ -170,9 +170,9 @@ namespace hex::magic {
return "";
}
std::string getAppleCreatorType(prv::Provider *provider, size_t size, bool firstEntryOnly) {
std::string getAppleCreatorType(prv::Provider *provider, u64 address, size_t size, bool firstEntryOnly) {
std::vector<u8> buffer(std::min<u64>(provider->getSize(), size), 0x00);
provider->read(provider->getBaseAddress(), buffer.data(), buffer.size());
provider->read(provider->getBaseAddress() + address, buffer.data(), buffer.size());
return getAppleCreatorType(buffer, firstEntryOnly);
}