Ejemplo n.º 1
0
        public static RecordType GetNextRecordType(
            IBinaryReadStream reader,
            RecordTypeConverter?recordTypeConverter = null)
        {
            var header = reader.GetInt32();
            var ret    = new RecordType(header);

            ret = recordTypeConverter.ConvertToStandard(ret);
            return(ret);
        }
Ejemplo n.º 2
0
        public VariableHeader ReadNextRecordVariableMeta(IBinaryReadStream stream)
        {
            RecordType rec = new RecordType(stream.GetInt32());

            if (rec == Mutagen.Bethesda.Internals.Constants.Group)
            {
                return(this.GroupConstants.VariableMeta(stream.ReadSpan(this.GroupConstants.HeaderLength)));
            }
            else
            {
                return(this.MajorConstants.VariableMeta(stream.ReadSpan(this.MajorConstants.HeaderLength)));
            }
        }
Ejemplo n.º 3
0
        public static bool TryGetRecordType(
            IBinaryReadStream reader,
            RecordType expectedHeader)
        {
            if (reader.Remaining < Constants.HeaderLength)
            {
                return(false);
            }
            var header = reader.GetInt32();

            if (expectedHeader.TypeInt != header)
            {
                return(false);
            }
            return(true);
        }
Ejemplo n.º 4
0
        public static bool TryGet(
            IBinaryReadStream reader,
            RecordType expectedHeader,
            out long contentLength,
            long lengthLength)
        {
            if (reader.Remaining < Constants.HeaderLength + lengthLength)
            {
                contentLength = -1;
                return(false);
            }
            var header = reader.GetInt32();

            if (expectedHeader.TypeInt != header)
            {
                contentLength = -1;
                return(false);
            }
            switch (lengthLength)
            {
            case 1:
                contentLength = reader.GetUInt8(offset: Constants.HeaderLength);
                break;

            case 2:
                contentLength = reader.GetUInt16(offset: Constants.HeaderLength);
                break;

            case 4:
                contentLength = reader.GetUInt32(offset: Constants.HeaderLength);
                break;

            default:
                throw new NotImplementedException();
            }
            return(true);
        }