summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--buf.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/buf.c b/buf.c
index 50319083..a3f63d41 100644
--- a/buf.c
+++ b/buf.c
@@ -260,6 +260,11 @@ static struct buf *buf_handle(val buf, val ctx)
ctx, buf, nao);
}
+INLINE struct buf *us_buf_handle(val buf)
+{
+ return &buf->b;
+}
+
val copy_buf(val buf)
{
struct buf *b = buf_handle(buf, lit("copy-buf"));
@@ -1131,7 +1136,7 @@ static int buf_strm_get_byte_callback(mem_t *ctx)
{
val self = lit("get-byte");
struct buf_strm *s = coerce(struct buf_strm *, ctx);
- struct buf *b = buf_handle(s->buf, self);
+ struct buf *b = us_buf_handle(s->buf);
cnum p = buf_check_index(b, s->pos, self);
s->pos = num(p + 1);
return (p >= c_num(b->len, self)) ? EOF : b->data[p];
@@ -1177,7 +1182,7 @@ static val buf_strm_unget_byte(val stream, int byte)
{
val self = lit("unget-byte");
struct buf_strm *s = coerce(struct buf_strm *, stream->co.handle);
- struct buf *b = buf_handle(s->buf, self);
+ struct buf *b = us_buf_handle(s->buf);
cnum p = c_num(s->pos, self);
if (p <= 0) {
@@ -1195,7 +1200,7 @@ static val buf_strm_seek(val stream, val offset, enum strm_whence whence)
{
val self = lit("seek-stream");
struct buf_strm *s = coerce(struct buf_strm *, stream->co.handle);
- struct buf *b = buf_handle(s->buf, self);
+ struct buf *b = us_buf_handle(s->buf);
val npos;
switch (whence) {
@@ -1257,9 +1262,8 @@ static val buf_strm_set_prop(val stream, val ind, val prop)
static val buf_strm_get_error(val stream)
{
- val self = lit("get-error");
struct buf_strm *s = coerce(struct buf_strm *, stream->co.handle);
- struct buf *b = buf_handle(s->buf, self);
+ struct buf *b = us_buf_handle(s->buf);
return ge(s->pos, b->len);
}
@@ -1309,10 +1313,13 @@ static struct buf_strm *buf_strm(val stream, val self)
val make_buf_stream(val buf_opt)
{
+ val self = lit("make-buf-stream");
val stream;
val buf = default_arg(buf_opt, make_buf(zero, zero, num_fast(64)));
struct buf_strm *s = coerce(struct buf_strm *, chk_malloc(sizeof *s));
+ (void) buf_handle(buf, self);
+
strm_base_init(&s->a);
utf8_decoder_init(&s->ud);
s->buf = nil;