http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_logger.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_logger.c b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_logger.c
deleted file mode 100644
index d2b89e5..0000000
--- a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_logger.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Logging support
- */
-
-#include "duk_internal.h"
-
-/* 3-letter log level strings */
-DUK_LOCAL const duk_uint8_t duk__log_level_strings[] = {
- (duk_uint8_t) DUK_ASC_UC_T, (duk_uint8_t) DUK_ASC_UC_R, (duk_uint8_t) DUK_ASC_UC_C,
- (duk_uint8_t) DUK_ASC_UC_D, (duk_uint8_t) DUK_ASC_UC_B, (duk_uint8_t) DUK_ASC_UC_G,
- (duk_uint8_t) DUK_ASC_UC_I, (duk_uint8_t) DUK_ASC_UC_N, (duk_uint8_t) DUK_ASC_UC_F,
- (duk_uint8_t) DUK_ASC_UC_W, (duk_uint8_t) DUK_ASC_UC_R, (duk_uint8_t) DUK_ASC_UC_N,
- (duk_uint8_t) DUK_ASC_UC_E, (duk_uint8_t) DUK_ASC_UC_R, (duk_uint8_t) DUK_ASC_UC_R,
- (duk_uint8_t) DUK_ASC_UC_F, (duk_uint8_t) DUK_ASC_UC_T, (duk_uint8_t) DUK_ASC_UC_L
-};
-
-/* Constructor */
-DUK_INTERNAL duk_ret_t duk_bi_logger_constructor(duk_context *ctx) {
- duk_hthread *thr = (duk_hthread *) ctx;
- duk_idx_t nargs;
-
- /* Calling as a non-constructor is not meaningful. */
- if (!duk_is_constructor_call(ctx)) {
- return DUK_RET_TYPE_ERROR;
- }
-
- nargs = duk_get_top(ctx);
- duk_set_top(ctx, 1);
-
- duk_push_this(ctx);
-
- /* [ name this ] */
-
- if (nargs == 0) {
- /* Automatic defaulting of logger name from caller. This would
- * work poorly with tail calls, but constructor calls are currently
- * never tail calls, so tail calls are not an issue now.
- */
-
- if (thr->callstack_top >= 2) {
- duk_activation *act_caller = thr->callstack + thr->callstack_top - 2;
- duk_hobject *func_caller;
-
- func_caller = DUK_ACT_GET_FUNC(act_caller);
- if (func_caller) {
- /* Stripping the filename might be a good idea
- * ("/foo/bar/quux.js" -> logger name "quux"),
- * but now used verbatim.
- */
- duk_push_hobject(ctx, func_caller);
- duk_get_prop_stridx(ctx, -1, DUK_STRIDX_FILE_NAME);
- duk_replace(ctx, 0);
- }
- }
- }
- /* the stack is unbalanced here on purpose; we only rely on the
- * initial two values: [ name this ].
- */
-
- if (duk_is_string(ctx, 0)) {
- duk_dup(ctx, 0);
- duk_put_prop_stridx(ctx, 1, DUK_STRIDX_LC_N);
- } else {
- /* don't set 'n' at all, inherited value is used as name */
- }
-
- duk_compact(ctx, 1);
-
- return 0; /* keep default instance */
-}
-
-/* Default function to format objects. Tries to use toLogString() but falls
- * back to toString(). Any errors are propagated out without catching.
- */
-DUK_INTERNAL duk_ret_t duk_bi_logger_prototype_fmt(duk_context *ctx) {
- if (duk_get_prop_stridx(ctx, 0, DUK_STRIDX_TO_LOG_STRING)) {
- /* [ arg toLogString ] */
-
- duk_dup(ctx, 0);
- duk_call_method(ctx, 0);
-
- /* [ arg result ] */
- return 1;
- }
-
- /* [ arg undefined ] */
- duk_pop(ctx);
- duk_to_string(ctx, 0);
- return 1;
-}
-
-/* Default function to write a formatted log line. Writes to stderr,
- * appending a newline to the log line.
- *
- * The argument is a buffer whose visible size contains the log message.
- * This function should avoid coercing the buffer to a string to avoid
- * string table traffic.
- */
-DUK_INTERNAL duk_ret_t duk_bi_logger_prototype_raw(duk_context *ctx) {
- const char *data;
- duk_size_t data_len;
-
- DUK_UNREF(ctx);
- DUK_UNREF(data);
- DUK_UNREF(data_len);
-
-#ifdef DUK_USE_FILE_IO
- data = (const char *) duk_require_buffer(ctx, 0, &data_len);
- DUK_FWRITE((const void *) data, 1, data_len, DUK_STDERR);
- DUK_FPUTC((int) '\n', DUK_STDERR);
- DUK_FFLUSH(DUK_STDERR);
-#else
- /* nop */
-#endif
- return 0;
-}
-
-/* Log frontend shared helper, magic value indicates log level. Provides
- * frontend functions: trace(), debug(), info(), warn(), error(), fatal().
- * This needs to have small footprint, reasonable performance, minimal
- * memory churn, etc.
- */
-DUK_INTERNAL duk_ret_t duk_bi_logger_prototype_log_shared(duk_context *ctx) {
- duk_hthread *thr = (duk_hthread *) ctx;
- duk_double_t now;
- duk_small_int_t entry_lev = duk_get_current_magic(ctx);
- duk_small_int_t logger_lev;
- duk_int_t nargs;
- duk_int_t i;
- duk_size_t tot_len;
- const duk_uint8_t *arg_str;
- duk_size_t arg_len;
- duk_uint8_t *buf, *p;
- const duk_uint8_t *q;
- duk_uint8_t date_buf[DUK_BI_DATE_ISO8601_BUFSIZE];
- duk_size_t date_len;
- duk_small_int_t rc;
-
- DUK_ASSERT(entry_lev >= 0 && entry_lev <= 5);
- DUK_UNREF(thr);
-
- /* XXX: sanitize to printable (and maybe ASCII) */
- /* XXX: better multiline */
-
- /*
- * Logger arguments are:
- *
- * magic: log level (0-5)
- * this: logger
- * stack: plain log args
- *
- * We want to minimize memory churn so a two-pass approach
- * is used: first pass formats arguments and computes final
- * string length, second pass copies strings either into a
- * pre-allocated and reused buffer (short messages) or into a
- * newly allocated fixed buffer. If the backend function plays
- * nice, it won't coerce the buffer to a string (and thus
- * intern it).
- */
-
- nargs = duk_get_top(ctx);
-
- /* [ arg1 ... argN this ] */
-
- /*
- * Log level check
- */
-
- duk_push_this(ctx);
-
- duk_get_prop_stridx(ctx, -1, DUK_STRIDX_LC_L);
- logger_lev = (duk_small_int_t) duk_get_int(ctx, -1);
- if (entry_lev < logger_lev) {
- return 0;
- }
- /* log level could be popped but that's not necessary */
-
- now = DUK_USE_DATE_GET_NOW(ctx);
- duk_bi_date_format_timeval(now, date_buf);
- date_len = DUK_STRLEN((const char *) date_buf);
-
- duk_get_prop_stridx(ctx, -2, DUK_STRIDX_LC_N);
- duk_to_string(ctx, -1);
- DUK_ASSERT(duk_is_string(ctx, -1));
-
- /* [ arg1 ... argN this loggerLevel loggerName ] */
-
- /*
- * Pass 1
- */
-
- /* Line format: <time> <entryLev> <loggerName>: <msg> */
-
- tot_len = 0;
- tot_len += 3 + /* separators: space, space, colon */
- 3 + /* level string */
- date_len + /* time */
- duk_get_length(ctx, -1); /* loggerName */
-
- for (i = 0; i < nargs; i++) {
- /* When formatting an argument to a string, errors may happen from multiple
- * causes. In general we want to catch obvious errors like a toLogString()
- * throwing an error, but we don't currently try to catch every possible
- * error. In particular, internal errors (like out of memory or stack) are
- * not caught. Also, we expect Error toString() to not throw an error.
- */
- if (duk_is_object(ctx, i)) {
- /* duk_pcall_prop() may itself throw an error, but we're content
- * in catching the obvious errors (like toLogString() throwing an
- * error).
- */
- duk_push_hstring_stridx(ctx, DUK_STRIDX_FMT);
- duk_dup(ctx, i);
- /* [ arg1 ... argN this loggerLevel loggerName 'fmt' arg ] */
- /* call: this.fmt(arg) */
- rc = duk_pcall_prop(ctx, -5 /*obj_index*/, 1 /*nargs*/);
- if (rc) {
- /* Keep the error as the result (coercing it might fail below,
- * but we don't catch that now).
- */
- ;
- }
- duk_replace(ctx, i);
- }
- (void) duk_to_lstring(ctx, i, &arg_len);
- tot_len++; /* sep (even before first one) */
- tot_len += arg_len;
- }
-
- /*
- * Pass 2
- */
-
- /* XXX: There used to be a shared log buffer here, but it was removed
- * when dynamic buffer spare was removed. The problem with using
- * bufwriter is that, without the spare, the buffer gets passed on
- * as an argument to the raw() call so it'd need to be resized
- * (reallocated) anyway. If raw() call convention is changed, this
- * could be made more efficient.
- */
-
- buf = (duk_uint8_t *) duk_push_fixed_buffer(ctx, tot_len);
- DUK_ASSERT(buf != NULL);
- p = buf;
-
- DUK_MEMCPY((void *) p, (const void *) date_buf, (size_t) date_len);
- p += date_len;
- *p++ = (duk_uint8_t) DUK_ASC_SPACE;
-
- q = duk__log_level_strings + (entry_lev * 3);
- DUK_MEMCPY((void *) p, (const void *) q, (size_t) 3);
- p += 3;
-
- *p++ = (duk_uint8_t) DUK_ASC_SPACE;
-
- arg_str = (const duk_uint8_t *) duk_get_lstring(ctx, -2, &arg_len);
- DUK_MEMCPY((void *) p, (const void *) arg_str, (size_t) arg_len);
- p += arg_len;
-
- *p++ = (duk_uint8_t) DUK_ASC_COLON;
-
- for (i = 0; i < nargs; i++) {
- *p++ = (duk_uint8_t) DUK_ASC_SPACE;
-
- arg_str = (const duk_uint8_t *) duk_get_lstring(ctx, i, &arg_len);
- DUK_ASSERT(arg_str != NULL);
- DUK_MEMCPY((void *) p, (const void *) arg_str, (size_t) arg_len);
- p += arg_len;
- }
- DUK_ASSERT(buf + tot_len == p);
-
- /* [ arg1 ... argN this loggerLevel loggerName buffer ] */
-
-#if defined(DUK_USE_DEBUGGER_SUPPORT) && defined(DUK_USE_DEBUGGER_FWD_LOGGING)
- /* Do debugger forwarding before raw() because the raw() function
- * doesn't get the log level right now.
- */
- if (DUK_HEAP_IS_DEBUGGER_ATTACHED(thr->heap)) {
- const char *log_buf;
- duk_size_t sz_buf;
- log_buf = (const char *) duk_get_buffer(ctx, -1, &sz_buf);
- DUK_ASSERT(log_buf != NULL);
- duk_debug_write_notify(thr, DUK_DBG_CMD_LOG);
- duk_debug_write_int(thr, (duk_int32_t) entry_lev);
- duk_debug_write_string(thr, (const char *) log_buf, sz_buf);
- duk_debug_write_eom(thr);
- }
-#endif
-
- /* Call this.raw(msg); look up through the instance allows user to override
- * the raw() function in the instance or in the prototype for maximum
- * flexibility.
- */
- duk_push_hstring_stridx(ctx, DUK_STRIDX_RAW);
- duk_dup(ctx, -2);
- /* [ arg1 ... argN this loggerLevel loggerName buffer 'raw' buffer ] */
- duk_call_prop(ctx, -6, 1); /* this.raw(buffer) */
-
- return 0;
-}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_math.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_math.c b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_math.c
deleted file mode 100644
index 62c9341..0000000
--- a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_math.c
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * Math built-ins
- */
-
-#include "duk_internal.h"
-
-#if defined(DUK_USE_MATH_BUILTIN)
-
-/*
- * Use static helpers which can work with math.h functions matching
- * the following signatures. This is not portable if any of these math
- * functions is actually a macro.
- *
- * Typing here is intentionally 'double' wherever values interact with
- * the standard library APIs.
- */
-
-typedef double (*duk__one_arg_func)(double);
-typedef double (*duk__two_arg_func)(double, double);
-
-DUK_LOCAL duk_ret_t duk__math_minmax(duk_context *ctx, duk_double_t initial, duk__two_arg_func min_max) {
- duk_idx_t n = duk_get_top(ctx);
- duk_idx_t i;
- duk_double_t res = initial;
- duk_double_t t;
-
- /*
- * Note: fmax() does not match the E5 semantics. E5 requires
- * that if -any- input to Math.max() is a NaN, the result is a
- * NaN. fmax() will return a NaN only if -both- inputs are NaN.
- * Same applies to fmin().
- *
- * Note: every input value must be coerced with ToNumber(), even
- * if we know the result will be a NaN anyway: ToNumber() may have
- * side effects for which even order of evaluation matters.
- */
-
- for (i = 0; i < n; i++) {
- t = duk_to_number(ctx, i);
- if (DUK_FPCLASSIFY(t) == DUK_FP_NAN || DUK_FPCLASSIFY(res) == DUK_FP_NAN) {
- /* Note: not normalized, but duk_push_number() will normalize */
- res = (duk_double_t) DUK_DOUBLE_NAN;
- } else {
- res = (duk_double_t) min_max(res, (double) t);
- }
- }
-
- duk_push_number(ctx, res);
- return 1;
-}
-
-DUK_LOCAL double duk__fmin_fixed(double x, double y) {
- /* fmin() with args -0 and +0 is not guaranteed to return
- * -0 as Ecmascript requires.
- */
- if (x == 0 && y == 0) {
- /* XXX: what's the safest way of creating a negative zero? */
- if (DUK_SIGNBIT(x) != 0 || DUK_SIGNBIT(y) != 0) {
- return -0.0;
- } else {
- return +0.0;
- }
- }
-#ifdef DUK_USE_MATH_FMIN
- return DUK_FMIN(x, y);
-#else
- return (x < y ? x : y);
-#endif
-}
-
-DUK_LOCAL double duk__fmax_fixed(double x, double y) {
- /* fmax() with args -0 and +0 is not guaranteed to return
- * +0 as Ecmascript requires.
- */
- if (x == 0 && y == 0) {
- if (DUK_SIGNBIT(x) == 0 || DUK_SIGNBIT(y) == 0) {
- return +0.0;
- } else {
- return -0.0;
- }
- }
-#ifdef DUK_USE_MATH_FMAX
- return DUK_FMAX(x, y);
-#else
- return (x > y ? x : y);
-#endif
-}
-
-DUK_LOCAL double duk__round_fixed(double x) {
- /* Numbers half-way between integers must be rounded towards +Infinity,
- * e.g. -3.5 must be rounded to -3 (not -4). When rounded to zero, zero
- * sign must be set appropriately. E5.1 Section 15.8.2.15.
- *
- * Note that ANSI C round() is "round to nearest integer, away from zero",
- * which is incorrect for negative values. Here we make do with floor().
- */
-
- duk_small_int_t c = (duk_small_int_t) DUK_FPCLASSIFY(x);
- if (c == DUK_FP_NAN || c == DUK_FP_INFINITE || c == DUK_FP_ZERO) {
- return x;
- }
-
- /*
- * x is finite and non-zero
- *
- * -1.6 -> floor(-1.1) -> -2
- * -1.5 -> floor(-1.0) -> -1 (towards +Inf)
- * -1.4 -> floor(-0.9) -> -1
- * -0.5 -> -0.0 (special case)
- * -0.1 -> -0.0 (special case)
- * +0.1 -> +0.0 (special case)
- * +0.5 -> floor(+1.0) -> 1 (towards +Inf)
- * +1.4 -> floor(+1.9) -> 1
- * +1.5 -> floor(+2.0) -> 2 (towards +Inf)
- * +1.6 -> floor(+2.1) -> 2
- */
-
- if (x >= -0.5 && x < 0.5) {
- /* +0.5 is handled by floor, this is on purpose */
- if (x < 0.0) {
- return -0.0;
- } else {
- return +0.0;
- }
- }
-
- return DUK_FLOOR(x + 0.5);
-}
-
-DUK_LOCAL double duk__pow_fixed(double x, double y) {
- /* The ANSI C pow() semantics differ from Ecmascript.
- *
- * E.g. when x==1 and y is +/- infinite, the Ecmascript required
- * result is NaN, while at least Linux pow() returns 1.
- */
-
- duk_small_int_t cx, cy, sx;
-
- DUK_UNREF(cx);
- DUK_UNREF(sx);
- cy = (duk_small_int_t) DUK_FPCLASSIFY(y);
-
- if (cy == DUK_FP_NAN) {
- goto ret_nan;
- }
- if (DUK_FABS(x) == 1.0 && cy == DUK_FP_INFINITE) {
- goto ret_nan;
- }
-#if defined(DUK_USE_POW_NETBSD_WORKAROUND)
- /* See test-bug-netbsd-math-pow.js: NetBSD 6.0 on x86 (at least) does not
- * correctly handle some cases where x=+/-0. Specific fixes to these
- * here.
- */
- cx = (duk_small_int_t) DUK_FPCLASSIFY(x);
- if (cx == DUK_FP_ZERO && y < 0.0) {
- sx = (duk_small_int_t) DUK_SIGNBIT(x);
- if (sx == 0) {
- /* Math.pow(+0,y) should be Infinity when y<0. NetBSD pow()
- * returns -Infinity instead when y is <0 and finite. The
- * if-clause also catches y == -Infinity (which works even
- * without the fix).
- */
- return DUK_DOUBLE_INFINITY;
- } else {
- /* Math.pow(-0,y) where y<0 should be:
- * - -Infinity if y<0 and an odd integer
- * - Infinity otherwise
- * NetBSD pow() returns -Infinity for all finite y<0. The
- * if-clause also catches y == -Infinity (which works even
- * without the fix).
- */
-
- /* fmod() return value has same sign as input (negative) so
- * the result here will be in the range ]-2,0], 1 indicates
- * odd. If x is -Infinity, NaN is returned and the odd check
- * always concludes "not odd" which results in desired outcome.
- */
- double tmp = DUK_FMOD(y, 2);
- if (tmp == -1.0) {
- return -DUK_DOUBLE_INFINITY;
- } else {
- /* Not odd, or y == -Infinity */
- return DUK_DOUBLE_INFINITY;
- }
- }
- }
-#endif
- return DUK_POW(x, y);
-
- ret_nan:
- return DUK_DOUBLE_NAN;
-}
-
-/* Wrappers for calling standard math library methods. These may be required
- * on platforms where one or more of the math built-ins are defined as macros
- * or inline functions and are thus not suitable to be used as function pointers.
- */
-#if defined(DUK_USE_AVOID_PLATFORM_FUNCPTRS)
-DUK_LOCAL double duk__fabs(double x) {
- return DUK_FABS(x);
-}
-DUK_LOCAL double duk__acos(double x) {
- return DUK_ACOS(x);
-}
-DUK_LOCAL double duk__asin(double x) {
- return DUK_ASIN(x);
-}
-DUK_LOCAL double duk__atan(double x) {
- return DUK_ATAN(x);
-}
-DUK_LOCAL double duk__ceil(double x) {
- return DUK_CEIL(x);
-}
-DUK_LOCAL double duk__cos(double x) {
- return DUK_COS(x);
-}
-DUK_LOCAL double duk__exp(double x) {
- return DUK_EXP(x);
-}
-DUK_LOCAL double duk__floor(double x) {
- return DUK_FLOOR(x);
-}
-DUK_LOCAL double duk__log(double x) {
- return DUK_LOG(x);
-}
-DUK_LOCAL double duk__sin(double x) {
- return DUK_SIN(x);
-}
-DUK_LOCAL double duk__sqrt(double x) {
- return DUK_SQRT(x);
-}
-DUK_LOCAL double duk__tan(double x) {
- return DUK_TAN(x);
-}
-DUK_LOCAL double duk__atan2(double x, double y) {
- return DUK_ATAN2(x, y);
-}
-#endif /* DUK_USE_AVOID_PLATFORM_FUNCPTRS */
-
-/* order must match constants in genbuiltins.py */
-DUK_LOCAL const duk__one_arg_func duk__one_arg_funcs[] = {
-#if defined(DUK_USE_AVOID_PLATFORM_FUNCPTRS)
- duk__fabs,
- duk__acos,
- duk__asin,
- duk__atan,
- duk__ceil,
- duk__cos,
- duk__exp,
- duk__floor,
- duk__log,
- duk__round_fixed,
- duk__sin,
- duk__sqrt,
- duk__tan
-#else
- DUK_FABS,
- DUK_ACOS,
- DUK_ASIN,
- DUK_ATAN,
- DUK_CEIL,
- DUK_COS,
- DUK_EXP,
- DUK_FLOOR,
- DUK_LOG,
- duk__round_fixed,
- DUK_SIN,
- DUK_SQRT,
- DUK_TAN
-#endif
-};
-
-/* order must match constants in genbuiltins.py */
-DUK_LOCAL const duk__two_arg_func duk__two_arg_funcs[] = {
-#if defined(DUK_USE_AVOID_PLATFORM_FUNCPTRS)
- duk__atan2,
- duk__pow_fixed
-#else
- DUK_ATAN2,
- duk__pow_fixed
-#endif
-};
-
-DUK_INTERNAL duk_ret_t duk_bi_math_object_onearg_shared(duk_context *ctx) {
- duk_small_int_t fun_idx = duk_get_current_magic(ctx);
- duk__one_arg_func fun;
-
- DUK_ASSERT(fun_idx >= 0);
- DUK_ASSERT(fun_idx < (duk_small_int_t) (sizeof(duk__one_arg_funcs) / sizeof(duk__one_arg_func)));
- fun = duk__one_arg_funcs[fun_idx];
- duk_push_number(ctx, (duk_double_t) fun((double) duk_to_number(ctx, 0)));
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_math_object_twoarg_shared(duk_context *ctx) {
- duk_small_int_t fun_idx = duk_get_current_magic(ctx);
- duk__two_arg_func fun;
-
- DUK_ASSERT(fun_idx >= 0);
- DUK_ASSERT(fun_idx < (duk_small_int_t) (sizeof(duk__two_arg_funcs) / sizeof(duk__two_arg_func)));
- fun = duk__two_arg_funcs[fun_idx];
- duk_push_number(ctx, (duk_double_t) fun((double) duk_to_number(ctx, 0), (double) duk_to_number(ctx, 1)));
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_math_object_max(duk_context *ctx) {
- return duk__math_minmax(ctx, -DUK_DOUBLE_INFINITY, duk__fmax_fixed);
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_math_object_min(duk_context *ctx) {
- return duk__math_minmax(ctx, DUK_DOUBLE_INFINITY, duk__fmin_fixed);
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_math_object_random(duk_context *ctx) {
- duk_push_number(ctx, (duk_double_t) duk_util_tinyrandom_get_double((duk_hthread *) ctx));
- return 1;
-}
-
-#else /* DUK_USE_MATH_BUILTIN */
-
-/* A stubbed built-in is useful for e.g. compilation torture testing with BCC. */
-
-DUK_INTERNAL duk_ret_t duk_bi_math_object_onearg_shared(duk_context *ctx) {
- DUK_UNREF(ctx);
- return DUK_RET_UNIMPLEMENTED_ERROR;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_math_object_twoarg_shared(duk_context *ctx) {
- DUK_UNREF(ctx);
- return DUK_RET_UNIMPLEMENTED_ERROR;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_math_object_max(duk_context *ctx) {
- DUK_UNREF(ctx);
- return DUK_RET_UNIMPLEMENTED_ERROR;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_math_object_min(duk_context *ctx) {
- DUK_UNREF(ctx);
- return DUK_RET_UNIMPLEMENTED_ERROR;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_math_object_random(duk_context *ctx) {
- DUK_UNREF(ctx);
- return DUK_RET_UNIMPLEMENTED_ERROR;
-}
-
-#endif /* DUK_USE_MATH_BUILTIN */
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_number.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_number.c b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_number.c
deleted file mode 100644
index 4b7abf5..0000000
--- a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_number.c
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Number built-ins
- */
-
-#include "duk_internal.h"
-
-DUK_LOCAL duk_double_t duk__push_this_number_plain(duk_context *ctx) {
- duk_hobject *h;
-
- /* Number built-in accepts a plain number or a Number object (whose
- * internal value is operated on). Other types cause TypeError.
- */
-
- duk_push_this(ctx);
- if (duk_is_number(ctx, -1)) {
- DUK_DDD(DUK_DDDPRINT("plain number value: %!T", (duk_tval *) duk_get_tval(ctx, -1)));
- goto done;
- }
- h = duk_get_hobject(ctx, -1);
- if (!h ||
- (DUK_HOBJECT_GET_CLASS_NUMBER(h) != DUK_HOBJECT_CLASS_NUMBER)) {
- DUK_DDD(DUK_DDDPRINT("unacceptable this value: %!T", (duk_tval *) duk_get_tval(ctx, -1)));
- DUK_ERROR_TYPE((duk_hthread *) ctx, "number expected");
- }
- duk_get_prop_stridx(ctx, -1, DUK_STRIDX_INT_VALUE);
- DUK_ASSERT(duk_is_number(ctx, -1));
- DUK_DDD(DUK_DDDPRINT("number object: %!T, internal value: %!T",
- (duk_tval *) duk_get_tval(ctx, -2), (duk_tval *) duk_get_tval(ctx, -1)));
- duk_remove(ctx, -2);
-
- done:
- return duk_get_number(ctx, -1);
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_number_constructor(duk_context *ctx) {
- duk_hthread *thr = (duk_hthread *) ctx;
- duk_idx_t nargs;
- duk_hobject *h_this;
-
- DUK_UNREF(thr);
-
- /*
- * The Number constructor uses ToNumber(arg) for number coercion
- * (coercing an undefined argument to NaN). However, if the
- * argument is not given at all, +0 must be used instead. To do
- * this, a vararg function is used.
- */
-
- nargs = duk_get_top(ctx);
- if (nargs == 0) {
- duk_push_int(ctx, 0);
- }
- duk_to_number(ctx, 0);
- duk_set_top(ctx, 1);
- DUK_ASSERT_TOP(ctx, 1);
-
- if (!duk_is_constructor_call(ctx)) {
- return 1;
- }
-
- /*
- * E5 Section 15.7.2.1 requires that the constructed object
- * must have the original Number.prototype as its internal
- * prototype. However, since Number.prototype is non-writable
- * and non-configurable, this doesn't have to be enforced here:
- * The default object (bound to 'this') is OK, though we have
- * to change its class.
- *
- * Internal value set to ToNumber(arg) or +0; if no arg given,
- * ToNumber(undefined) = NaN, so special treatment is needed
- * (above). String internal value is immutable.
- */
-
- /* XXX: helper */
- duk_push_this(ctx);
- h_this = duk_get_hobject(ctx, -1);
- DUK_ASSERT(h_this != NULL);
- DUK_HOBJECT_SET_CLASS_NUMBER(h_this, DUK_HOBJECT_CLASS_NUMBER);
-
- DUK_ASSERT(DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_this) == thr->builtins[DUK_BIDX_NUMBER_PROTOTYPE]);
- DUK_ASSERT(DUK_HOBJECT_GET_CLASS_NUMBER(h_this) == DUK_HOBJECT_CLASS_NUMBER);
- DUK_ASSERT(DUK_HOBJECT_HAS_EXTENSIBLE(h_this));
-
- duk_dup(ctx, 0); /* -> [ val obj val ] */
- duk_xdef_prop_stridx(ctx, -2, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_NONE);
- return 0; /* no return value -> don't replace created value */
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_number_prototype_value_of(duk_context *ctx) {
- (void) duk__push_this_number_plain(ctx);
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_string(duk_context *ctx) {
- duk_small_int_t radix;
- duk_small_uint_t n2s_flags;
-
- (void) duk__push_this_number_plain(ctx);
- if (duk_is_undefined(ctx, 0)) {
- radix = 10;
- } else {
- radix = (duk_small_int_t) duk_to_int_check_range(ctx, 0, 2, 36);
- }
- DUK_DDD(DUK_DDDPRINT("radix=%ld", (long) radix));
-
- n2s_flags = 0;
-
- duk_numconv_stringify(ctx,
- radix /*radix*/,
- 0 /*digits*/,
- n2s_flags /*flags*/);
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_locale_string(duk_context *ctx) {
- /* XXX: just use toString() for now; permitted although not recommended.
- * nargs==1, so radix is passed to toString().
- */
- return duk_bi_number_prototype_to_string(ctx);
-}
-
-/*
- * toFixed(), toExponential(), toPrecision()
- */
-
-/* XXX: shared helper for toFixed(), toExponential(), toPrecision()? */
-
-DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_fixed(duk_context *ctx) {
- duk_small_int_t frac_digits;
- duk_double_t d;
- duk_small_int_t c;
- duk_small_uint_t n2s_flags;
-
- frac_digits = (duk_small_int_t) duk_to_int_check_range(ctx, 0, 0, 20);
- d = duk__push_this_number_plain(ctx);
-
- c = (duk_small_int_t) DUK_FPCLASSIFY(d);
- if (c == DUK_FP_NAN || c == DUK_FP_INFINITE) {
- goto use_to_string;
- }
-
- if (d >= 1.0e21 || d <= -1.0e21) {
- goto use_to_string;
- }
-
- n2s_flags = DUK_N2S_FLAG_FIXED_FORMAT |
- DUK_N2S_FLAG_FRACTION_DIGITS;
-
- duk_numconv_stringify(ctx,
- 10 /*radix*/,
- frac_digits /*digits*/,
- n2s_flags /*flags*/);
- return 1;
-
- use_to_string:
- DUK_ASSERT_TOP(ctx, 2);
- duk_to_string(ctx, -1);
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_exponential(duk_context *ctx) {
- duk_bool_t frac_undefined;
- duk_small_int_t frac_digits;
- duk_double_t d;
- duk_small_int_t c;
- duk_small_uint_t n2s_flags;
-
- d = duk__push_this_number_plain(ctx);
-
- frac_undefined = duk_is_undefined(ctx, 0);
- duk_to_int(ctx, 0); /* for side effects */
-
- c = (duk_small_int_t) DUK_FPCLASSIFY(d);
- if (c == DUK_FP_NAN || c == DUK_FP_INFINITE) {
- goto use_to_string;
- }
-
- frac_digits = (duk_small_int_t) duk_to_int_check_range(ctx, 0, 0, 20);
-
- n2s_flags = DUK_N2S_FLAG_FORCE_EXP |
- (frac_undefined ? 0 : DUK_N2S_FLAG_FIXED_FORMAT);
-
- duk_numconv_stringify(ctx,
- 10 /*radix*/,
- frac_digits + 1 /*leading digit + fractions*/,
- n2s_flags /*flags*/);
- return 1;
-
- use_to_string:
- DUK_ASSERT_TOP(ctx, 2);
- duk_to_string(ctx, -1);
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_number_prototype_to_precision(duk_context *ctx) {
- /* The specification has quite awkward order of coercion and
- * checks for toPrecision(). The operations below are a bit
- * reordered, within constraints of observable side effects.
- */
-
- duk_double_t d;
- duk_small_int_t prec;
- duk_small_int_t c;
- duk_small_uint_t n2s_flags;
-
- DUK_ASSERT_TOP(ctx, 1);
-
- d = duk__push_this_number_plain(ctx);
- if (duk_is_undefined(ctx, 0)) {
- goto use_to_string;
- }
- DUK_ASSERT_TOP(ctx, 2);
-
- duk_to_int(ctx, 0); /* for side effects */
-
- c = (duk_small_int_t) DUK_FPCLASSIFY(d);
- if (c == DUK_FP_NAN || c == DUK_FP_INFINITE) {
- goto use_to_string;
- }
-
- prec = (duk_small_int_t) duk_to_int_check_range(ctx, 0, 1, 21);
-
- n2s_flags = DUK_N2S_FLAG_FIXED_FORMAT |
- DUK_N2S_FLAG_NO_ZERO_PAD;
-
- duk_numconv_stringify(ctx,
- 10 /*radix*/,
- prec /*digits*/,
- n2s_flags /*flags*/);
- return 1;
-
- use_to_string:
- /* Used when precision is undefined; also used for NaN (-> "NaN"),
- * and +/- infinity (-> "Infinity", "-Infinity").
- */
-
- DUK_ASSERT_TOP(ctx, 2);
- duk_to_string(ctx, -1);
- return 1;
-}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_object.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_object.c b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_object.c
deleted file mode 100644
index 28509ab..0000000
--- a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_object.c
+++ /dev/null
@@ -1,577 +0,0 @@
-/*
- * Object built-ins
- */
-
-#include "duk_internal.h"
-
-DUK_INTERNAL duk_ret_t duk_bi_object_constructor(duk_context *ctx) {
- if (!duk_is_constructor_call(ctx) &&
- !duk_is_null_or_undefined(ctx, 0)) {
- duk_to_object(ctx, 0);
- return 1;
- }
-
- if (duk_is_object(ctx, 0)) {
- return 1;
- }
-
- /* Pointer and buffer primitive values are treated like other
- * primitives values which have a fully fledged object counterpart:
- * promote to an object value. Lightfuncs are coerced with
- * ToObject() even they could also be returned as is.
- */
- if (duk_check_type_mask(ctx, 0, DUK_TYPE_MASK_STRING |
- DUK_TYPE_MASK_BOOLEAN |
- DUK_TYPE_MASK_NUMBER |
- DUK_TYPE_MASK_POINTER |
- DUK_TYPE_MASK_BUFFER |
- DUK_TYPE_MASK_LIGHTFUNC)) {
- duk_to_object(ctx, 0);
- return 1;
- }
-
- duk_push_object_helper(ctx,
- DUK_HOBJECT_FLAG_EXTENSIBLE |
- DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT),
- DUK_BIDX_OBJECT_PROTOTYPE);
- return 1;
-}
-
-/* Shared helper to implement Object.getPrototypeOf and the ES6
- * Object.prototype.__proto__ getter.
- *
- * http://www.ecma-international.org/ecma-262/6.0/index.html#sec-get-object.prototype.__proto__
- */
-DUK_INTERNAL duk_ret_t duk_bi_object_getprototype_shared(duk_context *ctx) {
- duk_hthread *thr = (duk_hthread *) ctx;
- duk_hobject *h;
- duk_hobject *proto;
-
- DUK_UNREF(thr);
-
- /* magic: 0=getter call, 1=Object.getPrototypeOf */
- if (duk_get_current_magic(ctx) == 0) {
- duk_push_this_coercible_to_object(ctx);
- duk_insert(ctx, 0);
- }
-
- h = duk_require_hobject_or_lfunc(ctx, 0);
- /* h is NULL for lightfunc */
-
- /* XXX: should the API call handle this directly, i.e. attempt
- * to duk_push_hobject(ctx, null) would push a null instead?
- * (On the other hand 'undefined' would be just as logical, but
- * not wanted here.)
- */
-
- if (h == NULL) {
- duk_push_hobject_bidx(ctx, DUK_BIDX_FUNCTION_PROTOTYPE);
- } else {
- proto = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h);
- if (proto) {
- duk_push_hobject(ctx, proto);
- } else {
- duk_push_null(ctx);
- }
- }
- return 1;
-}
-
-/* Shared helper to implement ES6 Object.setPrototypeOf and
- * Object.prototype.__proto__ setter.
- *
- * http://www.ecma-international.org/ecma-262/6.0/index.html#sec-get-object.prototype.__proto__
- * http://www.ecma-international.org/ecma-262/6.0/index.html#sec-object.setprototypeof
- */
-DUK_INTERNAL duk_ret_t duk_bi_object_setprototype_shared(duk_context *ctx) {
- duk_hthread *thr = (duk_hthread *) ctx;
- duk_hobject *h_obj;
- duk_hobject *h_new_proto;
- duk_hobject *h_curr;
- duk_ret_t ret_success = 1; /* retval for success path */
-
- /* Preliminaries for __proto__ and setPrototypeOf (E6 19.1.2.18 steps 1-4);
- * magic: 0=setter call, 1=Object.setPrototypeOf
- */
- if (duk_get_current_magic(ctx) == 0) {
- duk_push_this_check_object_coercible(ctx);
- duk_insert(ctx, 0);
- if (!duk_check_type_mask(ctx, 1, DUK_TYPE_MASK_NULL | DUK_TYPE_MASK_OBJECT)) {
- return 0;
- }
-
- /* __proto__ setter returns 'undefined' on success unlike the
- * setPrototypeOf() call which returns the target object.
- */
- ret_success = 0;
- } else {
- duk_require_object_coercible(ctx, 0);
- duk_require_type_mask(ctx, 1, DUK_TYPE_MASK_NULL | DUK_TYPE_MASK_OBJECT);
- }
-
- h_new_proto = duk_get_hobject(ctx, 1);
- /* h_new_proto may be NULL */
- if (duk_is_lightfunc(ctx, 0)) {
- if (h_new_proto == thr->builtins[DUK_BIDX_FUNCTION_PROTOTYPE]) {
- goto skip;
- }
- goto fail_nonextensible;
- }
- h_obj = duk_get_hobject(ctx, 0);
- if (!h_obj) {
- goto skip;
- }
- DUK_ASSERT(h_obj != NULL);
-
- /* [[SetPrototypeOf]] standard behavior, E6 9.1.2 */
- /* TODO: implement Proxy object support here */
-
- if (h_new_proto == DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_obj)) {
- goto skip;
- }
- if (!DUK_HOBJECT_HAS_EXTENSIBLE(h_obj)) {
- goto fail_nonextensible;
- }
- for (h_curr = h_new_proto; h_curr != NULL; h_curr = DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_curr)) {
- /* Loop prevention */
- if (h_curr == h_obj) {
- goto fail_loop;
- }
- }
- DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, h_obj, h_new_proto);
- /* fall thru */
-
- skip:
- duk_set_top(ctx, 1);
- return ret_success;
-
- fail_nonextensible:
- fail_loop:
- return DUK_RET_TYPE_ERROR;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_constructor_get_own_property_descriptor(duk_context *ctx) {
- /* XXX: no need for indirect call */
- return duk_hobject_object_get_own_property_descriptor(ctx);
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_constructor_create(duk_context *ctx) {
- duk_tval *tv;
- duk_hobject *proto = NULL;
-
- DUK_ASSERT_TOP(ctx, 2);
-
- tv = duk_get_tval(ctx, 0);
- DUK_ASSERT(tv != NULL);
- if (DUK_TVAL_IS_NULL(tv)) {
- ;
- } else if (DUK_TVAL_IS_OBJECT(tv)) {
- proto = DUK_TVAL_GET_OBJECT(tv);
- DUK_ASSERT(proto != NULL);
- } else {
- return DUK_RET_TYPE_ERROR;
- }
-
- (void) duk_push_object_helper_proto(ctx,
- DUK_HOBJECT_FLAG_EXTENSIBLE |
- DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT),
- proto);
-
- if (!duk_is_undefined(ctx, 1)) {
- /* [ O Properties obj ] */
-
- duk_replace(ctx, 0);
-
- /* [ obj Properties ] */
-
- /* Just call the "original" Object.defineProperties() to
- * finish up.
- */
-
- return duk_bi_object_constructor_define_properties(ctx);
- }
-
- /* [ O Properties obj ] */
-
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_constructor_define_property(duk_context *ctx) {
- duk_hobject *obj;
- duk_hstring *key;
- duk_hobject *get;
- duk_hobject *set;
- duk_idx_t idx_value;
- duk_uint_t defprop_flags;
-
- DUK_ASSERT(ctx != NULL);
-
- DUK_DDD(DUK_DDDPRINT("Object.defineProperty(): ctx=%p obj=%!T key=%!T desc=%!T",
- (void *) ctx,
- (duk_tval *) duk_get_tval(ctx, 0),
- (duk_tval *) duk_get_tval(ctx, 1),
- (duk_tval *) duk_get_tval(ctx, 2)));
-
- /* [ obj key desc ] */
-
- /* Lightfuncs are currently supported by coercing to a temporary
- * Function object; changes will be allowed (the coerced value is
- * extensible) but will be lost.
- */
- obj = duk_require_hobject_or_lfunc_coerce(ctx, 0);
- (void) duk_to_string(ctx, 1);
- key = duk_require_hstring(ctx, 1);
- (void) duk_require_hobject(ctx, 2);
-
- DUK_ASSERT(obj != NULL);
- DUK_ASSERT(key != NULL);
- DUK_ASSERT(duk_get_hobject(ctx, 2) != NULL);
-
- /*
- * Validate and convert argument property descriptor (an Ecmascript
- * object) into a set of defprop_flags and possibly property value,
- * getter, and/or setter values on the value stack.
- *
- * Lightfunc set/get values are coerced to full Functions.
- */
-
- duk_hobject_prepare_property_descriptor(ctx,
- 2 /*idx_desc*/,
- &defprop_flags,
- &idx_value,
- &get,
- &set);
-
- /*
- * Use Object.defineProperty() helper for the actual operation.
- */
-
- duk_hobject_define_property_helper(ctx,
- defprop_flags,
- obj,
- key,
- idx_value,
- get,
- set);
-
- /* Ignore the normalize/validate helper outputs on the value stack,
- * they're popped automatically.
- */
-
- /*
- * Return target object.
- */
-
- duk_push_hobject(ctx, obj);
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_constructor_define_properties(duk_context *ctx) {
- duk_small_uint_t pass;
- duk_uint_t defprop_flags;
- duk_hobject *obj;
- duk_idx_t idx_value;
- duk_hobject *get;
- duk_hobject *set;
-
- /* Lightfunc handling by ToObject() coercion. */
- obj = duk_require_hobject_or_lfunc_coerce(ctx, 0); /* target */
- DUK_ASSERT(obj != NULL);
-
- duk_to_object(ctx, 1); /* properties object */
-
- DUK_DDD(DUK_DDDPRINT("target=%!iT, properties=%!iT",
- (duk_tval *) duk_get_tval(ctx, 0),
- (duk_tval *) duk_get_tval(ctx, 1)));
-
- /*
- * Two pass approach to processing the property descriptors.
- * On first pass validate and normalize all descriptors before
- * any changes are made to the target object. On second pass
- * make the actual modifications to the target object.
- *
- * Right now we'll just use the same normalize/validate helper
- * on both passes, ignoring its outputs on the first pass.
- */
-
- for (pass = 0; pass < 2; pass++) {
- duk_set_top(ctx, 2); /* -> [ hobject props ] */
- duk_enum(ctx, 1, DUK_ENUM_OWN_PROPERTIES_ONLY /*enum_flags*/);
-
- for (;;) {
- duk_hstring *key;
-
- /* [ hobject props enum(props) ] */
-
- duk_set_top(ctx, 3);
-
- if (!duk_next(ctx, 2, 1 /*get_value*/)) {
- break;
- }
-
- DUK_DDD(DUK_DDDPRINT("-> key=%!iT, desc=%!iT",
- (duk_tval *) duk_get_tval(ctx, -2),
- (duk_tval *) duk_get_tval(ctx, -1)));
-
- /* [ hobject props enum(props) key desc ] */
-
- duk_hobject_prepare_property_descriptor(ctx,
- 4 /*idx_desc*/,
- &defprop_flags,
- &idx_value,
- &get,
- &set);
-
- /* [ hobject props enum(props) key desc value? getter? setter? ] */
-
- if (pass == 0) {
- continue;
- }
-
- key = duk_get_hstring(ctx, 3);
- DUK_ASSERT(key != NULL);
-
- duk_hobject_define_property_helper(ctx,
- defprop_flags,
- obj,
- key,
- idx_value,
- get,
- set);
- }
- }
-
- /*
- * Return target object
- */
-
- duk_dup(ctx, 0);
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_constructor_seal_freeze_shared(duk_context *ctx) {
- duk_hthread *thr = (duk_hthread *) ctx;
- duk_hobject *h;
- duk_bool_t is_freeze;
-
- h = duk_require_hobject_or_lfunc(ctx, 0);
- if (!h) {
- /* Lightfunc, always success. */
- return 1;
- }
-
- is_freeze = (duk_bool_t) duk_get_current_magic(ctx);
- duk_hobject_object_seal_freeze_helper(thr, h, is_freeze);
-
- /* Sealed and frozen objects cannot gain any more properties,
- * so this is a good time to compact them.
- */
- duk_hobject_compact_props(thr, h);
-
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_constructor_prevent_extensions(duk_context *ctx) {
- duk_hthread *thr = (duk_hthread *) ctx;
- duk_hobject *h;
-
- h = duk_require_hobject_or_lfunc(ctx, 0);
- if (!h) {
- /* Lightfunc, always success. */
- return 1;
- }
- DUK_ASSERT(h != NULL);
-
- DUK_HOBJECT_CLEAR_EXTENSIBLE(h);
-
- /* A non-extensible object cannot gain any more properties,
- * so this is a good time to compact.
- */
- duk_hobject_compact_props(thr, h);
-
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_constructor_is_sealed_frozen_shared(duk_context *ctx) {
- duk_hobject *h;
- duk_bool_t is_frozen;
- duk_bool_t rc;
-
- h = duk_require_hobject_or_lfunc(ctx, 0);
- if (!h) {
- duk_push_true(ctx); /* frozen and sealed */
- } else {
- is_frozen = duk_get_current_magic(ctx);
- rc = duk_hobject_object_is_sealed_frozen_helper((duk_hthread *) ctx, h, is_frozen /*is_frozen*/);
- duk_push_boolean(ctx, rc);
- }
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_constructor_is_extensible(duk_context *ctx) {
- duk_hobject *h;
-
- h = duk_require_hobject_or_lfunc(ctx, 0);
- if (!h) {
- duk_push_false(ctx);
- } else {
- duk_push_boolean(ctx, DUK_HOBJECT_HAS_EXTENSIBLE(h));
- }
- return 1;
-}
-
-/* Shared helper for Object.getOwnPropertyNames() and Object.keys().
- * Magic: 0=getOwnPropertyNames, 1=Object.keys.
- */
-DUK_INTERNAL duk_ret_t duk_bi_object_constructor_keys_shared(duk_context *ctx) {
- duk_hthread *thr = (duk_hthread *) ctx;
- duk_hobject *obj;
-#if defined(DUK_USE_ES6_PROXY)
- duk_hobject *h_proxy_target;
- duk_hobject *h_proxy_handler;
- duk_hobject *h_trap_result;
- duk_uarridx_t i, len, idx;
-#endif
- duk_small_uint_t enum_flags;
-
- DUK_ASSERT_TOP(ctx, 1);
- DUK_UNREF(thr);
-
- obj = duk_require_hobject_or_lfunc_coerce(ctx, 0);
- DUK_ASSERT(obj != NULL);
- DUK_UNREF(obj);
-
-#if defined(DUK_USE_ES6_PROXY)
- if (DUK_LIKELY(!duk_hobject_proxy_check(thr,
- obj,
- &h_proxy_target,
- &h_proxy_handler))) {
- goto skip_proxy;
- }
-
- duk_push_hobject(ctx, h_proxy_handler);
- if (!duk_get_prop_stridx(ctx, -1, DUK_STRIDX_OWN_KEYS)) {
- /* Careful with reachability here: don't pop 'obj' before pushing
- * proxy target.
- */
- DUK_DDD(DUK_DDDPRINT("no ownKeys trap, get keys of target instead"));
- duk_pop_2(ctx);
- duk_push_hobject(ctx, h_proxy_target);
- duk_replace(ctx, 0);
- DUK_ASSERT_TOP(ctx, 1);
- goto skip_proxy;
- }
-
- /* [ obj handler trap ] */
- duk_insert(ctx, -2);
- duk_push_hobject(ctx, h_proxy_target); /* -> [ obj trap handler target ] */
- duk_call_method(ctx, 1 /*nargs*/); /* -> [ obj trap_result ] */
- h_trap_result = duk_require_hobject(ctx, -1);
- DUK_UNREF(h_trap_result);
-
- len = (duk_uarridx_t) duk_get_length(ctx, -1);
- idx = 0;
- duk_push_array(ctx);
- for (i = 0; i < len; i++) {
- /* [ obj trap_result res_arr ] */
- if (duk_get_prop_index(ctx, -2, i) && duk_is_string(ctx, -1)) {
- /* XXX: for Object.keys() we should check enumerability of key */
- /* [ obj trap_result res_arr propname ] */
- duk_put_prop_index(ctx, -2, idx);
- idx++;
- } else {
- duk_pop(ctx);
- }
- }
-
- /* XXX: missing trap result validation for non-configurable target keys
- * (must be present), for non-extensible target all target keys must be
- * present and no extra keys can be present.
- * http://www.ecma-international.org/ecma-262/6.0/#sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys
- */
-
- /* XXX: for Object.keys() the [[OwnPropertyKeys]] result (trap result)
- * should be filtered so that only enumerable keys remain. Enumerability
- * should be checked with [[GetOwnProperty]] on the original object
- * (i.e., the proxy in this case). If the proxy has a getOwnPropertyDescriptor
- * trap, it should be triggered for every property. If the proxy doesn't have
- * the trap, enumerability should be checked against the target object instead.
- * We don't do any of this now, so Object.keys() and Object.getOwnPropertyNames()
- * return the same result now for proxy traps. We still do clean up the trap
- * result, so that Object.keys() and Object.getOwnPropertyNames() will return a
- * clean array of strings without gaps.
- */
- return 1;
-
- skip_proxy:
-#endif /* DUK_USE_ES6_PROXY */
-
- DUK_ASSERT_TOP(ctx, 1);
-
- if (duk_get_current_magic(ctx)) {
- /* Object.keys */
- enum_flags = DUK_ENUM_OWN_PROPERTIES_ONLY |
- DUK_ENUM_NO_PROXY_BEHAVIOR;
- } else {
- /* Object.getOwnPropertyNames */
- enum_flags = DUK_ENUM_INCLUDE_NONENUMERABLE |
- DUK_ENUM_OWN_PROPERTIES_ONLY |
- DUK_ENUM_NO_PROXY_BEHAVIOR;
- }
-
- return duk_hobject_get_enumerated_keys(ctx, enum_flags);
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_prototype_to_string(duk_context *ctx) {
- duk_push_this(ctx);
- duk_to_object_class_string_top(ctx);
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_prototype_to_locale_string(duk_context *ctx) {
- DUK_ASSERT_TOP(ctx, 0);
- (void) duk_push_this_coercible_to_object(ctx);
- duk_get_prop_stridx(ctx, 0, DUK_STRIDX_TO_STRING);
- if (!duk_is_callable(ctx, 1)) {
- return DUK_RET_TYPE_ERROR;
- }
- duk_dup(ctx, 0); /* -> [ O toString O ] */
- duk_call_method(ctx, 0); /* XXX: call method tail call? */
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_prototype_value_of(duk_context *ctx) {
- (void) duk_push_this_coercible_to_object(ctx);
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_prototype_is_prototype_of(duk_context *ctx) {
- duk_hthread *thr = (duk_hthread *) ctx;
- duk_hobject *h_v;
- duk_hobject *h_obj;
-
- DUK_ASSERT_TOP(ctx, 1);
-
- h_v = duk_get_hobject(ctx, 0);
- if (!h_v) {
- duk_push_false(ctx); /* XXX: tail call: return duk_push_false(ctx) */
- return 1;
- }
-
- h_obj = duk_push_this_coercible_to_object(ctx);
- DUK_ASSERT(h_obj != NULL);
-
- /* E5.1 Section 15.2.4.6, step 3.a, lookup proto once before compare.
- * Prototype loops should cause an error to be thrown.
- */
- duk_push_boolean(ctx, duk_hobject_prototype_chain_contains(thr, DUK_HOBJECT_GET_PROTOTYPE(thr->heap, h_v), h_obj, 0 /*ignore_loop*/));
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_prototype_has_own_property(duk_context *ctx) {
- return duk_hobject_object_ownprop_helper(ctx, 0 /*required_desc_flags*/);
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_object_prototype_property_is_enumerable(duk_context *ctx) {
- return duk_hobject_object_ownprop_helper(ctx, DUK_PROPDESC_FLAG_ENUMERABLE /*required_desc_flags*/);
-}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_pointer.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_pointer.c b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_pointer.c
deleted file mode 100644
index 340fbae..0000000
--- a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_pointer.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Pointer built-ins
- */
-
-#include "duk_internal.h"
-
-/*
- * Constructor
- */
-
-DUK_INTERNAL duk_ret_t duk_bi_pointer_constructor(duk_context *ctx) {
- /* XXX: this behavior is quite useless now; it would be nice to be able
- * to create pointer values from e.g. numbers or strings. Numbers are
- * problematic on 64-bit platforms though. Hex encoded strings?
- */
- if (duk_get_top(ctx) == 0) {
- duk_push_pointer(ctx, NULL);
- } else {
- duk_to_pointer(ctx, 0);
- }
- DUK_ASSERT(duk_is_pointer(ctx, 0));
- duk_set_top(ctx, 1);
-
- if (duk_is_constructor_call(ctx)) {
- duk_push_object_helper(ctx,
- DUK_HOBJECT_FLAG_EXTENSIBLE |
- DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_POINTER),
- DUK_BIDX_POINTER_PROTOTYPE);
-
- /* Pointer object internal value is immutable */
- duk_dup(ctx, 0);
- duk_xdef_prop_stridx(ctx, -2, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_NONE);
- }
- /* Note: unbalanced stack on purpose */
-
- return 1;
-}
-
-/*
- * toString(), valueOf()
- */
-
-DUK_INTERNAL duk_ret_t duk_bi_pointer_prototype_tostring_shared(duk_context *ctx) {
- duk_tval *tv;
- duk_small_int_t to_string = duk_get_current_magic(ctx);
-
- duk_push_this(ctx);
- tv = duk_require_tval(ctx, -1);
- DUK_ASSERT(tv != NULL);
-
- if (DUK_TVAL_IS_POINTER(tv)) {
- /* nop */
- } else if (DUK_TVAL_IS_OBJECT(tv)) {
- duk_hobject *h = DUK_TVAL_GET_OBJECT(tv);
- DUK_ASSERT(h != NULL);
-
- /* Must be a "pointer object", i.e. class "Pointer" */
- if (DUK_HOBJECT_GET_CLASS_NUMBER(h) != DUK_HOBJECT_CLASS_POINTER) {
- goto type_error;
- }
-
- duk_get_prop_stridx(ctx, -1, DUK_STRIDX_INT_VALUE);
- } else {
- goto type_error;
- }
-
- if (to_string) {
- duk_to_string(ctx, -1);
- }
- return 1;
-
- type_error:
- return DUK_RET_TYPE_ERROR;
-}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_protos.h
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_protos.h b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_protos.h
deleted file mode 100644
index f9b42bc..0000000
--- a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_protos.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Prototypes for built-in functions not automatically covered by the
- * header declarations emitted by genbuiltins.py.
- */
-
-#ifndef DUK_BUILTIN_PROTOS_H_INCLUDED
-#define DUK_BUILTIN_PROTOS_H_INCLUDED
-
-/* Buffer size needed for duk_bi_date_format_timeval().
- * Accurate value is 32 + 1 for NUL termination:
- * >>> len('+123456-01-23T12:34:56.123+12:34')
- * 32
- * Include additional space to be safe.
- */
-#define DUK_BI_DATE_ISO8601_BUFSIZE 48
-
-/* Maximum length of CommonJS module identifier to resolve. Length includes
- * both current module ID, requested (possibly relative) module ID, and a
- * slash in between.
- */
-#define DUK_BI_COMMONJS_MODULE_ID_LIMIT 256
-
-/* Helpers exposed for internal use */
-DUK_INTERNAL_DECL void duk_bi_date_timeval_to_parts(duk_double_t d, duk_int_t *parts, duk_double_t *dparts, duk_small_uint_t flags);
-DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_timeval_from_dparts(duk_double_t *dparts, duk_small_uint_t flags);
-DUK_INTERNAL_DECL void duk_bi_date_format_timeval(duk_double_t timeval, duk_uint8_t *out_buf);
-DUK_INTERNAL_DECL duk_bool_t duk_bi_date_is_leap_year(duk_int_t year);
-DUK_INTERNAL_DECL duk_bool_t duk_bi_date_timeval_in_valid_range(duk_double_t x);
-DUK_INTERNAL_DECL duk_bool_t duk_bi_date_year_in_valid_range(duk_double_t year);
-DUK_INTERNAL_DECL duk_bool_t duk_bi_date_timeval_in_leeway_range(duk_double_t x);
-/* Built-in providers */
-#if defined(DUK_USE_DATE_NOW_GETTIMEOFDAY)
-DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_now_gettimeofday(duk_context *ctx);
-#endif
-#if defined(DUK_USE_DATE_NOW_TIME)
-DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_now_time(duk_context *ctx);
-#endif
-#if defined(DUK_USE_DATE_NOW_WINDOWS)
-DUK_INTERNAL_DECL duk_double_t duk_bi_date_get_now_windows(duk_context *ctx);
-#endif
-#if defined(DUK_USE_DATE_TZO_GMTIME_R) || defined(DUK_USE_DATE_TZO_GMTIME)
-DUK_INTERNAL_DECL duk_int_t duk_bi_date_get_local_tzoffset_gmtime(duk_double_t d);
-#endif
-#if defined(DUK_USE_DATE_TZO_WINDOWS)
-DUK_INTERNAL_DECL duk_int_t duk_bi_date_get_local_tzoffset_windows(duk_double_t d);
-#endif
-#if defined(DUK_USE_DATE_PRS_STRPTIME)
-DUK_INTERNAL_DECL duk_bool_t duk_bi_date_parse_string_strptime(duk_context *ctx, const char *str);
-#endif
-#if defined(DUK_USE_DATE_PRS_GETDATE)
-DUK_INTERNAL_DECL duk_bool_t duk_bi_date_parse_string_getdate(duk_context *ctx, const char *str);
-#endif
-#if defined(DUK_USE_DATE_FMT_STRFTIME)
-DUK_INTERNAL_DECL duk_bool_t duk_bi_date_format_parts_strftime(duk_context *ctx, duk_int_t *parts, duk_int_t tzoffset, duk_small_uint_t flags);
-#endif
-
-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_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);
-
-#endif /* DUK_BUILTIN_PROTOS_H_INCLUDED */
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_proxy.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_proxy.c b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_proxy.c
deleted file mode 100644
index 9787ec4..0000000
--- a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_proxy.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Proxy built-in (ES6)
- */
-
-#include "duk_internal.h"
-
-#if defined(DUK_USE_ES6_PROXY)
-DUK_INTERNAL duk_ret_t duk_bi_proxy_constructor(duk_context *ctx) {
- duk_hobject *h_target;
- duk_hobject *h_handler;
-
- if (!duk_is_constructor_call(ctx)) {
- return DUK_RET_TYPE_ERROR;
- }
-
- /* Reject a proxy object as the target because it would need
- * special handler in property lookups. (ES6 has no such restriction)
- */
- h_target = duk_require_hobject_or_lfunc_coerce(ctx, 0);
- DUK_ASSERT(h_target != NULL);
- if (DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ(h_target)) {
- return DUK_RET_TYPE_ERROR;
- }
-
- /* Reject a proxy object as the handler because it would cause
- * potentially unbounded recursion. (ES6 has no such restriction)
- */
- h_handler = duk_require_hobject_or_lfunc_coerce(ctx, 1);
- DUK_ASSERT(h_handler != NULL);
- if (DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ(h_handler)) {
- return DUK_RET_TYPE_ERROR;
- }
-
- /* XXX: the returned value is exotic in ES6, but we use a
- * simple object here with no prototype. Without a prototype,
- * [[DefaultValue]] coercion fails which is abit confusing.
- * No callable check/handling in the current Proxy subset.
- */
- (void) duk_push_object_helper_proto(ctx,
- DUK_HOBJECT_FLAG_EXTENSIBLE |
- DUK_HOBJECT_FLAG_EXOTIC_PROXYOBJ |
- DUK_HOBJECT_CLASS_AS_FLAGS(DUK_HOBJECT_CLASS_OBJECT),
- NULL);
- DUK_ASSERT_TOP(ctx, 3);
-
- /* Make _Target and _Handler non-configurable and non-writable.
- * They can still be forcibly changed by C code (both user and
- * Duktape internal), but not by Ecmascript code.
- */
-
- /* Proxy target */
- duk_dup(ctx, 0);
- duk_xdef_prop_stridx(ctx, -2, DUK_STRIDX_INT_TARGET, DUK_PROPDESC_FLAGS_NONE);
-
- /* Proxy handler */
- duk_dup(ctx, 1);
- duk_xdef_prop_stridx(ctx, -2, DUK_STRIDX_INT_HANDLER, DUK_PROPDESC_FLAGS_NONE);
-
- return 1; /* replacement handler */
-}
-#else /* DUK_USE_ES6_PROXY */
-DUK_INTERNAL duk_ret_t duk_bi_proxy_constructor(duk_context *ctx) {
- DUK_UNREF(ctx);
- return DUK_RET_UNSUPPORTED_ERROR;
-}
-#endif /* DUK_USE_ES6_PROXY */
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_regexp.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_regexp.c b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_regexp.c
deleted file mode 100644
index 2259c77..0000000
--- a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/src-separate/duk_bi_regexp.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * RegExp built-ins
- */
-
-#include "duk_internal.h"
-
-#ifdef DUK_USE_REGEXP_SUPPORT
-
-DUK_LOCAL void duk__get_this_regexp(duk_context *ctx) {
- duk_hobject *h;
-
- duk_push_this(ctx);
- h = duk_require_hobject_with_class(ctx, -1, DUK_HOBJECT_CLASS_REGEXP);
- DUK_ASSERT(h != NULL);
- DUK_UNREF(h);
- duk_insert(ctx, 0); /* prepend regexp to valstack 0 index */
-}
-
-/* XXX: much to improve (code size) */
-DUK_INTERNAL duk_ret_t duk_bi_regexp_constructor(duk_context *ctx) {
- duk_hthread *thr = (duk_hthread *) ctx;
- duk_hobject *h_pattern;
-
- DUK_ASSERT_TOP(ctx, 2);
- h_pattern = duk_get_hobject(ctx, 0);
-
- if (!duk_is_constructor_call(ctx) &&
- h_pattern != NULL &&
- DUK_HOBJECT_GET_CLASS_NUMBER(h_pattern) == DUK_HOBJECT_CLASS_REGEXP &&
- duk_is_undefined(ctx, 1)) {
- /* Called as a function, pattern has [[Class]] "RegExp" and
- * flags is undefined -> return object as is.
- */
- duk_dup(ctx, 0);
- return 1;
- }
-
- /* Else functionality is identical for function call and constructor
- * call.
- */
-
- if (h_pattern != NULL &&
- DUK_HOBJECT_GET_CLASS_NUMBER(h_pattern) == DUK_HOBJECT_CLASS_REGEXP) {
- if (duk_is_undefined(ctx, 1)) {
- duk_bool_t flag_g, flag_i, flag_m;
- duk_get_prop_stridx(ctx, 0, DUK_STRIDX_SOURCE);
- flag_g = duk_get_prop_stridx_boolean(ctx, 0, DUK_STRIDX_GLOBAL, NULL);
- flag_i = duk_get_prop_stridx_boolean(ctx, 0, DUK_STRIDX_IGNORE_CASE, NULL);
- flag_m = duk_get_prop_stridx_boolean(ctx, 0, DUK_STRIDX_MULTILINE, NULL);
-
- duk_push_sprintf(ctx, "%s%s%s",
- (const char *) (flag_g ? "g" : ""),
- (const char *) (flag_i ? "i" : ""),
- (const char *) (flag_m ? "m" : ""));
-
- /* [ ... pattern flags ] */
- } else {
- return DUK_RET_TYPE_ERROR;
- }
- } else {
- if (duk_is_undefined(ctx, 0)) {
- duk_push_string(ctx, "");
- } else {
- duk_dup(ctx, 0);
- duk_to_string(ctx, -1);
- }
- if (duk_is_undefined(ctx, 1)) {
- duk_push_string(ctx, "");
- } else {
- duk_dup(ctx, 1);
- duk_to_string(ctx, -1);
- }
-
- /* [ ... pattern flags ] */
- }
-
- DUK_DDD(DUK_DDDPRINT("RegExp constructor/function call, pattern=%!T, flags=%!T",
- (duk_tval *) duk_get_tval(ctx, -2), (duk_tval *) duk_get_tval(ctx, -1)));
-
- /* [ ... pattern flags ] */
-
- duk_regexp_compile(thr);
-
- /* [ ... bytecode escaped_source ] */
-
- duk_regexp_create_instance(thr);
-
- /* [ ... RegExp ] */
-
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_exec(duk_context *ctx) {
- duk__get_this_regexp(ctx);
-
- /* [ regexp input ] */
-
- duk_regexp_match((duk_hthread *) ctx);
-
- /* [ result ] */
-
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_test(duk_context *ctx) {
- duk__get_this_regexp(ctx);
-
- /* [ regexp input ] */
-
- /* result object is created and discarded; wasteful but saves code space */
- duk_regexp_match((duk_hthread *) ctx);
-
- /* [ result ] */
-
- duk_push_boolean(ctx, (duk_is_null(ctx, -1) ? 0 : 1));
-
- return 1;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_to_string(duk_context *ctx) {
- duk_hstring *h_bc;
- duk_small_int_t re_flags;
-
-#if 0
- /* A little tricky string approach to provide the flags string.
- * This depends on the specific flag values in duk_regexp.h,
- * which needs to be asserted for. In practice this doesn't
- * produce more compact code than the easier approach in use.
- */
-
- const char *flag_strings = "gim\0gi\0gm\0g\0";
- duk_uint8_t flag_offsets[8] = {
- (duk_uint8_t) 3, /* flags: "" */
- (duk_uint8_t) 10, /* flags: "g" */
- (duk_uint8_t) 5, /* flags: "i" */
- (duk_uint8_t) 4, /* flags: "gi" */
- (duk_uint8_t) 2, /* flags: "m" */
- (duk_uint8_t) 7, /* flags: "gm" */
- (duk_uint8_t) 1, /* flags: "im" */
- (duk_uint8_t) 0, /* flags: "gim" */
- };
- DUK_ASSERT(DUK_RE_FLAG_GLOBAL == 1);
- DUK_ASSERT(DUK_RE_FLAG_IGNORE_CASE == 2);
- DUK_ASSERT(DUK_RE_FLAG_MULTILINE == 4);
-#endif
-
- duk__get_this_regexp(ctx);
-
- /* [ regexp ] */
-
- duk_get_prop_stridx(ctx, 0, DUK_STRIDX_SOURCE);
- duk_get_prop_stridx(ctx, 0, DUK_STRIDX_INT_BYTECODE);
- h_bc = duk_get_hstring(ctx, -1);
- DUK_ASSERT(h_bc != NULL);
- DUK_ASSERT(DUK_HSTRING_GET_BYTELEN(h_bc) >= 1);
- DUK_ASSERT(DUK_HSTRING_GET_CHARLEN(h_bc) >= 1);
- DUK_ASSERT(DUK_HSTRING_GET_DATA(h_bc)[0] < 0x80);
- re_flags = (duk_small_int_t) DUK_HSTRING_GET_DATA(h_bc)[0];
-
- /* [ regexp source bytecode ] */
-
-#if 1
- /* This is a cleaner approach and also produces smaller code than
- * the other alternative. Use duk_require_string() for format
- * safety (although the source property should always exist).
- */
- duk_push_sprintf(ctx, "/%s/%s%s%s",
- (const char *) duk_require_string(ctx, -2), /* require to be safe */
- (re_flags & DUK_RE_FLAG_GLOBAL) ? "g" : "",
- (re_flags & DUK_RE_FLAG_IGNORE_CASE) ? "i" : "",
- (re_flags & DUK_RE_FLAG_MULTILINE) ? "m" : "");
-#else
- /* This should not be necessary because no-one should tamper with the
- * regexp bytecode, but is prudent to avoid potential segfaults if that
- * were to happen for some reason.
- */
- re_flags &= 0x07;
- DUK_ASSERT(re_flags >= 0 && re_flags <= 7); /* three flags */
- duk_push_sprintf(ctx, "/%s/%s",
- (const char *) duk_require_string(ctx, -2),
- (const char *) (flag_strings + flag_offsets[re_flags]));
-#endif
-
- return 1;
-}
-
-#else /* DUK_USE_REGEXP_SUPPORT */
-
-DUK_INTERNAL duk_ret_t duk_bi_regexp_constructor(duk_context *ctx) {
- DUK_UNREF(ctx);
- return DUK_RET_UNSUPPORTED_ERROR;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_exec(duk_context *ctx) {
- DUK_UNREF(ctx);
- return DUK_RET_UNSUPPORTED_ERROR;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_test(duk_context *ctx) {
- DUK_UNREF(ctx);
- return DUK_RET_UNSUPPORTED_ERROR;
-}
-
-DUK_INTERNAL duk_ret_t duk_bi_regexp_prototype_to_string(duk_context *ctx) {
- DUK_UNREF(ctx);
- return DUK_RET_UNSUPPORTED_ERROR;
-}
-
-#endif /* DUK_USE_REGEXP_SUPPORT */
|