Beispiel #1
0
        public bool RemovePackage(string packName)
        {
            var superPack = ModuleNameHelper.ExtractPackageName(packName);
            var pack      = Root.GetOrCreateSubPackage(superPack);

            return(pack != null && pack.Packages.Remove(ModuleNameHelper.ExtractModuleName(packName)));
        }
Beispiel #2
0
        public bool Remove(string moduleName)
        {
            var packName = ModuleNameHelper.ExtractPackageName(moduleName);
            var pack     = Root.GetOrCreateSubPackage(packName, false);

            return(pack != null && pack.Modules.Remove(ModuleNameHelper.ExtractModuleName(moduleName)));
        }
Beispiel #3
0
        public static DModule GetModule(string basePath, string moduleName)
        {
            var pack = GetPackage(basePath, ModuleNameHelper.ExtractPackageName(moduleName));

            if (pack == null)
            {
                return(null);
            }

            return(pack.GetModule(ModuleNameHelper.ExtractModuleName(moduleName)));
        }
Beispiel #4
0
        /// <summary>
        /// Returns null if no module was found.
        /// </summary>
        public IAbstractSyntaxTree GetModule(string moduleName)
        {
            var packName = ModuleNameHelper.ExtractPackageName(moduleName);

            var pack = Root.GetOrCreateSubPackage(packName, false);

            if (pack != null)
            {
                IAbstractSyntaxTree ret = null;
                if (pack.Modules.TryGetValue(ModuleNameHelper.ExtractModuleName(moduleName), out ret))
                {
                    return(ret);
                }
            }

            return(null);
        }
        void ParseThread()
        {
            var           file = "";
            ModulePackage pack = null;

            while (queue.Count != 0)
            {
                lock (queue)
                {
                    if (queue.Count == 0)
                    {
                        return;
                    }

                    var kv = queue.Pop();
                    file = kv.Key;
                    pack = kv.Value;
                }

                try
                {
                    // If no debugger attached, save time + memory by skipping function bodies
                    var ast = DParser.ParseFile(file, !Debugger.IsAttached);

                    if (!(pack is RootPackage))
                    {
                        ast.ModuleName = pack.Path + "." + Path.GetFileNameWithoutExtension(file);
                    }

                    ast.FileName = file;
                    pack.Modules[ModuleNameHelper.ExtractModuleName(ast.ModuleName)] = ast;
                }
                catch (Exception ex)
                {
                    LastException = ex;
                }
            }
        }
Beispiel #6
0
        /// <summary>
        /// Use this method to add a syntax tree to the parse cache.
        /// Equally-named trees will be overwritten.
        /// </summary>
        public void AddOrUpdate(IAbstractSyntaxTree ast)
        {
            if (ast == null)
            {
                return;
            }

            var packName = ModuleNameHelper.ExtractPackageName(ast.ModuleName);

            if (string.IsNullOrEmpty(packName))
            {
                Root.Modules[ast.ModuleName] = ast;

                if (ast.ModuleName == "object")
                {
                    HandleObjectModule(ast);
                }
                return;
            }

            var pack = Root.GetOrCreateSubPackage(packName, true);

            pack.Modules[ModuleNameHelper.ExtractModuleName(ast.ModuleName)] = ast;
        }