/********************************************************************* | |
* NAN - Native Abstractions for Node.js | |
* | |
* Copyright (c) 2018 NAN contributors | |
* | |
* MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md> | |
********************************************************************/ | |
namespace imp { | |
inline Maybe<bool> DefineOwnPropertyHelper( | |
v8::PropertyAttribute current | |
, v8::Handle<v8::Object> obj | |
, v8::Handle<v8::String> key | |
, v8::Handle<v8::Value> value | |
, v8::PropertyAttribute attribs = v8::None) { | |
return !(current & v8::DontDelete) || // configurable OR | |
(!(current & v8::ReadOnly) && // writable AND | |
!((attribs ^ current) & ~v8::ReadOnly)) // same excluding RO | |
? Just<bool>(obj->ForceSet(key, value, attribs)) | |
: Nothing<bool>(); | |
} | |
} // end of namespace imp | |