Added support for GSHAREDVT and DYNCALL on Windows x64 for full AOT builds.
[mono.git] / mcs / class / System.IO.Compression / SharpCompress / Archive / IArchive.cs
1 using System;
2 using System.Collections.Generic;
3 using SharpCompress.Common;
4 using SharpCompress.Reader;
5
6 namespace SharpCompress.Archive
7 {
8     internal interface IArchive : IDisposable
9     {
10         event EventHandler<ArchiveExtractionEventArgs<IArchiveEntry>> EntryExtractionBegin;
11         event EventHandler<ArchiveExtractionEventArgs<IArchiveEntry>> EntryExtractionEnd;
12
13         event EventHandler<CompressedBytesReadEventArgs> CompressedBytesRead;
14         event EventHandler<FilePartExtractionBeginEventArgs> FilePartExtractionBegin;
15
16         IEnumerable<IArchiveEntry> Entries { get; }
17         long TotalSize { get; }
18         IEnumerable<IVolume> Volumes { get; }
19
20         ArchiveType Type { get; }
21
22         /// <summary>
23         /// Use this method to extract all entries in an archive in order.
24         /// This is primarily for SOLID Rar Archives or 7Zip Archives as they need to be 
25         /// extracted sequentially for the best performance.
26         /// </summary>
27         /// <returns></returns>
28         IReader ExtractAllEntries();
29
30         /// <summary>
31         /// Archive is SOLID (this means the Archive saved bytes by reusing information which helps for archives containing many small files).
32         /// Rar Archives can be SOLID while all 7Zip archives are considered SOLID.
33         /// </summary>
34         bool IsSolid { get; }
35
36         /// <summary>
37         /// This checks to see if all the known entries have IsComplete = true
38         /// </summary>
39         bool IsComplete { get; }
40     }
41 }