diff options
Diffstat (limited to 'backends/fs/fs-factory-maker.cpp')
-rw-r--r-- | backends/fs/fs-factory-maker.cpp | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/backends/fs/fs-factory-maker.cpp b/backends/fs/fs-factory-maker.cpp new file mode 100644 index 0000000000..bae3d1a30a --- /dev/null +++ b/backends/fs/fs-factory-maker.cpp @@ -0,0 +1,113 @@ +#include "backends/fs/abstract-fs-factory.h" + +/* + * All the following includes choose, at compile time, which specific backend will be used + * during the execution of the ScummVM. + * + * It has to be done this way because not all the necessary libraries will be available in + * all build environments. Additionally, this results in smaller binaries. + */ +#if defined(__amigaos4__) + #include "backends/fs/amigaos4/amigaos4-fs-factory.cpp" +#endif + +#if defined(__DC__) + #include "backends/fs/dc/ronincd-fs-factory.cpp" +#endif + +#if defined(__DS__) + #include "backends/fs/ds/ds-fs-factory.cpp" +#endif + +#if defined(__GP32__) + #include "backends/fs/gp32/gp32-fs-factory.cpp" +#endif + +#if defined(__MORPHOS__) + #include "backends/fs/morphos/abox-fs-factory.cpp" +#endif + +#if defined(PALMOS_MODE) + #include "backends/fs/palmos/palmos-fs-factory.cpp" +#endif + +#if defined(__PLAYSTATION2__) + #include "backends/fs/ps2/ps2-fs-factory.cpp" +#endif + +#if defined(__PSP__) + #include "backends/fs/psp/psp-fs-factory.cpp" +#endif + +#if defined(__SYMBIAN32__) + #include "backends/fs/symbian/symbian-fs-factory.cpp" +#endif + +#if defined(UNIX) + #include "backends/fs/posix/posix-fs-factory.cpp" +#endif + +#if defined(WIN32) + #include "backends/fs/windows/windows-fs-factory.cpp" +#endif + +/** + * Creates concrete FilesystemFactory objects depending on the current architecture. + */ +class FilesystemFactoryMaker { +public: + + /** + * Returns the correct concrete factory depending on the current build architecture. + */ + static AbstractFilesystemFactory *makeFactory(); + +protected: + FilesystemFactoryMaker() {}; // avoid instances of this class +}; + +AbstractFilesystemFactory *FilesystemFactoryMaker::makeFactory(){ + #if defined(__amigaos4__) + return &AmigaOSFilesystemFactory::instance(); + #endif + + #if defined(__DC__) + return &RoninCDFilesystemFactory::instance(); + #endif + + #if defined(__DS__) + return &DSFilesystemFactory::instance(); + #endif + + #if defined(__GP32__) + return &GP32FilesystemFactory::instance(); + #endif + + #if defined(__MORPHOS__) + return &ABoxFilesystemFactory::instance(); + #endif + + #if defined(PALMOS_MODE) + return &PalmOSFilesystemFactory::instance(); + #endif + + #if defined(__PLAYSTATION2__) + return &Ps2FilesystemFactory::instance(); + #endif + + #if defined(__PSP__) + return &PSPFilesystemFactory::instance(); + #endif + + #if defined(__SYMBIAN32__) + return &SymbianFilesystemFactory::instance(); + #endif + + #if defined(UNIX) + return &POSIXFilesystemFactory::instance(); + #endif + + #if defined(WIN32) + return &WindowsFilesystemFactory::instance(); + #endif +} |