Skip to content

duk_pnew()

1.3.0 protected object call

プロトタイプ

c
duk_ret_t duk_pnew(duk_context *ctx, duk_idx_t nargs);

スタック

| ... | constructor | arg1 | ... | argN | -> | ... | retval | (if success, return value == 0) | ... | constructor | arg1 | ... | argN | -> | ... | err | (if failure, return value != 0)

要約

duk_new() と同様ですが、エラーを捕捉します。0 の返り値は成功を示し、コンストラクタの結果はスタックトップに残されます。0 ではない返り値はエラーを示し、そのエラーはスタックトップに残されます。

スタックトップが低すぎる (nargs + 1 より小さい) 場合、または nargs が負である場合、エラーがスローされます。

c
duk_ret_t rc;

/* Protected call to: new MyConstructor("foo", 123) */
duk_eval_string(ctx, "MyConstructor");
duk_push_string(ctx, "foo");
duk_push_int(ctx, 123);
rc = duk_pnew(ctx, 2);  /* [ ... func "foo" 123 ] -> [ ... res ] */
if (rc != 0) {
    printf("failed: %s\n", duk_safe_to_string(ctx, -1));
} else {
    printf("success\n");
}
duk_pop(ctx);

参照

duk_new