def add_main(self): main_cls = self.main_cls if any(main_cls.mtd_by_name(u"main")): return params = [ (u"String[]", u"args") ] main = Method(clazz=main_cls, mods=C.PBST, name=u"main", params=params) def to_call(mtd): return mtd.name + "();" body = '\n'.join(map(to_call, self.harness())) main.body = st.to_statements(main, body) main_cls.mtds.append(main)
def add_default_init(self): init = method.Method(clazz=self, mods=[C.mod.PB], typ=self._name, name=self._name) if self._sup and self._sup != C.J.OBJ: init.body = st.to_statements(init, u"super();") self._mtds.append(init) return init
def add_fld_init(self): if not self.mutable_flds: return None i_flds = list(enumerate(self.mutable_flds)) params = map(lambda (i, fld): (fld.typ, u"p{}".format(i)), i_flds) init = method.Method(clazz=self, mods=[C.mod.PB], typ=self._name, name=self._name, params=params) def init_fld((i, fld)): return fld.name + u" = p{};".format(i) body = '\n'.join(map(init_fld, i_flds)) init.body = st.to_statements(init, body) self._mtds.append(init) return init
def add_main(self): main_cls = self.main_cls if any(main_cls.mtd_by_name(u"main")): return params = [(u"String[]", u"args")] main = Method(clazz=main_cls, mods=C.PBST, name=u"main", params=params) def to_call(mtd): return mtd.name + "();" body = '\n'.join(map(to_call, self.harness())) main.body = st.to_statements(main, body) main_cls.mtds.append(main)