Create a static ObjectTemplate for "Points" and set accessors and
functions on it.
>From the function, you return an pointTemplate->NewInstance().
Here's an example I have handy for "Prices", the object being backed
by a C++ "Price" object:
+Handle<ObjectTemplate> PriceTemplate() {
+ Handle<ObjectTemplate> result = ObjectTemplate::New();
+ result->SetAccessor(String::New("amount"), GetPriceAmount);
+ result->SetAccessor(String::New("currency"), GetPriceCurrency);
+
+ result->SetInternalFieldCount(1);
+ return Persistent<ObjectTemplate>::New(result);
+}
+
+Handle<Object> WrapPrice(const Price *p) {
+ static Handle<ObjectTemplate> price_template = PriceTemplate();
+
+ Handle<Object> result = price_template->NewInstance();
+ result->SetInternalField(0, External::New(const_cast<Price *>(p)));
+ return result;
+}
On Thu, Jan 22, 2009 at 5:43 PM, vlad <[email protected]> wrote:
>
> Also, I've been looking over the Google Chrome source code, but can't
> find examples of this. If anyone knows where I can find example under
> the Chrome source tree, please speak up.
>
> On Jan 22, 10:56 am, vlad <[email protected]> wrote:
>> I am still having problems returning an object from a getter, or from
>> any function from that matter.
>>
>> I can't just call the same constructor callback that I use to create
>> the object, because v8::Arguments constructor is private. And it
>> doesn't seem like proper approach either.
>> I also tried the solution that luiskarlos sudgested, but that's not it
>> either. Some is returned, but there's no way to tell V8 that the
>> return object is of X type -- it always seems to believe that the
>> returned object is of the type doing the returning. Plus, if this were
>> the way to return an object instance, then it would mean that you have
>> to REdeclare destructor callbacks for those object instances.
>> I would have though that FunctionTemplate would have some method of
>> instantiating an instance, but I don't see any methods of doing this.
>>
>> Can someone please shine some light on this?
>>
>> How can one return an object instance of type X from a function or
>> method?
> >
>
--~--~---------~--~----~------------~-------~--~----~
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
-~----------~----~----~----~------~----~------~--~---