/// <summary> /// Parse the IntermediateNodeObjectData structure. /// </summary> /// <param name="s">An stream containing IntermediateNodeObjectData structure.</param> public override void Parse(Stream s) { base.Parse(s); this.IntermediateNodeStart = new bit16StreamObjectHeaderStart(); this.IntermediateNodeStart.Parse(s); this.SignatureHeader = new bit16StreamObjectHeaderStart(); this.SignatureHeader.Parse(s); this.SignatureData = new BinaryItem(); this.SignatureData.Parse(s); this.DataSizeHeader = new bit16StreamObjectHeaderStart(); this.DataSizeHeader.Parse(s); this.DataSize = ReadUlong(); this.IntermediateNodeEnd = new bit8StreamObjectHeaderEnd(); this.IntermediateNodeEnd.Parse(s); }
/// <summary> /// Parse the CellKnowLedge structure. /// </summary> /// <param name="s">An stream containing CellKnowLedge structure.</param> public override void Parse(Stream s) { base.Parse(s); this.CellKnowledgeStart = new bit16StreamObjectHeaderStart(); this.CellKnowledgeStart.Parse(s); if (ContainsStreamObjectHeader(0x0F)) { List<CellKnowledgeRange> tempCell = new List<CellKnowledgeRange>(); do { CellKnowledgeRange cellknowledge = new CellKnowledgeRange(); cellknowledge.Parse(s); tempCell.Add(cellknowledge); } while (ContainsStreamObjectHeader(0x0F)); this.CellKnowledgeData = tempCell.ToArray(); } else if (ContainsStreamObjectHeader(0x17)) { List<CellKnowledgeEntry> tempCell = new List<CellKnowledgeEntry>(); do { CellKnowledgeEntry cellknowledge = new CellKnowledgeEntry(); cellknowledge.Parse(s); tempCell.Add(cellknowledge); } while (ContainsStreamObjectHeader(0x0F)); this.CellKnowledgeData = tempCell.ToArray(); } this.CellKnowledgeEnd = new bit8StreamObjectHeaderEnd(); this.CellKnowledgeEnd.Parse(s); }
/// <summary> /// Parse the WaterlineKnowledge structure. /// </summary> /// <param name="s">An stream containing WaterlineKnowledge structure.</param> public override void Parse(Stream s) { base.Parse(s); this.WaterlineKnowledgeStart = new bit16StreamObjectHeaderStart(); this.WaterlineKnowledgeStart.Parse(s); List<WaterlineKnowledgeEntry> tempWaterline = new List<WaterlineKnowledgeEntry>(); do { WaterlineKnowledgeEntry Waterlineknowledge = new WaterlineKnowledgeEntry(); Waterlineknowledge.Parse(s); tempWaterline.Add(Waterlineknowledge); } while (ContainsStreamObjectHeader(0x04)); this.WaterlineKnowledgeData = tempWaterline.ToArray(); this.WaterlineKnowledgeEnd = new bit8StreamObjectHeaderEnd(); this.WaterlineKnowledgeEnd.Parse(s); }
/// <summary> /// Parse the StreamObjectHeader structure. /// </summary> /// <param name="s">An stream containing StreamObjectHeader structure.</param> public StreamObjectHeader TryParse(Stream s) { base.Parse(s); byte temp = ReadByte(); s.Position -= 1; StreamObjectHeader streamObjectHeader = new StreamObjectHeader(); if ((temp & 0x03) == 0x0) { streamObjectHeader = new bit16StreamObjectHeaderStart(); streamObjectHeader.Parse(s); } else if ((temp & 0x03) == 0x02) { streamObjectHeader = new bit32StreamObjectHeaderStart(); streamObjectHeader.Parse(s); } else if ((temp & 0x03) == 0x01) { streamObjectHeader = new bit8StreamObjectHeaderEnd(); streamObjectHeader.Parse(s); } else if ((temp & 0x03) == 0x03) { streamObjectHeader = new bit16StreamObjectHeaderEnd(); streamObjectHeader.Parse(s); } return streamObjectHeader; }
/// <summary> /// Parse the StorageManifestDataElement structure. /// </summary> /// <param name="s">An stream containing StorageManifestDataElement structure.</param> public override void Parse(Stream s) { base.Parse(s); this.DataElementStart = new bit16StreamObjectHeaderStart(); this.DataElementStart.Parse(s); this.DataElementExtendedGUID = new ExtendedGUID(); this.DataElementExtendedGUID = this.DataElementExtendedGUID.TryParse(s); this.SerialNumber = new SerialNumber(); this.SerialNumber = this.SerialNumber.TryParse(s); this.DataElementType = new CompactUnsigned64bitInteger(); this.DataElementType = this.DataElementType.TryParse(s); this.StorageManifestSchemaGUID = new bit16StreamObjectHeaderStart(); this.StorageManifestSchemaGUID.Parse(s); this.GUID = ReadGuid(); List<StorageManifestRootDeclareValues> StorageManifestRootDeclareList = new List<StorageManifestRootDeclareValues>(); while ((CurrentByte() & 0x03) == 0x0 && ((CurrentByte() >> 3) & 0x3F) == 0x07) { StorageManifestRootDeclareValues tempStorageManifestRootDeclare = new StorageManifestRootDeclareValues(); tempStorageManifestRootDeclare.Parse(s); StorageManifestRootDeclareList.Add(tempStorageManifestRootDeclare); } this.StorageManifestRootDeclare = StorageManifestRootDeclareList.ToArray(); this.DataElementEnd = new bit8StreamObjectHeaderEnd(); this.DataElementEnd.Parse(s); }
/// <summary> /// Parse the StorageIndexDataElement structure. /// </summary> /// <param name="s">An stream containing StorageIndexDataElement structure.</param> public override void Parse(Stream s) { base.Parse(s); this.DataElementStart = new bit16StreamObjectHeaderStart(); this.DataElementStart.Parse(s); this.DataElementExtendedGUID = new ExtendedGUID(); this.DataElementExtendedGUID = this.DataElementExtendedGUID.TryParse(s); this.SerialNumber = new SerialNumber(); this.SerialNumber = this.SerialNumber.TryParse(s); this.DataElementType = new CompactUnsigned64bitInteger(); this.DataElementType = this.DataElementType.TryParse(s); int StorageIndexType = (CurrentByte() >> 3) & 0x3F; List<object> DataList = new List<object>(); while ((CurrentByte() & 0x03) == 0x0 && (StorageIndexType == 0x11 || StorageIndexType == 0x0E || StorageIndexType == 0x0D)) { switch (StorageIndexType) { case 0x11: StorageIndexManifestMappingValues ManifestMappingValue = new StorageIndexManifestMappingValues(); ManifestMappingValue.Parse(s); DataList.Add(ManifestMappingValue); break; case 0x0E: StorageIndexCellMappingValues CellMappingValue = new StorageIndexCellMappingValues(); CellMappingValue.Parse(s); DataList.Add(CellMappingValue); break; case 0x0D: StorageIndexRevisionMappingValues RevisionMappingValue = new StorageIndexRevisionMappingValues(); RevisionMappingValue.Parse(s); DataList.Add(RevisionMappingValue); break; default: throw new Exception("The StorageIndexType is not right."); } StorageIndexType = (CurrentByte() >> 3) & 0x3F; } this.StorageIndexDataElementData = DataList.ToArray(); this.DataElementEnd = new bit8StreamObjectHeaderEnd(); this.DataElementEnd.Parse(s); }
/// <summary> /// Parse the RevisionManifestDataElement structure. /// </summary> /// <param name="s">An stream containing RevisionManifestDataElement structure.</param> public override void Parse(Stream s) { base.Parse(s); this.DataElementStart = new bit16StreamObjectHeaderStart(); this.DataElementStart.Parse(s); this.DataElementExtendedGUID = new ExtendedGUID(); this.DataElementExtendedGUID = this.DataElementExtendedGUID.TryParse(s); this.SerialNumber = new SerialNumber(); this.SerialNumber = this.SerialNumber.TryParse(s); this.DataElementType = new CompactUnsigned64bitInteger(); this.DataElementType = this.DataElementType.TryParse(s); this.RevisionManifest = new bit16StreamObjectHeaderStart(); this.RevisionManifest.Parse(s); this.RevisionID = new ExtendedGUID(); this.RevisionID = this.RevisionID.TryParse(s); this.BaseRevisionID = new ExtendedGUID(); this.BaseRevisionID = this.BaseRevisionID.TryParse(s); int RevisionType = (CurrentByte() >> 3) & 0x3F; List<object> DataList = new List<object>(); while ((CurrentByte() & 0x03) == 0x0 && (RevisionType == 0x0A || RevisionType == 0x19)) { switch (RevisionType) { case 0x0A: { RevisionManifestRootDeclareValues RootDeclareValue = new RevisionManifestRootDeclareValues(); RootDeclareValue.Parse(s); DataList.Add(RootDeclareValue); break; } case 0x19: { RevisionManifestObjectGroupReferencesValues ObjectGroupReferencesValue = new RevisionManifestObjectGroupReferencesValues(); ObjectGroupReferencesValue.Parse(s); DataList.Add(ObjectGroupReferencesValue); break; } default: throw new Exception("The RevisionType is not right."); } RevisionType = (CurrentByte() >> 3) & 0x3F; } this.RevisionManifestDataElementsData = DataList.ToArray(); this.DataElementEnd = new bit8StreamObjectHeaderEnd(); this.DataElementEnd.Parse(s); }
/// <summary> /// Parse the ObjectGroupDataElements structure. /// </summary> /// <param name="s">An stream containing ObjectGroupDataElements structure.</param> public override void Parse(Stream s) { base.Parse(s); this.DataElementStart = new bit16StreamObjectHeaderStart(); this.DataElementStart.Parse(s); this.DataElementExtendedGUID = new ExtendedGUID(); this.DataElementExtendedGUID = this.DataElementExtendedGUID.TryParse(s); this.SerialNumber = new SerialNumber(); this.SerialNumber = this.SerialNumber.TryParse(s); this.DataElementType = new CompactUnsigned64bitInteger(); this.DataElementType = this.DataElementType.TryParse(s); if (ContainsStreamObjectHeader(0x06)) { this.DataElementHash = new DataElementHash(); this.DataElementHash.Parse(s); } this.ObjectGroupDeclarationsStart = new StreamObjectHeader(); this.ObjectGroupDeclarationsStart = this.ObjectGroupDeclarationsStart.TryParse(s); List<object> DeclarationList = new List<object>(); while (ContainsStreamObjectHeader(0x18) || ContainsStreamObjectHeader(0x05)) { if (ContainsStreamObjectHeader(0x18)) { ObjectDeclaration Declaration = new ObjectDeclaration(); Declaration.Parse(s); DeclarationList.Add(Declaration); } else if (ContainsStreamObjectHeader(0x05)) { ObjectDataBLOBDeclaration DeclarationBLOB = new ObjectDataBLOBDeclaration(); DeclarationBLOB.Parse(s); DeclarationList.Add(DeclarationBLOB); } } this.ObjectDeclarationOrObjectDataBLOBDeclaration = DeclarationList.ToArray(); this.ObjectGroupDeclarationsEnd = new bit8StreamObjectHeaderEnd(); this.ObjectGroupDeclarationsEnd.Parse(s); if (ContainsStreamObjectHeader(0x79)) { this.ObjectMetadataDeclaration = new ObjectMetadataDeclaration(); this.ObjectMetadataDeclaration.Parse(s); } this.ObjectGroupDataStart = new StreamObjectHeader(); this.ObjectGroupDataStart = this.ObjectGroupDataStart.TryParse(s); List<object> ObjectDataList = new List<object>(); while (ContainsStreamObjectHeader(0x16) || ContainsStreamObjectHeader(0x1C)) { if (ContainsStreamObjectHeader(0x16)) { ObjectData data = new ObjectData(); data.Parse(s); ObjectDataList.Add(data); } else if (ContainsStreamObjectHeader(0x1C)) { ObjectDataBLOBReference DataBLOB = new ObjectDataBLOBReference(); DataBLOB.Parse(s); ObjectDataList.Add(DataBLOB); } } this.ObjectDataOrObjectDataBLOBReference = ObjectDataList.ToArray(); this.ObjectGroupDataEnd = new bit8StreamObjectHeaderEnd(); this.ObjectGroupDataEnd.Parse(s); this.DataElementEnd = new bit8StreamObjectHeaderEnd(); this.DataElementEnd.Parse(s); }
/// <summary> /// Parse the ObjectDataBLOBDataElements structure. /// </summary> /// <param name="s">An stream containing ObjectDataBLOBDataElements structure.</param> public override void Parse(Stream s) { base.Parse(s); this.DataElementStart = new bit16StreamObjectHeaderStart(); this.DataElementStart.Parse(s); this.DataElementExtendedGUID = new ExtendedGUID(); this.DataElementExtendedGUID = this.DataElementExtendedGUID.TryParse(s); this.SerialNumber = new SerialNumber(); this.SerialNumber = this.SerialNumber.TryParse(s); this.DataElementType = new CompactUnsigned64bitInteger(); this.DataElementType = this.DataElementType.TryParse(s); this.ObjectDataBLOB = new StreamObjectHeader(); this.ObjectDataBLOB = this.ObjectDataBLOB.TryParse(s); this.Data = new BinaryItem(); this.Data.Parse(s); this.DataElementEnd = new bit8StreamObjectHeaderEnd(); this.DataElementEnd.Parse(s); }
/// <summary> /// Parse the Knowledge structure. /// </summary> /// <param name="s">An stream containing Knowledge structure.</param> public override void Parse(Stream s) { base.Parse(s); this.KnowledgeStart = new bit16StreamObjectHeaderStart(); this.KnowledgeStart.Parse(s); List<SpecializedKnowledge> tempSpecializedKnowledge = new List<SpecializedKnowledge>(); while (ContainsStreamObjectHeader(0x44)) { SpecializedKnowledge knowledge = new SpecializedKnowledge(); knowledge.Parse(s); tempSpecializedKnowledge.Add(knowledge); }; this.SpecializedKnowledge = tempSpecializedKnowledge.ToArray(); this.KnowledgeEnd = new bit8StreamObjectHeaderEnd(); this.KnowledgeEnd.Parse(s); }
/// <summary> /// Parse the DataElementPackage structure. /// </summary> /// <param name="s">An stream containing DataElementPackage structure.</param> public override void Parse(Stream s) { base.Parse(s); this.DataElementPackageStart = new bit16StreamObjectHeaderStart(); this.DataElementPackageStart.Parse(s); this.Reserved = ReadByte(); long DataElementPackageType = PreReadDataElementPackageType(); List<object> DataElementsList = new List<object>(); while (ContainsStreamObjectHeader(0x01) && (DataElementPackageType == 0x01 || DataElementPackageType == 0x02 || DataElementPackageType == 0x03 || DataElementPackageType == 0x04 || DataElementPackageType == 0x05 || DataElementPackageType == 0x06 || DataElementPackageType == 0x0A)) { switch (DataElementPackageType) { case 0x01: { StorageIndexDataElement StorageIndex = new StorageIndexDataElement(); StorageIndex.Parse(s); DataElementsList.Add(StorageIndex); break; } case 0x02: { StorageManifestDataElement StorageManifest = new StorageManifestDataElement(); StorageManifest.Parse(s); DataElementsList.Add(StorageManifest); break; } case 0x03: { CellManifestDataElement CellManifest = new CellManifestDataElement(); CellManifest.Parse(s); DataElementsList.Add(CellManifest); break; } case 0x04: { RevisionManifestDataElement RevisionManifest = new RevisionManifestDataElement(); RevisionManifest.Parse(s); DataElementsList.Add(RevisionManifest); break; } case 0x05: { ObjectGroupDataElements ObjectGroup = new ObjectGroupDataElements(); ObjectGroup.Parse(s); DataElementsList.Add(ObjectGroup); break; } case 0x06: { DataElementFragmentDataElement DataElementFragment = new DataElementFragmentDataElement(); DataElementFragment.Parse(s); DataElementsList.Add(DataElementFragment); break; } case 0x0A: { ObjectDataBLOBDataElements ObjectDataBLOB = new ObjectDataBLOBDataElements(); ObjectDataBLOB.Parse(s); DataElementsList.Add(ObjectDataBLOB); break; } default: throw new Exception("The DataElementPackageType is not right."); } DataElementPackageType = PreReadDataElementPackageType(); } this.DataElements = DataElementsList.ToArray(); this.DataElementPackageEnd = new bit8StreamObjectHeaderEnd(); this.DataElementPackageEnd.Parse(s); }
/// <summary> /// Parse the DataElementFragmentDataElement structure. /// </summary> /// <param name="s">An stream containing DataElementFragmentDataElement structure.</param> public override void Parse(Stream s) { base.Parse(s); this.DataElementStart = new bit16StreamObjectHeaderStart(); this.DataElementStart.Parse(s); this.DataElementExtendedGUID = new ExtendedGUID(); this.DataElementExtendedGUID = this.DataElementExtendedGUID.TryParse(s); this.SerialNumber = new SerialNumber(); this.SerialNumber = this.SerialNumber.TryParse(s); this.DataElementType = new CompactUnsigned64bitInteger(); this.DataElementType = this.DataElementType.TryParse(s); this.DataElementFragment = new bit32StreamObjectHeaderStart(); this.DataElementFragment.Parse(s); this.FragmentExtendedGUID = new ExtendedGUID(); this.FragmentExtendedGUID = this.FragmentExtendedGUID.TryParse(s); this.FragmentDataElementSize = new CompactUnsigned64bitInteger(); this.FragmentDataElementSize = this.FragmentDataElementSize.TryParse(s); this.FragmentFileChunkReference = new FileChunkReference(); this.FragmentFileChunkReference.Parse(s); this.FragmentData = new BinaryItem(); this.FragmentData.Parse(s); this.DataElementEnd = new bit8StreamObjectHeaderEnd(); this.DataElementEnd.Parse(s); }
/// <summary> /// Parse the WaterlineKnowledge structure. /// </summary> /// <param name="s">An stream containing WaterlineKnowledge structure.</param> public override void Parse(Stream s) { base.Parse(s); this.ContentTagKnowledgeStart = new bit16StreamObjectHeaderStart(); this.ContentTagKnowledgeStart.Parse(s); List<ContentTagKnowledgeEntry> tempContentTag = new List<ContentTagKnowledgeEntry>(); while (ContainsStreamObjectHeader(0x2E)) { ContentTagKnowledgeEntry ContentTagknowledge = new ContentTagKnowledgeEntry(); ContentTagknowledge.Parse(s); tempContentTag.Add(ContentTagknowledge); }; this.ContentTagKnowledgeEntryArray = tempContentTag.ToArray(); this.ContentTagKnowledgeEnd = new bit8StreamObjectHeaderEnd(); this.ContentTagKnowledgeEnd.Parse(s); }
/// <summary> /// Parse the CellManifestDataElement structure. /// </summary> /// <param name="s">An stream containing CellManifestDataElement structure.</param> public override void Parse(Stream s) { base.Parse(s); this.DataElementStart = new bit16StreamObjectHeaderStart(); this.DataElementStart.Parse(s); this.DataElementExtendedGUID = new ExtendedGUID(); this.DataElementExtendedGUID = this.DataElementExtendedGUID.TryParse(s); this.SerialNumber = new SerialNumber(); this.SerialNumber = this.SerialNumber.TryParse(s); this.DataElementType = new CompactUnsigned64bitInteger(); this.DataElementType = this.DataElementType.TryParse(s); this.CellManifestCurrentRevision = new bit16StreamObjectHeaderStart(); this.CellManifestCurrentRevision.Parse(s); this.CellManifestCurrentRevisionExtendedGUID = new ExtendedGUID(); this.CellManifestCurrentRevisionExtendedGUID = this.CellManifestCurrentRevisionExtendedGUID.TryParse(s); this.DataElementEnd = new bit8StreamObjectHeaderEnd(); this.DataElementEnd.Parse(s); }