Variable AVM::call(AVM &avm) { Variable name = avm.getRegister(1); if (!name.isString()) throw Common::Exception("AVM::registerClass(): name is not a string"); info("TODO: ExternalInterface.call(%s,...)", name.asString().c_str()); return Variable(); }
Variable AVM::gotoAndPlay(AVM &avm) { Variable frame = avm.getRegister(1); if (!frame.isNumber() && !frame.isString()) throw Common::Exception("AVM::gotoAndPlay(): parameter is neither a string nor a number"); info("TODO: gotoAndPlay(%s)", frame.asString().c_str()); return Variable(); }
Variable Array::getMember(const Variable &id) { if (id.isNumber()) { std::list<Variable>::iterator iter = _values.begin(); std::advance(iter, static_cast<size_t>(id.asNumber())); return *iter; } if (id.isString() && id.asString() == "length") return Variable((unsigned long)_values.size()); return Object::getMember(id); }
Variable AVM::registerClass(AVM &avm) { Variable name = avm.getRegister(1); Variable object = avm.getRegister(2); if (!name.isString()) throw Common::Exception("AVM::registerClass(): name is not a string"); if (!object.isObject()) throw Common::Exception("AVM::registerClass(): value is not an object"); if (_registerClass) _registerClass(name.asString(), object.asObject()); return Variable(); }