public static RecordType GetNextRecordType( IBinaryReadStream reader, RecordTypeConverter?recordTypeConverter = null) { var header = reader.GetInt32(); var ret = new RecordType(header); ret = recordTypeConverter.ConvertToStandard(ret); return(ret); }
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))); } }
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); }
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); }