コード例 #1
0
ファイル: NamespaceDecl.cs プロジェクト: JadeHub/Jade
        public NamespaceDecl(Cursor c, ISymbolTable table)
            : base(c, table)
        {
            Debug.Assert(c.Kind == CursorKind.Namespace);

            if(c.SemanticParentCurosr.Kind == CursorKind.Namespace)
            {
                _parent = table.FindNamespaceDeclaration(c.SemanticParentCurosr.Usr);
                Debug.Assert(_parent != null);
            }
        }
コード例 #2
0
ファイル: ContextPaneViewModel.cs プロジェクト: JadeHub/Jade
        private DeclarationViewModel FindOrAddNamespaceNode(NamespaceDecl ns)
        {
            List<NamespaceDecl> parents = new List<NamespaceDecl>();
            NamespaceDecl temp = ns.ParentNamespace;
            while (temp != null)
            {
                parents.Insert(0, temp);
                temp = temp.ParentNamespace;
            }

            DeclarationViewModel parentNode = null;

            if (parents.Count > 0)
            {
                foreach (NamespaceDecl parent in parents)
                {
                    if (parentNode == null)
                    {
                        parentNode = FindRootLevelItem(parent.Usr);
                    }
                    else
                    {
                        parentNode = parentNode.FindOrAddChildDecl(parent);
                        if (parentNode == null)
                            return null;
                    }
                }
                return parentNode.FindOrAddChildDecl(ns);
            }
            DeclarationViewModel result = FindRootLevelItem(ns.Usr);
            if(result == null)
            {
                result = new DeclarationViewModel(parentNode, ns);
                _root.Add(result);
            }
            return result;
        }