internal Node(Nid nid, ulong dataBid, ulong subnodeBid, IPstReader reader) { Nid = nid; DataBid = dataBid; SubnodeBid = subnodeBid; _reader = reader; }
internal Node FindSubnode(Nid nid) { var block = _reader.FindBlock(_bid); var level = block.Data[1]; if (level > 0) { var siEntry = FindIntermediateEntry(block, nid); if (siEntry == null) { return(null); } block = _reader.FindBlock(siEntry.Bid); } var slEntry = FindLeafEntry(block, nid); if (slEntry == null) { return(null); } return(new Node(nid, slEntry.DataBid, slEntry.SubnodeBid, _reader)); }
internal Node FindSubnode(Nid subnodeNid) { if (SubnodeBid == 0) throw new Exception("No subnode block found for this node."); var subnode = new SubnodeReader(SubnodeBid, _reader); return subnode.FindSubnode(subnodeNid); }
public Node FindNode(Nid nid) { var entry = _nbtReader.Find(nid); if (entry == null) return null; return new Node(entry.Nid, entry.DataBid, entry.SubnodeBid, this); }
internal Node FindSubnode(Nid subnodeNid) { if (SubnodeBid == 0) { throw new Exception("No subnode block found for this node."); } return(_subnodeReader.FindSubnode(subnodeNid)); }
internal Node(Nid nid, Bid dataBid, Bid subnodeBid, IPstReader reader) { Nid = nid; DataBid = dataBid; SubnodeBid = subnodeBid; _reader = reader; if (SubnodeBid != 0) { _subnodeReader = new SubnodeReader(SubnodeBid, reader); } }
private SiEntry FindIntermediateEntry(Block block, Nid nid) { var numEntries = BitConverter.ToUInt16(block.Data, 2); for (int i = 0; i < numEntries; i++) { var entryNid = BitConverter.ToUInt32(block.Data, 8 + i * 16); if (entryNid > nid) { return new SiEntry { Nid = BitConverter.ToUInt32(block.Data, 8 + (i - 1) * 16), Bid = BitConverter.ToUInt64(block.Data, 16 + (i - 1) * 16) }; } } return null; }
private SiEntry FindIntermediateEntry(Block block, Nid nid) { var numEntries = BitConverter.ToUInt16(block.Data, 2); for (var i = 0; i < numEntries; i++) { var entryNid = BitConverter.ToUInt32(block.Data, 8 + i * 16); if (entryNid > nid) { return(new SiEntry { Nid = BitConverter.ToUInt32(block.Data, 8 + (i - 1) * 16), Bid = BitConverter.ToUInt64(block.Data, 16 + (i - 1) * 16) }); } } return(null); }
private SlEntry FindLeafEntry(Block block, Nid nid) { var numEntries = BitConverter.ToUInt16(block.Data, 2); for (int i = 0; i < numEntries; i++) { var entryNid = BitConverter.ToUInt32(block.Data, 8 + i * 24); if (entryNid == nid) { return new SlEntry { Nid = BitConverter.ToUInt32(block.Data, 8 + i * 24), DataBid = BitConverter.ToUInt64(block.Data, 16 + i * 24), SubnodeBid = BitConverter.ToUInt64(block.Data, 24 + i * 24) }; } } return null; }
internal Node FindSubnode(Nid nid) { var block = _reader.FindBlock(_bid); var level = block.Data[1]; if (level > 0) { var siEntry = FindIntermediateEntry(block, nid); if (siEntry == null) return null; block = _reader.FindBlock(siEntry.Bid); } var slEntry = FindLeafEntry(block, nid); if (slEntry == null) return null; return new Node(nid, slEntry.DataBid, slEntry.SubnodeBid, _reader); }
private SlEntry FindLeafEntry(Block block, Nid nid) { var numEntries = BitConverter.ToUInt16(block.Data, 2); for (var i = 0; i < numEntries; i++) { var entryNid = BitConverter.ToUInt32(block.Data, 8 + i * 24); if (entryNid == nid) { return(new SlEntry { Nid = BitConverter.ToUInt32(block.Data, 8 + i * 24), DataBid = BitConverter.ToUInt64(block.Data, 16 + i * 24), SubnodeBid = BitConverter.ToUInt64(block.Data, 24 + i * 24) }); } } return(null); }
internal Folder(Nid nid, IPstReader reader) { _nid = nid; _pstReader = reader; Initialize(); }
internal MessageStore(Nid nid, IPstReader reader) { _nid = nid; _pstReader = reader; Initialize(); }
internal static Nid ChangeType(Nid nid, NidType type) => new Nid(type, nid.Index);
internal static Nid ChangeType(Nid nid, NidType type) { return new Nid(type, nid.Index); }