diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme
index 2787530a5..a9a61567e 100644
--- a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme
+++ b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme
@@ -125,7 +125,7 @@
isEnabled = "NO">
diff --git a/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm b/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm
index 96bdc5d31..0d33f1ea1 100644
--- a/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm
+++ b/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm
@@ -132,10 +132,10 @@ struct ActivityObserver: public Activity::Observer {
_analyser = result;
Machine::Error error;
- std::vector missing_roms;
+ ROM::Request missing_roms;
_machine.reset(Machine::MachineForTargets(_analyser.targets, CSROMFetcher(&missing_roms), error));
if(!_machine) {
- for(const auto &missing_rom : missing_roms) {
+/* for(const auto &missing_rom : missing_roms) {
CSMissingROM *rom = [[CSMissingROM alloc] init];
// Copy/convert the primitive fields.
@@ -153,7 +153,7 @@ struct ActivityObserver: public Activity::Observer {
// Add to the missing list.
[missingROMs addObject:rom];
- }
+ }*/
return nil;
}
diff --git a/OSBindings/Mac/Clock Signal/Machine/CSROMFetcher.hpp b/OSBindings/Mac/Clock Signal/Machine/CSROMFetcher.hpp
index f1d039ade..bd00e601e 100644
--- a/OSBindings/Mac/Clock Signal/Machine/CSROMFetcher.hpp
+++ b/OSBindings/Mac/Clock Signal/Machine/CSROMFetcher.hpp
@@ -8,4 +8,4 @@
#include "ROMMachine.hpp"
-ROMMachine::ROMFetcher CSROMFetcher(std::vector *missing_roms = nullptr);
+ROMMachine::ROMFetcher CSROMFetcher(ROM::Request *missing = nullptr);
diff --git a/OSBindings/Mac/Clock Signal/Machine/CSROMFetcher.mm b/OSBindings/Mac/Clock Signal/Machine/CSROMFetcher.mm
index b1f36c455..0dce4fdb2 100644
--- a/OSBindings/Mac/Clock Signal/Machine/CSROMFetcher.mm
+++ b/OSBindings/Mac/Clock Signal/Machine/CSROMFetcher.mm
@@ -14,46 +14,41 @@
#include
-ROMMachine::ROMFetcher CSROMFetcher(std::vector *missing_roms) {
- return [missing_roms] (const std::vector &roms) -> std::vector>> {
+ROMMachine::ROMFetcher CSROMFetcher(ROM::Request *missing) {
+ return [missing] (const ROM::Request &roms) -> ROM::Map {
NSArray *const supportURLs = [[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask];
- std::vector>> results;
- for(const auto &rom: roms) {
- NSData *fileData;
- NSString *const subdirectory = [@"ROMImages/" stringByAppendingString:[NSString stringWithUTF8String:rom.machine_name.c_str()]];
+ ROM::Map results;
+ for(const auto &description: roms.all_descriptions()) {
+ for(const auto &file_name: description.file_names) {
+ NSData *fileData;
+ NSString *const subdirectory = [@"ROMImages/" stringByAppendingString:[NSString stringWithUTF8String:description.machine_name.c_str()]];
- // Check for this file first within the application support directories.
- for(NSURL *supportURL in supportURLs) {
- NSURL *const fullURL = [[supportURL URLByAppendingPathComponent:subdirectory]
- URLByAppendingPathComponent:[NSString stringWithUTF8String:rom.file_name.c_str()]];
- fileData = [NSData dataWithContentsOfURL:fullURL];
- if(fileData) break;
- }
+ // Check for this file first within the application support directories.
+ for(NSURL *supportURL in supportURLs) {
+ NSURL *const fullURL = [[supportURL URLByAppendingPathComponent:subdirectory]
+ URLByAppendingPathComponent:[NSString stringWithUTF8String:file_name.c_str()]];
+ fileData = [NSData dataWithContentsOfURL:fullURL];
+ if(fileData) break;
+ }
- // Failing that, check inside the application bundle.
- if(!fileData) {
- fileData = [[NSBundle mainBundle]
- dataForResource:[NSString stringWithUTF8String:rom.file_name.c_str()]
- withExtension:nil
- subdirectory:subdirectory];
- }
+ // Failing that, check inside the application bundle.
+ if(!fileData) {
+ fileData = [[NSBundle mainBundle]
+ dataForResource:[NSString stringWithUTF8String:file_name.c_str()]
+ withExtension:nil
+ subdirectory:subdirectory];
+ }
- // Store an appropriate result, accumulating a list of the missing if requested.
- if(!fileData) {
- results.emplace_back(nullptr);
-
- if(missing_roms) {
- missing_roms->push_back(rom);
+ // Store an appropriate result.
+ if(fileData) {
+ results[description.name] = fileData.stdVector8;
}
}
- else {
- auto data = std::make_unique>();
- *data = fileData.stdVector8;
- results.emplace_back(std::move(data));
- }
}
+ // TODO: sever all found ROMs from roms and store to missing, if provided.
+
return results;
};
}