Changeset 55426 in webkit
- Timestamp:
- Mar 2, 2010 1:20:20 PM (14 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 5 added
- 7 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r55403 r55426 1 2010-03-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> 2 3 Reviewed by Simon Hausmann. 4 5 Introduce a new class; QScriptString. 6 7 The QScriptString class should act as a handle to "interned" 8 strings in a QScriptEngine. 9 10 [Qt] QtScript should provide QScriptString 11 https://bugs.webkit.org/show_bug.cgi?id=34843 12 13 * qt/api/QtScript.pro: 14 * qt/api/qscriptengine.cpp: 15 (QScriptEngine::toStringHandle): 16 * qt/api/qscriptengine.h: 17 * qt/api/qscriptengine_p.h: 18 (QScriptEnginePrivate::toStringHandle): 19 * qt/api/qscriptstring.cpp: Added. 20 (QScriptString::QScriptString): 21 (QScriptString::~QScriptString): 22 (QScriptString::operator=): 23 (QScriptString::isValid): 24 (QScriptString::operator==): 25 (QScriptString::operator!=): 26 (QScriptString::toArrayIndex): 27 (QScriptString::toString): 28 (QScriptString::operator QString): 29 (qHash): 30 * qt/api/qscriptstring.h: Added. 31 * qt/api/qscriptstring_p.h: Added. 32 (QScriptStringPrivate::QScriptStringPrivate): 33 (QScriptStringPrivate::~QScriptStringPrivate): 34 (QScriptStringPrivate::get): 35 (QScriptStringPrivate::isValid): 36 (QScriptStringPrivate::operator==): 37 (QScriptStringPrivate::operator!=): 38 (QScriptStringPrivate::toArrayIndex): 39 (QScriptStringPrivate::toString): 40 (QScriptStringPrivate::id): 41 * qt/tests/qscriptstring/qscriptstring.pro: Added. 42 * qt/tests/qscriptstring/tst_qscriptstring.cpp: Added. 43 (tst_QScriptString::tst_QScriptString): 44 (tst_QScriptString::~tst_QScriptString): 45 (tst_QScriptString::test): 46 (tst_QScriptString::hash): 47 (tst_QScriptString::toArrayIndex_data): 48 (tst_QScriptString::toArrayIndex): 49 * qt/tests/tests.pro: 50 1 51 2010-03-02 Oliver Hunt <oliver@apple.com> 2 52 -
trunk/JavaScriptCore/qt/api/QtScript.pro
r53853 r55426 22 22 $$PWD/qscriptengine_p.cpp \ 23 23 $$PWD/qscriptvalue.cpp \ 24 $$PWD/qscriptstring.cpp \ 24 25 25 26 HEADERS += $$PWD/qtscriptglobal.h \ … … 29 30 $$PWD/qscriptvalue_p.h \ 30 31 $$PWD/qscriptconverter_p.h \ 32 $$PWD/qscriptstring.h \ 33 $$PWD/qscriptstring_p.h \ 31 34 32 35 -
trunk/JavaScriptCore/qt/api/qscriptconverter_p.h
r53850 r55426 22 22 23 23 #include <JavaScriptCore/JavaScript.h> 24 #include <QtCore/qnumeric.h> 24 25 #include <QtCore/qstring.h> 25 26 … … 34 35 class QScriptConverter { 35 36 public: 37 static quint32 toArrayIndex(const JSStringRef jsstring) 38 { 39 // FIXME this function should be exported by JSC C API. 40 QString qstring = toString(jsstring); 41 42 bool ok; 43 quint32 idx = qstring.toUInt(&ok); 44 if (!ok || toString(idx) != qstring) 45 idx = 0xffffffff; 46 47 return idx; 48 } 49 36 50 static QString toString(const JSStringRef str) 37 51 { -
trunk/JavaScriptCore/qt/api/qscriptengine.cpp
r54580 r55426 89 89 90 90 /*! 91 Returns a handle that represents the given string, \a str. 92 93 QScriptString can be used to quickly look up properties, and 94 compare property names, of script objects. 95 96 \sa QScriptValue::property() 97 */ 98 QScriptString QScriptEngine::toStringHandle(const QString& str) 99 { 100 return QScriptStringPrivate::get(d_ptr->toStringHandle(str)); 101 } 102 103 /*! 91 104 Returns a QScriptValue of the primitive type Null. 92 105 -
trunk/JavaScriptCore/qt/api/qscriptengine.h
r54580 r55426 21 21 #define qscriptengine_h 22 22 23 #include "qscriptstring.h" 23 24 #include <QtCore/qobject.h> 24 25 #include <QtCore/qshareddata.h> … … 39 40 void collectGarbage(); 40 41 42 QScriptString toStringHandle(const QString& str); 43 41 44 QScriptValue nullValue(); 42 45 QScriptValue undefinedValue(); -
trunk/JavaScriptCore/qt/api/qscriptengine_p.h
r53850 r55426 23 23 #include "qscriptconverter_p.h" 24 24 #include "qscriptengine.h" 25 #include "qscriptstring_p.h" 25 26 #include "qscriptvalue.h" 26 27 #include <JavaScriptCore/JavaScript.h> … … 47 48 inline JSValueRef makeJSValue(bool number) const; 48 49 inline JSValueRef makeJSValue(QScriptValue::SpecialValue value) const; 50 51 inline QScriptStringPrivate* toStringHandle(const QString& str) const; 49 52 50 53 inline JSGlobalContextRef context() const; … … 91 94 } 92 95 96 QScriptStringPrivate* QScriptEnginePrivate::toStringHandle(const QString& str) const 97 { 98 return new QScriptStringPrivate(str); 99 } 100 93 101 JSGlobalContextRef QScriptEnginePrivate::context() const 94 102 { -
trunk/JavaScriptCore/qt/api/qscriptstring.h
r55424 r55426 1 1 /* 2 Copyright (C) 20 09Nokia Corporation and/or its subsidiary(-ies)2 Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 3 3 4 4 This library is free software; you can redistribute it and/or … … 18 18 */ 19 19 20 #ifndef qscript engine_h21 #define qscript engine_h20 #ifndef qscriptstring_h 21 #define qscriptstring_h 22 22 23 #include <QtCore/qobject.h>23 #include "qtscriptglobal.h" 24 24 #include <QtCore/qshareddata.h> 25 25 #include <QtCore/qstring.h> 26 26 27 class QScript Value;28 class QScriptEnginePrivate;27 class QScriptStringPrivate; 28 typedef QExplicitlySharedDataPointer<QScriptStringPrivate> QScriptStringPtr; 29 29 30 // Internal typedef 31 typedef QExplicitlySharedDataPointer<QScriptEnginePrivate> QScriptEnginePtr; 30 class Q_JAVASCRIPT_EXPORT QScriptString { 31 public: 32 QScriptString(); 33 QScriptString(const QScriptString& other); 34 ~QScriptString(); 32 35 33 class QScriptEngine : public QObject { 34 public: 35 QScriptEngine(); 36 ~QScriptEngine(); 36 QScriptString& operator=(const QScriptString& other); 37 37 38 QScriptValue evaluate(const QString& program, const QString& fileName = QString(), int lineNumber = 1); 39 void collectGarbage(); 38 bool isValid() const; 40 39 41 QScriptValue nullValue(); 42 QScriptValue undefinedValue(); 40 bool operator==(const QScriptString& other) const; 41 bool operator!=(const QScriptString& other) const; 42 43 quint32 toArrayIndex(bool* ok = 0) const; 44 45 QString toString() const; 46 operator QString() const; 47 43 48 private: 44 friend class QScriptEnginePrivate;49 QScriptString(QScriptStringPrivate* d); 45 50 46 QScriptEnginePtr d_ptr; 51 QScriptStringPtr d_ptr; 52 53 friend class QScriptStringPrivate; 47 54 }; 48 55 49 #endif 56 uint qHash(const QScriptString& key); 57 58 #endif // qscriptstring_h -
trunk/JavaScriptCore/qt/tests/tests.pro
r53850 r55426 1 1 TEMPLATE = subdirs 2 2 SUBDIRS = qscriptengine \ 3 qscriptvalue 3 qscriptvalue \ 4 qscriptstring
Note: See TracChangeset
for help on using the changeset viewer.