Skip to content

Commit

Permalink
Merge pull request #379 from drewnoakes/bits
Browse files Browse the repository at this point in the history
Use IReadOnlyCollection, collection expressions
  • Loading branch information
drewnoakes authored Jan 27, 2024
2 parents 53efab2 + 1b90f44 commit 8a71b59
Show file tree
Hide file tree
Showing 22 changed files with 44 additions and 45 deletions.
2 changes: 1 addition & 1 deletion MetadataExtractor.Tests/TagDescriptorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public void GetDescription_SimplifiedLongCollections()
public void ConvertBytesToVersionString()
{
Assert.Null(TagDescriptor<MockDirectory>.ConvertBytesToVersionString(null, 1));
Assert.Null(TagDescriptor<MockDirectory>.ConvertBytesToVersionString(Array.Empty<int>(), 1));
Assert.Null(TagDescriptor<MockDirectory>.ConvertBytesToVersionString([], 1));

Assert.Equal("1.00", TagDescriptor<MockDirectory>.ConvertBytesToVersionString([0, 1, 0, 0], 2));
Assert.Equal(".100", TagDescriptor<MockDirectory>.ConvertBytesToVersionString([0, 1, 0, 0], 1));
Expand Down
2 changes: 1 addition & 1 deletion MetadataExtractor/Formats/Adobe/AdobeJpegReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public sealed class AdobeJpegReader : IJpegSegmentMetadataReader
{
public const string JpegSegmentPreamble = "Adobe";

ICollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.AppE];
IReadOnlyCollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.AppE];

public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
{
Expand Down
2 changes: 0 additions & 2 deletions MetadataExtractor/Formats/Exif/ExifDescriptorBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ protected ExifDescriptorBase(T directory)

public override string? GetDescription(int tagType)
{
// TODO order case blocks and corresponding methods in the same order as the TAG_* values are defined

#pragma warning disable format

return tagType switch
Expand Down
2 changes: 1 addition & 1 deletion MetadataExtractor/Formats/Exif/ExifReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public sealed class ExifReader : JpegSegmentWithPreambleMetadataReader
/// <summary>Exif data stored in JPEG files' APP1 segment are preceded by this six character preamble "Exif\0\0".</summary>
protected override ReadOnlySpan<byte> PreambleBytes => JpegSegmentPreamble;

public override ICollection<JpegSegmentType> SegmentTypes { get; } = [JpegSegmentType.App1];
public override IReadOnlyCollection<JpegSegmentType> SegmentTypes { get; } = [JpegSegmentType.App1];

protected override IEnumerable<Directory> Extract(byte[] segmentBytes, int preambleLength)
{
Expand Down
4 changes: 2 additions & 2 deletions MetadataExtractor/Formats/Flir/FlirReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class FlirReader : IJpegSegmentMetadataReader

private ReadOnlySpan<byte> PreambleBytes => "FLIR\0"u8;

public ICollection<JpegSegmentType> SegmentTypes { get; } = [JpegSegmentType.App1];
public IReadOnlyCollection<JpegSegmentType> SegmentTypes { get; } = [JpegSegmentType.App1];

public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
{
Expand All @@ -33,7 +33,7 @@ public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments
}

if (length == 0)
return Enumerable.Empty<Directory>();
return [];

var buffer = new byte[length];
using var merged = new MemoryStream(buffer);
Expand Down
4 changes: 2 additions & 2 deletions MetadataExtractor/Formats/Icc/IccReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public sealed class IccReader : IJpegSegmentMetadataReader
// NOTE the header is 14 bytes, while "ICC_PROFILE" is 11
private const int JpegSegmentPreambleLength = 14;

ICollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.App2];
IReadOnlyCollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.App2];

public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
{
Expand All @@ -32,7 +32,7 @@ public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments
var iccSegments = segments.Where(segment => segment.Span.StartsWith(JpegSegmentPreamble)).ToList();

if (iccSegments.Count == 0)
return Enumerable.Empty<Directory>();
return [];

byte[] buffer;
if (iccSegments.Count == 1)
Expand Down
2 changes: 1 addition & 1 deletion MetadataExtractor/Formats/Iptc/IptcReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public sealed class IptcReader : IJpegSegmentMetadataReader

internal const byte IptcMarkerByte = 0x1c;

ICollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.AppD];
IReadOnlyCollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.AppD];

public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
{
Expand Down
2 changes: 1 addition & 1 deletion MetadataExtractor/Formats/Jfif/JfifReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public sealed class JfifReader : JpegSegmentWithPreambleMetadataReader

protected override ReadOnlySpan<byte> PreambleBytes => JpegSegmentPreamble;

public override ICollection<JpegSegmentType> SegmentTypes { get; } = [JpegSegmentType.App0];
public override IReadOnlyCollection<JpegSegmentType> SegmentTypes { get; } = [JpegSegmentType.App0];

protected override IEnumerable<Directory> Extract(byte[] segmentBytes, int preambleLength)
{
Expand Down
2 changes: 1 addition & 1 deletion MetadataExtractor/Formats/Jfxx/JfxxReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public sealed class JfxxReader : JpegSegmentWithPreambleMetadataReader

protected override ReadOnlySpan<byte> PreambleBytes => JpegSegmentPreamble;

public override ICollection<JpegSegmentType> SegmentTypes { get; } = [JpegSegmentType.App0];
public override IReadOnlyCollection<JpegSegmentType> SegmentTypes { get; } = [JpegSegmentType.App0];

protected override IEnumerable<Directory> Extract(byte[] segmentBytes, int preambleLength)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public interface IJpegSegmentMetadataReader
/// <summary>
/// Gets the set of JPEG segment types that this reader is interested in.
/// </summary>
ICollection<JpegSegmentType> SegmentTypes { get; }
IReadOnlyCollection<JpegSegmentType> SegmentTypes { get; }

/// <summary>
/// Extracts metadata from all JPEG segments matching <see cref="SegmentTypes"/>.
Expand Down
2 changes: 1 addition & 1 deletion MetadataExtractor/Formats/Jpeg/JpegCommentReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace MetadataExtractor.Formats.Jpeg
/// <author>Drew Noakes https://drewnoakes.com</author>
public sealed class JpegCommentReader : IJpegSegmentMetadataReader
{
ICollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = new[] { JpegSegmentType.Com };
IReadOnlyCollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.Com];

/// <summary>Reads JPEG comments, returning each in a <see cref="JpegCommentDirectory"/>.</summary>
public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
Expand Down
2 changes: 1 addition & 1 deletion MetadataExtractor/Formats/Jpeg/JpegDhtReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace MetadataExtractor.Formats.Jpeg
/// <author>Kevin Mott https://github.com/kwhopper</author>
public sealed class JpegDhtReader : IJpegSegmentMetadataReader
{
ICollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = new[] { JpegSegmentType.Dht };
IReadOnlyCollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.Dht];

public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
{
Expand Down
2 changes: 1 addition & 1 deletion MetadataExtractor/Formats/Jpeg/JpegDnlReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace MetadataExtractor.Formats.Jpeg
/// <author>Kevin Mott https://github.com/kwhopper</author>
public sealed class JpegDnlReader : IJpegSegmentMetadataReader
{
ICollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = new[] { JpegSegmentType.Dnl };
IReadOnlyCollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.Dnl];

public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
{
Expand Down
6 changes: 3 additions & 3 deletions MetadataExtractor/Formats/Jpeg/JpegReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ namespace MetadataExtractor.Formats.Jpeg
/// <author>Darrell Silver http://www.darrellsilver.com</author>
public sealed class JpegReader : IJpegSegmentMetadataReader
{
ICollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = new HashSet<JpegSegmentType>
{
IReadOnlyCollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } =
[
// NOTE that some SOFn values do not exist
JpegSegmentType.Sof0, JpegSegmentType.Sof1, JpegSegmentType.Sof2, JpegSegmentType.Sof3,
JpegSegmentType.Sof5, JpegSegmentType.Sof6, JpegSegmentType.Sof7, JpegSegmentType.Sof9,
JpegSegmentType.Sof10, JpegSegmentType.Sof11, JpegSegmentType.Sof13, JpegSegmentType.Sof14,
JpegSegmentType.Sof15
};
];

public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ public abstract class JpegSegmentWithPreambleMetadataReader : IJpegSegmentMetada
{
protected abstract ReadOnlySpan<byte> PreambleBytes { get; }

public abstract ICollection<JpegSegmentType> SegmentTypes { get; }
public abstract IReadOnlyCollection<JpegSegmentType> SegmentTypes { get; }

public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
{
Expand Down
2 changes: 1 addition & 1 deletion MetadataExtractor/Formats/Photoshop/DuckyReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public sealed class DuckyReader : IJpegSegmentMetadataReader
{
public static ReadOnlySpan<byte> JpegSegmentPreamble => "Ducky"u8;

ICollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.AppC];
IReadOnlyCollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.AppC];

public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
{
Expand Down
4 changes: 2 additions & 2 deletions MetadataExtractor/Formats/Photoshop/PhotoshopReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public sealed class PhotoshopReader : JpegSegmentWithPreambleMetadataReader

protected override ReadOnlySpan<byte> PreambleBytes => JpegSegmentPreamble;

public override ICollection<JpegSegmentType> SegmentTypes { get; } = [JpegSegmentType.AppD];
public override IReadOnlyCollection<JpegSegmentType> SegmentTypes { get; } = [JpegSegmentType.AppD];

protected override IEnumerable<Directory> Extract(byte[] segmentBytes, int preambleLength)
{
Expand All @@ -33,7 +33,7 @@ protected override IEnumerable<Directory> Extract(byte[] segmentBytes, int pream
length: segmentBytes.Length - preambleLength - 1);
}

return Enumerable.Empty<Directory>();
return [];
}

public IReadOnlyList<Directory> Extract(SequentialReader reader, int length)
Expand Down
2 changes: 1 addition & 1 deletion MetadataExtractor/Formats/Xmp/XmpReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public sealed class XmpReader : IJpegSegmentMetadataReader
public static ReadOnlySpan<byte> JpegSegmentPreamble => "http://ns.adobe.com/xap/1.0/\0"u8;
public static ReadOnlySpan<byte> JpegSegmentPreambleExtension => "http://ns.adobe.com/xmp/extension/\0"u8;

ICollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.App1];
IReadOnlyCollection<JpegSegmentType> IJpegSegmentMetadataReader.SegmentTypes { get; } = [JpegSegmentType.App1];

public IEnumerable<Directory> ReadJpegSegments(IEnumerable<JpegSegment> segments)
{
Expand Down
14 changes: 7 additions & 7 deletions MetadataExtractor/PublicAPI/net45/PublicAPI.Shipped.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
abstract MetadataExtractor.Directory.Name.get -> string!
abstract MetadataExtractor.Formats.Jpeg.JpegSegmentWithPreambleMetadataReader.Extract(byte[]! segmentBytes, int preambleLength) -> System.Collections.Generic.IEnumerable<MetadataExtractor.Directory!>!
abstract MetadataExtractor.Formats.Jpeg.JpegSegmentWithPreambleMetadataReader.PreambleBytes.get -> System.ReadOnlySpan<byte>
abstract MetadataExtractor.Formats.Jpeg.JpegSegmentWithPreambleMetadataReader.SegmentTypes.get -> System.Collections.Generic.ICollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
abstract MetadataExtractor.Formats.Jpeg.JpegSegmentWithPreambleMetadataReader.SegmentTypes.get -> System.Collections.Generic.IReadOnlyCollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
abstract MetadataExtractor.Formats.Riff.RiffChunkHandler<T>.MinSize.get -> int
abstract MetadataExtractor.Formats.Riff.RiffChunkHandler<T>.Populate(T! directory, byte[]! payload) -> void
abstract MetadataExtractor.Formats.Riff.RiffHandler.ShouldAcceptList(string! fourCc) -> bool
Expand Down Expand Up @@ -3240,7 +3240,7 @@ MetadataExtractor.Formats.Flir.FlirReader.ExtractRawThermalImage.get -> bool
MetadataExtractor.Formats.Flir.FlirReader.ExtractRawThermalImage.set -> void
MetadataExtractor.Formats.Flir.FlirReader.FlirReader() -> void
MetadataExtractor.Formats.Flir.FlirReader.ReadJpegSegments(System.Collections.Generic.IEnumerable<MetadataExtractor.Formats.Jpeg.JpegSegment!>! segments) -> System.Collections.Generic.IEnumerable<MetadataExtractor.Directory!>!
MetadataExtractor.Formats.Flir.FlirReader.SegmentTypes.get -> System.Collections.Generic.ICollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
MetadataExtractor.Formats.Flir.FlirReader.SegmentTypes.get -> System.Collections.Generic.IReadOnlyCollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
MetadataExtractor.Formats.GeoTiff.GeoTiffDescriptor
MetadataExtractor.Formats.GeoTiff.GeoTiffDescriptor.GeoTiffDescriptor(MetadataExtractor.Formats.GeoTiff.GeoTiffDirectory! directory) -> void
MetadataExtractor.Formats.GeoTiff.GeoTiffDescriptor.GetChartFormatDescription() -> string?
Expand Down Expand Up @@ -3415,7 +3415,7 @@ MetadataExtractor.Formats.Jpeg.HuffmanTablesDirectory.IsOptimized() -> bool
MetadataExtractor.Formats.Jpeg.HuffmanTablesDirectory.IsTypical() -> bool
MetadataExtractor.Formats.Jpeg.IJpegSegmentMetadataReader
MetadataExtractor.Formats.Jpeg.IJpegSegmentMetadataReader.ReadJpegSegments(System.Collections.Generic.IEnumerable<MetadataExtractor.Formats.Jpeg.JpegSegment!>! segments) -> System.Collections.Generic.IEnumerable<MetadataExtractor.Directory!>!
MetadataExtractor.Formats.Jpeg.IJpegSegmentMetadataReader.SegmentTypes.get -> System.Collections.Generic.ICollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
MetadataExtractor.Formats.Jpeg.IJpegSegmentMetadataReader.SegmentTypes.get -> System.Collections.Generic.IReadOnlyCollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
MetadataExtractor.Formats.Jpeg.JpegCommentDescriptor
MetadataExtractor.Formats.Jpeg.JpegCommentDescriptor.GetJpegCommentDescription() -> string?
MetadataExtractor.Formats.Jpeg.JpegCommentDescriptor.JpegCommentDescriptor(MetadataExtractor.Formats.Jpeg.JpegCommentDirectory! directory) -> void
Expand Down Expand Up @@ -4092,7 +4092,7 @@ override MetadataExtractor.Formats.Exif.ExifDescriptorBase<T>.GetDescription(int
override MetadataExtractor.Formats.Exif.ExifIfd0Directory.Name.get -> string!
override MetadataExtractor.Formats.Exif.ExifImageDirectory.Name.get -> string!
override MetadataExtractor.Formats.Exif.ExifInteropDirectory.Name.get -> string!
override MetadataExtractor.Formats.Exif.ExifReader.SegmentTypes.get -> System.Collections.Generic.ICollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
override MetadataExtractor.Formats.Exif.ExifReader.SegmentTypes.get -> System.Collections.Generic.IReadOnlyCollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
override MetadataExtractor.Formats.Exif.ExifSubIfdDirectory.Name.get -> string!
override MetadataExtractor.Formats.Exif.ExifThumbnailDescriptor.GetDescription(int tagType) -> string?
override MetadataExtractor.Formats.Exif.ExifThumbnailDirectory.Name.get -> string!
Expand Down Expand Up @@ -4205,10 +4205,10 @@ override MetadataExtractor.Formats.Iptc.IptcDescriptor.GetDescription(int tagTyp
override MetadataExtractor.Formats.Iptc.IptcDirectory.Name.get -> string!
override MetadataExtractor.Formats.Jfif.JfifDescriptor.GetDescription(int tagType) -> string?
override MetadataExtractor.Formats.Jfif.JfifDirectory.Name.get -> string!
override MetadataExtractor.Formats.Jfif.JfifReader.SegmentTypes.get -> System.Collections.Generic.ICollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
override MetadataExtractor.Formats.Jfif.JfifReader.SegmentTypes.get -> System.Collections.Generic.IReadOnlyCollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
override MetadataExtractor.Formats.Jfxx.JfxxDescriptor.GetDescription(int tagType) -> string?
override MetadataExtractor.Formats.Jfxx.JfxxDirectory.Name.get -> string!
override MetadataExtractor.Formats.Jfxx.JfxxReader.SegmentTypes.get -> System.Collections.Generic.ICollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
override MetadataExtractor.Formats.Jfxx.JfxxReader.SegmentTypes.get -> System.Collections.Generic.IReadOnlyCollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
override MetadataExtractor.Formats.Jpeg.HuffmanTablesDescriptor.GetDescription(int tagType) -> string?
override MetadataExtractor.Formats.Jpeg.HuffmanTablesDirectory.Name.get -> string!
override MetadataExtractor.Formats.Jpeg.JpegCommentDirectory.Name.get -> string!
Expand All @@ -4226,7 +4226,7 @@ override MetadataExtractor.Formats.Pcx.PcxDirectory.Name.get -> string!
override MetadataExtractor.Formats.Photoshop.DuckyDirectory.Name.get -> string!
override MetadataExtractor.Formats.Photoshop.PhotoshopDescriptor.GetDescription(int tagType) -> string?
override MetadataExtractor.Formats.Photoshop.PhotoshopDirectory.Name.get -> string!
override MetadataExtractor.Formats.Photoshop.PhotoshopReader.SegmentTypes.get -> System.Collections.Generic.ICollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
override MetadataExtractor.Formats.Photoshop.PhotoshopReader.SegmentTypes.get -> System.Collections.Generic.IReadOnlyCollection<MetadataExtractor.Formats.Jpeg.JpegSegmentType>!
override MetadataExtractor.Formats.Photoshop.PhotoshopTiffHandler.CustomProcessTag(in MetadataExtractor.Formats.Tiff.TiffReaderContext context, int tagId, int valueOffset, int byteCount) -> bool
override MetadataExtractor.Formats.Photoshop.PsdHeaderDescriptor.GetDescription(int tagType) -> string?
override MetadataExtractor.Formats.Photoshop.PsdHeaderDirectory.Name.get -> string!
Expand Down
Loading

0 comments on commit 8a71b59

Please sign in to comment.