commit 27866bb7d75d00d6634bac250a826987b7cf2574
parent 3f3252bff3e60f384f48d34eb98a57105241eb11
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Wed, 1 May 2024 12:58:41 +0200
create base class for all future rom loaders
Diffstat:
5 files changed, 57 insertions(+), 35 deletions(-)
diff --git a/source/synthLib/CMakeLists.txt b/source/synthLib/CMakeLists.txt
@@ -26,6 +26,7 @@ set(SOURCES
plugin.cpp plugin.h
resampler.cpp resampler.h
resamplerInOut.cpp resamplerInOut.h
+ romLoader.cpp romLoader.h
sysexToMidi.cpp sysexToMidi.h
wavReader.cpp wavReader.h
wavTypes.h
diff --git a/source/synthLib/romLoader.cpp b/source/synthLib/romLoader.cpp
@@ -0,0 +1,38 @@
+#include "romLoader.h"
+
+#include "os.h"
+
+namespace synthLib
+{
+
+ std::vector<std::string> RomLoader::findFiles(const std::string& _extension, const size_t _minSize, const size_t _maxSize)
+ {
+ std::vector<std::string> results;
+
+ const auto path = synthLib::getModulePath();
+ synthLib::findFiles(results, path, _extension, _minSize, _maxSize);
+
+ const auto path2 = synthLib::getModulePath(false);
+ if(path2 != path)
+ synthLib::findFiles(results, path2, _extension, _minSize, _maxSize);
+
+ if(results.empty())
+ {
+ const auto path3 = synthLib::getCurrentDirectory();
+ if(path3 != path2 && path3 != path)
+ synthLib::findFiles(results, path, _extension, _minSize, _maxSize);
+ }
+
+ return results;
+ }
+
+ std::vector<std::string> RomLoader::findFiles(const std::string& _path, const std::string& _extension, size_t _minSize, size_t _maxSize)
+ {
+ if(_path.empty())
+ return findFiles(_extension, _minSize, _maxSize);
+
+ std::vector<std::string> results;
+ synthLib::findFiles(results, _path, _extension, _minSize, _maxSize);
+ return results;
+ }
+}
diff --git a/source/synthLib/romLoader.h b/source/synthLib/romLoader.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include <string>
+#include <vector>
+#include <cstddef>
+
+namespace synthLib
+{
+ class RomLoader
+ {
+ public:
+ static std::vector<std::string> findFiles(const std::string& _extension, size_t _minSize, size_t _maxSize);
+ static std::vector<std::string> findFiles(const std::string& _path, const std::string& _extension, size_t _minSize, size_t _maxSize);
+ };
+}
diff --git a/source/virusLib/romloader.cpp b/source/virusLib/romloader.cpp
@@ -80,37 +80,6 @@ namespace virusLib
return ROMFile::invalid();
}
- std::vector<std::string> ROMLoader::findFiles(const std::string& _extension, const size_t _minSize, const size_t _maxSize)
- {
- std::vector<std::string> results;
-
- const auto path = synthLib::getModulePath();
- synthLib::findFiles(results, path, _extension, _minSize, _maxSize);
-
- const auto path2 = synthLib::getModulePath(false);
- if(path2 != path)
- synthLib::findFiles(results, path2, _extension, _minSize, _maxSize);
-
- if(results.empty())
- {
- const auto path3 = synthLib::getCurrentDirectory();
- if(path3 != path2 && path3 != path)
- synthLib::findFiles(results, path, _extension, _minSize, _maxSize);
- }
-
- return results;
- }
-
- std::vector<std::string> ROMLoader::findFiles(const std::string& _path, const std::string& _extension, size_t _minSize, size_t _maxSize)
- {
- if(_path.empty())
- return findFiles(_extension, _minSize, _maxSize);
-
- std::vector<std::string> results;
- synthLib::findFiles(results, _path, _extension, _minSize, _maxSize);
- return results;
- }
-
ROMLoader::FileData ROMLoader::loadFile(const std::string& _name)
{
FileData data;
diff --git a/source/virusLib/romloader.h b/source/virusLib/romloader.h
@@ -2,9 +2,11 @@
#include "romfile.h"
+#include "../synthLib/romLoader.h"
+
namespace virusLib
{
- class ROMLoader
+ class ROMLoader : public synthLib::RomLoader
{
public:
enum FileType
@@ -31,9 +33,6 @@ namespace virusLib
static ROMFile findROM(const std::string& _filename, DeviceModel _model = DeviceModel::ABC);
private:
- static std::vector<std::string> findFiles(const std::string& _extension, size_t _minSize, size_t _maxSize);
- static std::vector<std::string> findFiles(const std::string& _path, const std::string& _extension, size_t _minSize, size_t _maxSize);
-
static FileData loadFile(const std::string& _name);
static DeviceModel detectModel(const std::vector<uint8_t>& _data);