/* * This file is part of the X10 project (http://x10-lang.org). * * This file is licensed to You under the Eclipse Public License (EPL); * You may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.opensource.org/licenses/eclipse-1.0.php * * This file was originally derived from the Polyglot extensible compiler framework. * * (C) Copyright 2000-2007 Polyglot project group, Cornell University * (C) Copyright IBM Corporation 2007-2012. */ package polyglot.ast; import java.util.List; import polyglot.util.*; import polyglot.visit.NodeVisitor; import polyglot.visit.PrettyPrinter; /** * A <code>SourceCollection</code> represents a collection of source files. */ public class SourceCollection_c extends Node_c implements SourceCollection { protected List<SourceFile> sources; public SourceCollection_c(Position pos, List<SourceFile> sources) { super(pos); assert(sources != null); this.sources = TypedList.copyAndCheck(sources, SourceFile.class, true); } public String toString() { return sources.toString(); } /** Get the source files. */ public List<SourceFile> sources() { return this.sources; } /** Set the statements of the block. */ public SourceCollection sources(List<SourceFile> 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<SourceFile> sources) { if (! CollectionUtil.allEqual(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<SourceFile> sources = visitList(this.sources, v); return reconstruct(sources); } /** Write the source files to an output file. */ public void prettyPrint(CodeWriter w, PrettyPrinter tr) { for (SourceFile s : sources) { print(s, w, tr); w.newline(0); } } }