internal PropertyContext LoadFrom(BinaryReader reader) { PropertyContext result = default; if (reader.BaseStream.Length >= MinimumViableFileSize) { var context = new PropertyListContext() .HeaderFromBinaryReader(reader); if (context.IsSupportedBinaryPropertyList()) { context = context.TrailerFromBinaryReader(reader) .OffsetTableFromBinaryReader(reader); result = ParseObjectByOffsetIndex(reader, context, (int)context.TopObjectOffset); } } return(result); }
internal PropertyListContext Parse(BinaryReader reader) { PropertyListContext result = default; if (reader.BaseStream.Length >= MinimumViableFileSize) { result = new PropertyListContext() .HeaderFromBinaryReader(reader); if (result.IsSupportedBinaryPropertyList()) { result = result.TrailerFromBinaryReader(reader) .OffsetTableFromBinaryReader(reader); #if TRACE_BINARYPROPERTYLISTREADER TraceContext(result); #endif result.Root = ParseObjectByOffsetIndex(reader, result, (int)result.TopObjectOffset); } } return(result); }