void ScriptObject::setLengthProperty(uint32_t newLen) { Toplevel* toplevel = this->toplevel(); AvmCore* core = toplevel->core(); Multiname mname(core->getAnyPublicNamespace(), core->klength); Atom lenAtm = core->uintToAtom(newLen); toplevel->setproperty(this->atom(), &mname, lenAtm, this->vtable); }
uint32_t ScriptObject::getLengthProperty() { Toplevel* toplevel = this->toplevel(); AvmCore* core = toplevel->core(); Multiname mname(core->getAnyPublicNamespace(), core->klength); Atom lenAtm = toplevel->getproperty(this->atom(), &mname, this->vtable); return AvmCore::toUInt32(lenAtm); }
void ObjectClass::_setPropertyIsEnumerable(Atom thisAtom, Stringp name, bool enumerable) { AvmCore* core = this->core(); name = name ? core->internString(name) : (Stringp)core->knull; if (atomKind(thisAtom) == kObjectType) { ScriptObject* obj = AvmCore::atomToScriptObject(thisAtom); obj->setStringPropertyIsEnumerable(name, enumerable); } else { // cannot create properties on a sealed object. // NOTE just use the unmarked version Multiname multiname(core->getAnyPublicNamespace(), name); // NOTE use default public toplevel()->throwReferenceError(kWriteSealedError, &multiname, traits()); } }
void ScriptObject::throwWriteSealedError(Atom name) { AvmCore* core = this->core(); throwWriteSealedError(Multiname(core->getAnyPublicNamespace(), core->intern(name))); }