From 4c892e14c6929e174c8bccc9ec5693a63a8ce69c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Tue, 3 Apr 2012 13:23:55 +0200 Subject: Introduce initializer macros for QString- and QByteArrayData This enables easier updating of those structs, by reducing the amount of code that needs to be fixed. The common (and known) use cases are covered by the two macros being introduced in each case. Change-Id: I44981ca9b9b034f99238a11797b30bb85471cfb7 Reviewed-by: Thiago Macieira --- src/corelib/tools/qbytearray.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/corelib/tools/qbytearray.h') diff --git a/src/corelib/tools/qbytearray.h b/src/corelib/tools/qbytearray.h index 2065c8fe91..93e241904d 100644 --- a/src/corelib/tools/qbytearray.h +++ b/src/corelib/tools/qbytearray.h @@ -149,14 +149,22 @@ struct QByteArrayDataPtr QByteArrayData *ptr; }; +#define Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(size, offset) \ + { Q_REFCOUNT_INITIALIZE_STATIC, size, 0, 0, offset } \ + /**/ + +#define Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER(size) \ + Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(size, sizeof(QByteArrayData)) \ + /**/ #if defined(Q_COMPILER_LAMBDA) # define QByteArrayLiteral(str) \ ([]() -> QByteArrayDataPtr { \ enum { Size = sizeof(str) - 1 }; \ - static const QStaticByteArrayData qbytearray_literal = \ - { { Q_REFCOUNT_INITIALIZE_STATIC, Size, 0, 0, sizeof(QByteArrayData) }, str }; \ + static const QStaticByteArrayData qbytearray_literal = { \ + Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER(Size), \ + str }; \ QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; \ return holder; \ }()) \ @@ -170,8 +178,9 @@ struct QByteArrayDataPtr # define QByteArrayLiteral(str) \ __extension__ ({ \ enum { Size = sizeof(str) - 1 }; \ - static const QStaticByteArrayData qbytearray_literal = \ - { { Q_REFCOUNT_INITIALIZE_STATIC, Size, 0, 0, sizeof(QByteArrayData) }, str }; \ + static const QStaticByteArrayData qbytearray_literal = { \ + Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER(Size), \ + str }; \ QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; \ holder; \ }) \ -- cgit v1.2.3