static METHOD knh__String_getBytes(Ctx *ctx, knh_sfp_t *sfp) { Bytes *ba; if(IS_NULL(sfp[1].o)) { ba = new_Bytes(ctx, (sfp[0].s)->size + 1); knh_Bytes_write(ctx, ba, knh_String_tobytes(sfp[0].s)); } else { knh_bytes_t t = knh_String_tobytes(sfp[0].s); BytesConv *bc = new_BytesConv__out(ctx, knh_String_tochar(sfp[1].s)); KNH_SETv(ctx, sfp[2].o, bc); ba = new_Bytes(ctx, t.len); bc->fbconv(ctx, bc, t, ba); } KNH_RETURN(ctx, sfp, ba); }
knh_InputStream_t* new_InputStreamDSPI(Ctx *ctx, knh_io_t fd, const knh_StreamDSPI_t *dspi) { knh_InputStream_t* in = new_(InputStream); DP(in)->fd = fd; SP(in)->dspi = dspi; DP(in)->bufsiz = dspi->bufsiz; if(DP(in)->bufsiz > 0) { KNH_SETv(ctx, DP(in)->ba, new_Bytes(ctx, DP(in)->bufsiz)); DP(in)->buf = (char*)(DP(in)->ba)->bu.ubuf; } else { knh_InputStream_setFILE(in, 1); } DP(in)->bufpos = 0; DP(in)->bufend = 0; /* empty */ return in; }