Inheritance: System.MarshalByRefObject
Exemple #1
0
		void Init ()
		{
			var loader = new DynamicLoader (importer, ctx);

			CompilerCallableEntryPoint.Reset ();
			RootContext.ToplevelTypes = module;

			//var startup_files = new List<string> ();
			//foreach (CompilationUnit file in Location.SourceFiles)
			//    startup_files.Add (file.Path);

			loader.LoadReferences (module);
			ctx.BuiltinTypes.CheckDefinitions (module);
			module.InitializePredefinedTypes ();

			inited = true;
		}
        /// <summary>
        ///   Optional initialization for the Evaluator.
        /// </summary>
        /// <remarks>
        ///  Initializes the Evaluator with the command line
        ///  options that would be processed by the command
        ///  line compiler.  Only the first call to
        ///  InitAndGetStartupFiles or Init will work, any future
        ///  invocations are ignored.
        ///
        ///  You can safely avoid calling this method if your application
        ///  does not need any of the features exposed by the command line
        ///  interface.
        ///
        ///  This method return an array of strings that contains any
        ///  files that were specified in `args'.
        ///
        ///  If the unknownOptionParser is not null, this function is invoked
        ///  with the current args array and the index of the option that is not
        ///  known.  A value of true means that the value was processed, otherwise
        ///  it will be reported as an error
        /// </remarks>
        public static string [] InitAndGetStartupFiles(string [] args, Func <string [], int, int> unknownOptionParser)
        {
            lock (evaluator_lock)
            {
                if (inited)
                {
                    return(new string [0]);
                }

                CompilerCallableEntryPoint.Reset();
                var crp = new ConsoleReportPrinter();
                driver = Driver.Create(args, false, unknownOptionParser, crp);
                if (driver == null)
                {
                    throw new Exception("Failed to create compiler driver with the given arguments");
                }

                crp.Fatal = driver.fatal_errors;
                ctx       = driver.ctx;

                RootContext.ToplevelTypes = new ModuleContainer(ctx);

                var startup_files = new List <string> ();
                foreach (CompilationUnit file in Location.SourceFiles)
                {
                    startup_files.Add(file.Path);
                }

                CompilerCallableEntryPoint.PartialReset();

                var importer = new ReflectionImporter(ctx.BuildinTypes);
                loader = new DynamicLoader(importer, ctx);

                RootContext.ToplevelTypes.SetDeclaringAssembly(new AssemblyDefinitionDynamic(RootContext.ToplevelTypes, "temp"));

                loader.LoadReferences(RootContext.ToplevelTypes);
                ctx.BuildinTypes.CheckDefinitions(RootContext.ToplevelTypes);
                RootContext.ToplevelTypes.InitializePredefinedTypes();

                RootContext.EvalMode = true;
                inited = true;

                return(startup_files.ToArray());
            }
        }
Exemple #3
0
        /// <summary>
        ///   Optional initialization for the Evaluator.
        /// </summary>
        /// <remarks>
        ///  Initializes the Evaluator with the command line options
        ///  that would be processed by the command line compiler.  Only
        ///  the first call to Init will work, any future invocations are
        ///  ignored.
        ///
        ///  You can safely avoid calling this method if your application
        ///  does not need any of the features exposed by the command line
        ///  interface.
        /// </remarks>
        public static void Init(string [] args)
        {
            lock (evaluator_lock){
                if (inited)
                {
                    return;
                }

                RootContext.Version = LanguageVersion.Default;
                driver = Driver.Create(args, false);
                if (driver == null)
                {
                    throw new Exception("Failed to create compiler driver with the given arguments");
                }

                driver.ProcessDefaultConfig();
                CompilerCallableEntryPoint.Reset();
                Driver.LoadReferences();
                RootContext.EvalMode = true;
                inited = true;
            }
        }