| Line | Source Code | Coverage |
|---|
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | | - |
| 6 | | - |
| 7 | | - |
| 8 | | - |
| 9 | class QDBusCustomTypeInfo | - |
| 10 | { | - |
| 11 | public: | - |
| 12 | QDBusCustomTypeInfo() : signature(), marshall(0), demarshall(0) | - |
| 13 | { } executed: }Execution Count:15691 | 15691 |
| 14 | | - |
| 15 | | - |
| 16 | | - |
| 17 | QByteArray signature; | - |
| 18 | QDBusMetaType::MarshallFunction marshall; | - |
| 19 | QDBusMetaType::DemarshallFunction demarshall; | - |
| 20 | }; | - |
| 21 | | - |
| 22 | template<typename T> | - |
| 23 | inline static void registerHelper(T * = 0) | - |
| 24 | { | - |
| 25 | void (*mf)(QDBusArgument &, const T *) = qDBusMarshallHelper<T>; | - |
| 26 | void (*df)(const QDBusArgument &, T *) = qDBusDemarshallHelper<T>; | - |
| 27 | QDBusMetaType::registerMarshallOperators(qMetaTypeId<T>(), | - |
| 28 | reinterpret_cast<QDBusMetaType::MarshallFunction>(mf), | - |
| 29 | reinterpret_cast<QDBusMetaType::DemarshallFunction>(df)); | - |
| 30 | } executed: }Execution Count:210 | 210 |
| 31 | | - |
| 32 | void QDBusMetaTypeId::init() | - |
| 33 | { | - |
| 34 | static QBasicAtomicInt initialized = { (false) }; | - |
| 35 | | - |
| 36 | | - |
| 37 | | - |
| 38 | if (!initialized.load()) { evaluated: !initialized.load()| yes Evaluation Count:15 | yes Evaluation Count:4940 |
| 15-4940 |
| 39 | | - |
| 40 | (void)message(); | - |
| 41 | (void)argument(); | - |
| 42 | (void)variant(); | - |
| 43 | (void)objectpath(); | - |
| 44 | (void)signature(); | - |
| 45 | (void)error(); | - |
| 46 | (void)unixfd(); | - |
| 47 | | - |
| 48 | | - |
| 49 | | - |
| 50 | registerHelper<QDate>(); | - |
| 51 | registerHelper<QTime>(); | - |
| 52 | registerHelper<QDateTime>(); | - |
| 53 | registerHelper<QRect>(); | - |
| 54 | registerHelper<QRectF>(); | - |
| 55 | registerHelper<QSize>(); | - |
| 56 | registerHelper<QSizeF>(); | - |
| 57 | registerHelper<QPoint>(); | - |
| 58 | registerHelper<QPointF>(); | - |
| 59 | registerHelper<QLine>(); | - |
| 60 | registerHelper<QLineF>(); | - |
| 61 | registerHelper<QVariantList>(); | - |
| 62 | registerHelper<QVariantMap>(); | - |
| 63 | registerHelper<QVariantHash>(); | - |
| 64 | | - |
| 65 | qDBusRegisterMetaType<QList<bool> >(); | - |
| 66 | qDBusRegisterMetaType<QList<short> >(); | - |
| 67 | qDBusRegisterMetaType<QList<ushort> >(); | - |
| 68 | qDBusRegisterMetaType<QList<int> >(); | - |
| 69 | qDBusRegisterMetaType<QList<uint> >(); | - |
| 70 | qDBusRegisterMetaType<QList<qlonglong> >(); | - |
| 71 | qDBusRegisterMetaType<QList<qulonglong> >(); | - |
| 72 | qDBusRegisterMetaType<QList<double> >(); | - |
| 73 | qDBusRegisterMetaType<QList<QDBusObjectPath> >(); | - |
| 74 | qDBusRegisterMetaType<QList<QDBusSignature> >(); | - |
| 75 | qDBusRegisterMetaType<QList<QDBusUnixFileDescriptor> >(); | - |
| 76 | | - |
| 77 | | - |
| 78 | initialized.store(true); | - |
| 79 | } executed: }Execution Count:15 | 15 |
| 80 | } executed: }Execution Count:4955 | 4955 |
| 81 | | - |
| 82 | static QVector<QDBusCustomTypeInfo> *customTypes() { static QGlobalStatic<QVector<QDBusCustomTypeInfo> > thisGlobalStatic = { { (0) }, false }; if (!thisGlobalStatic.pointer.load() && !thisGlobalStatic.destroyed) { QVector<QDBusCustomTypeInfo> *x = new QVector<QDBusCustomTypeInfo>; if (!thisGlobalStatic.pointer.testAndSetOrdered(0, x)) delete x; else static QGlobalStaticDeleter<QVector<QDBusCustomTypeInfo> > cleanup(thisGlobalStatic); } return thisGlobalStatic.pointer.load(); } never executed: delete x; executed: return thisGlobalStatic.pointer.load();Execution Count:1336 partially evaluated: !thisGlobalStatic.pointer.testAndSetOrdered(0, x)| no Evaluation Count:0 | yes Evaluation Count:15 |
evaluated: !thisGlobalStatic.pointer.load()| yes Evaluation Count:15 | yes Evaluation Count:1321 |
partially evaluated: !thisGlobalStatic.destroyed| yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-1336 |
| 83 | static QReadWriteLock *customTypesLock() { static QGlobalStatic<QReadWriteLock > thisGlobalStatic = { { (0) }, false }; if (!thisGlobalStatic.pointer.load() && !thisGlobalStatic.destroyed) { QReadWriteLock *x = new QReadWriteLock; if (!thisGlobalStatic.pointer.testAndSetOrdered(0, x)) delete x; else static QGlobalStaticDeleter<QReadWriteLock > cleanup(thisGlobalStatic); } return thisGlobalStatic.pointer.load(); } never executed: delete x; executed: return thisGlobalStatic.pointer.load();Execution Count:1397 partially evaluated: !thisGlobalStatic.pointer.testAndSetOrdered(0, x)| no Evaluation Count:0 | yes Evaluation Count:15 |
evaluated: !thisGlobalStatic.pointer.load()| yes Evaluation Count:15 | yes Evaluation Count:1382 |
partially evaluated: !thisGlobalStatic.destroyed| yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-1397 |
| 84 | void QDBusMetaType::registerMarshallOperators(int id, MarshallFunction mf, | - |
| 85 | DemarshallFunction df) | - |
| 86 | { | - |
| 87 | QByteArray var; | - |
| 88 | QVector<QDBusCustomTypeInfo> *ct = customTypes(); | - |
| 89 | if (id < 0 || !mf || !df || !ct) partially evaluated: id < 0| no Evaluation Count:0 | yes Evaluation Count:433 |
partially evaluated: !mf| no Evaluation Count:0 | yes Evaluation Count:433 |
partially evaluated: !df| no Evaluation Count:0 | yes Evaluation Count:433 |
partially evaluated: !ct| no Evaluation Count:0 | yes Evaluation Count:433 |
| 0-433 |
| 90 | return; | 0 |
| 91 | | - |
| 92 | QWriteLocker locker(customTypesLock()); | - |
| 93 | if (id >= ct->size()) evaluated: id >= ct->size()| yes Evaluation Count:320 | yes Evaluation Count:113 |
| 113-320 |
| 94 | ct->resize(id + 1); executed: ct->resize(id + 1);Execution Count:320 | 320 |
| 95 | QDBusCustomTypeInfo &info = (*ct)[id]; | - |
| 96 | info.marshall = mf; | - |
| 97 | info.demarshall = df; | - |
| 98 | } executed: }Execution Count:433 | 433 |
| 99 | | - |
| 100 | | - |
| 101 | | - |
| 102 | | - |
| 103 | | - |
| 104 | | - |
| 105 | | - |
| 106 | bool QDBusMetaType::marshall(QDBusArgument &arg, int id, const void *data) | - |
| 107 | { | - |
| 108 | QDBusMetaTypeId::init(); | - |
| 109 | | - |
| 110 | MarshallFunction mf; | - |
| 111 | { | - |
| 112 | QReadLocker locker(customTypesLock()); | - |
| 113 | QVector<QDBusCustomTypeInfo> *ct = customTypes(); | - |
| 114 | if (id >= ct->size()) partially evaluated: id >= ct->size()| no Evaluation Count:0 | yes Evaluation Count:115 |
| 0-115 |
| 115 | return false; never executed: return false; | 0 |
| 116 | | - |
| 117 | const QDBusCustomTypeInfo &info = (*ct).at(id); | - |
| 118 | if (!info.marshall) { partially evaluated: !info.marshall| no Evaluation Count:0 | yes Evaluation Count:115 |
| 0-115 |
| 119 | mf = 0; | - |
| 120 | return false; never executed: return false; | 0 |
| 121 | } else | - |
| 122 | mf = info.marshall; executed: mf = info.marshall;Execution Count:115 | 115 |
| 123 | } | - |
| 124 | | - |
| 125 | mf(arg, data); | - |
| 126 | return true; executed: return true;Execution Count:115 | 115 |
| 127 | } | - |
| 128 | | - |
| 129 | | - |
| 130 | | - |
| 131 | | - |
| 132 | | - |
| 133 | | - |
| 134 | | - |
| 135 | bool QDBusMetaType::demarshall(const QDBusArgument &arg, int id, void *data) | - |
| 136 | { | - |
| 137 | QDBusMetaTypeId::init(); | - |
| 138 | | - |
| 139 | DemarshallFunction df; | - |
| 140 | { | - |
| 141 | QReadLocker locker(customTypesLock()); | - |
| 142 | QVector<QDBusCustomTypeInfo> *ct = customTypes(); | - |
| 143 | if (id >= ct->size()) partially evaluated: id >= ct->size()| no Evaluation Count:0 | yes Evaluation Count:43 |
| 0-43 |
| 144 | return false; never executed: return false; | 0 |
| 145 | | - |
| 146 | const QDBusCustomTypeInfo &info = (*ct).at(id); | - |
| 147 | if (!info.demarshall) { partially evaluated: !info.demarshall| no Evaluation Count:0 | yes Evaluation Count:43 |
| 0-43 |
| 148 | df = 0; | - |
| 149 | return false; never executed: return false; | 0 |
| 150 | } else | - |
| 151 | df = info.demarshall; executed: df = info.demarshall;Execution Count:43 | 43 |
| 152 | } | - |
| 153 | | - |
| 154 | QDBusArgument copy = arg; | - |
| 155 | df(copy, data); | - |
| 156 | | - |
| 157 | | - |
| 158 | | - |
| 159 | | - |
| 160 | | - |
| 161 | return true; executed: return true;Execution Count:43 | 43 |
| 162 | } | - |
| 163 | int QDBusMetaType::signatureToType(const char *signature) | - |
| 164 | { | - |
| 165 | if (!signature) partially evaluated: !signature| no Evaluation Count:0 | yes Evaluation Count:2012 |
| 0-2012 |
| 166 | return QMetaType::UnknownType; never executed: return QMetaType::UnknownType; | 0 |
| 167 | | - |
| 168 | QDBusMetaTypeId::init(); | - |
| 169 | switch (signature[0]) | - |
| 170 | { | - |
| 171 | case ((int) 'b'): | - |
| 172 | return QVariant::Bool; executed: return QVariant::Bool;Execution Count:78 | 78 |
| 173 | | - |
| 174 | case ((int) 'y'): | - |
| 175 | return QMetaType::UChar; executed: return QMetaType::UChar;Execution Count:78 | 78 |
| 176 | | - |
| 177 | case ((int) 'n'): | - |
| 178 | return QMetaType::Short; executed: return QMetaType::Short;Execution Count:78 | 78 |
| 179 | | - |
| 180 | case ((int) 'q'): | - |
| 181 | return QMetaType::UShort; executed: return QMetaType::UShort;Execution Count:78 | 78 |
| 182 | | - |
| 183 | case ((int) 'i'): | - |
| 184 | return QVariant::Int; executed: return QVariant::Int;Execution Count:178 | 178 |
| 185 | | - |
| 186 | case ((int) 'u'): | - |
| 187 | return QVariant::UInt; executed: return QVariant::UInt;Execution Count:78 | 78 |
| 188 | | - |
| 189 | case ((int) 'x'): | - |
| 190 | return QVariant::LongLong; executed: return QVariant::LongLong;Execution Count:78 | 78 |
| 191 | | - |
| 192 | case ((int) 't'): | - |
| 193 | return QVariant::ULongLong; executed: return QVariant::ULongLong;Execution Count:78 | 78 |
| 194 | | - |
| 195 | case ((int) 'd'): | - |
| 196 | return QVariant::Double; executed: return QVariant::Double;Execution Count:78 | 78 |
| 197 | | - |
| 198 | case ((int) 's'): | - |
| 199 | return QVariant::String; executed: return QVariant::String;Execution Count:332 | 332 |
| 200 | | - |
| 201 | case ((int) 'o'): | - |
| 202 | return QDBusMetaTypeId::objectpath(); executed: return QDBusMetaTypeId::objectpath();Execution Count:79 | 79 |
| 203 | | - |
| 204 | case ((int) 'g'): | - |
| 205 | return QDBusMetaTypeId::signature(); executed: return QDBusMetaTypeId::signature();Execution Count:78 | 78 |
| 206 | | - |
| 207 | case int('h'): | - |
| 208 | return QDBusMetaTypeId::unixfd(); executed: return QDBusMetaTypeId::unixfd();Execution Count:1 | 1 |
| 209 | | - |
| 210 | case ((int) 'v'): | - |
| 211 | return QDBusMetaTypeId::variant(); executed: return QDBusMetaTypeId::variant();Execution Count:142 | 142 |
| 212 | | - |
| 213 | case ((int) 'a'): | - |
| 214 | switch (signature[1]) { | - |
| 215 | case ((int) 'y'): | - |
| 216 | return QVariant::ByteArray; executed: return QVariant::ByteArray;Execution Count:79 | 79 |
| 217 | | - |
| 218 | case ((int) 's'): | - |
| 219 | return QVariant::StringList; executed: return QVariant::StringList;Execution Count:81 | 81 |
| 220 | | - |
| 221 | case ((int) 'v'): | - |
| 222 | return QVariant::List; executed: return QVariant::List;Execution Count:78 | 78 |
| 223 | | - |
| 224 | case ((int) 'o'): | - |
| 225 | return qMetaTypeId<QList<QDBusObjectPath> >(); executed: return qMetaTypeId<QList<QDBusObjectPath> >();Execution Count:3 | 3 |
| 226 | | - |
| 227 | case ((int) 'g'): | - |
| 228 | return qMetaTypeId<QList<QDBusSignature> >(); executed: return qMetaTypeId<QList<QDBusSignature> >();Execution Count:1 | 1 |
| 229 | | - |
| 230 | } | - |
| 231 | | - |
| 232 | default: | - |
| 233 | return QMetaType::UnknownType; executed: return QMetaType::UnknownType;Execution Count:336 | 336 |
| 234 | } | - |
| 235 | } | 0 |
| 236 | const char *QDBusMetaType::typeToSignature(int type) | - |
| 237 | { | - |
| 238 | | - |
| 239 | switch (type) | - |
| 240 | { | - |
| 241 | case QMetaType::UChar: | - |
| 242 | return "y"; executed: return "y";Execution Count:69 | 69 |
| 243 | | - |
| 244 | case QVariant::Bool: | - |
| 245 | return "b"; executed: return "b";Execution Count:78 | 78 |
| 246 | | - |
| 247 | case QMetaType::Short: | - |
| 248 | return "n"; executed: return "n";Execution Count:85 | 85 |
| 249 | | - |
| 250 | case QMetaType::UShort: | - |
| 251 | return "q"; executed: return "q";Execution Count:69 | 69 |
| 252 | | - |
| 253 | case QVariant::Int: | - |
| 254 | return "i"; executed: return "i";Execution Count:409 | 409 |
| 255 | | - |
| 256 | case QVariant::UInt: | - |
| 257 | return "u"; executed: return "u";Execution Count:101 | 101 |
| 258 | | - |
| 259 | case QVariant::LongLong: | - |
| 260 | return "x"; executed: return "x";Execution Count:80 | 80 |
| 261 | | - |
| 262 | case QVariant::ULongLong: | - |
| 263 | return "t"; executed: return "t";Execution Count:69 | 69 |
| 264 | | - |
| 265 | case QVariant::Double: | - |
| 266 | return "d"; executed: return "d";Execution Count:69 | 69 |
| 267 | | - |
| 268 | case QVariant::String: | - |
| 269 | return "s"; executed: return "s";Execution Count:2020 | 2020 |
| 270 | | - |
| 271 | case QVariant::StringList: | - |
| 272 | return "a" | 82 |
| 273 | "s"; executed: return "a" "s";Execution Count:82 | 82 |
| 274 | | - |
| 275 | case QVariant::ByteArray: | - |
| 276 | return "a" | 81 |
| 277 | "y"; executed: return "a" "y";Execution Count:81 | 81 |
| 278 | } | - |
| 279 | | - |
| 280 | QDBusMetaTypeId::init(); | - |
| 281 | if (type == QDBusMetaTypeId::variant()) evaluated: type == QDBusMetaTypeId::variant()| yes Evaluation Count:318 | yes Evaluation Count:875 |
| 318-875 |
| 282 | return "v"; executed: return "v";Execution Count:318 | 318 |
| 283 | else if (type == QDBusMetaTypeId::objectpath()) evaluated: type == QDBusMetaTypeId::objectpath()| yes Evaluation Count:66 | yes Evaluation Count:809 |
| 66-809 |
| 284 | return "o"; executed: return "o";Execution Count:66 | 66 |
| 285 | else if (type == QDBusMetaTypeId::signature()) evaluated: type == QDBusMetaTypeId::signature()| yes Evaluation Count:64 | yes Evaluation Count:745 |
| 64-745 |
| 286 | return "g"; executed: return "g";Execution Count:64 | 64 |
| 287 | else if (type == QDBusMetaTypeId::unixfd()) partially evaluated: type == QDBusMetaTypeId::unixfd()| no Evaluation Count:0 | yes Evaluation Count:745 |
| 0-745 |
| 288 | return "h"; never executed: return "h"; | 0 |
| 289 | | - |
| 290 | | - |
| 291 | QVector<QDBusCustomTypeInfo> *ct = customTypes(); | - |
| 292 | { | - |
| 293 | QReadLocker locker(customTypesLock()); | - |
| 294 | if (type >= ct->size()) evaluated: type >= ct->size()| yes Evaluation Count:2 | yes Evaluation Count:743 |
| 2-743 |
| 295 | return 0; executed: return 0;Execution Count:2 | 2 |
| 296 | | - |
| 297 | const QDBusCustomTypeInfo &info = (*ct).at(type); | - |
| 298 | | - |
| 299 | if (!info.signature.isNull()) evaluated: !info.signature.isNull()| yes Evaluation Count:667 | yes Evaluation Count:76 |
| 76-667 |
| 300 | return info.signature; executed: return info.signature;Execution Count:667 | 667 |
| 301 | | - |
| 302 | if (!info.marshall) evaluated: !info.marshall| yes Evaluation Count:15 | yes Evaluation Count:61 |
| 15-61 |
| 303 | return 0; executed: return 0;Execution Count:15 | 15 |
| 304 | } | - |
| 305 | | - |
| 306 | | - |
| 307 | QDBusCustomTypeInfo *info; | - |
| 308 | { | - |
| 309 | | - |
| 310 | | - |
| 311 | QByteArray signature = QDBusArgumentPrivate::createSignature(type); | - |
| 312 | | - |
| 313 | | - |
| 314 | QWriteLocker locker(customTypesLock()); | - |
| 315 | info = &(*ct)[type]; | - |
| 316 | info->signature = signature; | - |
| 317 | } | - |
| 318 | return info->signature; executed: return info->signature;Execution Count:61 | 61 |
| 319 | } | - |
| 320 | | - |
| 321 | | - |
| 322 | | - |
| | |