int count = 0;
for (Pair<Path.Entry<?>, Path.Root> p : delta) {
Path.Entry<?> src = p.first();
if (src.contentType() == WyalFile.ContentType) {
Path.Entry<WyalFile> sf = (Path.Entry<WyalFile>) src;
WyalFile wf = sf.read();
count++;
srcFiles.put(wf.id(), sf);
}
}
logger.logTimedMessage("Parsed " + count + " source file(s).",
System.currentTimeMillis() - tmpTime,
tmpMem - runtime.freeMemory());
// ========================================================================
// Stub Generation
// ========================================================================
runtime = Runtime.getRuntime();
tmpTime = System.currentTimeMillis();
tmpMem = runtime.freeMemory();
HashSet<Path.Entry<?>> generatedFiles = new HashSet<Path.Entry<?>>();
for(Pair<Path.Entry<?>,Path.Root> p : delta) {
Path.Entry<?> src = p.first();
Path.Root dst = p.second();
if (src.contentType() == WyalFile.ContentType) {
Path.Entry<WyalFile> source = (Path.Entry<WyalFile>) src;
Path.Entry<WycsFile> target = (Path.Entry<WycsFile>) dst.create(src.id(),WycsFile.ContentType);
generatedFiles.add(target);
WyalFile wf = source.read();
WycsFile wycs = getModuleStub(wf);
target.write(wycs);
}
}
logger.logTimedMessage("Generated stubs for " + count + " source file(s).",
System.currentTimeMillis() - tmpTime, tmpMem - runtime.freeMemory());
// ========================================================================
// Type source files
// ========================================================================
runtime = Runtime.getRuntime();
tmpTime = System.currentTimeMillis();
tmpMem = runtime.freeMemory();
TypePropagation typer = new TypePropagation(this);
for(Pair<Path.Entry<?>,Path.Root> p : delta) {
Path.Entry<?> f = p.first();
if (f.contentType() == WyalFile.ContentType) {
Path.Entry<WyalFile> sf = (Path.Entry<WyalFile>) f;
WyalFile wf = sf.read();
typer.apply(wf);
}
}
logger.logTimedMessage("Typed " + count + " source file(s).",
System.currentTimeMillis() - tmpTime, tmpMem - runtime.freeMemory());
// ========================================================================
// Code Generation
// ========================================================================
runtime = Runtime.getRuntime();
tmpTime = System.currentTimeMillis();
tmpMem = runtime.freeMemory();
CodeGeneration generator = new CodeGeneration(this);
for (Pair<Path.Entry<?>, Path.Root> p : delta) {
Path.Entry<?> src = p.first();
Path.Root dst = p.second();
if (src.contentType() == WyalFile.ContentType) {
Path.Entry<WyalFile> source = (Path.Entry<WyalFile>) src;
Path.Entry<WycsFile> target = (Path.Entry<WycsFile>) dst
.create(src.id(), WycsFile.ContentType);
WyalFile wf = source.read();
WycsFile wycs = generator.generate(wf);
target.write(wycs);
}
}