Exemplo n.º 1
0
KNHAPI(void) knh_OutputStream_writeLine(Ctx *ctx, knh_OutputStream_t *w, knh_bytes_t t, knh_bool_t isNEWLINE)
{
	if(knh_OutputStream_isBOL(w)) {
		knh_write_BOL(ctx, w);
	}
	if(t.len > 0) {
		if(DP(w)->encNULL != NULL && !knh_bytes_isASCII(t)) {
			if(knh_bytes_in(ctx->bufa->bu, t.ubuf)) {
				KNH_TODO("write cwb->buf with encoding");
			}
			else {
				knh_cwb_t cwbbuf, *cwb = knh_cwb_open(ctx, &cwbbuf);
				knh_StringEncoder_t *c = DP(w)->encNULL;
				c->dspi->enc(ctx, c->conv, t, cwb->ba);
				knh_write(ctx, w, knh_cwb_tobytes(cwb));
				knh_cwb_close(cwb);
			}
		}
		else {
			knh_OutputStream_write(ctx, w, t);
		}
	}
	if(isNEWLINE) {
		knh_write_EOL(ctx, w);
	}
}
Exemplo n.º 2
0
KNHAPI(void) knh_write_EOL(Ctx *ctx, knh_OutputStream_t *w)
{
	knh_OutputStream_write(ctx, w, S_tobytes(DP(w)->NEWLINE));
	if(knh_OutputStream_isAutoFlush(w)) {
		knh_OutputStream_flush(ctx, w);
	}
	knh_OutputStream_setBOL(w, 1);
}
Exemplo n.º 3
0
static void msgpack_flushfree(CTX ctx, kpackAPI_t *pk)
{
	msgpack_sbuffer *sbuffer = pk->sbuffer;
	kbytes_t t = {{sbuffer->data}, sbuffer->size};
	knh_OutputStream_write(ctx, pk->w, t);
	knh_OutputStream_flush(ctx, pk->w); /* TODO need flush? */
	msgpack_sbuffer_free(pk->sbuffer);
	msgpack_packer_free(pk->pk);
}
Exemplo n.º 4
0
KNHAPI(void) knh_write_BOL(Ctx *ctx, knh_OutputStream_t *w)
{
	knh_intptr_t i, n = DP(w)->indent;
	if(!knh_OutputStream_isBOL(w)) {
		knh_write_EOL(ctx, w);
	}
	for(i = 0; i < n; i++) {
		knh_OutputStream_write(ctx, w, S_tobytes(DP(w)->TAB));
	}
	knh_OutputStream_setBOL(w, 0);
}
Exemplo n.º 5
0
KNHAPI(void) knh_write_TAB(Ctx *ctx, knh_OutputStream_t *w)
{
	knh_OutputStream_write(ctx, w, S_tobytes(DP(w)->TAB));
}