summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml
Commit message (Collapse)AuthorAgeFilesLines
* Don't add the database before verificationv5.3.1stableRob Hoelz2014-05-291-1/+1
| | | | | | | | | | | | | | | The local storage facility exposed to QML has a bug; if you attempt to open a versioned connection, the version is wrong, and you try to handle that error, the connection is still stored in a connection pool, but in an unopened state. The next time you attempt to connect, no matter if you have the version right or not, the database handle will complain about being unopened. See also http://qt-project.org/forums/viewthread/38458/ Task-number: QTBUG-38543 Change-Id: I597497aab4895c868275a247ad96fb969e1c8ae5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Don't use a variable called 'interface'Thiago Macieira2014-05-071-13/+13
| | | | | | | | | MSVC has #define interface struct, resulting in a nonsensical error from the compiler about "struct: missing tag name" in a line that doesn't say "struct". Change-Id: I1ca703fd7920052e9d0bdf9a6936df77597ff022 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix typos in comments and documentationSergio Ahumada2014-03-051-1/+1
| | | | | Change-Id: Ie7c4d63d632bf32ee583ddcd807252225ddde3fd Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
* Fix encoding of localized messagesKai Koehne2014-02-272-2/+2
| | | | | | | | | | | QDebug::operator<<(const char*) uses QString::fromUtf8(), while qPrintable(str) returns QString::toLocal8Bit(). This messes up e.g. the Russian translations. Task-number: QTBUG-35825 Change-Id: Ib3f0004df677196a0bd17ac48c65f2d51b833044 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* Allow QtDeclarative and QtQml to co-exist at run-timev5.2.0Simon Hausmann2013-11-263-13/+9
| | | | | | | | | | | | | This patch changes QDeclarativeData to share the very first bit with QtQml's QQmlData, to indicate ownership by either run-time. We need to check the bit in the only QObject callback we use (destroyed), the other callback was unused and removed. Task-number: QTBUG-35006 Change-Id: Ife4b515648cba42b91612736ccd9375f1f46808a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove QtAlgorithms usage from QtQuick1.Friedemann Kleint2013-09-262-2/+6
| | | | | | | | QtAlgorithms is getting deprecated, see http://www.mail-archive.com/development@qt-project.org/msg01603.html Change-Id: I774f69bd3e60764a144b921a2383d832b38765ce Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QmlJs: Fix yet another instance of QmlJsParser...Tobias Hunger2013-09-032-2/+2
| | | | | | | | | Same (!a == b) issue as everywhere else. Can we please unify all those parsers? They all are slightly different though, at least this issue, is never on the same line number. Change-Id: Ie2d1540d47b848ed0c7596b3f309c046b64390cf Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-07-232-1/+6
|\ | | | | | | Change-Id: I776abad2c248f697ff729057cfaff16b4a395380
| * Use GET method for redirect in QDeclarativeXMLHttpRequest.Friedemann Kleint2013-07-221-0/+5
| | | | | | | | | | | | | | | | Initial-patch-by: Marek Więckowski <wiecko@fuw.edu.pl> Task-number: QTBUG-32332 Change-Id: I393308134d60e484464e0cfc6cdcdac1edc27f8d Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
| * Fix regression from Qt 4 for deep group propertiesSimon Hausmann2013-07-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Setting a property like someObject.font.family would cause an out-of-bounds assertion in QList, called from QQmlCompiler::genValueTypeProperty. This appears to be a regression from commit 5e970b84663f5398eb51d4575856d1a3c44df953, which replaced one -1 to QMetaType::QVariant too many times. It appears the use of -1 is rather deliberate here and not to indicate the use of a QVariant property. The attached test verifies this as well as the successful setting of the property at the end. Task-number: QTBUG-31576 Change-Id: I237ea08847e1db31481a311ea8ec23a5ccc702d8 Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-122-3/+3
|\| | | | | | | Change-Id: I19a932141748119ccdc0a9cd9f926403f67f5968
| * Fix warnings found by clang: unused private membersThiago Macieira2013-06-102-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For qdeclarativebinding_p.h, since the class is private, there is no BC guarantee, so we can just remove the members. This class has a friend, but the friend is also in the same .cpp. qdeclarativebinding_p.h:139:14: error: private field 'm_object' is not used [-Werror,-Wunused-private-field] qdeclarativebinding_p.h:140:9: error: private field 'm_index' is not used [-Werror,-Wunused-private-field] For QSGGeometry, since this is a public class, we can't remove the members. Just make them unused. qsggeometry.h:124:11: error: private field 'm_reserved_pointer' is not used [-Werror,-Wunused-private-field] qsggeometry.h:127:10: error: private field 'm_reserved_bits' is not used [-Werror,-Wunused-private-field] Change-Id: Ia3650f38f32bd4cd705078a69c5445c64883bce4 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-042-2/+2
|\| | | | | | | | | | | | | | | Conflicts: .qmake.conf sync.profile Change-Id: I9d0d430d894c4ba1409e19ff9244cf94937eb021
| * Fix VS2010 compile warningAlan Alpert2013-06-041-1/+2
| | | | | | | | | | | | | | | | | | warning C4510: 'QQmlPrivate::RegisterCompositeType' : default constructor could not be generated Backport of a11f4e4318b3b9d04faf533b68809937fb2208e2 from qtdeclarative Task-number: QTBUG-30454 Change-Id: I16ec8995ac1df3c92353006473ca082c4ed4e5b8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Edited copyright headerTeemu Kaukoranta2013-05-301-1/+0
| | | | | | | | | | | | | | Removed deprecated "all rights reserved" string Change-Id: Ib407aa8eee6e529bd5a59d152589e4231d5d979f Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-05-234-14/+94
|\| | | | | | | Change-Id: I03cb83e49d476283280ebb5963a513d109d224c8
| * Move exports conflicting with QtQml into namespaceKai Koehne2013-05-134-14/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Move exported qml* symbols that conflict with QtQml into an - automatically imported - namespace. This ensures apps can link against both QtDeclarative and QtQml. To keep the BC promise the old symbols are still exported. Task-number: QTBUG-29584 Change-Id: Icf4e586fee51d2bd82125398e2bb96d6dd355cc5 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-04-031-2/+4
|\| | | | | | | Change-Id: Iec94e513079426e5d87bdd24753863038cee573e
| * Doc: Fix faulty code snippet in QDeclarativeEngine class referenceTopi Reinio2013-04-021-2/+4
| | | | | | | | | | | | | | | | | | A common way to access the engine instance is via QDeclarativeView - fix the code snippet accordingly. Task-number: QTBUG-20747 Change-Id: Iff837f834ca6c950aa6c78c418f544789b4fcaf9 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | Backport some enum optimizations from Qt 5Alan Alpert2013-03-261-11/+33
|/ | | | | | | | | | Saving the int when we check the enum is valid allows us to make it a literal assignment instead of a binding, which is much faster on object creation. Change-Id: Ieb174289438a17574c4716df372b04d4dee6d0da Reviewed-by: Christopher Adams <chris.adams@jollamobile.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* Fix warning about extended date/time range in Qt 5.Friedemann Kleint2013-03-152-11/+11
| | | | | | | | | | Store the qint64 julian day in 2 ints, allowing Qt Quick1 applications to work until approx 2.5 Quadrillion AD. Task-number: QTBUG-28119 Change-Id: Id9cbcd8f01fb15e3eef13609e96d107b48b3ad9b Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove unused variable (CLANG).Friedemann Kleint2013-03-061-2/+0
| | | | | Change-Id: I74d07deb862ff7099eaeeae93b04be3c7496c5c8 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Remove QT_{BEGIN,END}_HEADER macro usageSergio Ahumada2013-01-2830-118/+0
| | | | | | | | | | The macro was made empty in qtbase/ba3dc5f3b56d1fab6fe37fe7ae08096d7dc68bcb and is no longer necessary or used. Discussed-on: http://lists.qt-project.org/pipermail/development/2013-January/009284.html Change-Id: Ic5b55b26967d65b3f11cac6fc3963f33ec6051a4 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Alan Alpert <aalpert@rim.com>
* Remove export-declaration from inline function qmlRegisterType().Friedemann Kleint2013-01-281-1/+1
| | | | | | | | Fix MinGW-warning about invalid dllimport-directive. Change-Id: I12b2888c09de5b548fd3bd7e626717ee057de80c Reviewed-by: Jonathan Liu <net147@gmail.com> Reviewed-by: Alan Alpert <aalpert@rim.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-01-17146-457/+147
|\ | | | | | | Change-Id: I1175450886eca4dcaf7e81ae82fd112e541ad2f8
| * Update copyright year in Digia's license headersSergio Ahumada2013-01-10143-145/+145
| | | | | | | | | | | | Change-Id: I0281c3f6c10bb7c57f0e470306f38e96badf997b Reviewed-by: Akseli Salovaara <akseli.salovaara@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
| * Remove QPerformanceTimer now that QElapsedTimer contains the necessary bitsRobin Burchell2013-01-093-312/+2
| | | | | | | | | | | | | | | | | | | | | | QPerformanceTimer was a copy of QElapsedTimer with some additional functionality which has since been subsumed into QElapsedTimer, so remove the forked code. (backport of cd6ebb4912a5d96c788ea0c838d8a1a06ff4029e from qtdeclarative) Change-Id: Ife1dac4d6c46404b43253680819da21350c65569 Reviewed-by: Christopher Adams <chris.adams@jollamobile.com> Reviewed-by: Alan Alpert <aalpert@rim.com>
* | Merge branch 'stable' into devFrederik Gladhorn2013-01-1710-19/+30
|\| | | | | | | | | | | | | | | Conflicts: sync.profile tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp Change-Id: I3620d15b4163fec420d18f6be50cae1635b99a2f
| * Fix mistake in using == instead of =Thiago Macieira2013-01-041-1/+1
| | | | | | | | | | | | | | | | | | Found by clang: qml/qdeclarativexmlhttprequest.cpp:1324:24: error: equality comparison result unused [-Werror,-Wunused-comparison] Change-Id: Ie46678d6102f2e50bf87a53a9cbc14d114b4e334 Reviewed-by: Alan Alpert <aalpert@rim.com>
| * Fix some warnings in qtquick1 found by ClangThiago Macieira2013-01-043-4/+4
| | | | | | | | | | | | | | | | | | | | | | qml/qdeclarativevme.cpp:286:26: error: destination for this 'memset' call is a pointer to dynamic class 'QObject'; vtable pointer will be overwritten [-Werror,-Wdynamic-class-memaccess] qml/qdeclarativemetatype.cpp:441:9: error: expression result unused; should this cast be to 'void'? [-Werror,-Wunused-value] util/qdeclarativefontloader.cpp:87:52: error: addition of default argument on redeclaration makes this constructor a default constructor [-Werror,-Wdefault-arg-special-member] qmlplugindump/main.cpp:180:75: error: unused parameter 'engine' [-Werror,-Wunused-parameter] qml/qdeclarativefastproperties_p.h:53:1: error: class 'QMetaObject' was previously declared as a struct [-Werror,-Wmismatched-tags] Change-Id: I1e91252d048e36e684a854ca1c6eb92e5a871444 Reviewed-by: Alan Alpert <aalpert@rim.com>
| * Specify better increment for captured propertiesAlan Alpert2012-12-193-4/+4
| | | | | | | | | | | | | | | | There aren't that many captured properties, decreasing the increment will give better performance. Change-Id: Iddb17c695eda5513f2d038123f4c886e559d8f6a Reviewed-by: Christopher Adams <chris.adams@jollamobile.com>
| * Process imports in the order they appear in the code.Robin Burchell2012-12-121-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By placing imports into a hash keyed by the qualifier, imports were not processed in the order they appeared in the source. This is perhaps not a major problem, but it is nice to have predictability. This becomes more important in Qt 5, when QHash is randomly seeded at application startup, as alterations to order could have strange side effects on code. Reported-by: Maciej Blomberg Change-Id: Ibd34fab1eed4bc727b498ba4684c62d801ae713b Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Make sure Q_DECLARE_METATYPE is used in all TUs it is registered in.Stephen Kelly2012-12-111-1/+2
| | | | | | | | | | Change-Id: I0aea3bfcae77d22f04166ce7e04c9a4898e7f99b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * remove unnessary reference to QGuiApplicationv5.0.0-rc1Jing Bai2012-12-051-1/+11
| | | | | | | | | | | | | | | | | | | | In QDeclarativeEngine initialization,it goes through all types, including Font in Gui. This causes a crash when using QDeclarativeEngine with QCoreApplication. Task-number: QTBUG-28375 Change-Id: Idce2a046db7e52a1c13b8c5c0315e36873f7e27d Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* | Add a method that allows registration of files to typesAlan Alpert2012-12-055-1/+106
| | | | | | | | | | | | | | | | | | | | There is currently no way in C++ to duplicate the functionality of a qmldir file in mapping QML files to versioned types in a module. This functionality would be useful both in cases where a separate qmldir file would be overkill, and for cases where the type mapping should be generated dynamically. Change-Id: I28d7898122c5556fcd7cf3476795bcf4bb288eab Reviewed-by: Christopher Adams <chris.adams@jollamobile.com>
* | Delay loading implicit importAlan Alpert2012-12-053-36/+66
|/ | | | | | | | | | | As a performance improvement to avoid accessing the filesystem unecessarily, only import "." implicitly if types cannot be found in the existing imports. This is not a behavior change for type resolution, because "." already has the lowest precedence for type resolution. Change-Id: I8a8f10f7a790e6a02fc2c07c443f7be1984fc979 Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Christopher Adams <chris.adams@jollamobile.com>
* Limit case-sensitivity check in QML to file names.Friedemann Kleint2012-12-012-2/+23
| | | | | | | | | | Provide for checking relative paths only; default to file names. Currently, the checking triggers on a drive letters and installation folder names, which is too strict. Task-number: QTBUG-28277 Change-Id: I2056a39b605f7891d2c3e395efc6bc541aa7e470 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Fix QML XmlHttpRequest Insecure Redirection FlawRichard Moore2012-12-011-3/+5
| | | | | | | | | Fix the redirection flaw in QML's XmlHttpRequest implementation that is described in http://lists.qt-project.org/pipermail/announce/2012-November/000014.html Change-Id: I5190e63648f4664753003b70c20cb8dbd20ab150 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* QML file loading: honor synchronous requests made through QNAMAlan Alpert2012-11-282-8/+28
| | | | | | | | | | So that it can skip loading state when the underlying QNetworkReply is already finished. Change-Id: Ic2d26271868b64bf8a411b4b54d7e5be7ee5d2b5 Parts-of-the-patch-by: Jeremy Nicholl Task-number: QTBUG-27723 Reviewed-by: Alan Alpert <aalpert@rim.com>
* Accept missing semicolon after do-while statement.Erik Verbruggen2012-11-266-802/+852
| | | | | | | | | | | Although not valid according to ECMA 5.1, both JSC and V8 accept a missing semicolon after a do-while loop. (Both JSC and V8 do not do this through automatic semicolon insertion, but handle it as a special case.) This is a "port" of a similair change done in the qtdeclarative module. Change-Id: I417cf18abb75e7040c48894b8f8f68afc41547fe Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove references to QApplication::type()J-P Nurmi2012-11-221-1/+1
| | | | | | | | Qt3 legacy QCoreApplication::Type and QApplication::type() will be removed -> use qobject_cast instead. Change-Id: If95a5552440ace2592332de03f9d2240fa8770b9 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Move the Qt Quick 1 imports back to "imports"Thiago Macieira2012-11-191-1/+1
| | | | | | | | | | The Qt Quick 2 ones will be in a different place. This restores Qt 4 behaviour. Change-Id: I6bc11113c0c89f4b11422b7fe98571930eb852cd Discussed-on: http://lists.qt-project.org/pipermail/development/2012-October/007011.html Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Change the header message: this is now the QtDeclarative moduleThiago Macieira2012-10-19144-144/+144
| | | | | Change-Id: I18a370a58494049939d035f1c3528406f3f7645f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Do not use an export macro in the function definitionThiago Macieira2012-10-171-1/+1
| | | | | | | | | | qmlExecuteDeferred is exported using Q_DECLARATIVE_EXPORT in qdeclarative.h, so we don't need to use one here. Better not have any than have the wrong one, which can cause problems. Change-Id: I672f8aaf0fef2600a6ab8c4a17112404fc5b1cda Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Rename the QtQuick1 module back to QtDeclarativeFriedemann Kleint2012-10-1734-103/+103
| | | | | | | | | | | | | | | | | Matches the name that this code used to have in Qt 4. - Adapt library, change import path to 'QtDeclarative'. - Update the tests and examples to match the new library name. - Rename qtquick1global{_p}.h to qtdeclarativeglobal.h. - Change exports back to Q_DECLARATIVE_[PRIVATE_]EXPORT, like it was in Qt 4 and matching the library name again. This also changes the include guards in qtdeclarativeglobal{,_p}.h. - Fix occurrence of quick_debug in tools/qml/qml.pro. Change-Id: Ibb1fb2e503f90943a2125e4ac3cc4eca3369ca3f Reviewed-by: hjk <qthjk@ovi.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* QPerformanceTimer: fixed wrong implementation of elapsedToAbsoluteTime()Frantisek Vacek2012-10-131-4/+6
| | | | | | | | Function elapsedToAbsoluteTime() had wrong implementation on MAC and WIN platforms. Change-Id: Icc11e85bcd562cce42af902749883b433a1fcb0b Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
* QDeclarativeTrace patch for a custom trace instanceFrantisek Vacek2012-09-282-3/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Needed for the BB10 Cascades profiling. There are more reasons for introducing this patch: 1) Cascades do not use QtGui library for QML rendering. It has its own paint engine with client-server architecture. Profiler traces are sent asynchronously from non Qt renderer thread to the Qt client. The QPerformanceTimer has to be patched too, cause we need to know time difference between tracing zero time and some time in past, see: qint64 QPerformanceTimer::elapsed(qint64 to_monotonic_time_ns) const 2) Since we need more sophisticated trace engine in cascades, this patch allows explicitly assign custom class derived from QDeclaraqtiveDebugtrace to the trace framework. If no custom instance is assigned, the default QDeclarativeDebugTrace instance is created implicitly on first trace request. Using custom trace instance which is not part of Qt (it is part of libbbcascades) allows us to implement all Cascades trace special needs in libbbcascades and not to carry Qt with the platform specific code. 3) The NO_CUSTOM_DECLARATIVE_DEBUG_TRACE_INSTANCE macro is introduced to allow custom trace engine only on the bleckberry platform, see declarative.pro. If this macro is defined Qt compiles from its original code. 4) Possibility of custom QDeclaraqtiveDebugTrace instance might be usable for other projects which needs to extends somehow default Qt trace functionality. 5) Patch is not intended to be applied to Qt Quick 2, since declarative debugging infrastructure is changed there. Change-Id: I199211c1de66e930e252e8c033503d7f4940565f Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-24145-3508/+3508
| | | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: I11a957e35758e821269478ebc91e87f0f5ebc4d5 Reviewed-by: Janne Anttila <janne.anttila@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove Symbian platformKai Koehne2012-09-183-78/+3
| | | | | Change-Id: Iad770614f7c1c890febeee662d0ce9370dcb17e3 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Register Qt 4.7 import on-demand, instead of at startup.Robin Burchell2012-09-035-6/+37
| | | | | | | | | | | | | | | | | | | | This is a slightly less awkward approach (keeps backwards-compatibility) while speeding up startup for applications that don't use the old import path. Also prints a warning to let developers know they should migrate their code when possible. Completely disabling the Qt 4.7 import is still possible by setting QT_NO_IMPORT_QT47_QML. This takes around 10-15ms off a very simple "hello world" on my macbook. As an added bonus, forward-port a similar approach to 4.8's a26f545d8e25af74fb43d16c9afa79f6e04463e7 and don't register graphical types in a non-graphical application as someone (very naughtily) apparently forgot to get it integrated to Qt 5 first. Change-Id: I7821523750b3ab6770f367788725d0da70c5ec1f Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Alan Alpert <416365416c@gmail.com>