MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at mir/inline-method 83 lines 2.1 kB view raw
1#ifndef BUFFER_H 2#define BUFFER_H 3 4#include <stdint.h> 5#include <stddef.h> 6#include "types.h" 7 8typedef struct { 9 uint8_t *data; 10 size_t length; 11 size_t capacity; 12 int ref_count; 13 int is_shared; 14 int is_detached; 15} ArrayBufferData; 16 17typedef enum { 18 TYPED_ARRAY_INT8, 19 TYPED_ARRAY_UINT8, 20 TYPED_ARRAY_UINT8_CLAMPED, 21 TYPED_ARRAY_INT16, 22 TYPED_ARRAY_UINT16, 23 TYPED_ARRAY_INT32, 24 TYPED_ARRAY_UINT32, 25 TYPED_ARRAY_FLOAT16, 26 TYPED_ARRAY_FLOAT32, 27 TYPED_ARRAY_FLOAT64, 28 TYPED_ARRAY_BIGINT64, 29 TYPED_ARRAY_BIGUINT64 30} TypedArrayType; 31 32typedef struct { 33 ArrayBufferData *buffer; 34 TypedArrayType type; 35 size_t byte_offset; 36 size_t byte_length; 37 size_t length; 38} TypedArrayData; 39 40typedef struct { 41 ArrayBufferData *buffer; 42 size_t byte_offset; 43 size_t byte_length; 44} DataViewData; 45 46ant_value_t buffer_library(ant_t *js); 47 48void init_buffer_module(void); 49void cleanup_buffer_module(void); 50void free_array_buffer_data(ArrayBufferData *data); 51 52size_t buffer_get_external_memory(void); 53 54ant_value_t create_arraybuffer_obj(ant_t *js, ArrayBufferData *buffer); 55const char *buffer_typedarray_type_name(TypedArrayType type); 56 57ArrayBufferData *create_array_buffer_data(size_t length); 58ArrayBufferData *buffer_get_arraybuffer_data(ant_value_t value); 59TypedArrayData *buffer_get_typedarray_data(ant_value_t value); 60DataViewData *buffer_get_dataview_data(ant_value_t value); 61 62ant_value_t create_typed_array( 63 ant_t *js, TypedArrayType type, ArrayBufferData *buffer, 64 size_t byte_offset, size_t length, const char *type_name 65); 66 67ant_value_t create_typed_array_with_buffer( 68 ant_t *js, TypedArrayType type, ArrayBufferData *buffer, 69 size_t byte_offset, size_t length, 70 const char *type_name, ant_value_t arraybuffer_obj 71); 72 73ant_value_t create_dataview_with_buffer( 74 ant_t *js, ArrayBufferData *buffer, 75 size_t byte_offset, size_t byte_length, 76 ant_value_t arraybuffer_obj 77); 78 79bool buffer_is_dataview(ant_value_t obj); 80bool buffer_is_binary_source(ant_value_t value); 81bool buffer_source_get_bytes(ant_t *js, ant_value_t value, const uint8_t **out, size_t *len); 82 83#endif