It has been a long time since I used C ++, and even longer since I wrapped my head in cool types. I'm just looking for a working single liner to get an argument from v8 or the default when no argument was provided.
v8::String::Utf8Value arg0(args[0]);
v8::String::Utf8Value arg1(args[1]);
v8::String::Utf8Value arg2(args[2]);
const char *username = (args.Length() > 0) ? *arg0 : "";
const char *password = (args.Length() > 1) ? *arg1 : "";
const char *service = (args.Length() > 2) ? *arg2 : "login";
Outputs:
func (); // {username: "", password: "", service: "login"}
func ('1'); // {username: "1", password: "", service: "login"}
func ('1', '2'); // {username: "1", password: "2", service: "login"}
func ('a', 'b', 'c'); // {username: "a", password: "b", service: "c"}
Unfortunately, the following near-ideal solution does not work for me (any ideas, why?):
const char *username = (args.Length() > 0) ? *v8::String::Utf8Value(args[0]->ToString()) : "";
const char *password = (args.Length() > 1) ? *v8::String::Utf8Value(args[1]->ToString()) : "";
const char *service = (args.Length() > 2) ? *v8::String::Utf8Value(args[2]->ToString()) : "login";
source
share