QScriptValueImpl Number::method_toString(QScriptContextPrivate *context, QScriptEnginePrivate *eng, QScriptClassInfo *classInfo) { QScriptValueImpl self = context->thisObject(); if (self.classInfo() != classInfo) return context->throwError(QScriptContext::TypeError, QLatin1String("Number.prototype.toString")); QScriptValueImpl arg = context->argument(0); if (!arg.isUndefined()) { int radix = arg.toInt32(); if (radix < 2 || radix > 36) return context->throwError(QString::fromLatin1("Number.prototype.toString: %0 is not a valid radix") .arg(radix)); if (radix != 10) { QString str; qsreal num = self.internalValue().toInteger(); do { char c = (char)::fmod(num, radix); if (c < 10) c += '0'; else c = c - 10 + 'a'; str.prepend(QLatin1Char(c)); num = ::floor(num / radix); } while (num != 0); return QScriptValueImpl(eng, str); } } QString str = self.internalValue().toString(); return (QScriptValueImpl(eng, str)); }
QScriptValueImpl Number::method_valueOf(QScriptContextPrivate *context, QScriptEnginePrivate *, QScriptClassInfo *classInfo) { QScriptValueImpl self = context->thisObject(); if (self.classInfo() != classInfo) return context->throwError(QScriptContext::TypeError, QLatin1String("Number.prototype.valueOf")); return (self.internalValue()); }
QScriptValueImpl Number::method_toLocaleString(QScriptContextPrivate *context, QScriptEnginePrivate *eng, QScriptClassInfo *classInfo) { QScriptValueImpl self = context->thisObject(); if (self.classInfo() != classInfo) return context->throwError(QScriptContext::TypeError, QLatin1String("Number.prototype.toLocaleString")); QString str = self.internalValue().toString(); return (QScriptValueImpl(eng, str)); }
QScriptValueImpl Boolean::method_toString(QScriptContextPrivate *context, QScriptEnginePrivate *eng, QScriptClassInfo *classInfo) { QScriptValueImpl self = context->thisObject(); if (self.classInfo() != classInfo) return context->throwError(QScriptContext::TypeError, QLatin1String("Boolean.prototype.toString")); const QScript::IdTable *t = eng->idTable(); bool v = self.internalValue().toBoolean(); QScriptValueImpl result; eng->newNameId(&result, v ? t->id_true : t->id_false); return result; }
QScriptValueImpl Number::method_toPrecision(QScriptContextPrivate *context, QScriptEnginePrivate *eng, QScriptClassInfo *classInfo) { QScriptValueImpl self = context->thisObject(); if (self.classInfo() != classInfo) return context->throwError(QScriptContext::TypeError, QLatin1String("Number.prototype.toPrecision")); qsreal fdigits = 0; if (context->argumentCount() > 0) fdigits = context->argument(0).toInteger(); qsreal v = self.internalValue().toNumber(); return (QScriptValueImpl(eng, QString::number(v, 'g', int (fdigits)))); }