예제 #1
0
파일: Entry.cs 프로젝트: CDEApp/CDE
        public string GetParentPath(EntryStore entryStore)
        {
            Entry[] parentBlock;
            var     parentEntryIndex = entryStore.EntryIndex(Parent, out parentBlock);

            return(parentBlock[parentEntryIndex].FullPath);
        }
예제 #2
0
파일: Entry.cs 프로젝트: CDEApp/CDE
        public void SetParentSize(EntryStore entryStore, ulong size)
        {
            Entry[] parentBlock;
            var     parentEntryIndex = entryStore.EntryIndex(Parent, out parentBlock);

            parentBlock[parentEntryIndex].Size = size;
        }
예제 #3
0
        public bool MoveNext()
        {
            if (_current == null)
            {
                if (_indexStack.Count > 0)
                {
                    var     dirIndex = _indexStack.Dequeue();
                    Entry[] dirBlock;
                    var     dirEntryIndex = _entryStore.EntryIndex(dirIndex, out dirBlock);

                    if (dirBlock != null && dirBlock[dirEntryIndex].Child != 0)
                    {
                        _cachedEntryKey.Index = dirBlock[dirEntryIndex].Child;
                        _current = _cachedEntryKey; //_current = new EntryKey {Index = dirBlock[dirEntryIndex].Child};
                    }
                }
            }
            else
            {
                Entry[] currentBlock;
                var     currentEntryIndex = _entryStore.EntryIndex(_current.Index, out currentBlock);

                if (currentBlock[currentEntryIndex].Child != 0) // should i check IsDirectory ?
                {
                    _indexStack.Enqueue(_current.Index);
                }

                if (currentBlock[currentEntryIndex].Sibling != 0)
                {
                    _cachedEntryKey.Index = currentBlock[currentEntryIndex].Sibling;
                    _current = _cachedEntryKey; //_current = new EntryKey { Index = currentBlock[currentEntryIndex].Sibling };
                }
                else
                {
                    _current = null;
                }

                if (_current == null)
                {
                    return(MoveNext());
                }
            }
            return(_current != null);
        }