0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-02 18:18:56 +02:00

ircd::js: Add property flag reflection.

This commit is contained in:
Jason Volk 2016-10-31 01:01:34 -07:00
parent 1adc76034c
commit 8a3f592753
2 changed files with 41 additions and 10 deletions

View file

@ -32,6 +32,7 @@ const char *reflect(const JSGCStatus &);
const char *reflect(const JSGCParamKey &);
const char *reflect(const JSFinalizeStatus &);
const char *reflect(const JSContextOp &);
const char *reflect_prop(const uint &flag);
const char *reflect_telemetry(const int &id);
// Returns single-line string

View file

@ -439,16 +439,18 @@ ircd::js::object
ircd::js::trap::operator()(const object &parent,
const object &parent_proto)
{
return JS_InitClass(*cx,
parent,
parent_proto,
_class.get(),
nullptr,
0,
ps,
fs,
nullptr,
nullptr);
object proto(JS_InitClass(*cx,
parent,
parent_proto,
_class.get(),
nullptr,
0,
ps,
fs,
nullptr,
nullptr));
return JS_New(*cx, proto, JS::HandleValueArray::empty());
}
ircd::js::trap &
@ -1750,6 +1752,34 @@ ircd::js::reflect_telemetry(const int &id)
return "";
}
const char *
ircd::js::reflect_prop(const uint &flag)
{
switch(flag)
{
case JSPROP_ENUMERATE: return "JSPROP_ENUMERATE";
case JSPROP_READONLY: return "JSPROP_READONLY";
case JSPROP_PERMANENT: return "JSPROP_PERMANENT";
case JSPROP_PROPOP_ACCESSORS: return "JSPROP_PROPOP_ACCESSORS";
case JSPROP_GETTER: return "JSPROP_GETTER";
case JSPROP_SETTER: return "JSPROP_SETTER";
case JSPROP_SHARED: return "JSPROP_SHARED";
case JSPROP_INTERNAL_USE_BIT: return "JSPROP_INTERNAL_USE_BIT";
case JSPROP_DEFINE_LATE: return "JSPROP_DEFINE_LATE";
case JSFUN_STUB_GSOPS: return "JSFUN_STUB_GSOPS";
case JSFUN_CONSTRUCTOR: return "JSFUN_CONSTRUCTOR";
case JSFUN_GENERIC_NATIVE: return "JSFUN_GENERIC_NATIVE";
case JSPROP_REDEFINE_NONCONFIGURABLE: return "JSPROP_REDEFINE_NONCONFIGURABLE";
case JSPROP_RESOLVING: return "JSPROP_RESOLVING";
case JSPROP_IGNORE_ENUMERATE: return "JSPROP_IGNORE_ENUMERATE";
case JSPROP_IGNORE_READONLY: return "JSPROP_IGNORE_READONLY";
case JSPROP_IGNORE_PERMANENT: return "JSPROP_IGNORE_PERMANENT";
case JSPROP_IGNORE_VALUE: return "JSPROP_IGNORE_VALUE";
}
return "";
}
const char *
ircd::js::reflect(const ::js::CTypesActivityType &t)
{