/[RomCheater]/trunk/RomCheater.Core/BitTools.cs
ViewVC logotype

Diff of /trunk/RomCheater.Core/BitTools.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 526 by william, Wed Jun 5 08:03:28 2013 UTC revision 604 by william, Fri Jun 7 12:27:51 2013 UTC
# Line 8  namespace RomCheater.Core Line 8  namespace RomCheater.Core
8  {  {
9      public static class BitTools      public static class BitTools
10      {      {
11          private const byte BitsPerByte = 8;          const byte BitsPerByte = 8;
12    
13          #region SizeOf Members          #region SizeOf Members
14          public static T SizeOf<T>() where T : IConvertible          public static T SizeOf<T>() where T : IConvertible
# Line 133  namespace RomCheater.Core Line 133  namespace RomCheater.Core
133    
134          #region Structure Support          #region Structure Support
135    
136          public static T[] ConvertByteArray<T>(byte[] data) where T : IConvertible          public static T[] ConvertByteArray<T>(byte[] data, Func<bool> cancelmethod) where T : IConvertible
137          {          {
138              Type t = typeof(T);              Type t = typeof(T);
139              string name = t.Name.ToLower();              string name = t.Name.ToLower();
# Line 143  namespace RomCheater.Core Line 143  namespace RomCheater.Core
143              switch (name)              switch (name)
144              {              {
145                  case "byte":  // unsigned byte                  case "byte":  // unsigned byte
146                        //list = new List<T>();
147                        //using (MemoryStream ms = new MemoryStream(data))
148                        //{
149                        //    using (BinaryReader br = new BinaryReader(ms))
150                        //    {
151                        //        while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadByte(), typeof(T))); if (cancelmethod.Invoke()) { break; } }
152                        //    }
153                        //}
154                        //break;
155                        throw new NotSupportedException("Conversion from byte[] to byte[] is not supported because the data can be used without conversion.");
156                  case "sbyte": // signed byte                  case "sbyte": // signed byte
157                      list = data.Cast<T>().ToList();                      //list = new List<T>();
158                      break;                      //using (MemoryStream ms = new MemoryStream(data))
159                        //{
160                        //    using (BinaryReader br = new BinaryReader(ms))
161                        //    {
162                        //        while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadSByte(), typeof(T))); if (cancelmethod.Invoke()) { break; } }
163                        //    }
164                        //}
165                        //break;
166                        throw new NotSupportedException("Conversion from byte[] to sbyte[] is not supported because the data can be used without conversion.");
167                  case "int16": // short                    case "int16": // short  
168                      list = new List<T>();                      list = new List<T>();
169                      using (MemoryStream ms = new MemoryStream(data))                      using (MemoryStream ms = new MemoryStream(data))
170                      {                      {
171                          using (BinaryReader br = new BinaryReader(ms))                          using (BinaryReader br = new BinaryReader(ms))
172                          {                          {
173                              while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadInt16(), typeof(T))); }                              while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadInt16(), typeof(T))); if (cancelmethod.Invoke()) { break; } }
174                          }                          }
175                      }                      }
176                      break;                      break;
# Line 162  namespace RomCheater.Core Line 180  namespace RomCheater.Core
180                      {                      {
181                          using (BinaryReader br = new BinaryReader(ms))                          using (BinaryReader br = new BinaryReader(ms))
182                          {                          {
183                              while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadUInt16(), typeof(T))); }                              while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadUInt16(), typeof(T))); if (cancelmethod.Invoke()) { break; } }
184                          }                          }
185                      }                      }
186                      break;                      break;
# Line 172  namespace RomCheater.Core Line 190  namespace RomCheater.Core
190                      {                      {
191                          using (BinaryReader br = new BinaryReader(ms))                          using (BinaryReader br = new BinaryReader(ms))
192                          {                          {
193                              while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadInt32(), typeof(T))); }                              while (br.BaseStream.Position < br.BaseStream.Length) {  list.Add((T)Convert.ChangeType(br.ReadInt32(), typeof(T))); if (cancelmethod.Invoke()) { break; } }
194                          }                          }
195                      }                      }
196                      break;                      break;
# Line 182  namespace RomCheater.Core Line 200  namespace RomCheater.Core
200                      {                      {
201                          using (BinaryReader br = new BinaryReader(ms))                          using (BinaryReader br = new BinaryReader(ms))
202                          {                          {
203                              while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadUInt32(), typeof(T))); }                              while (br.BaseStream.Position < br.BaseStream.Length) {  list.Add((T)Convert.ChangeType(br.ReadUInt32(), typeof(T))); if (cancelmethod.Invoke()) { break; } }
204                          }                          }
205                      }                      }
206                      break;                      break;
# Line 192  namespace RomCheater.Core Line 210  namespace RomCheater.Core
210                      {                      {
211                          using (BinaryReader br = new BinaryReader(ms))                          using (BinaryReader br = new BinaryReader(ms))
212                          {                          {
213                              while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadInt64(), typeof(T))); }                              while (br.BaseStream.Position < br.BaseStream.Length) {list.Add((T)Convert.ChangeType(br.ReadInt64(), typeof(T))); if (cancelmethod.Invoke()) { break; } }
214                          }                          }
215                      }                      }
216                      break;                      break;
# Line 202  namespace RomCheater.Core Line 220  namespace RomCheater.Core
220                      {                      {
221                          using (BinaryReader br = new BinaryReader(ms))                          using (BinaryReader br = new BinaryReader(ms))
222                          {                          {
223                              while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadUInt64(), typeof(T))); }                              while (br.BaseStream.Position < br.BaseStream.Length) { list.Add((T)Convert.ChangeType(br.ReadUInt64(), typeof(T))); if (cancelmethod.Invoke()) { break; } }
224                          }                          }
225                      }                      }
226                      break;                      break;

Legend:
Removed from v.526  
changed lines
  Added in v.604

  ViewVC Help
Powered by ViewVC 1.1.22