From 1f85e6a95707736023fd89c107b29716c7203808 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 22 Mar 2016 22:45:36 -0400 Subject: [PATCH] Adding more bv prims --- include/cyclone/runtime.h | 3 +++ runtime.c | 20 ++++++++++++++++++++ scheme/cyclone/transforms.sld | 3 +++ scheme/eval.sld | 3 +++ 4 files changed, 29 insertions(+) diff --git a/include/cyclone/runtime.h b/include/cyclone/runtime.h index 12da3411..47fcc0da 100644 --- a/include/cyclone/runtime.h +++ b/include/cyclone/runtime.h @@ -353,6 +353,9 @@ extern const object primitive_make_91vector; extern const object primitive_list_91_125vector; extern const object primitive_vector_91ref; extern const object primitive_vector_91set_67; +extern const object primitive_bytevector; +extern const object primitive_bytevector_91u8_91ref; +extern const object primitive_bytevector_91u8_91set_67; extern const object primitive_string_91ref; extern const object primitive_string_91set_67; extern const object primitive_Cyc_91installation_91dir; diff --git a/runtime.c b/runtime.c index ff26eae3..3beab532 100644 --- a/runtime.c +++ b/runtime.c @@ -1911,6 +1911,18 @@ void _bytevector_91length(void *data, object cont, object args){ Cyc_check_num_args(data, "bytevector_91length", 1, args); { object obj = Cyc_bytevector_length(data, car(args)); return_closcall1(data, cont, obj); }} +void _bytevector_91u8_91ref(void *data, object cont, object args) { + Cyc_check_num_args(data, "bytevector-u8-ref", 2, args); + { object c = Cyc_bytevector_u8_ref(data, car(args), cadr(args)); + return_closcall1(data, cont, c); }} +void _bytevector_91u8_91set_67(void *data, object cont, object args) { + Cyc_check_num_args(data, "bytevector-u8-set!", 3, args); + { object bv = Cyc_bytevector_u8_set(data, car(args), cadr(args), caddr(args)); + return_closcall1(data, cont, bv); }} + +void _bytevector(void *data, object cont, object args) { + return_closcall1(data, cont, boolean_f); } // TODO + void _vector_91length(void *data, object cont, object args){ Cyc_check_num_args(data, "vector_91length", 1, args); { object obj = Cyc_vector_length(data, car(args)); @@ -2738,6 +2750,11 @@ static primitive_type symbol_91_125string_primitive = {{0}, primitive_tag, "symb static primitive_type number_91_125string_primitive = {{0}, primitive_tag, "number->string", &_number_91_125string}; static primitive_type list_91_125vector_primitive = {{0}, primitive_tag, "list-vector", &_list_91_125vector}; static primitive_type make_91bytevector_primitive = {{0}, primitive_tag, "make-bytevector", &_make_91bytevector}; + +static primitive_type bytevector_primitive = {{0}, primitive_tag, "bytevector", &_bytevector}; +static primitive_type bytevector_91u8_91ref_primitive = {{0}, primitive_tag, "bytevector-u8-ref", &_bytevector_91u8_91ref}; +static primitive_type bytevector_91u8_91set_67_primitive = {{0}, primitive_tag, "bytevector-u8-set!", &_bytevector_91u8_91set_67}; + static primitive_type make_91vector_primitive = {{0}, primitive_tag, "make-vector", &_make_91vector}; static primitive_type vector_91ref_primitive = {{0}, primitive_tag, "vector-ref", &_vector_91ref}; static primitive_type vector_91set_67_primitive = {{0}, primitive_tag, "vector-set!", &_vector_91set_67}; @@ -2862,6 +2879,9 @@ const object primitive_symbol_91_125string = &symbol_91_125string_primitive; const object primitive_number_91_125string = &number_91_125string_primitive; const object primitive_make_91bytevector = &make_91bytevector_primitive; const object primitive_make_91vector = &make_91vector_primitive; +const object primitive_bytevector = &bytevector_primitive; +const object primitive_bytevector_91u8_91ref = &bytevector_91u8_91ref_primitive; +const object primitive_bytevector_91u8_91set_67 = &bytevector_91u8_91set_67_primitive; const object primitive_list_91_125vector = &list_91_125vector_primitive; const object primitive_boolean_127 = &boolean_127_primitive; const object primitive_char_127 = &char_127_primitive; diff --git a/scheme/cyclone/transforms.sld b/scheme/cyclone/transforms.sld index 8b9f90bc..a09e0815 100644 --- a/scheme/cyclone/transforms.sld +++ b/scheme/cyclone/transforms.sld @@ -514,6 +514,9 @@ substring make-bytevector bytevector-length + bytevector + bytevector-u8-ref + bytevector-u8-set! bytevector? make-vector list->vector diff --git a/scheme/eval.sld b/scheme/eval.sld index bf046104..b5bbedee 100644 --- a/scheme/eval.sld +++ b/scheme/eval.sld @@ -246,6 +246,9 @@ (list 'substring substring) (list 'make-bytevector make-bytevector) (list 'bytevector-length bytevector-length) + (list 'bytevector bytevector) + (list 'bytevector-u8-ref bytevector-u8-ref) + (list 'bytevector-u8-set! bytevector-u8-set!) (list 'make-vector make-vector) (list 'list->vector list->vector) (list 'vector-length vector-length)