spec: bytevectors (make-bytevector/u8-ref/u8-set!/utf8->string/etc)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1252,3 +1252,77 @@
|
||||
:params ((re :as regexp) (str :as string))
|
||||
:returns "list"
|
||||
:doc "Split str on every match of re; returns list of strings.")
|
||||
|
||||
(define-module :stdlib.bytevectors)
|
||||
|
||||
(define-primitive
|
||||
"make-bytevector"
|
||||
:params (n &rest fill)
|
||||
:returns "bytevector"
|
||||
:doc "Create a bytevector of n bytes, all initialised to fill (default 0).")
|
||||
|
||||
(define-primitive
|
||||
"bytevector?"
|
||||
:params (v)
|
||||
:returns "boolean"
|
||||
:doc "True if v is a bytevector.")
|
||||
|
||||
(define-primitive
|
||||
"bytevector-length"
|
||||
:params ((bv :as bytevector))
|
||||
:returns "number"
|
||||
:doc "Number of bytes in bv.")
|
||||
|
||||
(define-primitive
|
||||
"bytevector-u8-ref"
|
||||
:params ((bv :as bytevector) (i :as number))
|
||||
:returns "number"
|
||||
:doc "Byte value 0-255 at index i.")
|
||||
|
||||
(define-primitive
|
||||
"bytevector-u8-set!"
|
||||
:params ((bv :as bytevector) (i :as number) (byte :as number))
|
||||
:returns "nil"
|
||||
:doc "Set byte at index i to byte 0-255. Mutates bv.")
|
||||
|
||||
(define-primitive
|
||||
"bytevector-copy"
|
||||
:params ((bv :as bytevector) &rest bounds)
|
||||
:returns "bytevector"
|
||||
:doc "Fresh copy of bv, optionally sliced to [start, end).")
|
||||
|
||||
(define-primitive
|
||||
"bytevector-copy!"
|
||||
:params ((dst :as bytevector) (at :as number) (src :as bytevector) &rest bounds)
|
||||
:returns "nil"
|
||||
:doc "Copy bytes from src[start..end) into dst starting at at. Mutates dst.")
|
||||
|
||||
(define-primitive
|
||||
"bytevector-append"
|
||||
:params (&rest bvs)
|
||||
:returns "bytevector"
|
||||
:doc "Concatenate bytevectors into a new bytevector.")
|
||||
|
||||
(define-primitive
|
||||
"utf8->string"
|
||||
:params ((bv :as bytevector) &rest bounds)
|
||||
:returns "string"
|
||||
:doc "Decode bv[start..end) as UTF-8 and return the string.")
|
||||
|
||||
(define-primitive
|
||||
"string->utf8"
|
||||
:params ((s :as string) &rest bounds)
|
||||
:returns "bytevector"
|
||||
:doc "Encode s[start..end) as UTF-8 and return a bytevector.")
|
||||
|
||||
(define-primitive
|
||||
"bytevector->list"
|
||||
:params ((bv :as bytevector))
|
||||
:returns "list"
|
||||
:doc "Convert bytevector to a list of byte integers.")
|
||||
|
||||
(define-primitive
|
||||
"list->bytevector"
|
||||
:params ((lst :as list))
|
||||
:returns "bytevector"
|
||||
:doc "Build a bytevector from a list of byte integers 0-255.")
|
||||
|
||||
Reference in New Issue
Block a user