From a40ae08248d8e9feda67d9f7a207f0c776c0d462 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 11 Dec 2023 09:58:24 -0500 Subject: [PATCH] Be const correct; drop `get_`. --- Analyser/Static/Acorn/Disk.cpp | 12 ++++++------ Analyser/Static/AmstradCPC/StaticAnalyser.cpp | 2 +- Analyser/Static/Commodore/Disk.cpp | 6 +++--- Analyser/Static/Oric/StaticAnalyser.cpp | 4 ++-- Analyser/Static/ZXSpectrum/StaticAnalyser.cpp | 4 ++-- .../xcshareddata/xcschemes/Clock Signal.xcscheme | 2 +- Storage/Disk/Encodings/MFM/Parser.cpp | 14 +++++++------- Storage/Disk/Encodings/MFM/Parser.hpp | 12 +++++++++--- Storage/Disk/Parsers/CPM.cpp | 4 ++-- Storage/Disk/Parsers/FAT.cpp | 14 +++++++------- 10 files changed, 40 insertions(+), 34 deletions(-) diff --git a/Analyser/Static/Acorn/Disk.cpp b/Analyser/Static/Acorn/Disk.cpp index 15d8518d5..9b1516381 100644 --- a/Analyser/Static/Acorn/Disk.cpp +++ b/Analyser/Static/Acorn/Disk.cpp @@ -21,8 +21,8 @@ std::unique_ptr Analyser::Static::Acorn::GetDFSCatalogue(const std::s auto catalogue = std::make_unique(); Storage::Encodings::MFM::Parser parser(Storage::Encodings::MFM::Density::Single, disk); - const Storage::Encodings::MFM::Sector *const names = parser.get_sector(0, 0, 0); - const Storage::Encodings::MFM::Sector *const details = parser.get_sector(0, 0, 1); + const Storage::Encodings::MFM::Sector *const names = parser.sector(0, 0, 0); + const Storage::Encodings::MFM::Sector *const details = parser.sector(0, 0, 1); if(!names || !details) return nullptr; if(names->samples.empty() || details->samples.empty()) return nullptr; @@ -65,7 +65,7 @@ std::unique_ptr Analyser::Static::Acorn::GetDFSCatalogue(const std::s uint8_t track = uint8_t(start_sector / 10); start_sector++; - Storage::Encodings::MFM::Sector *next_sector = parser.get_sector(0, track, sector); + const Storage::Encodings::MFM::Sector *next_sector = parser.sector(0, track, sector); if(!next_sector) break; long length_from_sector = std::min(data_length, 256l); @@ -86,13 +86,13 @@ std::unique_ptr Analyser::Static::Acorn::GetADFSCatalogue(const std:: auto catalogue = std::make_unique(); Storage::Encodings::MFM::Parser parser(Storage::Encodings::MFM::Density::Double, disk); - Storage::Encodings::MFM::Sector *free_space_map_second_half = parser.get_sector(0, 0, 1); + const Storage::Encodings::MFM::Sector *free_space_map_second_half = parser.sector(0, 0, 1); if(!free_space_map_second_half) return nullptr; std::vector root_directory; root_directory.reserve(5 * 256); for(uint8_t c = 2; c < 7; c++) { - const Storage::Encodings::MFM::Sector *const sector = parser.get_sector(0, 0, c); + const Storage::Encodings::MFM::Sector *const sector = parser.sector(0, 0, c); if(!sector) return nullptr; root_directory.insert(root_directory.end(), sector->samples[0].begin(), sector->samples[0].end()); } @@ -166,7 +166,7 @@ std::unique_ptr Analyser::Static::Acorn::GetADFSCatalogue(const std:: new_file.data.reserve(size); while(new_file.data.size() < size) { - const Storage::Encodings::MFM::Sector *const sector = parser.get_sector(start_sector / (80 * 16), (start_sector / 16) % 80, start_sector % 16); + const Storage::Encodings::MFM::Sector *const sector = parser.sector(start_sector / (80 * 16), (start_sector / 16) % 80, start_sector % 16); if(!sector) break; const auto length_from_sector = std::min(size - new_file.data.size(), sector->samples[0].size()); diff --git a/Analyser/Static/AmstradCPC/StaticAnalyser.cpp b/Analyser/Static/AmstradCPC/StaticAnalyser.cpp index a630135b7..842371fe2 100644 --- a/Analyser/Static/AmstradCPC/StaticAnalyser.cpp +++ b/Analyser/Static/AmstradCPC/StaticAnalyser.cpp @@ -160,7 +160,7 @@ void InspectCatalogue( bool CheckBootSector(const std::shared_ptr &disk, const std::unique_ptr &target) { Storage::Encodings::MFM::Parser parser(Storage::Encodings::MFM::Density::Double, disk); - Storage::Encodings::MFM::Sector *boot_sector = parser.get_sector(0, 0, 0x41); + const Storage::Encodings::MFM::Sector *boot_sector = parser.sector(0, 0, 0x41); if(boot_sector != nullptr && !boot_sector->samples.empty() && boot_sector->samples[0].size() == 512) { // Check that the first 64 bytes of the sector aren't identical; if they are then probably // this disk was formatted and the filler byte never replaced. diff --git a/Analyser/Static/Commodore/Disk.cpp b/Analyser/Static/Commodore/Disk.cpp index d83d2a54c..e759a636f 100644 --- a/Analyser/Static/Commodore/Disk.cpp +++ b/Analyser/Static/Commodore/Disk.cpp @@ -37,7 +37,7 @@ class CommodoreGCRParser: public Storage::Disk::Controller { @returns a sector if one was found; @c nullptr otherwise. */ - std::shared_ptr get_sector(uint8_t track, uint8_t sector) { + std::shared_ptr sector(uint8_t track, uint8_t sector) { int difference = int(track) - int(track_); track_ = track; @@ -182,7 +182,7 @@ std::vector Analyser::Static::Commodore::GetFiles(const std::shared_ptrdata.begin(), sector->data.end()); next_track = sector->data[0]; @@ -221,7 +221,7 @@ std::vector Analyser::Static::Commodore::GetFiles(const std::shared_ptrdata[0]; diff --git a/Analyser/Static/Oric/StaticAnalyser.cpp b/Analyser/Static/Oric/StaticAnalyser.cpp index e67bf4a8f..273c01e9f 100644 --- a/Analyser/Static/Oric/StaticAnalyser.cpp +++ b/Analyser/Static/Oric/StaticAnalyser.cpp @@ -85,7 +85,7 @@ bool is_microdisc(Storage::Encodings::MFM::Parser &parser) { /* The Microdisc boot sector is sector 2 of track 0 and contains a 23-byte signature. */ - Storage::Encodings::MFM::Sector *sector = parser.get_sector(0, 0, 2); + const Storage::Encodings::MFM::Sector *sector = parser.sector(0, 0, 2); if(!sector) return false; if(sector->samples.empty()) return false; @@ -108,7 +108,7 @@ bool is_400_loader(Storage::Encodings::MFM::Parser &parser, uint16_t range_start use disassembly to test for likely matches. */ - Storage::Encodings::MFM::Sector *sector = parser.get_sector(0, 0, 1); + const Storage::Encodings::MFM::Sector *sector = parser.sector(0, 0, 1); if(!sector) return false; if(sector->samples.empty()) return false; diff --git a/Analyser/Static/ZXSpectrum/StaticAnalyser.cpp b/Analyser/Static/ZXSpectrum/StaticAnalyser.cpp index 27ce0d2f8..396c67f23 100644 --- a/Analyser/Static/ZXSpectrum/StaticAnalyser.cpp +++ b/Analyser/Static/ZXSpectrum/StaticAnalyser.cpp @@ -37,10 +37,10 @@ bool IsSpectrumDisk(const std::shared_ptr &disk) { // Get logical sector 1; the Spectrum appears to support various physical // sectors as sector 1. - Storage::Encodings::MFM::Sector *boot_sector = nullptr; + const Storage::Encodings::MFM::Sector *boot_sector = nullptr; uint8_t sector_mask = 0; while(!boot_sector) { - boot_sector = parser.get_sector(0, 0, sector_mask + 1); + boot_sector = parser.sector(0, 0, sector_mask + 1); sector_mask += 0x40; if(!sector_mask) break; } diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme index 474fa352e..19b54b90e 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme +++ b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme @@ -62,7 +62,7 @@ &disk) : disk_(disk), density_(density) {} -void Parser::install_sectors_from_track(const Storage::Disk::Track::Address &address) { +void Parser::install_track(const Storage::Disk::Track::Address &address) { if(sectors_by_address_by_track_.find(address) != sectors_by_address_by_track_.end()) { return; } - std::shared_ptr track = disk_->get_track_at_position(address); + const auto track = disk_->get_track_at_position(address); if(!track) { return; } @@ -38,16 +38,16 @@ void Parser::install_sectors_from_track(const Storage::Disk::Track::Address &add sectors_by_address_by_track_.insert(std::make_pair(address, std::move(sectors_by_id))); } -Sector *Parser::get_sector(int head, int track, uint8_t sector) { - Disk::Track::Address address(head, Storage::Disk::HeadPosition(track)); - install_sectors_from_track(address); +const Sector *Parser::sector(int head, int track, uint8_t sector) { + const Disk::Track::Address address(head, Storage::Disk::HeadPosition(track)); + install_track(address); - auto sectors = sectors_by_address_by_track_.find(address); + const auto sectors = sectors_by_address_by_track_.find(address); if(sectors == sectors_by_address_by_track_.end()) { return nullptr; } - auto stored_sector = sectors->second.find(sector); + const auto stored_sector = sectors->second.find(sector); if(stored_sector == sectors->second.end()) { return nullptr; } diff --git a/Storage/Disk/Encodings/MFM/Parser.hpp b/Storage/Disk/Encodings/MFM/Parser.hpp index 4971459c8..50cd35910 100644 --- a/Storage/Disk/Encodings/MFM/Parser.hpp +++ b/Storage/Disk/Encodings/MFM/Parser.hpp @@ -29,14 +29,20 @@ class Parser { @returns a sector if one was found; @c nullptr otherwise. */ - Storage::Encodings::MFM::Sector *get_sector(int head, int track, uint8_t sector); + const Storage::Encodings::MFM::Sector *sector(int head, int track, uint8_t sector); private: std::shared_ptr disk_; Density density_ = Density::Double; - void install_sectors_from_track(const Storage::Disk::Track::Address &address); - std::map> sectors_by_address_by_track_; + void install_track(const Storage::Disk::Track::Address &address); + + // Maps from a track address, i.e. head and position, to a map from + // sector IDs to sectors. + std::map< + Storage::Disk::Track::Address, + std::map + > sectors_by_address_by_track_; }; } diff --git a/Storage/Disk/Parsers/CPM.cpp b/Storage/Disk/Parsers/CPM.cpp index 2b47f992b..b6a757091 100644 --- a/Storage/Disk/Parsers/CPM.cpp +++ b/Storage/Disk/Parsers/CPM.cpp @@ -29,7 +29,7 @@ std::unique_ptr Storage::Disk::CPM::GetCatalogue( if(catalogue_allocation_bitmap & 0x8000) { std::size_t size_read = 0; do { - Storage::Encodings::MFM::Sector *sector_contents = parser.get_sector(0, uint8_t(track), uint8_t(parameters.first_sector + sector)); + const Storage::Encodings::MFM::Sector *sector_contents = parser.sector(0, uint8_t(track), uint8_t(parameters.first_sector + sector)); if(!sector_contents || sector_contents->samples.empty()) { return nullptr; } @@ -138,7 +138,7 @@ std::unique_ptr Storage::Disk::CPM::GetCatalogue( track = first_sector / parameters.sectors_per_track; for(int s = 0; s < sectors_per_block && record < number_of_records; s++) { - Storage::Encodings::MFM::Sector *sector_contents = parser.get_sector(0, uint8_t(track), uint8_t(parameters.first_sector + sector)); + const Storage::Encodings::MFM::Sector *sector_contents = parser.sector(0, uint8_t(track), uint8_t(parameters.first_sector + sector)); if(!sector_contents || sector_contents->samples.empty()) break; sector++; if(sector == parameters.sectors_per_track) { diff --git a/Storage/Disk/Parsers/FAT.cpp b/Storage/Disk/Parsers/FAT.cpp index 7b74216dd..d534a5139 100644 --- a/Storage/Disk/Parsers/FAT.cpp +++ b/Storage/Disk/Parsers/FAT.cpp @@ -80,7 +80,7 @@ std::optional FAT::GetVolume(const std::shared_ptrsamples.empty() || boot_sector->samples[0].size() < 512) { return std::nullopt; } @@ -108,8 +108,8 @@ std::optional FAT::GetVolume(const std::shared_ptrsamples.empty() || fat_sector->samples[0].size() != volume.bytes_per_sector) { return std::nullopt; } @@ -130,8 +130,8 @@ std::optional FAT::GetVolume(const std::shared_ptrsamples.empty() || sector->samples[0].size() != volume.bytes_per_sector) { return std::nullopt; } @@ -156,8 +156,8 @@ std::optional> FAT::GetFile(const std::shared_ptrsamples.empty() || sector_contents->samples[0].size() != volume.bytes_per_sector) { return std::nullopt; }