package polyglot.ext.jl.ast; import polyglot.ast.*; import polyglot.util.*; import polyglot.types.*; import polyglot.visit.*; import java.util.*; /** * A <code>SourceCollection</code> represents a collection of source files. */ public class SourceCollection_c extends Node_c implements SourceCollection { protected List sources; public SourceCollection_c(Position pos, List sources) { super(pos); this.sources = TypedList.copyAndCheck(sources, SourceFile.class, true); } public String toString() { return sources.toString(); } /** Get the source files. */ public List sources() { return this.sources; } /** Set the statements of the block. */ public SourceCollection sources(List sources) { SourceCollection_c n = (SourceCollection_c) copy(); n.sources = TypedList.copyAndCheck(sources, SourceFile.class, true); return n; } /** Reconstruct the collection. */ protected SourceCollection_c reconstruct(List sources) { if (! CollectionUtil.equals(sources, this.sources)) { SourceCollection_c n = (SourceCollection_c) copy(); n.sources = TypedList.copyAndCheck(sources, SourceFile.class, true); return n; } return this; } /** Visit the children of the block. */ public Node visitChildren(NodeVisitor v) { List sources = visitList(this.sources, v); return reconstruct(sources); } /** Write the source files to an output file. */ public void prettyPrint(CodeWriter w, PrettyPrinter tr) { for (Iterator i = sources.iterator(); i.hasNext(); ) { SourceFile s = (SourceFile) i.next(); print(s, w, tr); w.newline(0); } } }