예제 #1
0
 internal void PromoteToRoot(DependencyMethod method)
 {
     if (_remainingNonRoots.Remove(method))
     {
         _remainingRoots.Add(method);
     }
 }
 public void RemoveFromCalledBy(DependencyMethod calledMethod)
 {
     CalledBy.Remove(calledMethod);
     if (!HasCallers)
     {
         Graph.PromoteToRoot(this);
     }
 }
예제 #3
0
        public bool Contains(DependencyMethod method)
        {
            if (_remainingRoots.Contains(method))
            {
                return(true);
            }

            return(_remainingNonRoots.Contains(method));
        }
예제 #4
0
 internal void AddToResult(DependencyMethod method)
 {
     _result.Methods.Add(new MethodCompilationListItem
     {
         FullTypeName = method.FullTypename,
         MethodName   = method.MethodName,
         Signature    = method.Signature
     }
                         );
 }
예제 #5
0
 internal void Remove(DependencyMethod method)
 {
     if (method.IsRoot)
     {
         _remainingRoots.Remove(method);
     }
     else
     {
         _remainingNonRoots.Remove(method);
     }
 }
예제 #6
0
        private void AddToResultList(DependencyMethod method)
        {
            if (!_callGraph.Contains(method))
            {
                return; // has already been added to result / removed from graph
            }
            AddToResult(method);
            method.RemoveFromGraph();

            // depth first search if callers remain (if not -> recursive remove + search)
            foreach (var child in method.Calls)
            {
                if (child.IsRoot)
                {
                    AddToResultList(child);
                }
            }
        }
 public void RemoveFromCalls(DependencyMethod calledMethod)
 {
     Calls.Remove(calledMethod);
 }