Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2012 Ericsson AB. All rights reserved. | 3 * Copyright (C) 2012 Ericsson AB. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 230 template <typename T> | 230 template <typename T> |
| 231 struct V8ValueTraits { | 231 struct V8ValueTraits { |
| 232 static v8::Handle<v8::Value> toV8Value(const T& value, v8::Handle<v8::Object > creationContext, v8::Isolate* isolate) | 232 static v8::Handle<v8::Value> toV8Value(const T& value, v8::Handle<v8::Object > creationContext, v8::Isolate* isolate) |
| 233 { | 233 { |
| 234 if (!WTF::getPtr(value)) | 234 if (!WTF::getPtr(value)) |
| 235 return v8::Null(isolate); | 235 return v8::Null(isolate); |
| 236 return toV8NoInline(WTF::getPtr(value), creationContext, isolate); | 236 return toV8NoInline(WTF::getPtr(value), creationContext, isolate); |
| 237 } | 237 } |
| 238 }; | 238 }; |
| 239 | 239 |
| 240 template<typename T, size_t inlineCapacity> | |
| 241 v8::Handle<v8::Value> v8ArrayNoInline(const Vector<T, inlineCapacity>& iterator, v8::Handle<v8::Object> creationContext, v8::Isolate*); | |
|
gavinp
2014/07/20 04:15:18
These two forward declarations are required to mak
| |
| 242 | |
| 240 template <typename T, size_t inlineCapacity, typename Allocator> | 243 template <typename T, size_t inlineCapacity, typename Allocator> |
| 241 struct V8ValueTraits<WTF::Vector<T, inlineCapacity, Allocator> > { | 244 struct V8ValueTraits<WTF::Vector<T, inlineCapacity, Allocator> > { |
| 242 static v8::Handle<v8::Value> toV8Value(const Vector<T, inlineCapacity, Alloc ator>& value, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate) | 245 static v8::Handle<v8::Value> toV8Value(const Vector<T, inlineCapacity, Alloc ator>& value, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate) |
| 243 { | 246 { |
| 244 return v8ArrayNoInline(value, creationContext, isolate); | 247 return v8ArrayNoInline(value, creationContext, isolate); |
| 245 } | 248 } |
| 246 }; | 249 }; |
| 247 | 250 |
| 251 template<typename T, size_t inlineCapacity> | |
| 252 v8::Handle<v8::Value> v8ArrayNoInline(const HeapVector<T, inlineCapacity>& itera tor, v8::Handle<v8::Object> creationContext, v8::Isolate*); | |
| 253 | |
| 248 template <typename T, size_t inlineCapacity> | 254 template <typename T, size_t inlineCapacity> |
| 249 struct V8ValueTraits<HeapVector<T, inlineCapacity> > { | 255 struct V8ValueTraits<HeapVector<T, inlineCapacity> > { |
| 250 static v8::Handle<v8::Value> toV8Value(const HeapVector<T, inlineCapacity>& value, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate) | 256 static v8::Handle<v8::Value> toV8Value(const HeapVector<T, inlineCapacity>& value, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate) |
| 251 { | 257 { |
| 252 return v8ArrayNoInline(value, creationContext, isolate); | 258 return v8ArrayNoInline(value, creationContext, isolate); |
| 253 } | 259 } |
| 254 }; | 260 }; |
| 255 | 261 |
| 262 // These explicit specializations allow basic data types to be converted via V8V alueTraits<>::toV8Value(). Where sensible, each data type | |
| 263 // should also have an explicit specialization of toV8NoInline<>() in V8Binding. cpp, so that vectors of the same type can also be converted. | |
|
haraken
2014/07/20 04:50:46
Just help me understand: Why do we need to have ex
gavinp
2014/07/20 05:11:16
I do not know; I am very new in this coding area.
haraken
2014/07/20 05:16:35
I think we can ask yhirano@ or tasak@ :) The toV8
| |
| 256 template<> | 264 template<> |
| 257 struct V8ValueTraits<String> { | 265 struct V8ValueTraits<String> { |
| 258 static inline v8::Handle<v8::Value> toV8Value(const String& value, v8::Handl e<v8::Object>, v8::Isolate* isolate) | 266 static inline v8::Handle<v8::Value> toV8Value(const String& value, v8::Handl e<v8::Object>, v8::Isolate* isolate) |
| 259 { | 267 { |
| 260 return v8String(isolate, value); | 268 return v8String(isolate, value); |
| 261 } | 269 } |
| 262 }; | 270 }; |
| 263 | 271 |
| 264 template<> | 272 template<> |
| 265 struct V8ValueTraits<AtomicString> { | 273 struct V8ValueTraits<AtomicString> { |
| (...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 993 m_block.Reset(); | 1001 m_block.Reset(); |
| 994 } | 1002 } |
| 995 | 1003 |
| 996 private: | 1004 private: |
| 997 v8::TryCatch& m_block; | 1005 v8::TryCatch& m_block; |
| 998 }; | 1006 }; |
| 999 | 1007 |
| 1000 } // namespace WebCore | 1008 } // namespace WebCore |
| 1001 | 1009 |
| 1002 #endif // V8Binding_h | 1010 #endif // V8Binding_h |
| OLD | NEW |