30 lines
1 KiB
C
30 lines
1 KiB
C
|
/*********************************************************************
|
||
|
* NAN - Native Abstractions for Node.js
|
||
|
*
|
||
|
* Copyright (c) 2018 NAN contributors
|
||
|
*
|
||
|
* MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md>
|
||
|
********************************************************************/
|
||
|
|
||
|
#ifndef NAN_DEFINE_OWN_PROPERTY_HELPER_H_
|
||
|
#define NAN_DEFINE_OWN_PROPERTY_HELPER_H_
|
||
|
|
||
|
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
|
||
|
|
||
|
#endif // NAN_DEFINE_OWN_PROPERTY_HELPER_H_
|