예제 #1
0
        /// <summary>
        /// Prints a stored representation of each application in the compound that has its "request_dump" flag set.
        /// </summary>
        public void PrintCompound()
        {
            var tasks =
                Application.Compound.Where(app => app.Meta[DumpRequestFlag].Switch).Select(
                    app =>
                    new KeyValuePair<ModuleName, Task<ITarget>>(app.Module.Name, ModuleCache.BuildAsync(app.Module.Name)))
                    .ToDictionary(k => k.Key, k => k.Value);
            foreach (var entry in tasks)
            {
                var name = entry.Key;
                var target = entry.Value.Result;

                Console.WriteLine();
                Console.WriteLine("##################################  begin of stored representation for {0} ",name);

                var opt = new LoaderOptions(Engine, new Application(target.Module), target.Symbols)
                    {ReconstructSymbols = false, RegisterCommands = false, StoreSymbols = true};
                var ldr = new Loader(opt);
                ldr.Store(Console.Out);

                Console.WriteLine("##################################    end of stored representation for {0} ----------", name);
            }
        }
예제 #2
0
 /// <summary>
 ///     Writes the application to the supplied <paramref name = "writer" /> using the default settings.
 /// </summary>
 /// <param name = "writer">The <see cref = "TextWriter" /> to write the application to.</param>
 /// <remarks>
 ///     <para>
 ///         <c>Store</c> is always superior to <see cref = "StoreInString" />.
 ///     </para>
 ///     <example>
 ///         <para>
 ///             If you want to write the application to stdout, use <see cref = "Store" /> and not <see
 ///      cref = "StoreInString" /> like in the following example:
 ///         </para>
 ///         <code>
 ///             public void WriteApplicationToStdOut(Application app)
 ///             {
 ///             app.Store(Console.Out);
 ///             //instead of
 ///             //  Console.Write(app.StoreInString());
 ///             }
 ///         </code>
 ///         <para>
 ///             By using the <see cref = "Store" />, everything Prexonite assembles is immedeately sent to stdout.
 ///         </para>
 ///     </example>
 /// </remarks>
 public void Store(TextWriter writer)
 {
     //Create a crippled engine for this process
     var eng = new Engine {ExecutionProhibited = true};
     var ldr = new Loader(eng, this);
     ldr.Store(writer);
 }