// // Parser.hpp // Clock Signal // // Created by Thomas Harte on 24/09/2017. // Copyright 2017 Thomas Harte. All rights reserved. // #ifndef Parser_hpp #define Parser_hpp #include "Sector.hpp" #include "../../Track/Track.hpp" #include "../../Drive.hpp" namespace Storage { namespace Encodings { namespace MFM { /*! Provides a mechanism for collecting sectors from a disk. */ class Parser { public: Parser(bool is_mfm, const std::shared_ptr &disk); /*! Seeks to the physical track at @c head and @c track. Searches on it for a sector with logical address @c sector. @returns a sector if one was found; @c nullptr otherwise. */ Storage::Encodings::MFM::Sector *get_sector(int head, int track, uint8_t sector); private: std::shared_ptr disk_; bool is_mfm_ = true; void install_sectors_from_track(const Storage::Disk::Track::Address &address); std::map> sectors_by_address_by_track_; }; } } } #endif /* Parser_hpp */