public void ReadRegionPageTotalInfo(PageTotalInfo pageTotalInfo) { if (this.m_regionPageTotalInfoOffset > 0) { this.BinaryReader.BaseStream.Seek(this.m_regionPageTotalInfoOffset, SeekOrigin.Begin); if (this.BinaryReader.ReadBoolean()) { bool isCalculationDone = this.BinaryReader.ReadBoolean(); bool isCounting = this.BinaryReader.ReadBoolean(); int num = this.BinaryReader.ReadInt32(); List <KeyValuePair <int, string> > list = new List <KeyValuePair <int, string> >(num); for (int i = 0; i < num; i++) { int key = this.BinaryReader.ReadInt32(); string value = this.BinaryReader.ReadString(); list.Add(new KeyValuePair <int, string>(key, value)); } num = this.BinaryReader.ReadInt32(); List <KeyValuePair <int, int> > list2 = new List <KeyValuePair <int, int> >(num); for (int j = 0; j < num; j++) { int key2 = this.BinaryReader.ReadInt32(); int value2 = this.BinaryReader.ReadInt32(); list2.Add(new KeyValuePair <int, int>(key2, value2)); } pageTotalInfo.SetupPageTotalInfo(isCalculationDone, isCounting, list2, list); } } }
public void SavePaginationMetadata(bool reportDone, PageTotalInfo pageTotalInfo) { if (this.m_stream != null && !this.m_reportDone && this.m_newPagesMetadata) { this.m_reportDone = reportDone; this.BinaryWriter.BaseStream.Seek(this.m_offsetLastPage, SeekOrigin.Begin); this.BinaryWriter.Write(this.m_reportDone); this.BinaryWriter.Write(this.m_metadataPages.Count); for (int i = 0; i < this.m_metadataPages.Count; i++) { this.BinaryWriter.Write(this.m_metadataPages[i]); } this.m_regionPageTotalInfoOffset = this.BinaryWriter.BaseStream.Position; if (pageTotalInfo == null) { this.BinaryWriter.Write(false); } else { this.BinaryWriter.Write(true); this.BinaryWriter.Write(pageTotalInfo.CalculationDone); this.BinaryWriter.Write(pageTotalInfo.IsCounting); List <KeyValuePair <int, string> > pageNameList = pageTotalInfo.GetPageNameList(); this.BinaryWriter.Write(pageNameList.Count); foreach (KeyValuePair <int, string> item in pageNameList) { this.BinaryWriter.Write(item.Key); this.BinaryWriter.Write(item.Value); } List <KeyValuePair <int, int> > pageNumberList = pageTotalInfo.GetPageNumberList(); this.BinaryWriter.Write(pageNumberList.Count); foreach (KeyValuePair <int, int> item2 in pageNumberList) { this.BinaryWriter.Write(item2.Key); this.BinaryWriter.Write(item2.Value); } } this.BinaryWriter.Write(this.m_regionPageTotalInfoOffset); this.BinaryWriter.Flush(); this.m_newPagesMetadata = false; } }