コード例 #1
0
 protected override void OnPhiVariableAssigned(int instructionOffset, ClassHierarchyNode variableNode)
 {
     V_0 = this.offsetToExpression.get_Item(instructionOffset);
     V_1 = V_0.get_ExpressionType();
     if (V_0 as LiteralExpression != null)
     {
         V_3 = (Int32)(V_0 as LiteralExpression).get_Value();
         if (V_3 == 0 || V_3 == 1)
         {
             V_1 = this.typeSystem.get_Boolean();
         }
         else
         {
             if (V_3 > 0xff || V_3 < 0)
             {
                 if (V_3 < 0xffff && V_3 >= 0)
                 {
                     V_1 = this.typeSystem.get_Char();
                 }
             }
             else
             {
                 V_1 = this.typeSystem.get_Byte();
             }
         }
     }
     V_2 = this.GetTypeNode(V_1);
     V_2.AddSupertype(variableNode);
     dummyVar0 = this.resultingGraph.Add(V_2);
     return;
 }
コード例 #2
0
 protected virtual void BuildUpHardNodesHierarchy(IEnumerable <ClassHierarchyNode> hardNodes)
 {
     V_0 = new Queue <ClassHierarchyNode>(hardNodes);
     V_1 = new HashSet <ClassHierarchyNode>();
     while (V_0.get_Count() > 0)
     {
         V_2       = V_0.Dequeue();
         dummyVar0 = V_1.Add(V_2);
         dummyVar1 = this.resultingGraph.Add(V_2);
         V_3       = V_2.get_NodeType().Resolve();
         V_4       = null;
         if (V_3 == null)
         {
             continue;
         }
         V_4 = V_3.get_BaseType();
         if (V_4 != null)
         {
             V_5 = this.GetTypeNode(V_4);
             V_2.AddSupertype(V_5);
             if (!V_1.Contains(V_5))
             {
                 V_0.Enqueue(V_5);
             }
         }
         if (V_3.get_IsInterface())
         {
             V_2.AddSupertype(this.GetTypeNode(this.typeSystem.get_Object()));
         }
         V_7 = V_2.get_NodeType().Resolve().get_Interfaces().GetEnumerator();
         try
         {
             while (V_7.MoveNext())
             {
                 V_8 = V_7.get_Current();
                 V_9 = this.GetTypeNode(V_8);
                 V_2.AddSupertype(V_9);
                 if (V_1.Contains(V_9))
                 {
                     continue;
                 }
                 V_0.Enqueue(V_9);
             }
         }
         finally
         {
             if (V_7 != null)
             {
                 V_7.Dispose();
             }
         }
     }
     this.AddObjectClassNodeIfMIssing();
     return;
 }