ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/RomCheater/trunk/RomCheater/Serialization/SearchResultWriter.cs
Revision: 402
Committed: Thu Jun 21 06:30:33 2012 UTC (11 years, 3 months ago) by william
File size: 2500 byte(s)
Log Message:

File Contents

# User Rev Content
1 william 401 using System;
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 interface ISearchResultWriter
10     {
11     void WriteResult<TValue>(uint address, TValue value) where TValue : IConvertible;
12     }
13     public class SearchResultWriter : SerializationWriter, ISearchResultWriter
14     {
15     public SearchResultWriter() : base() { }
16     public SearchResultWriter(int resultCount) : base(resultCount) { WriteHeader(); }
17 william 402 public SearchResultWriter(string filename) : base(filename) { WriteHeader(); }
18     public SearchResultWriter(string filename, int resultCount) : base(filename, resultCount, false) { WriteHeader(); }
19     public SearchResultWriter(string filename, int resultCount, bool delete) : base(filename, resultCount, delete) { WriteHeader(); }
20 william 401 #region ISearchResultWriter members
21     public void WriteResult<TValue>(uint address, TValue value) where TValue : IConvertible
22     {
23    
24     Type t = typeof(TValue);
25    
26     binWriter.Write(address);
27     switch (t.Name.ToLower())
28     {
29     case "byte":
30     binWriter.Write(Convert.ToByte(value));
31     break;
32     case "sbyte":
33     binWriter.Write(Convert.ToSByte(value));
34     break;
35     case "uint16":
36     binWriter.Write(Convert.ToUInt16(value));
37     break;
38     case "int16":
39     binWriter.Write(Convert.ToInt16(value));
40     break;
41     case "uint32":
42     binWriter.Write(Convert.ToUInt32(value));
43     break;
44     case "int32":
45     binWriter.Write(Convert.ToInt32(value));
46     break;
47     case "uint64":
48     binWriter.Write(Convert.ToUInt64(value));
49     break;
50     case "int64":
51     binWriter.Write(Convert.ToInt64(value));
52     break;
53     }
54     }
55     #endregion
56    
57     private void WriteHeader()
58     {
59     // write magic: SRD
60     binWriter.Write(Encoding.UTF8.GetBytes("SRD"));
61     // write version (int)
62     binWriter.Write((int)1);
63     // write count (int)
64     binWriter.Write(ResultCount);
65     }
66     }
67     }