예제 #1
0
        public static AstWriter Create(SourcePackage upk, string filename, AstSerializationFlags flags)
        {
            if (upk.IsUnknown)
            {
                throw new InvalidOperationException("AstWriter: Unknown source package");
            }

            var w = new AstWriter(upk, filename, flags);

            w.Write(AstSerialization.Magic);
            return(w);
        }
예제 #2
0
        void WriteAst(IEnumerable <AstDocument> ast, string outputDir, string basename, AstSerializationFlags flags)
        {
            Disk.CreateDirectory(outputDir);
            var filename = Path.Combine(outputDir, basename + "." + AstCache.MagicString);

            Log.Event(IOEvent.Write, filename);
            ast.Serialize(_upk, filename, flags);
        }
예제 #3
0
 public AstWriter(SourcePackage upk, string filename, AstSerializationFlags flags)
     : base(upk, filename)
 {
     OptimizeSources = flags.HasFlag(AstSerializationFlags.OptimizeSources);
 }
예제 #4
0
 public static void Serialize(this IEnumerable <AstDocument> list, SourcePackage upk, string filename, AstSerializationFlags flags)
 {
     using (var w = AstWriter.Create(upk, filename, flags))
         foreach (var e in list)
         {
             w.WriteDocument(e);
         }
 }
예제 #5
0
 public static void Serialize(this AstBlock block, string filename, AstSerializationFlags flags = 0)
 {
     using (var w = AstWriter.Create(block.Name.Source.Package, filename, flags))
         w.WriteBlock(block);
 }