aboutsummaryrefslogtreecommitdiff
path: root/src/platform/platform_factory.h
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2025-09-26 12:23:19 +0200
committersrdusr <trevorgray@srdusr.com>2025-09-26 12:23:19 +0200
commite4a0432383331e013808a97b7c24707e4ddc4726 (patch)
tree3ef4465be03bc7b92a0b048f02f76475045404b6 /src/platform/platform_factory.h
parent105732dde10b317a81d5a10a3f66b315d6f85015 (diff)
downloadsrdwm-e4a0432383331e013808a97b7c24707e4ddc4726.tar.gz
srdwm-e4a0432383331e013808a97b7c24707e4ddc4726.zip
Initial Commit
Diffstat (limited to 'src/platform/platform_factory.h')
-rw-r--r--src/platform/platform_factory.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/platform/platform_factory.h b/src/platform/platform_factory.h
new file mode 100644
index 0000000..24f7586
--- /dev/null
+++ b/src/platform/platform_factory.h
@@ -0,0 +1,37 @@
+#ifndef SRDWM_PLATFORM_FACTORY_H
+#define SRDWM_PLATFORM_FACTORY_H
+
+#include "platform.h"
+#include <memory>
+#include <string>
+#include <vector>
+
+// Platform factory for creating platform-specific implementations
+class PlatformFactory {
+public:
+ // Create platform with automatic detection
+ static std::unique_ptr<Platform> create_platform();
+
+ // Create specific platform by name
+ static std::unique_ptr<Platform> create_platform(const std::string& platform_name);
+
+ // Get list of available platforms
+ static std::vector<std::string> get_available_platforms();
+
+ // Get current platform name
+ static std::string get_current_platform();
+
+ // Check if platform is available
+ static bool is_platform_available(const std::string& platform_name);
+
+ // Print platform information
+ static void print_platform_info();
+
+private:
+ // Linux platform detection
+ static std::unique_ptr<Platform> detect_linux_platform();
+};
+
+#endif // SRDWM_PLATFORM_FACTORY_H
+
+