Fix XMM scanning on Mac x86.
[mono.git] / mcs / class / System.IO.Compression / SharpCompress / Writer / AbstractWriter.cs
1 using System;
2 using System.IO;
3 using SharpCompress.Common;
4
5 namespace SharpCompress.Writer
6 {
7     internal abstract class AbstractWriter : IWriter
8     {
9         private bool closeStream;
10         private bool isDisposed;
11
12         protected AbstractWriter(ArchiveType type)
13         {
14             this.WriterType = type;
15         }
16
17         protected void InitalizeStream(Stream stream, bool closeStream)
18         {
19             this.OutputStream = stream;
20             this.closeStream = closeStream;
21         }
22
23         protected Stream OutputStream { get; private set; }
24
25         public ArchiveType WriterType { get; private set; }
26
27         public abstract void Write(string filename, System.IO.Stream source, DateTime? modificationTime);
28
29         protected virtual void Dispose(bool isDisposing)
30         {
31             if (isDisposing && closeStream)
32             {
33                 OutputStream.Dispose();
34             }
35         }
36
37         public void Dispose()
38         {
39             if (!isDisposed)
40             {
41                 GC.SuppressFinalize(this);
42                 Dispose(true);
43                 isDisposed = true;
44             }
45         }
46
47         ~AbstractWriter()
48         {
49             if (!isDisposed)
50             {
51                 Dispose(false);
52                 isDisposed = true;
53             }
54         }
55     }
56 }