Exemplo n.º 1
0
        public static bool GetM3DFWStuff()
        {
            if (!dte2.Solution.IsOpen)
            {
                return(false);
            }
            if (dte2.Solution.Projects.Count == 0)
            {
                return(false);
            }

            if (_m3dfw_namespace != null && _getFctPtrList_function != null && _getMemberFctPtrList_function != null)
            {
                return(true);
            }

            EnvDTE.CodeElements c_elements = dte2.Solution.Projects.Item(1).CodeModel.CodeElements;

            foreach (EnvDTE.CodeElement c_element in c_elements)
            {
                if (c_element.Kind == EnvDTE.vsCMElement.vsCMElementNamespace)
                {
                    if (c_element.FullName == "m3dfw")
                    {
                        _m3dfw_namespace = c_element as EnvDTE.CodeNamespace;
                        foreach (EnvDTE.CodeElement namespace_element in c_element.Children)
                        {
                            if (namespace_element.Kind == EnvDTE.vsCMElement.vsCMElementFunction)
                            {
                                if (namespace_element.FullName == "m3dfw::getFctPtrList")
                                {
                                    _getFctPtrList_function = namespace_element as EnvDTE.CodeFunction;
                                }
                                else if (namespace_element.FullName == "m3dfw::getMemberFctPtrList")
                                {
                                    _getMemberFctPtrList_function = namespace_element as EnvDTE.CodeFunction;
                                }
                            }
                        }
                    }
                }
                if (_m3dfw_namespace != null && _getFctPtrList_function != null && _getMemberFctPtrList_function != null)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 2
0
        // Finds handler classes.
        public List <EnvDTE.CodeClass> FindHandlers(EnvDTE.CodeNamespace container)
        {
            List <EnvDTE.CodeClass> handlers = new List <EnvDTE.CodeClass>();

            foreach (EnvDTE.CodeElement element in container.Members)
            {
                if (element.Kind == EnvDTE.vsCMElement.vsCMElementClass)
                {
                    EnvDTE.CodeClass codeClass = (EnvDTE.CodeClass)element;
                    if (!codeClass.IsAbstract && IsHandler(codeClass))
                    {
                        handlers.Add(codeClass);
                    }
                }
                else if (element.Kind == EnvDTE.vsCMElement.vsCMElementNamespace)
                {
                    handlers.AddRange(FindHandlers((EnvDTE.CodeNamespace)element));
                }
            }

            return(handlers);
        }