예제 #1
0
파일: Tries.cs 프로젝트: mo5h/omeo
        private void Init(string fileName)
        {
            _fileName = fileName;
            FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read, 256);

            if (_cachingStrategy != null)
            {
                _storage = new CachedStream(stream, _cachingStrategy);
            }
            else
            {
                _storage = new CachedStream(stream, 1 << 18);
            }
            _writer         = new BinaryWriter(_storage);
            _reader         = new BinaryReader(_storage);
            _firstByteNodes = new TrieNode[256];
            for (int i = 0; i < 256; ++i)
            {
                TrieNode node = new TrieNode();
                _isTrieComplete = LoadNode(node);
                if (!_isTrieComplete)
                {
                    node._byte   = (byte)i;
                    node.Parent  = 0;
                    node.IsToken = false;
                    SaveNode(node);
                    Flush();
                }
                _firstByteNodes[i] = node;
            }
            _stringCache = new ObjectCache(_stringCachesize);
            _nodesCache  = new IntObjectCache(_nodesCacheSize);
            _nodesCache.ObjectRemoved += _nodesCache_ObjectRemoved;
            _isDirty = false;
        }
예제 #2
0
파일: Caches.cs 프로젝트: mo5h/omeo
 public IntObjectCacheEnumerator(IntObjectCache cache)
 {
     _cache      = cache;
     _cacheArray = cache._cache;
     Reset();
 }