diff --git a/DiscImageChef.CommonTypes.csproj b/DiscImageChef.CommonTypes.csproj
index 0b59767..777c64f 100644
--- a/DiscImageChef.CommonTypes.csproj
+++ b/DiscImageChef.CommonTypes.csproj
@@ -74,11 +74,13 @@
+
+
@@ -96,6 +98,8 @@
+
+
diff --git a/Interfaces/ITapeImage.cs b/Interfaces/ITapeImage.cs
new file mode 100644
index 0000000..f6fd87c
--- /dev/null
+++ b/Interfaces/ITapeImage.cs
@@ -0,0 +1,56 @@
+// /***************************************************************************
+// The Disc Image Chef
+// ----------------------------------------------------------------------------
+//
+// Filename : ITapeImage.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Disc image plugins.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines interface to be implemented by block addressable sequential tape
+// image plugins.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2019 Natalia Portillo
+// ****************************************************************************/
+
+using System.Collections.Generic;
+using DiscImageChef.CommonTypes.Structs;
+
+namespace DiscImageChef.CommonTypes.Interfaces
+{
+ public interface ITapeImage : IMediaImage
+ {
+ ///
+ /// Gets a list of all the files registered in the image
+ ///
+ List Files { get; }
+ ///
+ /// Gets a list of all the partitions registered in the image
+ ///
+ List Partitions { get; }
+ }
+}
\ No newline at end of file
diff --git a/Interfaces/IWritableTapeImage.cs b/Interfaces/IWritableTapeImage.cs
new file mode 100644
index 0000000..4b31e57
--- /dev/null
+++ b/Interfaces/IWritableTapeImage.cs
@@ -0,0 +1,59 @@
+// /***************************************************************************
+// The Disc Image Chef
+// ----------------------------------------------------------------------------
+//
+// Filename : IWritableTapeImage.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Disc image plugins.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines interface to be implemented by writable block addressable
+// sequential tape image plugins.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2019 Natalia Portillo
+// ****************************************************************************/
+using DiscImageChef.CommonTypes.Structs;
+
+namespace DiscImageChef.CommonTypes.Interfaces
+{
+ public interface IWritableTapeImage : ITapeImage
+ {
+ ///
+ /// Registers a new file in the image
+ ///
+ /// Tape file descriptor
+ /// true if successful, false otherwise
+ bool AddFile(TapeFile file);
+
+ ///
+ /// Registers a new partition
+ ///
+ /// Tape partition descriptor
+ /// true if successful, false otherwise
+ bool AddPartition(TapePartition partition);
+ }
+}
\ No newline at end of file
diff --git a/Structs/TapeFile.cs b/Structs/TapeFile.cs
new file mode 100644
index 0000000..18d289a
--- /dev/null
+++ b/Structs/TapeFile.cs
@@ -0,0 +1,59 @@
+// /***************************************************************************
+// The Disc Image Chef
+// ----------------------------------------------------------------------------
+//
+// Filename : TapeFile.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Disc image plugins.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines a structure to hold information about a tape file object.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2019 Natalia Portillo
+// ****************************************************************************/
+namespace DiscImageChef.CommonTypes.Structs
+{
+ public struct TapeFile
+ {
+ ///
+ /// File number
+ ///
+ public uint File;
+ ///
+ /// Partition number
+ ///
+ public byte Partition;
+ ///
+ /// First block, inclusive, of the file
+ ///
+ public ulong FirstBlock;
+ ///
+ /// Last block, inclusive, of the file
+ ///
+ public ulong LastBlock;
+ }
+}
\ No newline at end of file
diff --git a/Structs/TapePartition.cs b/Structs/TapePartition.cs
new file mode 100644
index 0000000..658b7f7
--- /dev/null
+++ b/Structs/TapePartition.cs
@@ -0,0 +1,55 @@
+// /***************************************************************************
+// The Disc Image Chef
+// ----------------------------------------------------------------------------
+//
+// Filename : TapeFile.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Disc image plugins.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Defines a structure to hold information about a tape partition.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2019 Natalia Portillo
+// ****************************************************************************/
+namespace DiscImageChef.CommonTypes.Structs
+{
+ public struct TapePartition
+ {
+ ///
+ /// Partition number
+ ///
+ public uint Number;
+ ///
+ /// First block, inclusive, of the partition
+ ///
+ public ulong FirstBlock;
+ ///
+ /// Last block, inclusive, of the partition
+ ///
+ public ulong LastBlock;
+ }
+}
\ No newline at end of file