예제 #1
0
        public CachedHexStream(ISimpleHexStream simpleHexStream)
        {
            this.simpleHexStream = simpleHexStream;
            pageSize             = simpleHexStream.PageSize;
            Debug.Assert(pageSize == 0 || IsPowerOfTwo(pageSize));
            if (pageSize == 0 || !IsPowerOfTwo(pageSize))
            {
                pageSize = DEFAULT_PAGE_SIZE;
            }
            if (pageSize > MAX_PAGE_SIZE)
            {
                pageSize = MAX_PAGE_SIZE;
            }
            Debug.Assert(pageSize >= MIN_PAGE_SIZE);
            if (pageSize < MIN_PAGE_SIZE)
            {
                pageSize = MIN_PAGE_SIZE;
            }
            Debug.Assert(IsPowerOfTwo(pageSize));
            this.pageSizeMask = pageSize - 1;

            int numCachedPages = (int)((CACHE_SIZE + pageSizeMask) / pageSize);

            this.cachedPages = new CachedPage[numCachedPages];
            for (int i = 0; i < this.cachedPages.Length; i++)
            {
                this.cachedPages[i] = new CachedPage(i, (int)pageSize);
            }
        }
예제 #2
0
		public CachedHexStream(ISimpleHexStream simpleHexStream) {
			this.simpleHexStream = simpleHexStream;
			pageSize = simpleHexStream.PageSize;
			Debug.Assert(pageSize == 0 || IsPowerOfTwo(pageSize));
			if (pageSize == 0 || !IsPowerOfTwo(pageSize))
				pageSize = DEFAULT_PAGE_SIZE;
			if (pageSize > MAX_PAGE_SIZE)
				pageSize = MAX_PAGE_SIZE;
			Debug.Assert(pageSize >= MIN_PAGE_SIZE);
			if (pageSize < MIN_PAGE_SIZE)
				pageSize = MIN_PAGE_SIZE;
			Debug.Assert(IsPowerOfTwo(pageSize));
			this.pageSizeMask = pageSize - 1;

			int numCachedPages = (int)((CACHE_SIZE + pageSizeMask) / pageSize);
			this.cachedPages = new CachedPage[numCachedPages];
			for (int i = 0; i < this.cachedPages.Length; i++)
				this.cachedPages[i] = new CachedPage(i, (int)pageSize);
		}