forked from svaarala/duktape
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-check-type-mask.c
More file actions
45 lines (41 loc) · 1.06 KB
/
test-check-type-mask.c
File metadata and controls
45 lines (41 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*===
stack[0] --> mask=0
stack[1] --> mask=0
stack[2] --> mask=0
stack[3] --> mask=0
stack[4] --> mask=1
stack[5] --> mask=1
stack[6] --> mask=1
stack[7] --> mask=1
stack[8] --> mask=1
stack[9] --> mask=0
stack[10] --> mask=0
stack[11] --> mask=0
stack[12] --> mask=0
===*/
static duk_ret_t my_c_func(duk_context *ctx) {
return 0;
}
void test(duk_context *ctx) {
duk_uint_t mask = DUK_TYPE_MASK_STRING |
DUK_TYPE_MASK_NUMBER |
DUK_TYPE_MASK_OBJECT;
duk_idx_t i, n;
duk_push_undefined(ctx);
duk_push_null(ctx);
duk_push_boolean(ctx, 0);
duk_push_boolean(ctx, 123);
duk_push_number(ctx, 234);
duk_push_string(ctx, "foo");
duk_push_object(ctx);
duk_push_array(ctx);
duk_push_c_function(ctx, my_c_func, DUK_VARARGS);
duk_push_fixed_buffer(ctx, 1024);
duk_push_dynamic_buffer(ctx, 1024);
duk_push_pointer(ctx, (void *) 0xdeadbeefUL);
n = duk_get_top(ctx);
for (i = 0; i < n + 1; i++) { /* end on invalid index on purpose */
printf("stack[%ld] --> mask=%d\n", (long) i,
(int) duk_check_type_mask(ctx, i, mask));
}
}