summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--buf.c8
-rw-r--r--buf.h1
-rw-r--r--txr.19
3 files changed, 18 insertions, 0 deletions
diff --git a/buf.c b/buf.c
index a5d3abc6..14b89a2a 100644
--- a/buf.c
+++ b/buf.c
@@ -220,6 +220,13 @@ val length_buf(val buf)
return b->len;
}
+val buf_alloc_size(val buf)
+{
+ val self = lit("buf-alloc-size");
+ struct buf *b = buf_handle(buf, self);
+ return b->size;
+}
+
mem_t *buf_get(val buf, val self)
{
struct buf *b = buf_handle(buf, self);
@@ -943,6 +950,7 @@ void buf_init(void)
reg_fun(intern(lit("buf-trim"), user_package), func_n1(buf_trim));
reg_fun(intern(lit("buf-set-length"), user_package), func_n3o(buf_set_length, 2));
reg_fun(intern(lit("length-buf"), user_package), func_n1(length_buf));
+ reg_fun(intern(lit("buf-alloc-size"), user_package), func_n1(buf_alloc_size));
reg_fun(intern(lit("copy-buf"), user_package), func_n1(copy_buf));
#if HAVE_I8
diff --git a/buf.h b/buf.h
index 18641cfb..60004112 100644
--- a/buf.h
+++ b/buf.h
@@ -34,6 +34,7 @@ val copy_buf(val buf);
val buf_trim(val buf);
val buf_set_length(val obj, val len, val init_val);
val length_buf(val buf);
+val buf_alloc_size(val buf);
mem_t *buf_get(val buf, val self);
void buf_fill(val buf, mem_t *src, val self);
diff --git a/txr.1 b/txr.1
index 3922a757..5207606d 100644
--- a/txr.1
+++ b/txr.1
@@ -57356,6 +57356,15 @@ Note: the generic
.code length
function is also applicable to buffers.
+.coNP Function @ buf-alloc-size
+.synb
+.mets (buf-alloc-size << buf )
+.syne
+.desc
+The
+.code buf-alloc-size
+function retrieves the allocation size of the buffer.
+
.coNP Function @ buf-trim
.synb
.mets (buf-trim << buf )