11#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
28#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
45#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
58#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
106#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
134#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
141#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
150#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
190 h_bufobj->
buf = h_val;
199#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
222#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
241 if (offset_signed < 0) {
245 if (offset > h_bufarg->
length) {
253 length = h_bufarg->
length - offset;
256 if (length_signed < 0) {
261 if (length > h_bufarg->
length - offset) {
268 length = h_bufarg->
length - offset;
273 DUK_ASSERT(offset + length <= h_bufarg->length);
275 *out_offset = offset;
276 *out_length = length;
284#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
306 end_offset = buffer_length;
317 *out_start_offset = start_offset;
318 *out_end_offset = end_offset;
322#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
344 buffer_length >>= h_bufobj->
shift;
352 if (start_offset < 0) {
353 start_offset = buffer_length + start_offset;
356 end_offset = buffer_length;
359 if (end_offset < 0) {
360 end_offset = buffer_length + end_offset;
365 if (start_offset < 0) {
367 }
else if (start_offset > buffer_length) {
368 start_offset = buffer_length;
370 if (end_offset < start_offset) {
371 end_offset = start_offset;
372 }
else if (end_offset > buffer_length) {
373 end_offset = buffer_length;
382 start_offset <<= h_bufobj->
shift;
383 end_offset <<= h_bufobj->
shift;
385 *out_start_offset = start_offset;
386 *out_end_offset = end_offset;
397 DUK_MEMCPY((
void *) du.
uc, (
const void *) p, (
size_t) elem_size);
401#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
406#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
450#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
481 DUK_MEMCPY((
void *) p, (
const void *) du.
uc, (
size_t) elem_size);
492 duk_uint8_t *buf_data;
493 const duk_uint8_t *src_data;
529 buf_data = (duk_uint8_t *)
duk_push_buffer(ctx, buf_size, buf_dynamic);
530 DUK_MEMCPY((
void *) buf_data, (
const void *) src_data, (
size_t) buf_size);
590#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
621 for (i = 0; i < len; i++) {
650 h_bufobj->
buf = h_buf;
671#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
705#if !defined(DUK_USE_ZERO_BUFFER_DATA)
742#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
777 shift = magic & 0x03;
778 elem_type = (magic >> 2) & 0x0f;
779 elem_size = 1 << shift;
780 align_mask = elem_size - 1;
788 "elem_size=%d, proto_bidx=%d, class_num=%d",
789 (
int) magic, (
int) shift, (
int) elem_type, (
int) elem_size,
790 (
int) proto_bidx, (
int) class_num));
814 if (byte_offset_signed < 0) {
817 byte_offset = (
duk_uint_t) byte_offset_signed;
818 if (byte_offset > h_bufarg->
length ||
819 (byte_offset & align_mask) != 0) {
825 byte_length = h_bufarg->
length - byte_offset;
826 if ((byte_length & align_mask) != 0) {
832 elem_length = (byte_length >> shift);
835 if (elem_length_signed < 0) {
838 elem_length = (
duk_uint_t) elem_length_signed;
839 byte_length = elem_length << shift;
840 if ((byte_length >> shift) != elem_length) {
846 if (byte_length > h_bufarg->
length - byte_offset) {
855 DUK_ASSERT(byte_offset + byte_length <= h_bufarg->length);
856 DUK_ASSERT((elem_length << shift) == byte_length);
863 h_val = h_bufarg->
buf;
867 h_bufobj->
buf = h_val;
870 h_bufobj->
length = byte_length;
871 h_bufobj->
shift = (duk_uint8_t) shift;
872 h_bufobj->
elem_type = (duk_uint8_t) elem_type;
900 "src byte_length=%ld, src shift=%d, "
901 "src/dst elem_length=%ld; "
902 "dst shift=%d -> dst byte_length=%ld",
904 (
long) elem_length_signed, (
int) shift,
905 (
long) (elem_length_signed << shift)));
940 if (elem_length_signed < 0) {
943 elem_length = (
duk_uint_t) elem_length_signed;
944 byte_length = (
duk_uint_t) (elem_length << shift);
945 if ((byte_length >> shift) != elem_length) {
952 (
long) elem_length, (
long) byte_length));
961 h_val = h_bufarr->
buf;
971 h_bufobj->
buf = h_val;
974 h_bufobj->
length = byte_length;
975 h_bufobj->
shift = (duk_uint8_t) shift;
976 h_bufobj->
elem_type = (duk_uint8_t) elem_type;
1010 (
void *) p_src, (
void *) p_dst, (
long) byte_length));
1012 DUK_MEMCPY((
void *) p_dst, (
const void *) p_src, (
size_t) byte_length);
1021 duk_uint8_t *p_src_end;
1031 src_elem_size = 1 << h_bufarg->
shift;
1032 dst_elem_size = elem_size;
1036 p_src_end = p_src + h_bufarg->
length;
1039 "src_elem_size=%d, dst_elem_size=%d",
1040 (
void *) p_src, (
void *) p_src_end, (
void *) p_dst,
1041 (
int) src_elem_size, (
int) dst_elem_size));
1043 while (p_src != p_src_end) {
1045 "p_src=%p, p_src_end=%p, p_dst=%p",
1046 (
void *) p_src, (
void *) p_src_end, (
void *) p_dst));
1053 p_src += src_elem_size;
1054 p_dst += dst_elem_size;
1066 for (i = 0; i < elem_length; i++) {
1078#if !defined(DUK_USE_ZERO_BUFFER_DATA)
1103#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
1121 DUK_ASSERT(offset + length <= h_bufarg->length);
1129 h_val = h_bufarg->
buf;
1130 if (h_val ==
NULL) {
1133 h_bufobj->
buf = h_val;
1136 h_bufobj->
length = length;
1170#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
1193#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
1198 duk_uint8_t *buf_slice;
1205 if (h_this ==
NULL) {
1216 slice_length = (
duk_size_t) (end_offset - start_offset);
1227 (
size_t) slice_length);
1250#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
1284 DUK_DD(
DUK_DDPRINT(
"toString/valueOf() called for a bufferobject with NULL buf"));
1311#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
1336 for (i = 0; i < h_this->
length; i++) {
1362#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
1422#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
1426 const duk_uint8_t *fill_str_ptr;
1428 duk_uint8_t fill_value;
1446 fill_str_ptr = (
const duk_uint8_t *)
duk_get_lstring(ctx, 0, &fill_str_len);
1450 fill_str_ptr = (
const duk_uint8_t *) &fill_value;
1458 DUK_DDD(
DUK_DDDPRINT(
"fill: fill_value=%02x, fill_offset=%ld, fill_end=%ld, view length=%ld",
1459 (
unsigned int) fill_value, (
long) fill_offset, (
long) fill_end, (
long) h_this->
length));
1465 fill_length = (
duk_size_t) (fill_end - fill_offset);
1466 if (fill_str_len == 1) {
1470 DUK_MEMSET((
void *) p, (
int) fill_str_ptr[0], (
size_t) fill_length);
1471 }
else if (fill_str_len > 1) {
1474 for (i = 0, n = (fill_end - fill_offset), t = 0; i < n; i++) {
1475 p[i] = fill_str_ptr[t++];
1476 if (t >= fill_str_len) {
1499#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
1505 const duk_uint8_t *str_data;
1519 DUK_ASSERT(offset + length <= h_this->length);
1530 (
const void *) str_data,
1550#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
1557 duk_int_t target_start, source_start, source_end;
1558 duk_uint_t target_ustart, source_ustart, source_uend;
1576 source_end = source_length;
1582 "source_start=%ld, source_end=%ld, source_length=%ld",
1583 (
long) target_start, (
long) h_bufarg->
length,
1584 (
long) source_start, (
long) source_end, (
long) source_length));
1588 if (source_start < 0 || source_end < 0 || target_start < 0) {
1595 if (source_ustart >= source_uend ||
1596 source_ustart >= (
duk_uint_t) source_length ||
1597 target_ustart >= (
duk_uint_t) target_length) {
1600 if (source_uend >= (
duk_uint_t) source_length) {
1602 source_uend = source_length;
1604 copy_size = source_uend - source_ustart;
1605 if (target_ustart + copy_size > (
duk_uint_t) target_length) {
1613 DUK_ASSERT(target_ustart + copy_size >= target_ustart);
1614 DUK_ASSERT(target_ustart + copy_size >= copy_size);
1615 copy_size = (
duk_uint_t) target_length - target_ustart;
1619 (
unsigned long) target_ustart, (
unsigned long) source_ustart,
1620 (
unsigned long) copy_size));
1638 (
size_t) copy_size);
1697#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
1727 if (offset_signed < 0) {
1731 offset_bytes = offset_elems << h_this->
shift;
1732 if ((offset_bytes >> h_this->
shift) != offset_elems) {
1737 if (offset_bytes > h_this->
length) {
1750 duk_uint16_t comp_mask;
1755 duk_uint8_t *p_src_base;
1756 duk_uint8_t *p_src_end;
1758 duk_uint8_t *p_dst_base;
1772 src_length = h_bufarg->
length;
1773 dst_length_elems = (src_length >> h_bufarg->
shift);
1774 dst_length = dst_length_elems << h_this->
shift;
1775 if ((dst_length >> h_this->
shift) != dst_length_elems) {
1781 (
long) src_length, (
long) dst_length));
1783 if (dst_length > h_this->
length - offset_bytes) {
1808 DUK_DDD(
DUK_DDDPRINT(
"source and/or target not covered by underlying buffer, skip copy"));
1825 if (comp_mask & (1 << h_bufarg->
elem_type)) {
1829 DUK_MEMMOVE((
void *) p_dst_base, (
const void *) p_src_base, (
size_t) dst_length);
1832 DUK_DDD(
DUK_DDDPRINT(
"fast path: views are not compatible with a byte copy, copy by item"));
1851 "p_dst_base=%p, dst_length=%ld",
1852 (
void *) p_src_base, (
long) src_length,
1853 (
void *) p_dst_base, (
long) dst_length));
1855 if (p_src_base >= p_dst_base + dst_length ||
1856 p_src_base + src_length <= p_dst_base) {
1866 duk_uint8_t *p_src_copy;
1871 DUK_MEMCPY((
void *) p_src_copy, (
const void *) p_src_base, (
size_t) src_length);
1873 p_src_base = p_src_copy;
1878 "p_dst_base=%p, dst_length=%ld, valstack top=%ld",
1879 (
void *) p_src_base, (
long) src_length,
1880 (
void *) p_dst_base, (
long) dst_length,
1891 src_elem_size = 1 << h_bufarg->
shift;
1892 dst_elem_size = 1 << h_this->
shift;
1895 p_src_end = p_src_base + src_length;
1897 while (p_src != p_src_end) {
1899 "p_src=%p, p_src_end=%p, p_dst=%p",
1900 (
void *) p_src, (
void *) p_src_end, (
void *) p_dst));
1907 p_src += src_elem_size;
1908 p_dst += dst_elem_size;
1924 if ((n << h_this->
shift) > h_this->
length - offset_bytes) {
1942 for (i = 0; i < n; i++) {
1975#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
2006 slice_length = (
duk_uint_t) (end_offset - start_offset);
2029 h_bufobj->
length = slice_length;
2032 h_bufobj->
is_view = magic & 0x01;
2035 h_val = h_this->
buf;
2036 if (h_val ==
NULL) {
2042 duk_uint8_t *p_copy;
2059 h_bufobj->
buf = h_val;
2065 h_bufobj->
buf = h_val;
2098#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
2100 const char *encoding;
2120#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
2161#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
2187#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
2211 for (i = 0; i < n; i++) {
2219 total_length += h_bufobj->
length;
2243 if (total_length < 0) {
2256 space_left = total_length;
2258 for (i = 0; i < n; i++) {
2265 copy_size = h_bufobj->
length;
2266 if (copy_size > space_left) {
2267 copy_size = space_left;
2280 space_left -= copy_size;
2309#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
2316#define DUK__FLD_8BIT 0
2317#define DUK__FLD_16BIT 1
2318#define DUK__FLD_32BIT 2
2319#define DUK__FLD_FLOAT 3
2320#define DUK__FLD_DOUBLE 4
2321#define DUK__FLD_VARINT 5
2322#define DUK__FLD_BIGENDIAN (1 << 3)
2323#define DUK__FLD_SIGNED (1 << 4)
2324#define DUK__FLD_TYPEDARRAY (1 << 5)
2347 magic_ftype = magic & 0x0007;
2348 magic_bigendian = magic & 0x0008;
2349 magic_signed = magic & 0x0010;
2350 magic_typedarray = magic & 0x0020;
2354 buffer_length = h_this->
length;
2361 if (magic_typedarray) {
2363#if defined(DUK_USE_INTEGER_LE)
2370#if defined(DUK_USE_INTEGER_LE)
2371 endswap = magic_bigendian;
2373 endswap = !magic_bigendian;
2383 if (offset_signed < 0) {
2388 "magic=%04x, magic_fieldtype=%d, magic_bigendian=%d, magic_signed=%d, "
2390 (
long) buffer_length, (
long) offset, (
int) no_assert,
2391 (
unsigned int) magic, (
int) magic_ftype, (
int) (magic_bigendian >> 3),
2392 (
int) (magic_signed >> 4), (
int) endswap));
2400 (
long) buffer_length, (
long) check_length));
2414 switch (magic_ftype) {
2417 if (offset + 1U > check_length) {
2430 if (offset + 2U > check_length) {
2433 DUK_MEMCPY((
void *) du.
uc, (
const void *) (buf + offset), 2);
2447 if (offset + 4U > check_length) {
2450 DUK_MEMCPY((
void *) du.
uc, (
const void *) (buf + offset), 4);
2464 if (offset + 4U > check_length) {
2467 DUK_MEMCPY((
void *) du.
uc, (
const void *) (buf + offset), 4);
2477 if (offset + 8U > check_length) {
2480 DUK_MEMCPY((
void *) du.
uc, (
const void *) (buf + offset), 8);
2493#if defined(DUK_USE_64BIT_OPS)
2500 const duk_uint8_t *p;
2503 if (field_bytelen < 1 || field_bytelen > 6) {
2504 goto fail_field_length;
2506 if (offset + (
duk_uint_t) field_bytelen > check_length) {
2509 p = (
const duk_uint8_t *) (buf + offset);
2516 if (magic_bigendian) {
2520 i_end = field_bytelen;
2523 i = field_bytelen - 1;
2528#if defined(DUK_USE_64BIT_OPS)
2532 tmp = (tmp << 8) + (duk_int64_t) p[i];
2534 }
while (i != i_end);
2538 shift_tmp = 64 - (field_bytelen * 8);
2539 tmp = (tmp << shift_tmp) >> shift_tmp;
2545 if (magic_signed && (highbyte & 0x80) != 0) {
2591#if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
2614 magic_ftype = magic & 0x0007;
2615 magic_bigendian = magic & 0x0008;
2616 magic_signed = magic & 0x0010;
2617 magic_typedarray = magic & 0x0020;
2622 buffer_length = h_this->
length;
2629 if (magic_typedarray) {
2631#if defined(DUK_USE_INTEGER_LE)
2639#if defined(DUK_USE_INTEGER_LE)
2640 endswap = magic_bigendian;
2642 endswap = !magic_bigendian;
2661 if (nbytes < 1 || nbytes > 6) {
2662 goto fail_field_length;
2668 if (offset_signed < 0) {
2672 DUK_DDD(
DUK_DDDPRINT(
"writefield, value=%!T, buffer_length=%ld, offset=%ld, no_assert=%d, "
2673 "magic=%04x, magic_fieldtype=%d, magic_bigendian=%d, magic_signed=%d, "
2675 duk_get_tval(ctx, 0), (
long) buffer_length, (
long) offset, (
int) no_assert,
2676 (
unsigned int) magic, (
int) magic_ftype, (
int) (magic_bigendian >> 3),
2677 (
int) (magic_signed >> 4), (
int) endswap));
2691 (
long) buffer_length, (
long) check_length));
2705 switch (magic_ftype) {
2707 if (offset + 1U > check_length) {
2716 if (offset + 2U > check_length) {
2725 DUK_MEMCPY((
void *) (buf + offset), (
const void *) du.
uc, 2);
2730 if (offset + 4U > check_length) {
2739 DUK_MEMCPY((
void *) (buf + offset), (
const void *) du.
uc, 4);
2744 if (offset + 4U > check_length) {
2754 DUK_MEMCPY((
void *) (buf + offset), (
const void *) du.
uc, 4);
2758 if (offset + 8U > check_length) {
2766 DUK_MEMCPY((
void *) (buf + offset), (
const void *) du.
uc, 8);
2775#if defined(DUK_USE_64BIT_OPS)
2783 if (offset + (
duk_uint_t) field_bytelen > check_length) {
2792 if (magic_bigendian) {
2801 i_end = field_bytelen - 1;
2810#if defined(DUK_USE_64BIT_OPS)
2812 p = (duk_uint8_t *) (buf + offset);
2816 p[i] = (duk_uint8_t) (tmp & 0xff);
2818 }
while (i != i_end);
2821 p = (duk_uint8_t *) (buf + offset);
2826 p[i] = (duk_uint8_t) (
DUK_FMOD(tmp, 256.0));
2828 }
while (i != i_end);
2840 if (magic_typedarray) {
2859 if (magic_typedarray) {
2875#undef DUK__FLD_16BIT
2876#undef DUK__FLD_32BIT
2877#undef DUK__FLD_FLOAT
2878#undef DUK__FLD_DOUBLE
2879#undef DUK__FLD_VARINT
2880#undef DUK__FLD_BIGENDIAN
2881#undef DUK__FLD_SIGNED
2882#undef DUK__FLD_TYPEDARRAY
#define DUK_UNREACHABLE()
unsigned int duk_small_uint_t
duk_small_int_t duk_ret_t
duk_int_fast32_t duk_int_t
duk_uint_fast32_t duk_uint_t
#define DUK_MEMZERO(p, n)
duk_small_int_t duk_bool_t
#define DUK_BIDX_ARRAYBUFFER_PROTOTYPE
#define DUK_BIDX_UINT8ARRAY_PROTOTYPE
#define DUK_ERROR_RANGE(thr, msg)
#define DUK_ASSERT_CTX_VALID(ctx)
DUK_EXTERNAL void duk_pop_2(duk_context *ctx)
DUK_EXTERNAL const char * duk_push_string(duk_context *ctx, const char *str)
DUK_EXTERNAL const char * duk_get_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
DUK_EXTERNAL duk_bool_t duk_is_undefined(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL_DECL duk_bool_t duk_put_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx)
#define DUK_HOBJECT_GET_PROTOTYPE(heap, h)
DUK_INTERNAL_DECL duk_hobject * duk_require_hobject(duk_context *ctx, duk_idx_t index)
#define DUK_ERROR_TYPE(thr, msg)
#define DUK_HOBJECT_CLASS_BUFFER
DUK_EXTERNAL void duk_push_this(duk_context *ctx)
DUK_INTERNAL_DECL duk_bool_t duk_get_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx)
#define DUK_STRIDX_LC_BUFFER
#define DUK_HBUFFER_INCREF(thr, h)
DUK_EXTERNAL void duk_swap(duk_context *ctx, duk_idx_t index1, duk_idx_t index2)
#define DUK_HOBJECT_CLASS_INT32ARRAY
#define DUK_HBUFFEROBJECT_ELEM_INT32
DUK_EXTERNAL duk_bool_t duk_get_boolean(duk_context *ctx, duk_idx_t index)
#define DUK_TVAL_GET_OBJECT(tv)
DUK_EXTERNAL void duk_compact(duk_context *ctx, duk_idx_t obj_index)
DUK_INTERNAL_DECL duk_int_t duk_to_int_clamped(duk_context *ctx, duk_idx_t index, duk_int_t minval, duk_int_t maxval)
DUK_EXTERNAL void duk_push_boolean(duk_context *ctx, duk_bool_t val)
#define DUK_BIDX_INT8ARRAY_PROTOTYPE
DUK_EXTERNAL duk_bool_t duk_put_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx)
#define DUK_STR_INVALID_CALL_ARGS
#define DUK_BIDX_OBJECT_PROTOTYPE
#define DUK_HBUFFEROBJECT_VALID_BYTEOFFSET_EXCL(h, off)
#define DUK_TVAL_IS_BUFFER(tv)
#define DUK_TVAL_IS_OBJECT(tv)
#define DUK_HOBJECT_CLASS_INT16ARRAY
DUK_EXTERNAL duk_size_t duk_get_length(duk_context *ctx, duk_idx_t index)
#define DUK_PROPDESC_FLAGS_NONE
#define DUK_TVAL_GET_BUFFER(tv)
DUK_INTERNAL_DECL void duk_push_hstring_stridx(duk_context *ctx, duk_small_int_t stridx)
#define DUK_BIDX_DATAVIEW_PROTOTYPE
#define duk_push_size_t(ctx, val)
#define DUK_HBUFFEROBJECT_VALID_SLICE(h)
DUK_EXTERNAL const char * duk_to_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
#define DUK_HOBJECT_CLASS_ARRAY
#define DUK_HBUFFEROBJECT_CLAMP_BYTELENGTH(h, len)
DUK_EXTERNAL duk_bool_t duk_to_boolean(duk_context *ctx, duk_idx_t index)
#define DUK_HBUFFEROBJECT_ELEM_INT16
#define DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, h, p)
#define DUK_HOBJECT_CLASS_UINT8CLAMPEDARRAY
#define DUK_ASSERT_HBUFFEROBJECT_VALID(h)
#define DUK_HOBJECT_FLAG_BUFFEROBJECT
#define DUK_BIDX_UINT8CLAMPEDARRAY_PROTOTYPE
#define DUK_BIDX_INT32ARRAY_PROTOTYPE
#define DUK_ASSERT_DISABLE(x)
DUK_EXTERNAL void duk_push_null(duk_context *ctx)
DUK_EXTERNAL void duk_push_int(duk_context *ctx, duk_int_t val)
DUK_EXTERNAL duk_int_t duk_get_int(duk_context *ctx, duk_idx_t index)
#define DUK_BIDX_FLOAT32ARRAY_PROTOTYPE
#define DUK_HOBJECT_CLASS_AS_FLAGS(v)
#define duk_push_i64(ctx, val)
DUK_EXTERNAL duk_double_t duk_to_number(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL duk_int_t duk_get_type(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL_DECL duk_uint8_t duk_to_uint8clamped(duk_context *ctx, duk_idx_t index)
#define DUK_HBUFFEROBJECT_GET_SLICE_BASE(heap, h)
#define DUK_HOBJECT_CLASS_FLOAT32ARRAY
#define DUK_HOBJECT_IS_BUFFEROBJECT(h)
DUK_EXTERNAL void duk_set_top(duk_context *ctx, duk_idx_t index)
#define DUK_HOBJECT_CLASS_UINT8ARRAY
DUK_EXTERNAL duk_idx_t duk_push_object(duk_context *ctx)
#define DUK_BIDX_UINT32ARRAY_PROTOTYPE
DUK_EXTERNAL void duk_dup(duk_context *ctx, duk_idx_t from_index)
#define DUK_HBUFFEROBJECT_ELEM_FLOAT64
DUK_INTERNAL_DECL duk_hbuffer * duk_get_hbuffer(duk_context *ctx, duk_idx_t index)
#define DUK_BIDX_FLOAT64ARRAY_PROTOTYPE
#define DUK_HBUFFEROBJECT_ELEM_UINT32
#define DUK_HBUFFEROBJECT_ELEM_UINT16
DUK_EXTERNAL duk_idx_t duk_get_top(duk_context *ctx)
#define DUK_HOBJECT_CLASS_UINT32ARRAY
DUK_EXTERNAL duk_bool_t duk_get_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index)
DUK_INTERNAL_DECL duk_hbufferobject * duk_push_bufferobject_raw(duk_context *ctx, duk_uint_t hobject_flags_and_class, duk_small_int_t prototype_bidx)
DUK_EXTERNAL void duk_push_uint(duk_context *ctx, duk_uint_t val)
DUK_EXTERNAL duk_bool_t duk_is_buffer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL duk_bool_t duk_is_constructor_call(duk_context *ctx)
#define DUK_HBUFFER_FIXED_GET_DATA_PTR(heap, x)
DUK_INTERNAL_DECL duk_bool_t duk_hobject_prototype_chain_contains(duk_hthread *thr, duk_hobject *h, duk_hobject *p, duk_bool_t ignore_loop)
DUK_EXTERNAL duk_int32_t duk_to_int32(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL duk_uint32_t duk_to_uint32(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL duk_bool_t duk_get_prop_string(duk_context *ctx, duk_idx_t obj_index, const char *key)
DUK_INTERNAL_DECL duk_small_int_t duk_js_data_compare(const duk_uint8_t *buf1, const duk_uint8_t *buf2, duk_size_t len1, duk_size_t len2)
#define DUK_BIDX_BUFFER_PROTOTYPE
#define DUK_HOBJECT_CLASS_INT8ARRAY
DUK_EXTERNAL void duk_push_number(duk_context *ctx, duk_double_t val)
DUK_INTERNAL_DECL duk_tval * duk_require_tval(duk_context *ctx, duk_idx_t index)
#define DUK_ASSERT_TOP(ctx, n)
#define DUK_BIDX_NODEJS_BUFFER_PROTOTYPE
DUK_EXTERNAL const char * duk_require_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
#define DUK_HOBJECT_FLAG_EXTENSIBLE
#define DUK_HOBJECT_CLASS_UINT16ARRAY
#define DUK_HBUFFEROBJECT_ELEM_FLOAT32
DUK_EXTERNAL const char * duk_to_string(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL_DECL duk_tval * duk_get_borrowed_this_tval(duk_context *ctx)
#define DUK_HBUFFER_GET_DATA_PTR(heap, x)
DUK_EXTERNAL void duk_pop(duk_context *ctx)
DUK_INTERNAL_DECL duk_hobject * duk_get_hobject(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL duk_idx_t duk_push_array(duk_context *ctx)
#define DUK_HOBJECT_GET_CLASS_NUMBER(h)
DUK_EXTERNAL duk_int_t duk_get_current_magic(duk_context *ctx)
DUK_EXTERNAL void duk_push_nan(duk_context *ctx)
#define DUK_HBUFFEROBJECT_ELEM_UINT8CLAMPED
DUK_INTERNAL_DECL void duk_xdef_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx, duk_small_uint_t desc_flags)
#define DUK_STR_NOT_BUFFER
DUK_EXTERNAL duk_bool_t duk_is_string(duk_context *ctx, duk_idx_t index)
#define DUK_HBUFFER_HAS_DYNAMIC(x)
#define DUK_HOBJECT_CLASS_ARRAYBUFFER
#define DUK_HOBJECT_CLASS_DATAVIEW
DUK_INTERNAL_DECL void duk_push_hbuffer(duk_context *ctx, duk_hbuffer *h)
#define DUK_BIDX_INT16ARRAY_PROTOTYPE
DUK_EXTERNAL duk_int_t duk_to_int(duk_context *ctx, duk_idx_t index)
#define DUK_BIDX_UINT16ARRAY_PROTOTYPE
#define DUK_HBUFFER_GET_SIZE(x)
#define DUK_HBUFFEROBJECT_ELEM_INT8
#define DUK_HBUFFEROBJECT_ELEM_UINT8
#define DUK_HOBJECT_CLASS_FLOAT64ARRAY
DUK_INTERNAL_DECL duk_tval * duk_get_tval(duk_context *ctx, duk_idx_t index)
#define DUK_STRIDX_UC_BUFFER
#define duk_to_buffer(ctx, index, out_size)
#define duk_push_fixed_buffer(ctx, size)
#define DUK_RET_TYPE_ERROR
#define DUK_RET_RANGE_ERROR
#define duk_push_buffer(ctx, size, dynamic)
#define DUK_DBLUNION_BSWAP64(u)
#define DUK_RET_UNSUPPORTED_ERROR
DUK_INTERNAL duk_ret_t duk_bi_buffer_constructor(duk_context *ctx)
DUK_INTERNAL void duk_hbufferobject_push_validated_read(duk_context *ctx, duk_hbufferobject *h_bufobj, duk_uint8_t *p, duk_small_uint_t elem_size)
DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_tojson(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_concat(duk_context *ctx)
DUK_LOCAL void duk__clamp_startend_nonegidx_noshift(duk_context *ctx, duk_hbufferobject *h_bufobj, duk_idx_t idx_start, duk_idx_t idx_end, duk_int_t *out_start_offset, duk_int_t *out_end_offset)
DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_fill(duk_context *ctx)
DUK_INTERNAL void duk_hbufferobject_validated_write(duk_context *ctx, duk_hbufferobject *h_bufobj, duk_uint8_t *p, duk_small_uint_t elem_size)
DUK_INTERNAL duk_ret_t duk_bi_buffer_writefield(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_buffer_slice_shared(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_buffer_readfield(duk_context *ctx)
DUK_LOCAL duk_hbufferobject * duk__push_arraybuffer_with_length(duk_context *ctx, duk_uint_t len)
DUK_INTERNAL duk_ret_t duk_bi_arraybuffer_isview(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_write(duk_context *ctx)
static const duk_uint8_t duk__buffer_class_from_elemtype[9]
DUK_INTERNAL duk_ret_t duk_bi_dataview_constructor(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_is_encoding(duk_context *ctx)
DUK_LOCAL duk_hbufferobject * duk__getrequire_bufobj_this(duk_context *ctx, duk_bool_t throw_flag)
static const duk_uint8_t duk__buffer_nbytes_from_fldtype[6]
DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_byte_length(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_typedarray_set(duk_context *ctx)
static const duk_uint8_t duk__buffer_proto_from_elemtype[9]
DUK_INTERNAL duk_ret_t duk_bi_arraybuffer_constructor(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_copy(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_buffer_compare_shared(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_tostring(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_constructor(duk_context *ctx)
DUK_LOCAL void duk__resolve_offset_opt_length(duk_context *ctx, duk_hbufferobject *h_bufarg, duk_idx_t idx_offset, duk_idx_t idx_length, duk_uint_t *out_offset, duk_uint_t *out_length, duk_bool_t throw_flag)
DUK_LOCAL duk_hbufferobject * duk__get_bufobj_this(duk_context *ctx)
DUK_INTERNAL duk_ret_t duk_bi_nodejs_buffer_is_buffer(duk_context *ctx)
static duk_uint16_t duk__buffer_elemtype_copy_compatible[9]
DUK_INTERNAL duk_ret_t duk_bi_typedarray_constructor(duk_context *ctx)
DUK_LOCAL duk_hbufferobject * duk__require_bufobj_value(duk_context *ctx, duk_idx_t index)
DUK_LOCAL duk_hbufferobject * duk__require_bufobj_this(duk_context *ctx)
DUK_LOCAL void duk__clamp_startend_negidx_shifted(duk_context *ctx, duk_hbufferobject *h_bufobj, duk_idx_t idx_start, duk_idx_t idx_end, duk_int_t *out_start_offset, duk_int_t *out_end_offset)
DUK_LOCAL void duk__set_bufobj_buffer(duk_context *ctx, duk_hbufferobject *h_bufobj, duk_hbuffer *h_val)
DUK_INTERNAL duk_ret_t duk_bi_buffer_prototype_tostring_shared(duk_context *ctx)
static int str_len(lua_State *L)
duk_hobject * builtins[DUK_NUM_BUILTINS]