using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace RomCheater.Serialization { public interface ISearchResultWriter { void WriteResult(uint address, TValue value) where TValue : IConvertible; } public class SearchResultWriter : SerializationWriter, ISearchResultWriter { public SearchResultWriter() : base() { } public SearchResultWriter(int resultCount) : base(resultCount) { WriteHeader(); } #region ISearchResultWriter members public void WriteResult(uint address, TValue value) where TValue : IConvertible { Type t = typeof(TValue); binWriter.Write(address); switch (t.Name.ToLower()) { case "byte": binWriter.Write(Convert.ToByte(value)); break; case "sbyte": binWriter.Write(Convert.ToSByte(value)); break; case "uint16": binWriter.Write(Convert.ToUInt16(value)); break; case "int16": binWriter.Write(Convert.ToInt16(value)); break; case "uint32": binWriter.Write(Convert.ToUInt32(value)); break; case "int32": binWriter.Write(Convert.ToInt32(value)); break; case "uint64": binWriter.Write(Convert.ToUInt64(value)); break; case "int64": binWriter.Write(Convert.ToInt64(value)); break; } } #endregion private void WriteHeader() { // write magic: SRD binWriter.Write(Encoding.UTF8.GetBytes("SRD")); // write version (int) binWriter.Write((int)1); // write count (int) binWriter.Write(ResultCount); } } }