protected static object ReadPrimativeType <T>(SR1_Reader reader) { TypeCode typeCode = Type.GetTypeCode(typeof(T)); switch (typeCode) { case TypeCode.Boolean: return(reader.ReadBoolean()); case TypeCode.Char: return((char)reader.ReadSByte()); case TypeCode.SByte: return(reader.ReadSByte()); case TypeCode.Byte: return(reader.ReadByte()); case TypeCode.Int16: return(reader.ReadInt16()); case TypeCode.UInt16: return(reader.ReadUInt16()); case TypeCode.Int32: return(reader.ReadInt32()); case TypeCode.UInt32: return(reader.ReadUInt32()); case TypeCode.Int64: return(reader.ReadInt64()); case TypeCode.UInt64: return(reader.ReadUInt64()); case TypeCode.Single: return(reader.ReadSingle()); case TypeCode.Double: return(reader.ReadDouble()); default: throw new Exception("Unhandled primative type."); } }
protected override void ReadMembers(SR1_Reader reader, SR1_Structure parent) { int bufferLength = 0; long oldPos = reader.BaseStream.Position; while (true) { bufferLength++; int next = reader.ReadInt32(); if (next == -1) { break; } } reader.BaseStream.Position = oldPos; unknown = new SR1_PrimativeArray <int>(bufferLength); unknown.Read(reader, this, "unknown"); }