public BufferWriter Compile(BufferTree tree) { DotNotation notation = tree.Notation; Delegate[] binders = this.GetBindersArgument(tree); IRelationMetadata[] metadata = this.GetMetadataArgument(tree); BufferInternalWriter initializer = this.Compile(tree.Source, tree.Queues, tree.Header.Degree); List <BufferInternalWriter> writers = tree.Queues.Select(this.Compile).ToList(); return(new BufferWriter() { Initializer = this.Recompile(initializer, notation, binders, metadata), Queues = writers.Select(w => this.Recompile(w, notation, binders, metadata)).ToArray(), }); }
private Action <RelationBuffer> Recompile(BufferInternalWriter writer, DotNotation notation, Delegate[] binders, IRelationMetadata[] metadata) => buf => writer(buf.Fields, buf.Queues, buf.Source, buf.Model, notation, binders, metadata);