mirror of
https://github.com/TomHarte/CLK.git
synced 2025-04-09 00:37:27 +00:00
Adds the ability to substitute a target during encoding.
This commit is contained in:
parent
3bfeebf2a1
commit
50348c9fe7
@ -241,12 +241,16 @@ template<class T> std::shared_ptr<Storage::Disk::Track>
|
||||
}
|
||||
|
||||
Encoder::Encoder(std::vector<bool> &target) :
|
||||
target_(target) {}
|
||||
target_(&target) {}
|
||||
|
||||
void Encoder::reset_target(std::vector<bool> &target) {
|
||||
target_ = ⌖
|
||||
}
|
||||
|
||||
void Encoder::output_short(uint16_t value) {
|
||||
uint16_t mask = 0x8000;
|
||||
while(mask) {
|
||||
target_.push_back(!!(value & mask));
|
||||
target_->push_back(!!(value & mask));
|
||||
mask >>= 1;
|
||||
}
|
||||
}
|
||||
|
@ -46,6 +46,8 @@ class Encoder {
|
||||
public:
|
||||
Encoder(std::vector<bool> &target);
|
||||
virtual ~Encoder() {}
|
||||
virtual void reset_target(std::vector<bool> &target);
|
||||
|
||||
virtual void add_byte(uint8_t input) = 0;
|
||||
virtual void add_index_address_mark() = 0;
|
||||
virtual void add_ID_address_mark() = 0;
|
||||
@ -60,7 +62,7 @@ class Encoder {
|
||||
CRC::CCITT crc_generator_;
|
||||
|
||||
private:
|
||||
std::vector<bool> &target_;
|
||||
std::vector<bool> *target_ = nullptr;
|
||||
};
|
||||
|
||||
std::unique_ptr<Encoder> GetMFMEncoder(std::vector<bool> &target);
|
||||
|
Loading…
x
Reference in New Issue
Block a user