Created
February 17, 2015 22:14
-
-
Save evilpie/289ba8db3758c95d6754 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define JSPROP_IGNORE_ENUMERATE 0x1000 /* ignore the value in JSPROP_ENUMERATE. | |
This flag only valid when defining over | |
an existing property. */ | |
#define JSPROP_IGNORE_READONLY 0x2000 /* ignore the value in JSPROP_READONLY. | |
This flag only valid when defining over | |
an existing property. */ | |
#define JSPROP_IGNORE_PERMANENT 0x4000 /* ignore the value in JSPROP_PERMANENT. */ | |
#define JSPROP_ENUMERATE 0 | |
#define JSPROP_PERMANENT 1 | |
enum class Enumerable { | |
False, | |
True | |
}; | |
enum class Writable { | |
False, | |
True | |
}; | |
enum class Configurable { | |
False, | |
True | |
}; | |
class AttributesInititializer { | |
unsigned attrs; | |
public: | |
AttributesInititializer(Enumerable enumerability, Writable writablitiy, Configurable configurability) { | |
attrs |= (enumerability == Enumerable::True) ? JSPROP_ENUMERATE : 0; | |
attrs |= (writablitiy == Writable::True) ? 0 : JSPROP_READONLY; | |
attrs |= (configurability == Configurable::True) ? 0 : JSPROP_PERMANENT; | |
} | |
AttributesInititializer(Writable writablitiy, Enumerable enumerability, Configurable configurability) { | |
attrs |= (writablitiy == Writable::True) ? 0 : JSPROP_READONLY; | |
attrs |= (enumerability == Enumerable::True) ? JSPROP_ENUMERATE : 0; | |
attrs |= (configurability == Configurable::True) ? 0 : JSPROP_PERMANENT; | |
} | |
AttributesInititializer(Enumerable enumerability, Configurable configurability, Writable writablitiy) { | |
attrs |= (enumerability == Enumerable::True) ? JSPROP_ENUMERATE : 0; | |
attrs |= (configurability == Configurable::True) ? 0 : JSPROP_PERMANENT; | |
attrs |= (writablitiy == Writable::True) ? 0 : JSPROP_READONLY; | |
} | |
AttributesInititializer(Configurable configurability, Enumerable enumerability, Writable writablitiy) { | |
attrs |= (configurability == Configurable::True) ? 0 : JSPROP_PERMANENT; | |
attrs |= (enumerability == Enumerable::True) ? JSPROP_ENUMERATE : 0; | |
attrs |= (writablitiy == Writable::True) ? 0 : JSPROP_READONLY; | |
} | |
AttributesInititializer(Writable writablitiy, Configurable configurability, Enumerable enumerability) { | |
attrs |= (writablitiy == Writable::True) ? 0 : JSPROP_READONLY; | |
attrs |= (configurability == Configurable::True) ? 0 : JSPROP_PERMANENT; | |
attrs |= (enumerability == Enumerable::True) ? JSPROP_ENUMERATE : 0; | |
} | |
AttributesInititializer(Configurable configurability, Writable writablitiy, Enumerable enumerability) { | |
attrs |= (configurability == Configurable::True) ? 0 : JSPROP_PERMANENT; | |
attrs |= (writablitiy == Writable::True) ? 0 : JSPROP_READONLY; | |
attrs |= (enumerability == Enumerable::True) ? JSPROP_ENUMERATE : 0; | |
} | |
}; | |
void | |
test(AttributesInititializer init) { | |
} | |
int main() { | |
test({Enumerable::True, Configurable::True}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment