From 90a39696ffdf2d6075586f4f9d1d5e93609408bd Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Thu, 21 Sep 2017 18:31:17 +0100 Subject: [PATCH] Added support to get the start of an extent from any item in them. --- DiscImageChef.Helpers/Extents/ExtentsByte.cs | 14 ++++++++++++++ DiscImageChef.Helpers/Extents/ExtentsInt.cs | 14 ++++++++++++++ DiscImageChef.Helpers/Extents/ExtentsLong.cs | 14 ++++++++++++++ DiscImageChef.Helpers/Extents/ExtentsSByte.cs | 14 ++++++++++++++ DiscImageChef.Helpers/Extents/ExtentsShort.cs | 14 ++++++++++++++ DiscImageChef.Helpers/Extents/ExtentsUInt.cs | 14 ++++++++++++++ DiscImageChef.Helpers/Extents/ExtentsULong.cs | 14 ++++++++++++++ DiscImageChef.Helpers/Extents/ExtentsUShort.cs | 14 ++++++++++++++ 8 files changed, 112 insertions(+) diff --git a/DiscImageChef.Helpers/Extents/ExtentsByte.cs b/DiscImageChef.Helpers/Extents/ExtentsByte.cs index 2e6717a9..a4ac1914 100644 --- a/DiscImageChef.Helpers/Extents/ExtentsByte.cs +++ b/DiscImageChef.Helpers/Extents/ExtentsByte.cs @@ -201,5 +201,19 @@ namespace Extents { return backend.ToArray(); } + + public bool GetStart(byte item, out byte start) + { + start = 0; + foreach(Tuple extent in backend) + { + if(item >= extent.Item1 && item <= extent.Item2) + { + start = extent.Item1; + return true; + } + } + return false; + } } } diff --git a/DiscImageChef.Helpers/Extents/ExtentsInt.cs b/DiscImageChef.Helpers/Extents/ExtentsInt.cs index 91604f11..2b9d46fb 100644 --- a/DiscImageChef.Helpers/Extents/ExtentsInt.cs +++ b/DiscImageChef.Helpers/Extents/ExtentsInt.cs @@ -201,5 +201,19 @@ namespace Extents { return backend.ToArray(); } + + public bool GetStart(int item, out int start) + { + start = 0; + foreach(Tuple extent in backend) + { + if(item >= extent.Item1 && item <= extent.Item2) + { + start = extent.Item1; + return true; + } + } + return false; + } } } diff --git a/DiscImageChef.Helpers/Extents/ExtentsLong.cs b/DiscImageChef.Helpers/Extents/ExtentsLong.cs index 11e1c7f0..eae4ca61 100644 --- a/DiscImageChef.Helpers/Extents/ExtentsLong.cs +++ b/DiscImageChef.Helpers/Extents/ExtentsLong.cs @@ -201,5 +201,19 @@ namespace Extents { return backend.ToArray(); } + + public bool GetStart(long item, out long start) + { + start = 0; + foreach(Tuple extent in backend) + { + if(item >= extent.Item1 && item <= extent.Item2) + { + start = extent.Item1; + return true; + } + } + return false; + } } } diff --git a/DiscImageChef.Helpers/Extents/ExtentsSByte.cs b/DiscImageChef.Helpers/Extents/ExtentsSByte.cs index bfc07ac9..25af736e 100644 --- a/DiscImageChef.Helpers/Extents/ExtentsSByte.cs +++ b/DiscImageChef.Helpers/Extents/ExtentsSByte.cs @@ -201,5 +201,19 @@ namespace Extents { return backend.ToArray(); } + + public bool GetStart(sbyte item, out sbyte start) + { + start = 0; + foreach(Tuple extent in backend) + { + if(item >= extent.Item1 && item <= extent.Item2) + { + start = extent.Item1; + return true; + } + } + return false; + } } } diff --git a/DiscImageChef.Helpers/Extents/ExtentsShort.cs b/DiscImageChef.Helpers/Extents/ExtentsShort.cs index f508ace8..079c3464 100644 --- a/DiscImageChef.Helpers/Extents/ExtentsShort.cs +++ b/DiscImageChef.Helpers/Extents/ExtentsShort.cs @@ -201,5 +201,19 @@ namespace Extents { return backend.ToArray(); } + + public bool GetStart(short item, out short start) + { + start = 0; + foreach(Tuple extent in backend) + { + if(item >= extent.Item1 && item <= extent.Item2) + { + start = extent.Item1; + return true; + } + } + return false; + } } } diff --git a/DiscImageChef.Helpers/Extents/ExtentsUInt.cs b/DiscImageChef.Helpers/Extents/ExtentsUInt.cs index 3d0988da..bd24b6db 100644 --- a/DiscImageChef.Helpers/Extents/ExtentsUInt.cs +++ b/DiscImageChef.Helpers/Extents/ExtentsUInt.cs @@ -201,5 +201,19 @@ namespace Extents { return backend.ToArray(); } + + public bool GetStart(uint item, out uint start) + { + start = 0; + foreach(Tuple extent in backend) + { + if(item >= extent.Item1 && item <= extent.Item2) + { + start = extent.Item1; + return true; + } + } + return false; + } } } diff --git a/DiscImageChef.Helpers/Extents/ExtentsULong.cs b/DiscImageChef.Helpers/Extents/ExtentsULong.cs index c9f45706..fcb7a40b 100644 --- a/DiscImageChef.Helpers/Extents/ExtentsULong.cs +++ b/DiscImageChef.Helpers/Extents/ExtentsULong.cs @@ -201,5 +201,19 @@ namespace Extents { return backend.ToArray(); } + + public bool GetStart(ulong item, out ulong start) + { + start = 0; + foreach(Tuple extent in backend) + { + if(item >= extent.Item1 && item <= extent.Item2) + { + start = extent.Item1; + return true; + } + } + return false; + } } } diff --git a/DiscImageChef.Helpers/Extents/ExtentsUShort.cs b/DiscImageChef.Helpers/Extents/ExtentsUShort.cs index 9f7da19b..3e019e2a 100644 --- a/DiscImageChef.Helpers/Extents/ExtentsUShort.cs +++ b/DiscImageChef.Helpers/Extents/ExtentsUShort.cs @@ -201,5 +201,19 @@ namespace Extents { return backend.ToArray(); } + + public bool GetStart(ushort item, out ushort start) + { + start = 0; + foreach(Tuple extent in backend) + { + if(item >= extent.Item1 && item <= extent.Item2) + { + start = extent.Item1; + return true; + } + } + return false; + } } }