Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
duk_bi_boolean.c File Reference
#include "duk_internal.h"

Go to the source code of this file.

Functions

DUK_INTERNAL duk_ret_t duk_bi_boolean_prototype_tostring_shared (duk_context *ctx)
 
DUK_INTERNAL duk_ret_t duk_bi_boolean_constructor (duk_context *ctx)
 

Function Documentation

◆ duk_bi_boolean_constructor()

DUK_INTERNAL duk_ret_t duk_bi_boolean_constructor ( duk_context * ctx)

Definition at line 46 of file duktape-1.5.2/src-separate/duk_bi_boolean.c.

46 {
47 duk_hthread *thr = (duk_hthread *) ctx;
48 duk_hobject *h_this;
49
50 DUK_UNREF(thr);
51
52 duk_to_boolean(ctx, 0);
53
54 if (duk_is_constructor_call(ctx)) {
55 /* XXX: helper; rely on Boolean.prototype as being non-writable, non-configurable */
56 duk_push_this(ctx);
57 h_this = duk_get_hobject(ctx, -1);
58 DUK_ASSERT(h_this != NULL);
60
62
63 duk_dup(ctx, 0); /* -> [ val obj val ] */
64 duk_xdef_prop_stridx(ctx, -2, DUK_STRIDX_INT_VALUE, DUK_PROPDESC_FLAGS_NONE); /* XXX: proper flags? */
65 } /* unbalanced stack */
66
67 return 1;
68}
#define DUK_HOBJECT_CLASS_BOOLEAN
#define DUK_HOBJECT_GET_PROTOTYPE(heap, h)
DUK_EXTERNAL void duk_push_this(duk_context *ctx)
#define DUK_PROPDESC_FLAGS_NONE
DUK_EXTERNAL duk_bool_t duk_to_boolean(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL void duk_dup(duk_context *ctx, duk_idx_t from_index)
#define DUK_BIDX_BOOLEAN_PROTOTYPE
DUK_EXTERNAL duk_bool_t duk_is_constructor_call(duk_context *ctx)
DUK_INTERNAL_DECL duk_hobject * duk_get_hobject(duk_context *ctx, duk_idx_t index)
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_HOBJECT_SET_CLASS_NUMBER(h, v)
#define NULL
Definition gmacros.h:924
duk_hobject * builtins[DUK_NUM_BUILTINS]

References duk_hthread::builtins, DUK_ASSERT, DUK_BIDX_BOOLEAN_PROTOTYPE, duk_dup(), duk_get_hobject(), DUK_HOBJECT_CLASS_BOOLEAN, DUK_HOBJECT_GET_PROTOTYPE, DUK_HOBJECT_SET_CLASS_NUMBER, duk_is_constructor_call(), DUK_PROPDESC_FLAGS_NONE, duk_push_this(), DUK_STRIDX_INT_VALUE, duk_to_boolean(), DUK_UNREF, duk_xdef_prop_stridx(), duk_hthread::heap, and NULL.

◆ duk_bi_boolean_prototype_tostring_shared()

DUK_INTERNAL duk_ret_t duk_bi_boolean_prototype_tostring_shared ( duk_context * ctx)

Definition at line 10 of file duktape-1.5.2/src-separate/duk_bi_boolean.c.

10 {
11 duk_tval *tv;
12 duk_hobject *h;
13 duk_small_int_t coerce_tostring = duk_get_current_magic(ctx);
14
15 /* XXX: there is room to use a shared helper here, many built-ins
16 * check the 'this' type, and if it's an object, check its class,
17 * then get its internal value, etc.
18 */
19
20 duk_push_this(ctx);
21 tv = duk_get_tval(ctx, -1);
22 DUK_ASSERT(tv != NULL);
23
24 if (DUK_TVAL_IS_BOOLEAN(tv)) {
25 goto type_ok;
26 } else if (DUK_TVAL_IS_OBJECT(tv)) {
27 h = DUK_TVAL_GET_OBJECT(tv);
28 DUK_ASSERT(h != NULL);
29
32 DUK_ASSERT(duk_is_boolean(ctx, -1));
33 goto type_ok;
34 }
35 }
36
37 return DUK_RET_TYPE_ERROR;
38
39 type_ok:
40 if (coerce_tostring) {
41 duk_to_string(ctx, -1);
42 }
43 return 1;
44}
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_TVAL_GET_OBJECT(tv)
#define DUK_TVAL_IS_OBJECT(tv)
DUK_EXTERNAL duk_bool_t duk_is_boolean(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL const char * duk_to_string(duk_context *ctx, duk_idx_t index)
#define DUK_HOBJECT_GET_CLASS_NUMBER(h)
DUK_EXTERNAL duk_int_t duk_get_current_magic(duk_context *ctx)
#define DUK_TVAL_IS_BOOLEAN(tv)
DUK_INTERNAL_DECL duk_tval * duk_get_tval(duk_context *ctx, duk_idx_t index)

References DUK_ASSERT, duk_get_current_magic(), duk_get_prop_stridx(), duk_get_tval(), DUK_HOBJECT_CLASS_BOOLEAN, DUK_HOBJECT_GET_CLASS_NUMBER, duk_is_boolean(), duk_push_this(), DUK_RET_TYPE_ERROR, DUK_STRIDX_INT_VALUE, duk_to_string(), DUK_TVAL_GET_OBJECT, DUK_TVAL_IS_BOOLEAN, DUK_TVAL_IS_OBJECT, and NULL.