3#ifndef QV4PROPERTYDESCRIPTOR_H
4#define QV4PROPERTYDESCRIPTOR_H
32 if (!
attrs->hasType()) {
36 attrs->clearWritable();
51 if (!
attrs->hasWritable())
52 attrs->setWritable(
false);
57 if (!
attrs->hasEnumerable())
58 attrs->setEnumerable(
false);
59 if (!
attrs->hasConfigurable())
60 attrs->setConfigurable(
false);
66 inline Heap::FunctionObject *
getter()
const {
return reinterpret_cast<Heap::FunctionObject *
>(
value.heapObject()); }
67 inline Heap::FunctionObject *
setter()
const {
return reinterpret_cast<Heap::FunctionObject *
>(
set.
heapObject()); }
73 if (
attrs.isAccessor())
79 if (otherAttrs.isEmpty())
81 if (!
attrs.isConfigurable()) {
82 if (otherAttrs.hasConfigurable() && otherAttrs.isConfigurable())
84 if (otherAttrs.hasEnumerable() && otherAttrs.isEnumerable() !=
attrs.isEnumerable())
87 if (otherAttrs.isGeneric())
89 if (
attrs.isData() != otherAttrs.isData()) {
90 if (!
attrs.isConfigurable())
92 }
else if (
attrs.isData() && otherAttrs.isData()) {
93 if (!
attrs.isConfigurable() && !
attrs.isWritable()) {
94 if (otherAttrs.hasWritable() && otherAttrs.isWritable())
99 }
else if (
attrs.isAccessor() && otherAttrs.isAccessor()) {
100 if (!
attrs.isConfigurable()) {
124 if (
attrs.hasEnumerable() &&
attrs.isEnumerable() != otherAttrs.isEnumerable())
126 if (
attrs.hasConfigurable() &&
attrs.isConfigurable() != otherAttrs.isConfigurable())
128 if (
attrs.hasWritable() &&
attrs.isWritable() != otherAttrs.isWritable())
133 if (
value.heapObject() !=
other->value.heapObject())
143 if (otherAttrs.hasEnumerable())
144 attrs.setEnumerable(otherAttrs.isEnumerable());
145 if (otherAttrs.hasConfigurable())
146 attrs.setConfigurable(otherAttrs.isConfigurable());
147 if (otherAttrs.hasWritable())
148 attrs.setWritable(otherAttrs.isWritable());
151 if (!
other->value.isEmpty())
153 if (!
other->set.isEmpty())
Combined button and popup list for selecting options.
static struct AttrInfo attrs[]
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
static constexpr ReturnedValue undefined()
const Value * operator->() const
const Value & operator*() const
void set(EngineBase *e, Value newVal)
void setGetter(FunctionObject *g)
Heap::FunctionObject * getter() const
bool isSubset(const PropertyAttributes &attrs, const Property *other, PropertyAttributes otherAttrs) const
void setSetter(FunctionObject *s)
void fullyPopulated(PropertyAttributes *attrs)
bool isCompatible(PropertyAttributes &attrs, const Property *other, PropertyAttributes otherAttrs) const
void copy(const Property *other, PropertyAttributes attrs)
void completed(PropertyAttributes *attrs)
Property(Heap::FunctionObject *getter, Heap::FunctionObject *setter)
Heap::FunctionObject * setter() const
void merge(PropertyAttributes &attrs, const Property *other, PropertyAttributes otherAttrs)
ReturnedValue * data_ptr()
static constexpr Value undefinedValue()
static Value fromHeapObject(HeapBasePtr m)
bool sameValue(Value other) const
QML_NEARLY_ALWAYS_INLINE Value::HeapBasePtr heapObject() const
static Q_ALWAYS_INLINE void write(EngineBase *engine, Heap::Base *base, ReturnedValue *slot, ReturnedValue value)