stdlib/strings: Moved Buffer to FlatBuffer, Buffer is now abstract.
[nit.git] / benchmarks / languages / bench_typetest_fts_nesting.nit
1 #!/usr/bin/env nit
2
3 import bench_base
4
5 class TypeTestFtsNestingGenerator
6 super Generator
7
8 fun clanit(i: Int): String
9 do
10 var s = new FlatBuffer
11 s.append("{classes.first}[" * i)
12 s.append("Root")
13 s.append("]" * i)
14 return s.to_s
15 end
16
17 redef fun initnit(res)
18 do
19 for i in [1..dept] do
20 res.add "new {clanit(i)}"
21 end
22
23 end
24
25 redef fun testnit
26 do
27 return "a isa {clanit(middle)}"
28 end
29
30 fun clajava(i: Int): String
31 do
32 var s = new FlatBuffer
33 s.append("{classes.first}<" * i)
34 s.append("Root")
35 s.append(">" * i)
36 return s.to_s
37 end
38
39 redef fun initjava(res, interfaces)
40 do
41
42 var tagc = ""
43 if interfaces then tagc = "X"
44 for i in [1..dept] do
45 res.add "new {tagc}{clajava(i)}()"
46 end
47 end
48
49 redef fun testjava(interfaces)
50 do
51 return "a instanceof {classes.first}<?>"
52 end
53
54 redef fun initcsharp(res, interfaces)
55 do
56 var tagc = ""
57 if interfaces then tagc = "X"
58 for i in [1..dept] do
59 res.add "new {tagc}{clajava(i)}()"
60 end
61 end
62
63 redef fun testcsharp(interfaces)
64 do
65 return "a is {clajava(middle)}"
66 end
67
68 redef fun initscala(res, interfaces)
69 do
70 var tagc = ""
71 if interfaces then tagc = "X"
72 for i in [1..dept] do
73 res.add "new {tagc}{clanit(i)}()"
74 end
75 end
76
77 redef fun testscala(interfaces)
78 do
79 return "a.isInstanceOf[{clanit(middle)}]"
80 end
81
82 fun clacpp(i: Int): String
83 do
84 var s = new FlatBuffer
85 s.append("{classes.first}<" * i)
86 s.append("Root")
87 s.append("*>" * i)
88 return s.to_s
89 end
90
91 redef fun initcpp(res)
92 do
93 for i in [1..dept] do
94 res.add "new {clacpp(i)}()"
95 end
96 end
97
98 redef fun testcpp
99 do
100 write "\t\t\t{clacpp(middle)} *to = dynamic_cast<{clacpp(middle)}*>(a);"
101 return "to != 0"
102 end
103
104 fun clae(i: Int): String
105 do
106 var s = new FlatBuffer
107 s.append("{classes.first}[" * i)
108 s.append("ROOT")
109 s.append("]" * i)
110 return s.to_s
111 end
112
113 redef fun inite(res, se)
114 do
115 for i in [1..dept] do
116 res.add "create \{{clae(i)}\} a"
117 end
118 end
119
120 redef fun teste(se)
121 do
122 write "\t\t\t\t\tto ?= a"
123 return "to /= Void"
124 end
125
126 redef fun locale(se)
127 do
128 write "\t\t\tto: {clae(middle)}"
129 end
130 end
131
132 var g = new TypeTestFtsNestingGenerator
133 g.genall