static void Method_p(CTX, ksfp_t *sfp, int pos, kwb_t *wb, int level) { kMethod *mtd = sfp[pos].mtd; kParam *pa = kMethod_param(mtd); DBG_ASSERT(IS_Method(mtd)); if(level != 0) { MethodAttribute_p(_ctx, mtd, wb); } kwb_printf(wb, "%s %s.%s%s", TY_t(pa->rtype), TY_t(mtd->cid), T_mn(mtd->mn)); if(level != 0) { size_t i; kwb_putc(wb, '('); for(i = 0; i < pa->psize; i++) { if(i > 0) { kwb_putc(wb, ',', ' '); } if(FN_isCOERCION(pa->p[i].fn)) { kwb_printf(wb, "@Coercion "); } kwb_printf(wb, "%s %s", TY_t(pa->p[i].ty), SYM_t(pa->p[i].fn)); } // if(Param_isVARGs(DP(mtd)->mp)) { // knh_write_delimdots(_ctx, w); // } kwb_putc(wb, ')'); } }
static void MethodAttribute_p(CTX, kMethod *mtd, kwb_t *wb) { uintptr_t i; for(i = 0; i < 30; i++) { if(attrs[i].aname == NULL) break; if((attrs[i].flag & mtd->flag) == attrs[i].flag) { kwb_printf(wb, "@%s ", attrs[i].aname); } } if(kMethod_isCast(mtd)) { kwb_printf(wb, "@Cast "); } // if(kMethod_isTransCast(mtd)) { // kwb_printf(wb, "@T "); // } }
static void Log_p(CTX, ksfp_t *sfp, int pos, kwb_t *wb) { kRawPtr *self = (kRawPtr *) sfp[0].asObject; struct Log *log = (struct Log *) self->rawptr; int i; char *data = log_get_data(log); uint16_t klen, vlen; kwb_printf(wb, "{"); for (i = 0; i < log->logsize; ++i) { char kbuf[64] = {}; char vbuf[64] = {}; char *next = log_iterator(log, data, i); klen = log_get_length(log, i*2+0); vlen = log_get_length(log, i*2+1); memcpy(kbuf, data,klen); memcpy(vbuf, data+klen, vlen); kwb_printf(wb, "'%s': '%s' ", kbuf, vbuf); data = next; } kwb_printf(wb, "}"); }