mirror of
https://github.com/janet-lang/janet
synced 2024-10-31 22:16:16 +00:00
add buffer/from-bytes
This commit is contained in:
parent
43a6a70e1e
commit
6222f35bc8
@ -221,6 +221,20 @@ JANET_CORE_FN(cfun_buffer_new_filled,
|
|||||||
return janet_wrap_buffer(buffer);
|
return janet_wrap_buffer(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JANET_CORE_FN(cfun_buffer_frombytes,
|
||||||
|
"(buffer/from-bytes & byte-vals)",
|
||||||
|
"Creates a buffer from integer parameters with byte values. All integers "
|
||||||
|
"will be coerced to the range of 1 byte 0-255.") {
|
||||||
|
int32_t i;
|
||||||
|
JanetBuffer *buffer = janet_buffer(argc);
|
||||||
|
for (i = 0; i < argc; i++) {
|
||||||
|
int32_t c = janet_getinteger(argv, i);
|
||||||
|
buffer->data[i] = c & 0xFF;
|
||||||
|
}
|
||||||
|
buffer->count = argc;
|
||||||
|
return janet_wrap_buffer(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
JANET_CORE_FN(cfun_buffer_fill,
|
JANET_CORE_FN(cfun_buffer_fill,
|
||||||
"(buffer/fill buffer &opt byte)",
|
"(buffer/fill buffer &opt byte)",
|
||||||
"Fill up a buffer with bytes, defaulting to 0s. Does not change the buffer's length. "
|
"Fill up a buffer with bytes, defaulting to 0s. Does not change the buffer's length. "
|
||||||
@ -509,6 +523,7 @@ void janet_lib_buffer(JanetTable *env) {
|
|||||||
JanetRegExt buffer_cfuns[] = {
|
JanetRegExt buffer_cfuns[] = {
|
||||||
JANET_CORE_REG("buffer/new", cfun_buffer_new),
|
JANET_CORE_REG("buffer/new", cfun_buffer_new),
|
||||||
JANET_CORE_REG("buffer/new-filled", cfun_buffer_new_filled),
|
JANET_CORE_REG("buffer/new-filled", cfun_buffer_new_filled),
|
||||||
|
JANET_CORE_REG("buffer/from-bytes", cfun_buffer_frombytes),
|
||||||
JANET_CORE_REG("buffer/fill", cfun_buffer_fill),
|
JANET_CORE_REG("buffer/fill", cfun_buffer_fill),
|
||||||
JANET_CORE_REG("buffer/trim", cfun_buffer_trim),
|
JANET_CORE_REG("buffer/trim", cfun_buffer_trim),
|
||||||
JANET_CORE_REG("buffer/push-byte", cfun_buffer_u8),
|
JANET_CORE_REG("buffer/push-byte", cfun_buffer_u8),
|
||||||
|
@ -77,6 +77,14 @@
|
|||||||
(buffer/push-string b5 "456" @"789")
|
(buffer/push-string b5 "456" @"789")
|
||||||
(assert (= "123456789" (string b5)) "buffer/push-buffer 2")
|
(assert (= "123456789" (string b5)) "buffer/push-buffer 2")
|
||||||
|
|
||||||
|
# Buffer from bytes
|
||||||
|
(assert (deep= @"" (buffer/from-bytes)) "buffer/from-bytes 1")
|
||||||
|
(assert (deep= @"ABC" (buffer/from-bytes 65 66 67)) "buffer/from-bytes 2")
|
||||||
|
(assert (deep= @"0123456789" (buffer/from-bytes ;(range 48 58))) "buffer/from-bytes 3")
|
||||||
|
(assert (= 0 (length (buffer/from-bytes))) "buffer/from-bytes 4")
|
||||||
|
(assert (= 5 (length (buffer/from-bytes ;(range 5)))) "buffer/from-bytes 5")
|
||||||
|
(assert-error "bad slot #1, expected 32 bit signed integer" (buffer/from-bytes :abc))
|
||||||
|
|
||||||
# some tests for buffer/format
|
# some tests for buffer/format
|
||||||
# 029394d
|
# 029394d
|
||||||
(assert (= (string (buffer/format @"" "pi = %6.3f" math/pi)) "pi = 3.142")
|
(assert (= (string (buffer/format @"" "pi = %6.3f" math/pi)) "pi = 3.142")
|
||||||
@ -114,8 +122,5 @@
|
|||||||
(assert (deep= @"abc423" (buffer/push-at @"abc123" 3 "4"))
|
(assert (deep= @"abc423" (buffer/push-at @"abc123" 3 "4"))
|
||||||
"buffer/push-at 3")
|
"buffer/push-at 3")
|
||||||
|
|
||||||
# 4782a76
|
|
||||||
(assert (= 10 (do (var x 10) (def y x) (++ x) y)) "no invalid aliasing")
|
|
||||||
|
|
||||||
(end-suite)
|
(end-suite)
|
||||||
|
|
||||||
|
@ -292,5 +292,8 @@
|
|||||||
[2 6 4 'z]])
|
[2 6 4 'z]])
|
||||||
"arg & inner symbolmap")
|
"arg & inner symbolmap")
|
||||||
|
|
||||||
|
# 4782a76
|
||||||
|
(assert (= 10 (do (var x 10) (def y x) (++ x) y)) "no invalid aliasing")
|
||||||
|
|
||||||
(end-suite)
|
(end-suite)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user