Example #1
0
        int RemoveDeadBlocks()
        {
            int numDeadBlocks = 0;

            var infos          = new Dictionary <ScopeBlock, ScopeBlockInfo>();
            var deadBlocksDict = new Dictionary <BaseBlock, bool>();

            foreach (var baseBlock in FindDeadBlocks())
            {
                deadBlocksDict[baseBlock] = true;
                ScopeBlock     parent = baseBlock.Parent;
                ScopeBlockInfo info;
                if (!infos.TryGetValue(parent, out info))
                {
                    infos[parent] = info = new ScopeBlockInfo(parent);
                }
                info.deadBlocks.Add(baseBlock);
                numDeadBlocks++;
            }

            foreach (var info in infos.Values)
            {
                info.scopeBlock.RemoveAllDeadBlocks(info.deadBlocks, deadBlocksDict);
            }

            return(numDeadBlocks);
        }
		int RemoveDeadBlocks() {
			int numDeadBlocks = 0;

			var infos = new Dictionary<ScopeBlock, ScopeBlockInfo>();
			var deadBlocksDict = new Dictionary<BaseBlock, bool>();
			foreach (var baseBlock in FindDeadBlocks()) {
				deadBlocksDict[baseBlock] = true;
				ScopeBlock parent = baseBlock.Parent;
				ScopeBlockInfo info;
				if (!infos.TryGetValue(parent, out info))
					infos[parent] = info = new ScopeBlockInfo(parent);
				info.deadBlocks.Add(baseBlock);
				numDeadBlocks++;
			}

			foreach (var info in infos.Values)
				info.scopeBlock.RemoveAllDeadBlocks(info.deadBlocks, deadBlocksDict);

			return numDeadBlocks;
		}