예제 #1
0
            public static object ReadByType(ExtendedBinaryReader reader, ArgumentType type)
            {
                switch (type)
                {
                case AT_Bool:
                    return(reader.ReadBoolean());

                case AT_Byte:
                    return(reader.ReadByte());

                case AT_Int16:
                    return(reader.ReadInt16());

                case AT_Int32:
                    return(reader.ReadInt32());

                case AT_Float:
                    return(reader.ReadSingle());

                case AT_String:
                    return(reader.ReadStringElsewhere());

                case AT_StringPtr:
                    return(reader.ReadNullTerminatedStringPointer());

                case AT_CodePointer:
                    return(reader.ReadInt32());

                case AT_DataReference:
                    return(reader.ReadUInt32());

                case AT_DataBlock:
                    long position = reader.ReadUInt32();
                    long length   = reader.ReadUInt32();
                    if (reader.Offset > position)
                    {
                        reader.Offset = (uint)position;
                    }
                    return(new StreamBlock(position, length));

                default:
                    return(null);
                }
            }