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.");
            }
        }
Exemplo n.º 2
0
        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");
        }