Provider refactor: 2-method base class, ProcessProvider, ProcessPicker

Collapse Provider interface from 9 virtual methods to 2 (read + size),
move providers to src/providers/, add name()/kind()/getSymbol() virtuals.
Replace FileProvider with BufferProvider, add ProcessProvider (Win32)
with module-based symbol resolution, wire ProcessPicker dialog, and
integrate getSymbol into pointer display and command row.

- Fix isReadable overflow for large addresses
- Guard deferred showSourcePicker/showTypeAutocomplete against stale edits
- 7/7 tests pass including 3 new provider test suites

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
sysadmin
2026-02-06 06:52:44 -07:00
parent 637aa7a550
commit 44e4d88f58
23 changed files with 1457 additions and 221 deletions

View File

@@ -39,8 +39,8 @@ private slots:
}
void testFmtOffsetMargin_primary() {
QCOMPARE(fmt::fmtOffsetMargin(0x10, false), QString("0x10"));
QCOMPARE(fmt::fmtOffsetMargin(0, false), QString("0x0"));
QCOMPARE(fmt::fmtOffsetMargin(0x10, false), QString("10"));
QCOMPARE(fmt::fmtOffsetMargin(0, false), QString("0"));
}
void testFmtOffsetMargin_continuation() {
@@ -224,7 +224,7 @@ private slots:
void testReadValueBoundsCheck() {
// Vec2 subLine=2 (out of bounds) should return "?"
QByteArray data(16, '\0');
FileProvider prov(data);
BufferProvider prov(data);
Node n;
n.kind = NodeKind::Vec2;
n.name = "v";
@@ -244,7 +244,7 @@ private slots:
// Write a known float value
float val = 3.14f;
memcpy(data.data(), &val, 4);
FileProvider prov(data);
BufferProvider prov(data);
Node n;
n.kind = NodeKind::Float;