Beispiel #1
0
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;
}