static void knh_write_Method(CTX ctx, knh_OutputStream_t *w, const knh_ClassTBL_t *ct, knh_Method_t *o) { knh_write_TAB(ctx, w); if(Method_isAbstract(o)) { knh_write_ascii(ctx, w, "@Abstract "); } knh_write_type(ctx, w, knh_type_tocid(ctx, knh_ParamArray_rtype(DP(o)->mp), ct->cid)); knh_putc(ctx, w, ' '); if(Method_isStatic(o)) { knh_write_ascii(ctx, w, S_tochar(ct->sname)); knh_putc(ctx, w, '.'); } knh_write_mn(ctx, w, SP(o)->mn); knh_putc(ctx, w, '('); size_t i; for(i = 0; i < knh_Method_psize(o); i++) { knh_param_t *p = knh_ParamArray_get(DP(o)->mp, i); if(i > 0) { knh_write_delim(ctx, w); } knh_write_type(ctx, w, knh_type_tocid(ctx, p->type, ct->cid)); knh_putc(ctx, w, ' '); knh_write_ascii(ctx, w, FN__(p->fn)); } if(ParamArray_isVARGs(DP(o)->mp)) { knh_write_delim(ctx, w); knh_write_dots(ctx, w); } knh_putc(ctx, w, ')'); knh_write_EOL(ctx, w); }
void knh_Stmt__s(Ctx *ctx, Stmt *o, OutputStream *w, String *m) { knh_intptr_t i; knh_putc(ctx, w, '('); if(SP(o)->stt != STT_OP && SP(o)->stt != STT_NEW && SP(o)->stt != STT_CALL ) { knh_write_char(ctx, w, knh_stmt_tochar(SP(o)->stt)); if(DP(o)->size > 0) { knh_putc(ctx, w, ' '); } } for(i = 0; i < DP(o)->size; i++) { if(i > 0) knh_putc(ctx, w, ' '); if(IS_Token(DP(o)->terms[i])) { knh_Token__s(ctx, DP(o)->tokens[i], w, m); } else { KNH_ASSERT(IS_Stmt(DP(o)->terms[i])); knh_Stmt__s(ctx, DP(o)->stmts[i], w, m); if(IS_NOTNULL(DP(DP(o)->stmts[i])->next)) { knh_write_dots(ctx, w); } } } knh_putc(ctx, w, ')'); }