If you look at the source of gin::V8ToString, you will see that it only
handles string arguments. Try output[request.host] = "1", or consider using
a map<std::string, int>, or change your implementation to perform
number-to-string conversions as needed.

On Fri, Jun 30, 2017 at 10:38 PM, wxz <xzwang2...@gmail.com> wrote:

> Thanks for the explanation, but it's still blur to me.  I'm trying to wrap
> those two maps into an interceptor class.  Please see the attached.  It
> works for lines such as:
> if (option.verbose)
>
> but it fails on lines:
> output[request.host] = 1;
>
> The script runs, but the final output is:
> google.com:
> google.net:
> google.org:
> yahoo.com:
>
> Instead, the correct result should be:
> google.com: 1
> google.net: 1
> google.org: 1
> yahoo.com: 3
>
> On Friday, June 30, 2017 at 11:21:11 AM UTC-4, Jakob Kummerow wrote:
>>
>> There are no conversions happening. In the script, "output" is a regular
>> JavaScript object, with all the behavior you would expect.
>>
>> On the C++ side, "output" is a map<string, string>, but "output_obj" is
>> a JavaScript object created from that map (via the WrapMap(output)
>> call), and that's what's exposed to the script.
>>
>>
>> On Fri, Jun 30, 2017 at 3:31 PM, wxz <xzwan...@gmail.com> wrote:
>>
>>> a follow up question, in the script, the 'output' map is used as
>>> map<string, int>:
>>>
>>> output[request.host] = 1;
>>> output[request.host]++
>>>
>>> however, it's a map<string, string> in c++ side, which part of the c++
>>> code handles such conversion?
>>>
>>>
>>> On Thursday, June 29, 2017 at 5:07:20 PM UTC-4, Jakob Kummerow wrote:
>>>
>>>> The equivalent of options.verbose is options["verbose"] (note the
>>>> quotes). Does that help?
>>>>
>>>> On Thu, Jun 29, 2017 at 10:07 PM, wxz <xzwan...@gmail.com> wrote:
>>>>
>>>>> hi all,
>>>>>
>>>>> there are two maps used in this example, one for 'options', one for
>>>>> 'output'. My question is, why is that in the script, the brackets [] works
>>>>> for 'output', but not for 'options'?
>>>>>
>>>>> For example, if change the line:
>>>>> options.verbose  ===> options[verbose]
>>>>> it returns error: verbose is not defined
>>>>>
>>>>> However, 'output[request.host]' is perfectly fine.
>>>>>
>>>>> The two maps are installed with the same code, the wrap/unwrap are the
>>>>> same, what's the difference?
>>>>>
>>>>> I guess my confusion is what exactly does bracket mean here? Does it
>>>>> invoke the named property interceptor?
>>>>>
>>>>> --
>>>>> --
>>>>> v8-users mailing list
>>>>> v8-u...@googlegroups.com
>>>>> http://groups.google.com/group/v8-users
>>>>> ---
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "v8-users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to v8-users+u...@googlegroups.com.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to