예제 #1
0
 public void BuildLoops(ILogicalConstruct block)
 {
     if (block.get_Children().get_Count() == 0)
     {
         return;
     }
     V_0 = block.get_Children().GetEnumerator();
     try
     {
         while (V_0.MoveNext())
         {
             V_1 = V_0.get_Current() as ILogicalConstruct;
             if (V_1 == null)
             {
                 throw new ArgumentException("Child is not a logical construct.");
             }
             if (V_1 as ConditionLogicalConstruct != null)
             {
                 continue;
             }
             this.BuildLoops(V_1);
         }
     }
     finally
     {
         ((IDisposable)V_0).Dispose();
     }
     this.ProcessLogicalConstruct(block);
     return;
 }
 public void ProcessConstruct(ILogicalConstruct theConstruct)
 {
     if (theConstruct as CFGBlockLogicalConstruct != null || theConstruct as ConditionLogicalConstruct != null)
     {
         return;
     }
     if (theConstruct as BlockLogicalConstruct != null)
     {
         this.DetermineFollowNodesInSubGraph(theConstruct);
     }
     V_0 = theConstruct.get_Children().GetEnumerator();
     try
     {
         while (V_0.MoveNext())
         {
             V_1 = (ILogicalConstruct)V_0.get_Current();
             this.ProcessConstruct(V_1);
         }
     }
     finally
     {
         ((IDisposable)V_0).Dispose();
     }
     return;
 }
예제 #3
0
 public void BuildConstructs(ILogicalConstruct construct)
 {
     if (construct as CFGBlockLogicalConstruct != null || construct as ConditionLogicalConstruct != null)
     {
         return;
     }
     V_0 = construct.get_Children().GetEnumerator();
     try
     {
         while (V_0.MoveNext())
         {
             V_1 = (ILogicalConstruct)V_0.get_Current();
             this.BuildConstructs(V_1);
         }
     }
     finally
     {
         ((IDisposable)V_0).Dispose();
     }
     this.BuildIfConstructs(construct);
     return;
 }
 private void CreateComplexConditions(ILogicalConstruct theConstruct)
 {
     if (theConstruct as ConditionLogicalConstruct != null || theConstruct as CFGBlockLogicalConstruct != null)
     {
         return;
     }
     V_1 = theConstruct.get_Children().GetEnumerator();
     try
     {
         while (V_1.MoveNext())
         {
             V_2 = (ILogicalConstruct)V_1.get_Current();
             this.CreateComplexConditions(V_2);
         }
     }
     finally
     {
         ((IDisposable)V_1).Dispose();
     }
     while (this.TryTraverseAndMerge(theConstruct))
     {
     }
     return;
 }