Exemplo n.º 1
0
        private void CreateModuleTree(LibraryNode root, LibraryNode current, IScopeNode scope, string namePrefix, ModuleId moduleId)
        {
            if ((null == root) || (null == scope) || (null == scope.NestedScopes))
            {
                return;
            }
            foreach (IScopeNode subItem in scope.NestedScopes)
            {
                LibraryNode newNode       = CreateLibraryNode(subItem, namePrefix, moduleId.Hierarchy, moduleId.ItemID);
                string      newNamePrefix = namePrefix;

                // The classes are always added to the root node, the functions to the
                // current node.

                if ((newNode.NodeType & LibraryNodeType.Classes) != LibraryNodeType.None)
                {
                    // Classes are always added to the root.
                    root.AddNode(newNode);
                    newNamePrefix = namePrefix + newNode.Name + ".";
                }
                else
                {
                    current.AddNode(newNode);
                }

                // Now use recursion to get the other types.
                CreateModuleTree(root, newNode, subItem, newNamePrefix, moduleId);
            }
        }
Exemplo n.º 2
0
 internal void AddNode(LibraryNode node)
 {
     lock (this) {
         // re-create root node here because we may have handed out the node before and don't want to mutate it's list.
         _root = _root.Clone();
         _root.AddNode(node);
         _updateCount++;
     }
 }