| /********************************************************************* | 
|  * 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_ |