- dir = "{dir}/java"
- dir.mkdir
- file = new OFStream.open("{dir}/{name}.java")
-
- var cl = ""
- if interfaces then cl = "X"
- write "class {name} \{"
- if interfaces then
- write "static interface Root\n\t\{ int id(); \}"
- else
- write "static class Root\n\t\{ int id() \{ return 0;\} \}"
- end
- for c in classes do
- if interfaces then
- write "static interface {c}<E> "
- else
- write "static class {c}<E> "
- end
- if c.supers.is_empty then
- write "\textends Root"
- else for s in [c.supers.first] do
- write "\textends {s}<E>"
- end
- if interfaces then
- write "\{\}"
- write "static class X{c}<E> implements {c}<E>"
- end
- write "\{"
- write "\tpublic int id() \{ return {c.id}; \}"
- write "\}"
- end
-
- write "static public void main(String args[]) \{"
- if interfaces then
- write "\t{classes.first}<Root> a = new X{classes.last}<Root>();"
- write "\t{classes.first}<Root> b = new X{classes.last}<Root>();"
- else
- write "\t{classes.first}<Root> a = new {classes.last}<Root>();"
- write "\t{classes.first}<Root> b = new X{classes.last}<Root>();"
- end
- write "\ttest(a, b);"
- write "\}"
-
- write "static public void test({classes.first}<Root> a, {classes.first}<Root> b) \{"
- write "\tint x = 0;"
- write "\tfor(int i = 0; i < {loops}; i++) \{"
- write "\t\tfor(int j = 0; j < {loops}; j++) \{"
- write "\t\t\tif(a instanceof {classes[middle]}) \{ x++; \} else \{ a = b; \};"
- write "\t\t}"
- write "\t\}"
- write "\tSystem.out.println(x);"
- write "\}"
- write "\}"
- file.close