Browse Source

add ILuaPlatform

Akeit0 6 months ago
parent
commit
c6ceb50ca7
2 changed files with 47 additions and 0 deletions
  1. 25 0
      src/Lua/Platforms/ILuaPlatform.cs
  2. 22 0
      src/Lua/Platforms/LuaPlatform.cs

+ 25 - 0
src/Lua/Platforms/ILuaPlatform.cs

@@ -0,0 +1,25 @@
+using Lua.IO;
+
+namespace Lua.Platforms;
+
+/// <summary>
+/// Represents a complete platform configuration for Lua execution.
+/// Provides all platform-specific implementations in one cohesive package.
+/// </summary>
+public interface ILuaPlatform
+{
+    /// <summary>
+    /// Gets the file system implementation for this platform
+    /// </summary>
+    ILuaFileSystem FileSystem { get; }
+    
+    /// <summary>
+    /// Gets the operating system abstraction for this platform
+    /// </summary>
+    ILuaOperatingSystem OperatingSystem { get; }
+    
+    /// <summary>
+    /// Gets the standard I/O implementation for this platform
+    /// </summary>
+    ILuaStandardIO StandardIO { get; }
+}

+ 22 - 0
src/Lua/Platforms/LuaPlatform.cs

@@ -0,0 +1,22 @@
+using Lua.IO;
+using Lua.Loaders;
+
+namespace Lua.Platforms;
+
+/// <summary>
+///  Platform abstraction for Lua.
+/// </summary>
+/// <param name="FileSystem"></param>
+/// <param name="OperatingSystem"></param>
+/// <param name="StandardIO"></param>
+public sealed record LuaPlatform(ILuaFileSystem FileSystem , ILuaOperatingSystem OperatingSystem,ILuaStandardIO StandardIO): ILuaPlatform
+{
+    /// <summary>
+    /// Standard console platform implementation.
+    /// Uses real file system, console I/O, and system operations.
+    /// </summary>
+    public static  LuaPlatform Default => new( 
+        FileSystem: new FileSystem(),
+        OperatingSystem: new OperatingSystem(),
+        StandardIO:  new ConsoleStandardIO());
+}