react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / contextify / node_modules / nan / nan_implementation_12_inl.h
81145 views/*********************************************************************1* NAN - Native Abstractions for Node.js2*3* Copyright (c) 2015 NAN contributors4*5* MIT License <https://github.com/rvagg/nan/blob/master/LICENSE.md>6********************************************************************/78#ifndef NAN_IMPLEMENTATION_12_INL_H_9#define NAN_IMPLEMENTATION_12_INL_H_10//==============================================================================11// node v0.11 implementation12//==============================================================================1314#if defined(_MSC_VER)15# pragma warning( push )16# pragma warning( disable : 4530 )17# include <string>18# pragma warning( pop )19#else20# include <string>21#endif2223namespace NanIntern {2425//=== Array ====================================================================2627Factory<v8::Array>::return_t28Factory<v8::Array>::New() {29return v8::Array::New(v8::Isolate::GetCurrent());30}3132Factory<v8::Array>::return_t33Factory<v8::Array>::New(int length) {34return v8::Array::New(v8::Isolate::GetCurrent(), length);35}3637//=== Boolean ==================================================================3839Factory<v8::Boolean>::return_t40Factory<v8::Boolean>::New(bool value) {41return v8::Boolean::New(v8::Isolate::GetCurrent(), value);42}4344//=== Boolean Object ===========================================================4546Factory<v8::BooleanObject>::return_t47Factory<v8::BooleanObject>::New(bool value) {48return v8::BooleanObject::New(value).As<v8::BooleanObject>();49}5051//=== Context ==================================================================5253Factory<v8::Context>::return_t54Factory<v8::Context>::New( v8::ExtensionConfiguration* extensions55, v8::Handle<v8::ObjectTemplate> tmpl56, v8::Handle<v8::Value> obj) {57return v8::Context::New(v8::Isolate::GetCurrent(), extensions, tmpl, obj);58}5960//=== Date =====================================================================6162Factory<v8::Date>::return_t63Factory<v8::Date>::New(double value) {64return v8::Date::New(v8::Isolate::GetCurrent(), value).As<v8::Date>();65}6667//=== External =================================================================6869Factory<v8::External>::return_t70Factory<v8::External>::New(void * value) {71return v8::External::New(v8::Isolate::GetCurrent(), value);72}7374//=== Function =================================================================7576Factory<v8::Function>::return_t77Factory<v8::Function>::New( NanFunctionCallback callback78, v8::Handle<v8::Value> data) {79return v8::Function::New( v8::Isolate::GetCurrent()80, callback81, data);82}8384//=== Function Template ========================================================8586Factory<v8::FunctionTemplate>::return_t87Factory<v8::FunctionTemplate>::New( NanFunctionCallback callback88, v8::Handle<v8::Value> data89, v8::Handle<v8::Signature> signature) {90return v8::FunctionTemplate::New( v8::Isolate::GetCurrent()91, callback92, data93, signature);94}9596//=== Number ===================================================================9798Factory<v8::Number>::return_t99Factory<v8::Number>::New(double value) {100return v8::Number::New(v8::Isolate::GetCurrent(), value);101}102103//=== Number Object ============================================================104105Factory<v8::NumberObject>::return_t106Factory<v8::NumberObject>::New(double value) {107return v8::NumberObject::New( v8::Isolate::GetCurrent()108, value).As<v8::NumberObject>();109}110111//=== Integer, Int32 and Uint32 ================================================112113template <typename T>114typename IntegerFactory<T>::return_t115IntegerFactory<T>::New(int32_t value) {116return To<T>(T::New(v8::Isolate::GetCurrent(), value));117}118119template <typename T>120typename IntegerFactory<T>::return_t121IntegerFactory<T>::New(uint32_t value) {122return To<T>(T::NewFromUnsigned(v8::Isolate::GetCurrent(), value));123}124125Factory<v8::Uint32>::return_t126Factory<v8::Uint32>::New(int32_t value) {127return To<v8::Uint32>(128v8::Uint32::NewFromUnsigned(v8::Isolate::GetCurrent(), value));129}130131Factory<v8::Uint32>::return_t132Factory<v8::Uint32>::New(uint32_t value) {133return To<v8::Uint32>(134v8::Uint32::NewFromUnsigned(v8::Isolate::GetCurrent(), value));135}136137//=== Object ===================================================================138139Factory<v8::Object>::return_t140Factory<v8::Object>::New() {141return v8::Object::New(v8::Isolate::GetCurrent());142}143144//=== Object Template ==========================================================145146Factory<v8::ObjectTemplate>::return_t147Factory<v8::ObjectTemplate>::New() {148return v8::ObjectTemplate::New(v8::Isolate::GetCurrent());149}150151//=== RegExp ===================================================================152153Factory<v8::RegExp>::return_t154Factory<v8::RegExp>::New(155v8::Handle<v8::String> pattern156, v8::RegExp::Flags flags) {157return v8::RegExp::New(pattern, flags);158}159160//=== Script ===================================================================161162Factory<v8::Script>::return_t163Factory<v8::Script>::New( v8::Local<v8::String> source) {164v8::ScriptCompiler::Source src(source);165return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &src);166}167168Factory<v8::Script>::return_t169Factory<v8::Script>::New( v8::Local<v8::String> source170, v8::ScriptOrigin const& origin) {171v8::ScriptCompiler::Source src(source, origin);172return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &src);173}174175//=== Signature ================================================================176177Factory<v8::Signature>::return_t178Factory<v8::Signature>::New(Factory<v8::Signature>::FTH receiver) {179return v8::Signature::New(v8::Isolate::GetCurrent(), receiver);180}181182//=== String ===================================================================183184Factory<v8::String>::return_t185Factory<v8::String>::New() {186return v8::String::Empty(v8::Isolate::GetCurrent());187}188189Factory<v8::String>::return_t190Factory<v8::String>::New(const char * value, int length) {191return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), value,192v8::String::kNormalString, length);193}194195Factory<v8::String>::return_t196Factory<v8::String>::New(std::string const& value) {197assert(value.size() <= INT_MAX && "string too long");198return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(),199value.data(), v8::String::kNormalString, static_cast<int>(value.size()));200}201202Factory<v8::String>::return_t203Factory<v8::String>::New(const uint8_t * value, int length) {204return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), value,205v8::String::kNormalString, length);206}207208Factory<v8::String>::return_t209Factory<v8::String>::New(const uint16_t * value, int length) {210return v8::String::NewFromTwoByte(v8::Isolate::GetCurrent(), value,211v8::String::kNormalString, length);212}213214Factory<v8::String>::return_t215Factory<v8::String>::New(v8::String::ExternalStringResource * value) {216return v8::String::NewExternal(v8::Isolate::GetCurrent(), value);217}218219Factory<v8::String>::return_t220Factory<v8::String>::New(NanExternalOneByteStringResource * value) {221return v8::String::NewExternal(v8::Isolate::GetCurrent(), value);222}223224//=== String Object ============================================================225226Factory<v8::StringObject>::return_t227Factory<v8::StringObject>::New(v8::Handle<v8::String> value) {228return v8::StringObject::New(value).As<v8::StringObject>();229}230231//=== Unbound Script ===========================================================232233Factory<v8::UnboundScript>::return_t234Factory<v8::UnboundScript>::New(v8::Local<v8::String> source) {235v8::ScriptCompiler::Source src(source);236return v8::ScriptCompiler::CompileUnbound(v8::Isolate::GetCurrent(), &src);237}238239Factory<v8::UnboundScript>::return_t240Factory<v8::UnboundScript>::New( v8::Local<v8::String> source241, v8::ScriptOrigin const& origin) {242v8::ScriptCompiler::Source src(source, origin);243return v8::ScriptCompiler::CompileUnbound(v8::Isolate::GetCurrent(), &src);244}245246} // end of namespace NanIntern247248//=== Presistents and Handles ==================================================249250template <typename T>251inline v8::Local<T> NanNew(v8::Handle<T> h) {252return v8::Local<T>::New(v8::Isolate::GetCurrent(), h);253}254255template <typename T>256inline v8::Local<T> NanNew(v8::Persistent<T> const& p) {257return v8::Local<T>::New(v8::Isolate::GetCurrent(), p);258}259260#endif // NAN_IMPLEMENTATION_12_INL_H_261262263