feat: Added eIcdFileMode for IO platform agnosticism

This commit is contained in:
Chris Cameron
2020-03-27 13:54:29 -04:00
parent a1775b281f
commit 5978d492cf
4 changed files with 50 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Added
- Added ToCollection extension method for copying an enumerable to a new collection
- TableBuilder supports multi-line content
- Added eIcdFileMode for IO platform agnosticism
## [11.0.0] - 2020-03-20
### Added

View File

@@ -126,6 +126,7 @@
<Compile Include="GuidUtils.cs" />
<Compile Include="IcdUriBuilder.cs" />
<Compile Include="IO\Compression\IcdZipEntry.cs" />
<Compile Include="IO\eIcdFileMode.cs" />
<Compile Include="IO\IcdBinaryReader.cs" />
<Compile Include="IO\eSeekOrigin.cs" />
<Compile Include="IO\IcdStreamWriter.cs" />

View File

@@ -78,9 +78,9 @@ namespace ICD.Common.Utils.IO
}
[PublicAPI]
public static IcdFileStream Open(string path, FileMode mode)
public static IcdFileStream Open(string path, eIcdFileMode mode)
{
return new IcdFileStream(File.Open(path, mode));
return new IcdFileStream(File.Open(path, mode.ToFileMode()));
}
[PublicAPI]

View File

@@ -0,0 +1,46 @@
using System;
#if SIMPLSHARP
using Crestron.SimplSharp.CrestronIO;
#else
using System.IO;
#endif
namespace ICD.Common.Utils.IO
{
/// <summary>
/// Specifies how the operating system should open a file.
/// </summary>
public enum eIcdFileMode
{
CreateNew = 1,
Create = 2,
Open = 3,
OpenOrCreate = 4,
Truncate = 5,
Append = 6,
}
public static class IcdFileModeExtensions
{
public static FileMode ToFileMode(this eIcdFileMode extends)
{
switch (extends)
{
case eIcdFileMode.CreateNew:
return FileMode.CreateNew;
case eIcdFileMode.Create:
return FileMode.Create;
case eIcdFileMode.Open:
return FileMode.Open;
case eIcdFileMode.OpenOrCreate:
return FileMode.OpenOrCreate;
case eIcdFileMode.Truncate:
return FileMode.Truncate;
case eIcdFileMode.Append:
return FileMode.Append;
default:
throw new ArgumentOutOfRangeException("extends");
}
}
}
}