Constify a few statements. Not much difference.

Signed-off-by: Adrian Conlon <adrian.conlon@gmail.com>
This commit is contained in:
Adrian Conlon 2021-10-23 17:46:59 +01:00
parent 17b71aafc3
commit f85fec3c81
10 changed files with 31 additions and 32 deletions

View File

@ -7,7 +7,7 @@ bool TestRunner::m_undocumented_opcodes_initialised = false;
TestRunner::TestRunner(const test_t test) TestRunner::TestRunner(const test_t test)
: m_test(test) {} : m_test(test) {}
EightBit::MemoryMapping TestRunner::mapping(uint16_t address) noexcept { EightBit::MemoryMapping TestRunner::mapping(const uint16_t address) noexcept {
return { RAM(), 0x0000, 0xffff, EightBit::MemoryMapping::AccessLevel::ReadWrite }; return { RAM(), 0x0000, 0xffff, EightBit::MemoryMapping::AccessLevel::ReadWrite };
} }
@ -26,23 +26,23 @@ void TestRunner::lowerPOWER() {
EightBit::Bus::lowerPOWER(); EightBit::Bus::lowerPOWER();
} }
void TestRunner::addActualCycle(uint16_t address, uint8_t value, std::string action) { void TestRunner::addActualCycle(const uint16_t address, const uint8_t value, const std::string action) {
m_actualCycles.push_back({ address, value, action }); m_actualCycles.push_back({ address, value, action });
} }
void TestRunner::addActualCycle(EightBit::register16_t address, uint8_t value, std::string action) { void TestRunner::addActualCycle(const EightBit::register16_t address, const uint8_t value, const std::string action) {
addActualCycle(address.word, value, action); addActualCycle(address.word, value, action);
} }
void TestRunner::addActualReadCycle(EightBit::register16_t address, uint8_t value) { void TestRunner::addActualReadCycle(const EightBit::register16_t address, const uint8_t value) {
addActualCycle(address, value, "read"); addActualCycle(address, value, "read");
} }
void TestRunner::addActualWriteCycle(EightBit::register16_t address, uint8_t value) { void TestRunner::addActualWriteCycle(const EightBit::register16_t address, const uint8_t value) {
addActualCycle(address, value, "write"); addActualCycle(address, value, "write");
} }
void TestRunner::dumpCycle(uint16_t address, uint8_t value, std::string action) { void TestRunner::dumpCycle(const uint16_t address, const uint8_t value, const std::string action) {
os() os()
<< std::setfill('0') << std::hex << std::setfill('0') << std::hex
<< "Address: " << std::setw(4) << (int)address << "Address: " << std::setw(4) << (int)address
@ -51,7 +51,7 @@ void TestRunner::dumpCycle(uint16_t address, uint8_t value, std::string action)
pushCurrentMessage(); pushCurrentMessage();
} }
void TestRunner::dumpCycles(std::string which, const actual_cycles_t& events) { void TestRunner::dumpCycles(const std::string which, const actual_cycles_t& events) {
m_messages.push_back(which); m_messages.push_back(which);
dumpCycles(events); dumpCycles(events);
} }
@ -65,17 +65,17 @@ void TestRunner::dumpCycle(const actual_cycle_t& cycle) {
dumpCycle(std::get<0>(cycle), std::get<1>(cycle), std::get<2>(cycle)); dumpCycle(std::get<0>(cycle), std::get<1>(cycle), std::get<2>(cycle));
} }
void TestRunner::dumpCycles(std::string which, cycles_t events) { void TestRunner::dumpCycles(const std::string which, const cycles_t events) {
m_messages.push_back(which); m_messages.push_back(which);
dumpCycles(events); dumpCycles(events);
} }
void TestRunner::dumpCycles(cycles_t cycles) { void TestRunner::dumpCycles(const cycles_t cycles) {
for (auto cycle: cycles) for (const auto cycle: cycles)
dumpCycle(cycle_t(cycle)); dumpCycle(cycle_t(cycle));
} }
void TestRunner::dumpCycle(cycle_t cycle) { void TestRunner::dumpCycle(const cycle_t cycle) {
dumpCycle(cycle.address(), cycle.value(), cycle.action()); dumpCycle(cycle.address(), cycle.value(), cycle.action());
} }
@ -94,7 +94,7 @@ void TestRunner::initialise() {
os() << std::hex << std::uppercase; os() << std::hex << std::uppercase;
} }
void TestRunner::raise(std::string what, uint16_t expected, uint16_t actual) { void TestRunner::raise(const std::string what, const uint16_t expected, const uint16_t actual) {
os() os()
<< std::setw(2) << std::setfill(' ') << std::setw(2) << std::setfill(' ')
<< what << what
@ -104,7 +104,7 @@ void TestRunner::raise(std::string what, uint16_t expected, uint16_t actual) {
pushCurrentMessage(); pushCurrentMessage();
} }
void TestRunner::raise(std::string what, uint8_t expected, uint8_t actual) { void TestRunner::raise(const std::string what, const uint8_t expected, const uint8_t actual) {
os() os()
<< std::setw(2) << std::setfill(' ') << std::setw(2) << std::setfill(' ')
<< what << what
@ -116,7 +116,7 @@ void TestRunner::raise(std::string what, uint8_t expected, uint8_t actual) {
pushCurrentMessage(); pushCurrentMessage();
} }
void TestRunner::raise(std::string what, std::string expected, std::string actual) { void TestRunner::raise(const std::string what, const std::string expected, const std::string actual) {
os() os()
<< std::setw(0) << std::setfill(' ') << std::setw(0) << std::setfill(' ')
<< what << what
@ -125,7 +125,7 @@ void TestRunner::raise(std::string what, std::string expected, std::string actua
pushCurrentMessage(); pushCurrentMessage();
} }
bool TestRunner::check(std::string what, uint16_t address, uint8_t expected, uint8_t actual) { bool TestRunner::check(const std::string what, const uint16_t address, const uint8_t expected, const uint8_t actual) {
const auto success = actual == expected; const auto success = actual == expected;
if (!success) { if (!success) {
os() << what << ": " << std::setw(4) << std::setfill('0') << (int)address; os() << what << ": " << std::setw(4) << std::setfill('0') << (int)address;
@ -144,7 +144,7 @@ void TestRunner::initialiseState() {
CPU().X() = initial.x(); CPU().X() = initial.x();
CPU().Y() = initial.y(); CPU().Y() = initial.y();
CPU().P() = initial.p(); CPU().P() = initial.p();
for (auto entry : initial.ram()) { for (const auto entry : initial.ram()) {
const byte_t byte(entry); const byte_t byte(entry);
RAM().poke(byte.address(), byte.value()); RAM().poke(byte.address(), byte.value());
} }
@ -152,14 +152,14 @@ void TestRunner::initialiseState() {
bool TestRunner::checkState() { bool TestRunner::checkState() {
const auto& expected_cycles = test().cycles(); const auto expected_cycles = test().cycles();
const auto& actual_cycles = m_actualCycles; const auto actual_cycles = m_actualCycles;
m_cycle_count_mismatch = expected_cycles.size() != actual_cycles.size(); m_cycle_count_mismatch = expected_cycles.size() != actual_cycles.size();
if (m_cycle_count_mismatch) if (m_cycle_count_mismatch)
return false; return false;
size_t actual_idx = 0; size_t actual_idx = 0;
for (auto expected_cycle : expected_cycles) { for (const auto expected_cycle : expected_cycles) {
const auto expected = cycle_t(expected_cycle); const auto expected = cycle_t(expected_cycle);
const auto actual = actual_cycles.at(actual_idx++); // actual could be less than expected const auto actual = actual_cycles.at(actual_idx++); // actual could be less than expected
check("Cycle address", expected.address(), std::get<0>(actual)); check("Cycle address", expected.address(), std::get<0>(actual));
@ -194,8 +194,7 @@ void TestRunner::pushCurrentMessage() {
void TestRunner::disassemble(uint16_t address) { void TestRunner::disassemble(uint16_t address) {
try { try {
os() << m_disassembler.disassemble(address); os() << m_disassembler.disassemble(address);
} } catch (const std::domain_error& error) {
catch (const std::domain_error& error) {
os() << "Disassembly problem: " << error.what(); os() << "Disassembly problem: " << error.what();
} }
pushCurrentMessage(); pushCurrentMessage();

View File

@ -1,5 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "array_t.h" #include "array_t.h"
array_t::array_t(simdjson::dom::array input) noexcept array_t::array_t(const simdjson::dom::array input) noexcept
: m_raw(input) {} : m_raw(input) {}

View File

@ -11,7 +11,7 @@ private:
protected: protected:
array_t(simdjson::dom::array input) noexcept; array_t(simdjson::dom::array input) noexcept;
auto raw() const noexcept { return m_raw; } [[nodiscard]] auto raw() const noexcept { return m_raw; }
[[nodiscard]] auto at(size_t idx) const noexcept { return raw().at(idx); } [[nodiscard]] auto at(size_t idx) const noexcept { return raw().at(idx); }
[[nodiscard]] auto integer_at(size_t idx) const noexcept { return (int64_t)at(idx); } [[nodiscard]] auto integer_at(size_t idx) const noexcept { return (int64_t)at(idx); }
@ -22,5 +22,5 @@ public:
[[nodiscard]] auto begin() const noexcept { return m_raw.begin(); } [[nodiscard]] auto begin() const noexcept { return m_raw.begin(); }
[[nodiscard]] auto end() const noexcept { return m_raw.end(); } [[nodiscard]] auto end() const noexcept { return m_raw.end(); }
[[nodiscard]] auto size() const noexcept { return m_raw.size(); } [[nodiscard]] auto size() const noexcept { return m_raw.size(); }
[[nodiscard]] auto operator[](size_t idx) const noexcept { return m_raw.at(idx); } [[nodiscard]] auto operator[](size_t idx) const noexcept { return at(idx); }
}; };

View File

@ -1,5 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "byte_t.h" #include "byte_t.h"
byte_t::byte_t(simdjson::dom::array input) noexcept byte_t::byte_t(const simdjson::dom::array input) noexcept
: array_t(input) {} : array_t(input) {}

View File

@ -1,5 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "cycle_t.h" #include "cycle_t.h"
cycle_t::cycle_t(simdjson::dom::array input) noexcept cycle_t::cycle_t(const simdjson::dom::array input) noexcept
: byte_t(input) {} : byte_t(input) {}

View File

@ -1,5 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "cycles_t.h" #include "cycles_t.h"
cycles_t::cycles_t(simdjson::dom::array input) noexcept cycles_t::cycles_t(const simdjson::dom::array input) noexcept
: array_t(input) {} : array_t(input) {}

View File

@ -15,6 +15,7 @@ protected:
auto raw() const noexcept { return m_raw; } auto raw() const noexcept { return m_raw; }
[[nodiscard]] auto at(std::string key) const noexcept { return raw()[key]; } [[nodiscard]] auto at(std::string key) const noexcept { return raw()[key]; }
[[nodiscard]] auto operator[](std::string key) const noexcept { return at(key); }
[[nodiscard]] auto array_at(std::string key) const noexcept { return at(key).get_array(); } [[nodiscard]] auto array_at(std::string key) const noexcept { return at(key).get_array(); }
[[nodiscard]] auto integer_at(std::string key) const noexcept { return (int64_t)at(key); } [[nodiscard]] auto integer_at(std::string key) const noexcept { return (int64_t)at(key); }
}; };

View File

@ -8,7 +8,7 @@
simdjson::dom::parser opcode_test_suite_t::m_parser; simdjson::dom::parser opcode_test_suite_t::m_parser;
opcode_test_suite_t::opcode_test_suite_t(std::string path) opcode_test_suite_t::opcode_test_suite_t(const std::string path)
: m_path(path) {} : m_path(path) {}
void opcode_test_suite_t::load() { void opcode_test_suite_t::load() {

View File

@ -1,5 +1,5 @@
#include "stdafx.h" #include "stdafx.h"
#include "ram_t.h" #include "ram_t.h"
ram_t::ram_t(simdjson::dom::array input) noexcept ram_t::ram_t(const simdjson::dom::array input) noexcept
: array_t(input) {} : array_t(input) {}

View File

@ -26,14 +26,13 @@ int main() {
opcode_test_suite_t opcode(path.string()); opcode_test_suite_t opcode(path.string());
opcode.load(); opcode.load();
for (auto opcode_test_element : opcode) { for (const auto opcode_test_element : opcode) {
const auto opcode_test = test_t(opcode_test_element); const auto opcode_test = test_t(opcode_test_element);
TestRunner runner(opcode_test); TestRunner runner(opcode_test);
runner.check(); runner.check();
auto invalid = runner.invalid(); if (runner.invalid()) {
if (invalid) {
++invalid_opcode_count; ++invalid_opcode_count;
if (runner.unimplemented()) if (runner.unimplemented())
++unimplemented_opcode_count; ++unimplemented_opcode_count;