On Thu, Mar 11, 2010 at 7:47 PM, Seiji Sam Lee <[email protected]>
wrote:
> I really want to store 'Value's in a hash table, to conserve this objects
> among context execution, this is my INTERCEPTORS code:
>
> Follow setter, getter and deleter ... they hang the program :-(
>
> (NOTES: arguments: 'prop' is the name of the property, 'value' is
obviously
> its value; apr_hash_* work fine!!)
>
> Summing Up: I store (1) a pointer to a Persistent<Value>, retrieve this
> pointer casting as Persistent<Value>
This is along what I would try:
>
> JSETTER(_session_data)
> {
> HSCOPE;
> DEFINE_PC(info);
> String::Utf8Value _key(prop);
> char*key=apr_pstrdup(pc->ppool,*_key);
> Persistent<Value> v(*value);
> Persistent<Value> v = Persistent::New(value);
> apr_hash_set(pc->_objs,key,strlen(key)+1,&*v); (1)
> return HSCLOSE(v);
> }
>
> JGETTER(_session_data)
> {
> HSCOPE;
> DEFINE_PC(info);
> String::Utf8Value key(prop);
> Persistent<Value>
> v(*(Persistent<Value>*)apr_hash_get(pc->_objs,*key,strlen(*key)+1)); (2)
> return HSCLOSE(v);
> Value* v = (Value*)apr_hash_get(pc->_objs,*key,strlen(*key)+1);
> return Persistent<Value>(v);
> }
>
> JDELETER(_session_data)
> {
> HSCOPE;
> DEFINE_PC(info);
> String::Utf8Value key(prop);
> Persistent<Value>
> v(*(Persistent<Value>*)apr_hash_get(pc->_objs,*key,strlen(*key)+1));
> v.Dispose();
> v.Clear();
> return HSCLOSE(Boolean::New(true));
> }
>
> Any idea?
>
> -----Mensaje original-----
> De: [email protected] [mailto:[email protected]] En nombre
> de Matthias Ernst
> Enviado el: jueves, 11 de marzo de 2010 19:15
> Para: [email protected]
> Asunto: Re: [v8-users] How to clone a Value
>
> On Thu, Mar 11, 2010 at 4:46 PM, Seiji Sam Lee <[email protected]>
> wrote:
>> Well, it must be simple:
>>
>>
>>
>> I need to clone a Value (Handle<Value> value, for example) I need a copy
> of
>> 'value' which I can store in a table hash and use latter, and ok dispose
> it.
>>
>>
>>
>> I was looking for a Clone method, but only Object objects have it. Any
> idea?
>>
>
> Are you sure you want a clone of the value? Or do you just want a copy
> of the reference that survives the local scope?
> Persistent<Value>::New(handle_of_value) would give you that.
>
> If you actually want to clone the value, that only makes sense on
> Object. So you need to do something like this:
> Handle<Value> clone = Persistent<Value>::New(value->IsObject() ?
> Handle<Object>::Cast(value)->Clone() : value);
>
> Don't forget to Clear() and Dispose() the persistent handles.
>
>>
>>
>> --
>> v8-users mailing list
>> [email protected]
>> http://groups.google.com/group/v8-users
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users