From 51ccc8ea43af00e355728131779e65c38e06c8f1 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 8 Sep 2023 16:54:07 -0400 Subject: [PATCH] Add interfaces --- IByteSerializer.cs | 21 +++++++++++++++++++++ IFileSerializer.cs | 20 ++++++++++++++++++++ IModelSerializer.cs | 21 +++++++++++++++++++++ IStreamSerializer.cs | 22 ++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 IByteSerializer.cs create mode 100644 IFileSerializer.cs create mode 100644 IModelSerializer.cs create mode 100644 IStreamSerializer.cs diff --git a/IByteSerializer.cs b/IByteSerializer.cs new file mode 100644 index 00000000..b4afc3b7 --- /dev/null +++ b/IByteSerializer.cs @@ -0,0 +1,21 @@ +namespace SabreTools.Serialization +{ + /// + /// Defines how to serialize to and from byte arrays + /// + public interface IByteSerializer + { + /// + /// Deserialize a byte array into + /// + /// Type of object to deserialize to + /// Byte array to parse + /// Offset into the byte array + /// Filled object on success, null on error +#if NET48 + T Deserialize(byte[] data, int offset); +#else + T? Deserialize(byte[]? data, int offset); +#endif + } +} \ No newline at end of file diff --git a/IFileSerializer.cs b/IFileSerializer.cs new file mode 100644 index 00000000..7efa7913 --- /dev/null +++ b/IFileSerializer.cs @@ -0,0 +1,20 @@ +namespace SabreTools.Serialization +{ + /// + /// Defines how to serialize to and from files + /// + public interface IFileSerializer + { + /// + /// Deserialize a file into + /// + /// Type of object to deserialize to + /// Path to deserialize from + /// Filled object on success, null on error +#if NET48 + T Deserialize(string path); +#else + T? Deserialize(string? path); +#endif + } +} \ No newline at end of file diff --git a/IModelSerializer.cs b/IModelSerializer.cs new file mode 100644 index 00000000..0e902316 --- /dev/null +++ b/IModelSerializer.cs @@ -0,0 +1,21 @@ +namespace SabreTools.Serialization +{ + /// + /// Defines how to serialize to and from files + /// + public interface IFileSerializer + { + /// + /// Deserialize a into + /// + /// Type of object to deserialize from + /// Type of object to deserialize to + /// Object to deserialize from + /// Filled object on success, null on error +#if NET48 + U Deserialize(T obj); +#else + U? Deserialize(T? obj); +#endif + } +} \ No newline at end of file diff --git a/IStreamSerializer.cs b/IStreamSerializer.cs new file mode 100644 index 00000000..d6cfeb8f --- /dev/null +++ b/IStreamSerializer.cs @@ -0,0 +1,22 @@ +using System.IO; + +namespace SabreTools.Serialization +{ + /// + /// Defines how to serialize to and from Streams + /// + public interface IStreamSerializer + { + /// + /// Deserialize a Stream into + /// + /// Type of object to deserialize to + /// Stream to parse + /// Filled object on success, null on error +#if NET48 + T Deserialize(Stream data); +#else + T? Deserialize(Stream? data); +#endif + } +} \ No newline at end of file