mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-19 23:29:05 +00:00
Makes the static analyser aware of mass-storage devices.
This commit is contained in:
parent
1c6720b0db
commit
5598802439
@ -10,10 +10,10 @@
|
|||||||
#include "Target.hpp"
|
#include "Target.hpp"
|
||||||
|
|
||||||
Analyser::Static::TargetList Analyser::Static::Macintosh::GetTargets(const Media &media, const std::string &file_name, TargetPlatform::IntType potential_platforms) {
|
Analyser::Static::TargetList Analyser::Static::Macintosh::GetTargets(const Media &media, const std::string &file_name, TargetPlatform::IntType potential_platforms) {
|
||||||
// This analyser can comprehend disks only.
|
// This analyser can comprehend disks and mass-storage devices only.
|
||||||
if(media.disks.empty()) return {};
|
if(media.disks.empty() && media.mass_storage_devices.empty()) return {};
|
||||||
|
|
||||||
// If there is at least one disk, wave it through.
|
// As there is at least one usable media image, wave it through.
|
||||||
Analyser::Static::TargetList targets;
|
Analyser::Static::TargetList targets;
|
||||||
|
|
||||||
using Target = Analyser::Static::Macintosh::Target;
|
using Target = Analyser::Static::Macintosh::Target;
|
||||||
|
@ -46,6 +46,9 @@
|
|||||||
#include "../../Storage/Disk/DiskImage/Formats/SSD.hpp"
|
#include "../../Storage/Disk/DiskImage/Formats/SSD.hpp"
|
||||||
#include "../../Storage/Disk/DiskImage/Formats/WOZ.hpp"
|
#include "../../Storage/Disk/DiskImage/Formats/WOZ.hpp"
|
||||||
|
|
||||||
|
// Mass Storage Devices (i.e. usually, hard disks)
|
||||||
|
#include "../../Storage/MassStorage/Formats/HFV.hpp"
|
||||||
|
|
||||||
// Tapes
|
// Tapes
|
||||||
#include "../../Storage/Tape/Formats/CAS.hpp"
|
#include "../../Storage/Tape/Formats/CAS.hpp"
|
||||||
#include "../../Storage/Tape/Formats/CommodoreTAP.hpp"
|
#include "../../Storage/Tape/Formats/CommodoreTAP.hpp"
|
||||||
@ -102,7 +105,8 @@ static Media GetMediaAndPlatforms(const std::string &file_name, TargetPlatform::
|
|||||||
Format("dsd", result.disks, Disk::DiskImageHolder<Storage::Disk::SSD>, TargetPlatform::Acorn) // DSD
|
Format("dsd", result.disks, Disk::DiskImageHolder<Storage::Disk::SSD>, TargetPlatform::Acorn) // DSD
|
||||||
Format("dsk", result.disks, Disk::DiskImageHolder<Storage::Disk::CPCDSK>, TargetPlatform::AmstradCPC) // DSK (Amstrad CPC)
|
Format("dsk", result.disks, Disk::DiskImageHolder<Storage::Disk::CPCDSK>, TargetPlatform::AmstradCPC) // DSK (Amstrad CPC)
|
||||||
Format("dsk", result.disks, Disk::DiskImageHolder<Storage::Disk::AppleDSK>, TargetPlatform::DiskII) // DSK (Apple II)
|
Format("dsk", result.disks, Disk::DiskImageHolder<Storage::Disk::AppleDSK>, TargetPlatform::DiskII) // DSK (Apple II)
|
||||||
Format("dsk", result.disks, Disk::DiskImageHolder<Storage::Disk::MacintoshIMG>, TargetPlatform::Macintosh) // DSK (Macintosh)
|
Format("dsk", result.disks, Disk::DiskImageHolder<Storage::Disk::MacintoshIMG>, TargetPlatform::Macintosh) // DSK (Macintosh, floppy disk)
|
||||||
|
Format("dsk", result.mass_storage_devices, MassStorage::HFV, TargetPlatform::Macintosh) // DSK (Macintosh, hard disk)
|
||||||
Format("dsk", result.disks, Disk::DiskImageHolder<Storage::Disk::MSXDSK>, TargetPlatform::MSX) // DSK (MSX)
|
Format("dsk", result.disks, Disk::DiskImageHolder<Storage::Disk::MSXDSK>, TargetPlatform::MSX) // DSK (MSX)
|
||||||
Format("dsk", result.disks, Disk::DiskImageHolder<Storage::Disk::OricMFMDSK>, TargetPlatform::Oric) // DSK (Oric)
|
Format("dsk", result.disks, Disk::DiskImageHolder<Storage::Disk::OricMFMDSK>, TargetPlatform::Oric) // DSK (Oric)
|
||||||
Format("g64", result.disks, Disk::DiskImageHolder<Storage::Disk::G64>, TargetPlatform::Commodore) // G64
|
Format("g64", result.disks, Disk::DiskImageHolder<Storage::Disk::G64>, TargetPlatform::Commodore) // G64
|
||||||
@ -160,7 +164,7 @@ Media Analyser::Static::GetMedia(const std::string &file_name) {
|
|||||||
TargetList Analyser::Static::GetTargets(const std::string &file_name) {
|
TargetList Analyser::Static::GetTargets(const std::string &file_name) {
|
||||||
TargetList targets;
|
TargetList targets;
|
||||||
|
|
||||||
// Collect all disks, tapes and ROMs as can be extrapolated from this file, forming the
|
// Collect all disks, tapes ROMs, etc as can be extrapolated from this file, forming the
|
||||||
// union of all platforms this file might be a target for.
|
// union of all platforms this file might be a target for.
|
||||||
TargetPlatform::IntType potential_platforms = 0;
|
TargetPlatform::IntType potential_platforms = 0;
|
||||||
Media media = GetMediaAndPlatforms(file_name, potential_platforms);
|
Media media = GetMediaAndPlatforms(file_name, potential_platforms);
|
||||||
|
@ -11,9 +11,10 @@
|
|||||||
|
|
||||||
#include "../Machines.hpp"
|
#include "../Machines.hpp"
|
||||||
|
|
||||||
#include "../../Storage/Tape/Tape.hpp"
|
|
||||||
#include "../../Storage/Disk/Disk.hpp"
|
|
||||||
#include "../../Storage/Cartridge/Cartridge.hpp"
|
#include "../../Storage/Cartridge/Cartridge.hpp"
|
||||||
|
#include "../../Storage/Disk/Disk.hpp"
|
||||||
|
#include "../../Storage/MassStorage/MassStorageDevice.hpp"
|
||||||
|
#include "../../Storage/Tape/Tape.hpp"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -29,9 +30,10 @@ struct Media {
|
|||||||
std::vector<std::shared_ptr<Storage::Disk::Disk>> disks;
|
std::vector<std::shared_ptr<Storage::Disk::Disk>> disks;
|
||||||
std::vector<std::shared_ptr<Storage::Tape::Tape>> tapes;
|
std::vector<std::shared_ptr<Storage::Tape::Tape>> tapes;
|
||||||
std::vector<std::shared_ptr<Storage::Cartridge::Cartridge>> cartridges;
|
std::vector<std::shared_ptr<Storage::Cartridge::Cartridge>> cartridges;
|
||||||
|
std::vector<std::shared_ptr<Storage::MassStorage::MassStorageDevice>> mass_storage_devices;
|
||||||
|
|
||||||
bool empty() const {
|
bool empty() const {
|
||||||
return disks.empty() && tapes.empty() && cartridges.empty();
|
return disks.empty() && tapes.empty() && cartridges.empty() && mass_storage_devices.empty();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user