]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - runtime/PropertyDescriptor.h
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / runtime / PropertyDescriptor.h
index df74d9e15af968fcf9fb2f43822c2806c88b616a..0345b4e4aef82cf5df3415df5e1d5e0e51b35152 100644 (file)
 #include "JSCJSValue.h"
 
 namespace JSC {
-    class GetterSetter;
 
-    // See ES5.1 9.12
-    bool sameValue(ExecState*, JSValue, JSValue);
+class GetterSetter;
 
-    class PropertyDescriptor {
-    public:
-        PropertyDescriptor()
-            : m_attributes(defaultAttributes)
-            , m_seenAttributes(0)
-        {
-        }
-        PropertyDescriptor(JSValue value, unsigned attributes)
-            : m_value(value)
-            , m_attributes(attributes)
-            , m_seenAttributes(EnumerablePresent | ConfigurablePresent | WritablePresent)
-        {
-            ASSERT(m_value);
-            ASSERT(!m_value.isGetterSetter());
-            ASSERT(!m_value.isCustomGetterSetter());
-        }
-        JS_EXPORT_PRIVATE bool writable() const;
-        JS_EXPORT_PRIVATE bool enumerable() const;
-        JS_EXPORT_PRIVATE bool configurable() const;
-        JS_EXPORT_PRIVATE bool isDataDescriptor() const;
-        bool isGenericDescriptor() const;
-        JS_EXPORT_PRIVATE bool isAccessorDescriptor() const;
-        unsigned attributes() const { return m_attributes; }
-        JSValue value() const { return m_value; }
-        JS_EXPORT_PRIVATE JSValue getter() const;
-        JS_EXPORT_PRIVATE JSValue setter() const;
-        JSObject* getterObject() const;
-        JSObject* setterObject() const;
-        JS_EXPORT_PRIVATE void setUndefined();
-        JS_EXPORT_PRIVATE void setDescriptor(JSValue value, unsigned attributes);
-        JS_EXPORT_PRIVATE void setCustomDescriptor(unsigned attributes);
-        JS_EXPORT_PRIVATE void setAccessorDescriptor(GetterSetter* accessor, unsigned attributes);
-        JS_EXPORT_PRIVATE void setWritable(bool);
-        JS_EXPORT_PRIVATE void setEnumerable(bool);
-        JS_EXPORT_PRIVATE void setConfigurable(bool);
-        void setValue(JSValue value) { m_value = value; }
-        JS_EXPORT_PRIVATE void setSetter(JSValue);
-        JS_EXPORT_PRIVATE void setGetter(JSValue);
-        bool isEmpty() const { return !(m_value || m_getter || m_setter || m_seenAttributes); }
-        bool writablePresent() const { return m_seenAttributes & WritablePresent; }
-        bool enumerablePresent() const { return m_seenAttributes & EnumerablePresent; }
-        bool configurablePresent() const { return m_seenAttributes & ConfigurablePresent; }
-        bool setterPresent() const { return m_setter; }
-        bool getterPresent() const { return m_getter; }
-        bool equalTo(ExecState* exec, const PropertyDescriptor& other) const;
-        bool attributesEqual(const PropertyDescriptor& other) const;
-        unsigned attributesOverridingCurrent(const PropertyDescriptor& current) const;
+// See ES5.1 9.12
+bool sameValue(ExecState*, JSValue, JSValue);
+
+class PropertyDescriptor {
+public:
+    PropertyDescriptor()
+        : m_attributes(defaultAttributes)
+        , m_seenAttributes(0)
+    {
+    }
+    PropertyDescriptor(JSValue value, unsigned attributes)
+        : m_value(value)
+        , m_attributes(attributes)
+        , m_seenAttributes(EnumerablePresent | ConfigurablePresent | WritablePresent)
+    {
+        ASSERT(m_value);
+        ASSERT(!m_value.isGetterSetter());
+        ASSERT(!m_value.isCustomGetterSetter());
+    }
+    JS_EXPORT_PRIVATE bool writable() const;
+    JS_EXPORT_PRIVATE bool enumerable() const;
+    JS_EXPORT_PRIVATE bool configurable() const;
+    JS_EXPORT_PRIVATE bool isDataDescriptor() const;
+    bool isGenericDescriptor() const;
+    JS_EXPORT_PRIVATE bool isAccessorDescriptor() const;
+    unsigned attributes() const { return m_attributes; }
+    JSValue value() const { return m_value; }
+    JS_EXPORT_PRIVATE JSValue getter() const;
+    JS_EXPORT_PRIVATE JSValue setter() const;
+    JSObject* getterObject() const;
+    JSObject* setterObject() const;
+    JS_EXPORT_PRIVATE void setUndefined();
+    JS_EXPORT_PRIVATE void setDescriptor(JSValue, unsigned attributes);
+    JS_EXPORT_PRIVATE void setCustomDescriptor(unsigned attributes);
+    JS_EXPORT_PRIVATE void setAccessorDescriptor(GetterSetter* accessor, unsigned attributes);
+    JS_EXPORT_PRIVATE void setWritable(bool);
+    JS_EXPORT_PRIVATE void setEnumerable(bool);
+    JS_EXPORT_PRIVATE void setConfigurable(bool);
+    void setValue(JSValue value) { m_value = value; }
+    JS_EXPORT_PRIVATE void setSetter(JSValue);
+    JS_EXPORT_PRIVATE void setGetter(JSValue);
+    bool isEmpty() const { return !(m_value || m_getter || m_setter || m_seenAttributes); }
+    bool writablePresent() const { return m_seenAttributes & WritablePresent; }
+    bool enumerablePresent() const { return m_seenAttributes & EnumerablePresent; }
+    bool configurablePresent() const { return m_seenAttributes & ConfigurablePresent; }
+    bool setterPresent() const { return !!m_setter; }
+    bool getterPresent() const { return !!m_getter; }
+    bool equalTo(ExecState*, const PropertyDescriptor& other) const;
+    bool attributesEqual(const PropertyDescriptor& other) const;
+    unsigned attributesOverridingCurrent(const PropertyDescriptor& current) const;
+
+private:
+    JS_EXPORTDATA static unsigned defaultAttributes;
+    bool operator==(const PropertyDescriptor&) { return false; }
+    enum { WritablePresent = 1, EnumerablePresent = 2, ConfigurablePresent = 4};
+    // May be a getter/setter
+    JSValue m_value;
+    JSValue m_getter;
+    JSValue m_setter;
+    unsigned m_attributes;
+    unsigned m_seenAttributes;
+};
 
-    private:
-        JS_EXPORTDATA static unsigned defaultAttributes;
-        bool operator==(const PropertyDescriptor&){ return false; }
-        enum { WritablePresent = 1, EnumerablePresent = 2, ConfigurablePresent = 4};
-        // May be a getter/setter
-        JSValue m_value;
-        JSValue m_getter;
-        JSValue m_setter;
-        unsigned m_attributes;
-        unsigned m_seenAttributes;
-    };
 }
 
 #endif