6#include <QtCore/qstring.h>
7#include <qv4string_p.h>
8#include <qv4engine_p.h>
9#include <qv4scopedvalue_p.h>
10#include <private/qv4mm_p.h>
12using namespace Qt::Literals::StringLiterals;
17 return Value::fromUInt32(asArrayIndex()).toString(e);
18 return asStringOrSymbol();
22 Heap::StringOrSymbol *s = asStringOrSymbol();
23 return s && s->internalClass->vtable->isString;
27 Heap::StringOrSymbol *s = asStringOrSymbol();
28 return s && !s->internalClass->vtable->isString && s->internalClass->vtable->isStringOrSymbol;
37 Heap::String *s =
static_cast<
Heap::String *>(asStringOrSymbol());
38 Scope scope(s->internalClass->engine);
40 double d = str->toNumber();
41 if (d == 0. &&
std::signbit(d))
43 ScopedString converted(scope, Value::fromDouble(d).toString(scope.engine));
44 if (converted->equals(str))
52 return QString::number(asArrayIndex());
53 Heap::StringOrSymbol *s = asStringOrSymbol();
54 Q_ASSERT(s->internalClass->vtable->isStringOrSymbol);
55 return s->toQString();
63 else if (prefix == Setter)
66 n += QString::number(asArrayIndex());
68 Heap::StringOrSymbol *s = asStringOrSymbol();
69 QString str = s->toQString();
70 if (s->internalClass->vtable->isString)
72 else if (str.size() > 1)
73 n += QChar::fromLatin1(
'[') + QStringView{str}.mid(1) + QChar::fromLatin1(
']');
75 return engine->newString(n);
Scoped< String > ScopedString
bool isArrayIndex() const
Heap::StringOrSymbol * toStringOrSymbol(ExecutionEngine *e)
bool isCanonicalNumericIndexString() const
Q_QML_EXPORT bool isSymbol() const
Q_QML_EXPORT bool isString() const
Heap::String * asFunctionName(ExecutionEngine *e, FunctionNamePrefix prefix) const