24#if defined(DUK_USE_BASE64_FASTPATH)
28 const duk_uint8_t *src_end_fast;
32 n_final = srclen - n_full3;
36 src_end_fast = src + n_full3;
85 const duk_uint8_t *src_end;
87 src_end = src + srclen;
89 while (src < src_end) {
93 for (i = 0; i < 3; i++) {
111 for (i = 0; i < 4; i++) {
120 }
else if (x <= 25) {
122 }
else if (x <= 51) {
124 }
else if (x <= 61) {
126 }
else if (x == 62) {
132 *dst++ = (duk_uint8_t) y;
138#if defined(DUK_USE_BASE64_FASTPATH)
144 const duk_uint8_t *src_end;
145 const duk_uint8_t *src_end_safe;
147 src_end = src + srclen;
148 src_end_safe = src_end - 4;
159 while (src <= src_end_safe) {
166 (
const void *) src, (
const void *) src_end_safe, (
const void *) src_end));
181 *dst++ = (duk_uint8_t) (t >> 16);
182 *dst++ = (duk_uint8_t) ((t >> 8) & 0xff);
183 *dst++ = (duk_uint8_t) (t & 0xff);
193 (
const void *) src, (
const void *) src_end, (
long) n_chars, (
long) n_equal, (
long) t));
203 }
else if (x == -3) {
225 *dst++ = (duk_uint8_t) (t >> 16);
226 *dst++ = (duk_uint8_t) ((t >> 8) & 0xff);
227 *dst++ = (duk_uint8_t) (t & 0xff);
236 }
else if (n_equal == 2) {
255 (
const void *) src, (
const void *) src_end, (
long) n_chars));
267 *out_dst_final = dst;
279 const duk_uint8_t *src_end;
281 src_end = src + srclen;
286 while (src < src_end) {
289 if (x >=
'A' && x <=
'Z') {
291 }
else if (x >=
'a' && x <=
'z') {
293 }
else if (x >=
'0' && x <=
'9') {
295 }
else if (x ==
'+') {
297 }
else if (x ==
'/') {
299 }
else if (x ==
'=') {
308 }
else if (x == 0x09 || x == 0x0a || x == 0x0d || x == 0x20) {
322 if (group_idx == 3) {
324 *dst++ = (duk_uint8_t) ((t >> 16) & 0xff);
325 *dst++ = (duk_uint8_t) ((t >> 8) & 0xff);
326 *dst++ = (duk_uint8_t) (t & 0xff);
333 }
else if (n_equal == 2) {
354 if (group_idx != 0) {
362 *out_dst_final = dst;
372 const duk_uint8_t *src;
393 if (srclen > 3221225469UL) {
396 dstlen = (srclen + 2) / 3 * 4;
412 const duk_uint8_t *src;
416 duk_uint8_t *dst_final;
433 if (srclen > 4294967292UL) {
436 dstlen = (srclen + 3) / 4 * 3;
455 const duk_uint8_t *inp;
460#if defined(DUK_USE_HEX_FASTPATH)
475#if defined(DUK_USE_HEX_FASTPATH)
477 p16 = (duk_uint16_t *) (
void *) buf;
478 len_safe = len & ~0x03U;
479 for (i = 0; i < len_safe; i += 4) {
486 for (; i < len; i++) {
490 for (i = 0; i < len; i++) {
512 const duk_uint8_t *inp;
517#if defined(DUK_USE_HEX_FASTPATH)
537#if defined(DUK_USE_HEX_FASTPATH)
539 len_safe = len & ~0x07U;
540 for (i = 0; i < len_safe; i += 8) {
544 p[0] = (duk_uint8_t) t;
548 p[1] = (duk_uint8_t) t;
552 p[2] = (duk_uint8_t) t;
556 p[3] = (duk_uint8_t) t;
564 for (; i < len; i += 2) {
570 *p++ = (duk_uint8_t) t;
573 for (i = 0; i < len; i += 2) {
583 buf[i >> 1] = (duk_uint8_t) t;
595#ifdef DUK_USE_ASSERTIONS
601#ifdef DUK_USE_ASSERTIONS
621#ifdef DUK_USE_ASSERTIONS
626#ifdef DUK_USE_ASSERTIONS
unsigned int duk_small_uint_t
duk_uint8_t duk_uint_fast8_t
duk_int_fast32_t duk_int_t
duk_uint_fast32_t duk_uint_t
duk_small_int_t duk_bool_t
#define DUK_ASSERT_CTX_VALID(ctx)
DUK_EXTERNAL void * duk_push_buffer_raw(duk_context *ctx, duk_size_t size, duk_small_uint_t flags)
DUK_EXTERNAL duk_idx_t duk_require_normalize_index(duk_context *ctx, duk_idx_t index)
#define DUK_ERROR_TYPE(thr, msg)
#define DUK_STR_DECODE_FAILED
DUK_EXTERNAL duk_bool_t duk_is_valid_index(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL void * duk_get_buffer(duk_context *ctx, duk_idx_t index, duk_size_t *out_size)
DUK_EXTERNAL const char * duk_to_lstring(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
DUK_INTERNAL const duk_uint8_t duk_lc_digits[36]
#define DUK_ASSERT_DISABLE(x)
DUK_INTERNAL_DECL void duk_bi_json_stringify_helper(duk_context *ctx, duk_idx_t idx_value, duk_idx_t idx_replacer, duk_idx_t idx_space, duk_small_uint_t flags)
DUK_INTERNAL_DECL void duk_bi_json_parse_helper(duk_context *ctx, duk_idx_t idx_value, duk_idx_t idx_reviver, duk_small_uint_t flags)
DUK_EXTERNAL void duk_replace(duk_context *ctx, duk_idx_t to_index)
DUK_INTERNAL const duk_uint8_t duk_base64_enctab[64]
DUK_EXTERNAL const char * duk_get_string(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL const duk_int8_t duk_hex_dectab[256]
DUK_EXTERNAL duk_idx_t duk_get_top(duk_context *ctx)
DUK_EXTERNAL duk_bool_t duk_is_buffer(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL const duk_int16_t duk_hex_dectab_shift4[256]
DUK_EXTERNAL void * duk_resize_buffer(duk_context *ctx, duk_idx_t index, duk_size_t new_size)
DUK_EXTERNAL const char * duk_to_string(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL const duk_uint16_t duk_hex_enctab[256]
#define DUK_STR_ENCODE_FAILED
DUK_EXTERNAL duk_bool_t duk_is_string(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL const duk_int8_t duk_base64_dectab[256]
#define DUK_BUF_FLAG_NOZERO
#define duk_push_fixed_buffer(ctx, size)
#define DUK_INVALID_INDEX
#define duk_push_dynamic_buffer(ctx, size)
DUK_EXTERNAL const char * duk_hex_encode(duk_context *ctx, duk_idx_t index)
DUK_LOCAL const duk_uint8_t * duk__prep_codec_arg(duk_context *ctx, duk_idx_t index, duk_size_t *out_len)
DUK_EXTERNAL const char * duk_base64_encode(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL const char * duk_json_encode(duk_context *ctx, duk_idx_t index)
DUK_LOCAL void duk__base64_encode_helper(const duk_uint8_t *src, duk_size_t srclen, duk_uint8_t *dst)
DUK_LOCAL duk_bool_t duk__base64_decode_helper(const duk_uint8_t *src, duk_size_t srclen, duk_uint8_t *dst, duk_uint8_t **out_dst_final)
DUK_EXTERNAL void duk_base64_decode(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL void duk_hex_decode(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL void duk_json_decode(duk_context *ctx, duk_idx_t index)
static void error(LoadState *S, const char *why)