From 63ee8c9d58aa7e8549116ec35a978f04329365f5 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 27 Aug 2017 15:20:58 -0400 Subject: [PATCH] Uses file containers' type distinguishers where available, and supplies potential insight to the ZX80/81 analyser as now required. --- StaticAnalyser/StaticAnalyser.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/StaticAnalyser/StaticAnalyser.cpp b/StaticAnalyser/StaticAnalyser.cpp index 68b6fdb8a..339d4fa96 100644 --- a/StaticAnalyser/StaticAnalyser.cpp +++ b/StaticAnalyser/StaticAnalyser.cpp @@ -63,6 +63,8 @@ static Media GetMediaAndPlatforms(const char *file_name, TargetPlatform::IntType #define Insert(list, class, platforms) \ list.emplace_back(new Storage::class(file_name));\ potential_platforms |= platforms;\ + TargetPlatform::TypeDistinguisher *distinguisher = dynamic_cast(list.back().get());\ + if(distinguisher) potential_platforms &= distinguisher->target_platform_type(); #define TryInsert(list, class, platforms) \ try {\ @@ -115,6 +117,8 @@ static Media GetMediaAndPlatforms(const char *file_name, TargetPlatform::IntType #undef Insert #undef TryInsert + // Filter potential platforms as per file preferences, if any. + free(lowercase_extension); } @@ -141,7 +145,7 @@ std::list StaticAnalyser::GetTargets(const char *file_name) { if(potential_platforms & TargetPlatform::Atari2600) Atari::AddTargets(media, targets); if(potential_platforms & TargetPlatform::Commodore) Commodore::AddTargets(media, targets); if(potential_platforms & TargetPlatform::Oric) Oric::AddTargets(media, targets); - if(potential_platforms & TargetPlatform::ZX8081) ZX8081::AddTargets(media, targets); + if(potential_platforms & TargetPlatform::ZX8081) ZX8081::AddTargets(media, targets, potential_platforms); // Reset any tapes to their initial position for(auto target : targets) {