JavaScript-Duktape-XS
view release on metacpan or search on metacpan
}
value = hv_iterval(opt, entry);
if (!value) {
continue; /* invalid value */
}
if (memcmp(kstr, DUK_OPT_NAME_GATHER_STATS, klen) == 0) {
duk->flags |= SvTRUE(value) ? DUK_OPT_FLAG_GATHER_STATS : 0;
continue;
}
if (memcmp(kstr, DUK_OPT_NAME_SAVE_MESSAGES, klen) == 0) {
duk->flags |= SvTRUE(value) ? DUK_OPT_FLAG_SAVE_MESSAGES : 0;
continue;
}
if (memcmp(kstr, DUK_OPT_NAME_MAX_MEMORY_BYTES, klen) == 0) {
size_t param = SvIV(value);
duk->max_allocated_bytes = param > MAX_MEMORY_MINIMUM ? param : MAX_MEMORY_MINIMUM;
continue;
}
if (memcmp(kstr, DUK_OPT_NAME_MAX_TIMEOUT_US, klen) == 0) {
double param = SvIV(value);
duk->max_timeout_us = param > MAX_TIMEOUT_MINIMUM ? param : MAX_TIMEOUT_MINIMUM;
continue;
}
if (memcmp(kstr, DUK_OPT_NAME_CATCH_PERL_EXCEPTIONS, klen) == 0) {
duk->flags |= SvTRUE(value) ? DUK_OPT_FLAG_CATCH_PERL_EXCEPTIONS : 0;
continue;
}
croak("Unknown option %*.*s\n", (int) klen, (int) klen, kstr);
}
}
set_up(duk);
return duk;
}
static int session_dtor(pTHX_ SV* sv, MAGIC* mg)
{
Duk* duk = (Duk*) mg->mg_ptr;
UNUSED_ARG(sv);
tear_down(duk);
destroy_duktape_object(aTHX_ duk);
return 0;
}
static MGVTBL session_magic_vtbl = { .svt_free = session_dtor };
MODULE = JavaScript::Duktape::XS PACKAGE = JavaScript::Duktape::XS
PROTOTYPES: DISABLE
#################################################################
Duk*
new(char* CLASS, HV* opt = NULL)
CODE:
UNUSED_ARG(opt);
RETVAL = create_duktape_object(aTHX_ opt);
OUTPUT: RETVAL
void
reset(Duk* duk)
PPCODE:
tear_down(duk);
set_up(duk);
HV*
get_stats(Duk* duk)
CODE:
RETVAL = duk->stats;
OUTPUT: RETVAL
void
reset_stats(Duk* duk)
PPCODE:
hv_clear(duk->stats);
HV*
get_msgs(Duk* duk)
CODE:
RETVAL = duk->msgs;
OUTPUT: RETVAL
void
reset_msgs(Duk* duk)
PPCODE:
hv_clear(duk->msgs);
SV*
get(Duk* duk, const char* name)
PREINIT:
duk_context* ctx = 0;
Stats stats;
CODE:
TIMEOUT_RESET(duk);
ctx = duk->ctx;
pl_stats_start(aTHX_ duk, &stats);
RETVAL = pl_get_global_or_property(aTHX_ ctx, name);
pl_stats_stop(aTHX_ duk, &stats, "get");
OUTPUT: RETVAL
SV*
exists(Duk* duk, const char* name)
PREINIT:
duk_context* ctx = 0;
Stats stats;
CODE:
TIMEOUT_RESET(duk);
ctx = duk->ctx;
pl_stats_start(aTHX_ duk, &stats);
RETVAL = pl_exists_global_or_property(aTHX_ ctx, name);
pl_stats_stop(aTHX_ duk, &stats, "exists");
OUTPUT: RETVAL
SV*
typeof(Duk* duk, const char* name)
PREINIT:
duk_context* ctx = 0;
Stats stats;
CODE:
TIMEOUT_RESET(duk);
ctx = duk->ctx;
pl_stats_start(aTHX_ duk, &stats);
RETVAL = pl_typeof_global_or_property(aTHX_ ctx, name);
pl_stats_stop(aTHX_ duk, &stats, "typeof");
OUTPUT: RETVAL
SV*
instanceof(Duk* duk, const char* object, const char* class)
PREINIT:
duk_context* ctx = 0;
Stats stats;
CODE:
TIMEOUT_RESET(duk);
ctx = duk->ctx;
pl_stats_start(aTHX_ duk, &stats);
RETVAL = pl_instanceof_global_or_property(aTHX_ ctx, object, class);
pl_stats_stop(aTHX_ duk, &stats, "instanceof");
OUTPUT: RETVAL
int
set(Duk* duk, const char* name, SV* value)
PREINIT:
Stats stats;
CODE:
TIMEOUT_RESET(duk);
( run in 0.700 second using v1.01-cache-2.11-cpan-5511b514fd6 )