Esempio n. 1
0
        private KeyValuePair <Assembly, TopNamespaceTracker> LoadAssemblyInfo(Assembly assm)
        {
            var nsTracker = new TopNamespaceTracker(_codeContext.LanguageContext.DomainManager);

            nsTracker.LoadAssembly(assm);
            return(new KeyValuePair <Assembly, TopNamespaceTracker>(assm, nsTracker));
        }
Esempio n. 2
0
        public ScriptLanguageContext(ScriptDomainManager domainManager, IDictionary <string, object> options)
            : base(domainManager)
        {
            _topNamespace            = new TopNamespaceTracker(domainManager);
            _aliasedNamespaceGroups  = new Dictionary <string, NamespaceGroupTracker>();
            _scriptVisibleNamespaces = new NamespaceGroupTracker("$sxe", _topNamespace);

            if ((_onAssemblyLoadHandler == null) &&
                (Interlocked.CompareExchange(ref _onAssemblyLoadHandler, OnAssemblyLoaded, null) == null))
            {
                DomainManager.AssemblyLoaded += _onAssemblyLoadHandler;
            }

            foreach (var assembly in DomainManager.GetLoadedAssemblyList())
            {
                LoadAssembly(assembly);
            }

            LoadAssemblyScriptImports(typeof(ScriptLanguageContext).Assembly);

            _defaultBinderState = new BinderState(new ScriptBinder(this));
            _overloadResolver   = new ScriptOverloadResolverFactory(this);

            EnsureParser();
        }
Esempio n. 3
0
 public void AddAssembly(Assembly asm)
 {
     if (asm != null && _references.FindIndex(reference => (reference.Key == asm)) == -1)
     {
         // TODO: When do assembly references get removed?
         var nsTracker = new TopNamespaceTracker(_codeContext.LanguageContext.DomainManager);
         nsTracker.LoadAssembly(asm);
         AddAssembly(new KeyValuePair <Assembly, TopNamespaceTracker>(asm, nsTracker));
     }
 }
Esempio n. 4
0
        private static TopNamespaceTracker GetReflectedAssembly(CodeContext /*!*/ context, Assembly assem)
        {
            Debug.Assert(assem != null);
            var assemblyMap = GetAssemblyMap(context.LanguageContext as PythonContext);

            lock (assemblyMap) {
                TopNamespaceTracker reflectedAssembly;
                if (assemblyMap.TryGetValue(assem, out reflectedAssembly))
                {
                    return(reflectedAssembly);
                }

                reflectedAssembly = new TopNamespaceTracker(context.LanguageContext.DomainManager);
                reflectedAssembly.LoadAssembly(assem);
                assemblyMap[assem] = reflectedAssembly;

                return(reflectedAssembly);
            }
        }
Esempio n. 5
0
        public IronPythonInterpreter(ScriptEngine engine)
        {
            _engine = engine;
            var pythonContext = HostingHelpers.GetLanguageContext(_engine) as PythonContext;

            _codeContextCls = new ModuleContext(new PythonDictionary(), pythonContext).GlobalContext;
            _codeContextCls.ModuleContext.ShowCls = true;

            _codeContext = new ModuleContext(
                new PythonDictionary(),
                HostingHelpers.GetLanguageContext(_engine) as PythonContext
                ).GlobalContext;

            _namespaceTracker = new TopNamespaceTracker(_codeContext.LanguageContext.DomainManager);

            AddAssembly(LoadAssemblyInfo(typeof(string).Assembly));
            AddAssembly(LoadAssemblyInfo(typeof(Debug).Assembly));

            string installDir = GetPythonInstallDir();

            if (installDir != null)
            {
                var dllDir = Path.Combine(installDir, "DLLs");
                if (Directory.Exists(dllDir))
                {
                    foreach (var assm in Directory.GetFiles(dllDir))
                    {
                        try {
                            var asm = Assembly.LoadFile(Path.Combine(dllDir, assm));
                            _engine.Runtime.LoadAssembly(asm);

                            AddAssembly(LoadAssemblyInfo(asm));
                        } catch {
                        }
                    }
                }
            }

            LoadAssemblies();

            LoadModules();
        }
Esempio n. 6
0
        public static object GetBoundMember(CodeContext /*!*/ context, Assembly self, string name)
        {
            TopNamespaceTracker reflectedAssembly = GetReflectedAssembly(context, self);

            if (name == "__dict__")
            {
                return(new PythonDictionary(new WrapperDictionaryStorage(reflectedAssembly)));
            }
            MemberTracker mem = reflectedAssembly.TryGetPackageAny(name);

            if (mem != null)
            {
                if (mem.MemberType == TrackerTypes.Type)
                {
                    return(DynamicHelpers.GetPythonTypeFromType(((TypeTracker)mem).Type));
                }
                // namespace or type collision
                return(mem);
            }
            return(OperationFailed.Value);
        }
Esempio n. 7
0
 public WrapperDictionaryStorage(TopNamespaceTracker /*!*/ data)
 {
     _data = data;
 }
Esempio n. 8
0
 public ScopeAttributesWrapper(ScriptDomainManager manager)
 {
     _tracker = new TopNamespaceTracker(manager);
 }
Esempio n. 9
0
 public NamespaceGroupTracker(string alias, TopNamespaceTracker topNamespaceTracker)
     : base(alias)
 {
     SetTopPackage(topNamespaceTracker);
     _includedNamespaces = new List <NamespaceTracker>();
 }