diff options
Diffstat (limited to 'src/qml/jsruntime/qv4string_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4string_p.h | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4string_p.h b/src/qml/jsruntime/qv4string_p.h index 64e15b04c2..ade64d1352 100644 --- a/src/qml/jsruntime/qv4string_p.h +++ b/src/qml/jsruntime/qv4string_p.h @@ -52,7 +52,13 @@ struct ExecutionEngine; struct Identifier; struct Q_QML_EXPORT String : public Managed { - Q_MANAGED + // ### FIXME: Should this be a V4_OBJECT + V4_OBJECT + Q_MANAGED_TYPE(String) + enum { + IsString = true + }; + enum StringType { StringType_Unknown, StringType_Regular, @@ -60,10 +66,6 @@ struct Q_QML_EXPORT String : public Managed { StringType_ArrayIndex }; - String() - : Managed(0), _text(QStringData::sharedNull()), identifier(0) - , stringHash(UINT_MAX), largestSubLength(0), len(0) - { type = Type_String; subtype = StringType_Unknown; } String(ExecutionEngine *engine, const QString &text); String(ExecutionEngine *engine, String *l, String *n); ~String() { @@ -86,6 +88,7 @@ struct Q_QML_EXPORT String : public Managed { return toQString() == other->toQString(); } + inline bool compare(const String *other) { return toQString() < other->toQString(); } @@ -167,6 +170,7 @@ protected: static bool deleteProperty(Managed *, const StringRef); static bool deleteIndexedProperty(Managed *m, uint index); static bool isEqualTo(Managed *that, Managed *o); + static uint getLength(const Managed *m); private: QChar *recursiveAppend(QChar *ch) const; @@ -178,11 +182,13 @@ inline String *value_cast(const Value &v) { } template<> -inline ReturnedValue value_convert<String>(ExecutionContext *ctx, const Value &v) +inline ReturnedValue value_convert<String>(ExecutionEngine *e, const Value &v) { - return v.toString(ctx)->asReturnedValue(); + return v.toString(e)->asReturnedValue(); } +DEFINE_REF(String, Managed); + } QT_END_NAMESPACE |