private bool ArePredecessorsLegal(ILogicalConstruct node, HashSet <ILogicalConstruct> allowedPredecessors)
        {
            V_0 = node.get_SameParentPredecessors().GetEnumerator();
            try
            {
                while (V_0.MoveNext())
                {
                    V_1 = (ILogicalConstruct)V_0.get_Current();
                    if (allowedPredecessors.Contains(V_1))
                    {
                        continue;
                    }
                    V_2 = false;
                    goto Label1;
                }
                goto Label0;
            }
            finally
            {
                ((IDisposable)V_0).Dispose();
            }
Label1:
            return(V_2);

Label0:
            return(true);
        }
예제 #2
0
        private bool CanBeInLoop(ILogicalConstruct node, ICollection <ILogicalConstruct> nodesInLoop, ILogicalConstruct loopHeader)
        {
            if (node == null)
            {
                return(false);
            }
            if (node == loopHeader)
            {
                return(true);
            }
            V_0 = node.get_SameParentPredecessors().GetEnumerator();
            try
            {
                while (V_0.MoveNext())
                {
                    V_1 = V_0.get_Current() as ILogicalConstruct;
                    if (V_1 != null)
                    {
                        if (nodesInLoop.Contains(V_1) && !this.removedEdges.TryGetValue(V_1, out V_2) || !V_2.Contains(node))
                        {
                            continue;
                        }
                        V_3 = false;
                        goto Label1;
                    }
                    else
                    {
                        V_3 = false;
                        goto Label1;
                    }
                }
                goto Label0;
            }
            finally
            {
                ((IDisposable)V_0).Dispose();
            }
Label1:
            return(V_3);

Label0:
            return(true);
        }
예제 #3
0
 private IEnumerable <ILogicalConstruct> GetNodePredecessors(ILogicalConstruct node)
 {
     V_0 = new HashSet <ILogicalConstruct>();
     V_1 = node.get_SameParentPredecessors().GetEnumerator();
     try
     {
         while (V_1.MoveNext())
         {
             V_2 = (ILogicalConstruct)V_1.get_Current();
             if (this.removedEdges.ContainsKey(V_2) && this.removedEdges.get_Item(V_2).Contains(node))
             {
                 continue;
             }
             V_0.Add(V_2);
         }
     }
     finally
     {
         ((IDisposable)V_1).Dispose();
     }
     return(V_0);
 }