qt5base-lts/tests/auto/corelib
Kent Hansen f95181c7bb Long live Qt5 meta-object method/property descriptors
This commit introduces two significant changes to the meta-object
data format:

1) Meta-type information (QMetaType type/name) information is
stored directly in the meta-data for both properties and methods;
2) The original signature (string) of a method is no longer stored
in the meta-data, since it can be reconstructed from the method
name and parameter type info.

The motivation for this change is to enable direct access to method
names and type information (avoiding string-based lookup for types
if possible), since that's typically the information language
bindings (e.g. QML) need. (moc already had all the desired
information about methods, but it threw it away!)

This change keeps support for the older (6 and below) meta-object
revisions, but the support will be removed after a short grace
period.

The following public QMetaMethod functions have been added:

name() : QByteArray
returnType() : int
parameterCount() : int
parameterType(int index) : int

The following internal QMetaMethod function has been added:

getParameterTypes(int *types) : void

This commit extends the meta-method data to include explicit
type/name data for methods. The new data follows the existing
(5-word) method descriptors in the meta-data. The method descriptor
format was modified to enable this. First, the descriptor now
contains the meta-data index where the method's type/name information
can be found. Second, the descriptor contains the number of
parameters. Third, the descriptor has a reference to the name of the
method, not the full signature.

Each entry of a method's type/name array contains either the type id
(if it could be determined at meta-object definition time), or a
reference to the name of the type (so that the type id can be
resolved at runtime).

Lastly, instead of storing the method parameter names as a
comma-separated list that needs to be parsed at runtime (which was
how it was done prior to this commit), the names are now stored as
separate entries in the meta-object string table, and their indexes
are stored immediately after the method type info array. Hence,
parameter names can be queried through the public API without
parsing/allocating/copying, too.

Task-number: QTBUG-24154
Change-Id: Idb7ab81f12d4bfd658b74e18a0fce594f580cba3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-02-29 12:50:14 +01:00
..
animation Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
codecs Eliminate duplicate data row names in utf8 autotest. 2012-02-14 02:48:35 +01:00
global Fixed tst_qlogging app silently not compiled in some -fast builds. 2012-02-22 04:48:36 +01:00
io Fix inconsistent auto test executable names 2012-02-27 13:55:12 +01:00
itemmodels Eliminate duplicate data row names from corelib autotests. 2012-02-14 06:19:16 +01:00
json compile fix: parse under C++11 2012-02-24 22:39:59 +01:00
kernel Long live Qt5 meta-object method/property descriptors 2012-02-29 12:50:14 +01:00
mimetypes qmimetype: Fix test failure when LC_ALL is set. 2012-02-21 15:28:40 +01:00
plugin Fix QLibrary autotest for Windows 2012-02-28 12:45:28 +01:00
statemachine Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
thread Fix QThreadstorage test. 2012-02-27 18:33:50 +01:00
tools Merge remote-tracking branch 'gerrit/master' into containers 2012-02-29 00:58:13 +01:00
xml Eliminate duplicate data row names from corelib autotests. 2012-02-14 06:19:16 +01:00
corelib.pro Import QMimeType / QMimeDatabase into QtCore. 2012-02-18 22:19:43 +01:00