ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/RomCheater/trunk/RomCheater/Serialization/SerializationReader.cs
(Generate patch)

Comparing trunk/RomCheater/Serialization/SerializationReader.cs (file contents):
Revision 401 by william, Thu Jun 21 05:14:38 2012 UTC vs.
Revision 402 by william, Thu Jun 21 06:30:33 2012 UTC

# Line 2 | Line 2
2   using System.Collections.Generic;
3   using System.Linq;
4   using System.Text;
5 + using System.IO;
6  
7   namespace RomCheater.Serialization
8   {
9 <    public class SerializationReader
9 >    public abstract class SerializationReader : ISerializationResultCount, IDisposable
10      {
11 +        private const string DEFAULT_FOLDER = "tmp";
12 +        private const string DEFAULT_FILENAME = "SerializedMemoryResults.tmp";
13 +        private static string DEFAULT_PATH = string.Format(@"{0}\{1}", DEFAULT_FOLDER, DEFAULT_FILENAME);
14 +        public SerializationReader() : this(DEFAULT_PATH) { }
15 +        protected SerializationReader(string filename) { FileName = filename; CreateReader(); }
16 +
17 +
18 +        #region ISerializationResultCount members
19 +        public int ResultCount { get; protected set; }
20 +        #endregion
21 +        private FileStream fileStream;
22 +        protected BinaryReader binReader;
23 +        protected string FileName { get; private set; }
24 +        private void CreateReader()
25 +        {
26 +            fileStream = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
27 +            binReader = new BinaryReader(fileStream);
28 +        }
29 +            #region IDisposable Support
30 +        // Track whether Dispose has been called.
31 +        private bool disposed = false;
32 +        // Implement IDisposable.
33 +        // Do not make this method virtual.
34 +        // A derived class should not be able to override this method.
35 +        public void Dispose()
36 +        {
37 +            Dispose(true);
38 +            // This object will be cleaned up by the Dispose method.
39 +            // Therefore, you should call GC.SupressFinalize to
40 +            // take this object off the finalization queue
41 +            // and prevent finalization code for this object
42 +            // from executing a second time.
43 +            GC.SuppressFinalize(this);
44 +        }
45 +        // Dispose(bool disposing) executes in two distinct scenarios.
46 +        // If disposing equals true, the method has been called directly
47 +        // or indirectly by a user's code. Managed and unmanaged resources
48 +        // can be disposed.
49 +        // If disposing equals false, the method has been called by the
50 +        // runtime from inside the finalizer and you should not reference
51 +        // other objects. Only unmanaged resources can be disposed.
52 +        protected virtual void Dispose(bool disposing)
53 +        {
54 +            // Check to see if Dispose has already been called.
55 +            if (!this.disposed)
56 +            {
57 +                // If disposing equals true, dispose all managed
58 +                // and unmanaged resources.
59 +                if (disposing)
60 +                {
61 +                    // Dispose managed resources.
62 +                    //component.Dispose();
63 +                }
64 +
65 +                // Call the appropriate methods to clean up
66 +                // unmanaged resources here.
67 +                // If disposing is false,
68 +                // only the following code is executed.
69 +              
70 +                // clean up any resources
71 +                binReader.Close();
72 +                binReader = null;
73 +                fileStream = null;                
74 +                // Note disposing has been done.
75 +                disposed = true;
76 +
77 +            }
78 +        }
79 +        // Use C# destructor syntax for finalization code.
80 +        // This destructor will run only if the Dispose method
81 +        // does not get called.
82 +        // It gives your base class the opportunity to finalize.
83 +        // Do not provide destructors in types derived from this class.
84 +        ~SerializationReader()
85 +        {
86 +            // Do not re-create Dispose clean-up code here.
87 +            // Calling Dispose(false) is optimal in terms of
88 +            // readability and maintainability.
89 +            Dispose(false);
90 +        }
91 +        #endregion
92      }
93   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines