コード例 #1
0
ファイル: CodeModelHelpers.cs プロジェクト: ugurak/nemerle
        /// <summary>
        /// Returns the children of a CodeElement.
        /// </summary>
        /// <param name="element">The CodeElement parent to enumerate.</param>
        /// <returns>A CodeElements object containing the child elements.</returns>
        public static CodeElements GetMembersOf(CodeElement element)
        {
            CodeElements members = null;

            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            if (CodeModelHelpers.HasChildrenKind(element.Kind))
            {
                try
                {
                    switch (element.Kind)
                    {
                    case vsCMElement.vsCMElementNamespace:
                        members = ((CodeNamespace)element).Members;
                        break;

                    case vsCMElement.vsCMElementClass:
                        members = ((CodeClass)element).Members;
                        break;

                    case vsCMElement.vsCMElementUnion:                            //nemerle variant type and variant options
                        members = ((CodeClass)element).Members;
                        break;

                    case vsCMElement.vsCMElementEnum:
                        members = ((CodeEnum)element).Members;
                        break;

                    case vsCMElement.vsCMElementInterface:
                        members = ((CodeInterface)element).Members;
                        break;

                    case vsCMElement.vsCMElementStruct:
                        members = ((CodeStruct)element).Members;
                        break;

                    case vsCMElement.vsCMElementDelegate:
                        members = ((CodeDelegate)element).Members;
                        break;

                    case vsCMElement.vsCMElementModule:
                        // VS has no CodeModule class, so a CodeClass is used instead
                        // to provide the list of children.
                        members = ((CodeClass)element).Members;
                        break;
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }

            return(members);
        }
コード例 #2
0
ファイル: CodeModelHelpers.cs プロジェクト: ugurak/nemerle
        /// <summary>
        /// Returns a CodeElement's display name for use in TreeViews.
        /// </summary>
        /// <param name="element">The CodeElement whose display name is needed.</param>
        /// <returns>The element's display string.</returns>
        /// <remarks>
        /// For methods, this is the function prototype;
        /// for other elements, it is simply the Name.
        /// </remarks>
        public static string GetDisplayNameFromCMElement(CodeElement element)
        {
            string strName = null;

            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            try
            {
                if (CodeModelHelpers.IsGeneric(element, out strName))
                {
                    Debug.Assert(strName != null);
                }
                else
                {
                    switch (element.Kind)
                    {
                    case vsCMElement.vsCMElementFunction:
                        CodeFunction codeFunction = ((CodeFunction)element);
                        if (element is CodeDomCodeFunction)
                        {
                            strName = codeFunction.get_Prototype((int)vsCMPrototype.vsCMPrototypeParamTypes | (int)vsCMPrototype.vsCMPrototypeType);
                        }
                        else
                        {
                            strName = codeFunction.get_Prototype((int)vsCMPrototype.vsCMPrototypeParamTypes);
                        }
                        break;

                    case vsCMElement.vsCMElementVariable:
                        CodeDomCodeVariable codeTypeVariable = element as CodeDomCodeVariable;
                        if (codeTypeVariable != null)
                        {
                            strName = codeTypeVariable.get_Prototype((int)(int)vsCMPrototype.vsCMPrototypeType);
                        }
                        else
                        {
                            strName = element.Name;
                        }
                        break;

                    case vsCMElement.vsCMElementProperty:
                        CodeDomCodeProperty codeTypeProperty = element as CodeDomCodeProperty;
                        if (codeTypeProperty != null)
                        {
                            strName = codeTypeProperty.get_Prototype((int)(int)vsCMPrototype.vsCMPrototypeType);
                        }
                        else
                        {
                            strName = element.Name;
                        }
                        break;

                    default:
                        strName = element.Name;
                        break;
                    }
                }
            }
            catch
            {
                strName = element.Name;
            }

            return(strName);
        }