示例#1
0
        private object ReadFieldValueAsObject(BinaryReader2 reader, FieldType fieldType)
        {
            switch (fieldType)
            {
            case FieldType.Int64:
                return(reader.ReadInt64());

            case FieldType.UInt64:
                return(reader.ReadInt64());

            case FieldType.Int32:
                return(reader.ReadInt32());

            case FieldType.UInt32:
                return(reader.ReadUInt32());

            case FieldType.Int16:
                return(reader.ReadInt16());

            case FieldType.UInt16:
                return(reader.ReadUInt16());

            case FieldType.Byte:
                return(reader.ReadByte());

            case FieldType.SByte:
                return(reader.ReadSByte());

            case FieldType.Float:
                return(reader.ReadSingle());

            case FieldType.Double:
                return(reader.ReadDouble());

            case FieldType.Rational:
                return(new Rational(reader.ReadUInt32(), reader.ReadUInt32()));

            case FieldType.SRational:
                return(new SRational(reader.ReadInt32(), reader.ReadInt32()));
            }
            Console.WriteLine($"Unknown field type {fieldType}");
            return(0);
        }
示例#2
0
        private object[] ReadFieldValuesAsObjects(BinaryReader2 reader, FieldType fieldType, int numValues)
        {
            var array = new object[numValues];

            switch (fieldType)
            {
            case FieldType.Int64:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = reader.ReadInt64();
                }
            }
            break;

            case FieldType.UInt64:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = reader.ReadInt64();
                }
            }
            break;

            case FieldType.Int32:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = reader.ReadInt32();
                }
            }
            break;

            case FieldType.UInt32:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = reader.ReadUInt32();
                }
            }
            break;

            case FieldType.Int16:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = reader.ReadInt16();
                }
            }
            break;

            case FieldType.UInt16:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = reader.ReadUInt16();
                }
            }
            break;

            case FieldType.SByte:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = reader.ReadSByte();
                }
            }
            break;

            case FieldType.Byte:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = reader.ReadByte();
                }
            }
            break;

            case FieldType.Float:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = reader.ReadSingle();
                }
            }
            break;

            case FieldType.Double:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = reader.ReadDouble();
                }
            }
            break;

            case FieldType.Rational:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = new Rational(reader.ReadUInt32(), reader.ReadUInt32());
                }
            }
            break;

            case FieldType.SRational:
            {
                for (int i = 0; i < numValues; i++)
                {
                    array[i] = new SRational(reader.ReadInt32(), reader.ReadInt32());
                }
            }
            break;

            default:
                throw new Exception($"Unknown field type {fieldType}");
            }

            return(array);
        }