| Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/gui/accessible/qaccessiblecache.cpp | 
| Switch to Source code | Preprocessed file | 
| Line | Source | Count | ||||||
|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||
| 2 | - | |||||||
| 3 | - | |||||||
| 4 | - | |||||||
| 5 | - | |||||||
| 6 | - | |||||||
| 7 | - | |||||||
| 8 | - | |||||||
| 9 | - | |||||||
| 10 | - | |||||||
| 11 | - | |||||||
| 12 | namespace { namespace Q_QGS_qAccessibleCache { typedef QAccessibleCache Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
 never executed:   }guard.store(QtGlobalStatic::Destroyed);never executed:   }; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ())) : value () { guard.store(QtGlobalStatic::Initialized); } } holder; returnend of blocknever executed:   &holder.value;return &holder.value;never executed:   } } } static QGlobalStatic<QAccessibleCache, Q_QGS_qAccessibleCache::innerFunction, Q_QGS_qAccessibleCache::guard> qAccessibleCache;return &holder.value; | 0 | ||||||
| 13 | - | |||||||
| 14 | QAccessibleCache *QAccessibleCache::instance() | - | ||||||
| 15 | { | - | ||||||
| 16 |     return never executed:   qAccessibleCache;return qAccessibleCache;never executed:  return qAccessibleCache; | 0 | ||||||
| 17 | } | - | ||||||
| 18 | - | |||||||
| 19 | - | |||||||
| 20 | - | |||||||
| 21 | - | |||||||
| 22 | - | |||||||
| 23 | - | |||||||
| 24 | QAccessible::Id QAccessibleCache::acquireId() const | - | ||||||
| 25 | { | - | ||||||
| 26 | static const QAccessible::Id FirstId = QAccessible::Id(2147483647) + 1; | - | ||||||
| 27 | static QAccessible::Id lastUsedId = FirstId; | - | ||||||
| 28 | - | |||||||
| 29 |     while (idToInterface.contains(lastUsedId)
  | 0 | ||||||
| 30 | - | |||||||
| 31 | - | |||||||
| 32 |         if (lastUsedId == (2147483647 * 2U + 1U) - 1
  | 0 | ||||||
| 33 |             lastUsedId = FirstId; never executed:  lastUsedId = FirstId; | 0 | ||||||
| 34 | else | - | ||||||
| 35 |             ++ never executed:  lastUsedId;++lastUsedId;never executed:  ++lastUsedId; | 0 | ||||||
| 36 | } | - | ||||||
| 37 | - | |||||||
| 38 |     return never executed:   lastUsedId;return lastUsedId;never executed:  return lastUsedId; | 0 | ||||||
| 39 | } | - | ||||||
| 40 | - | |||||||
| 41 | QAccessibleInterface *QAccessibleCache::interfaceForId(QAccessible::Id id) const | - | ||||||
| 42 | { | - | ||||||
| 43 |     return never executed:   idToInterface.value(id);return idToInterface.value(id);never executed:  return idToInterface.value(id); | 0 | ||||||
| 44 | } | - | ||||||
| 45 | - | |||||||
| 46 | QAccessible::Id QAccessibleCache::idForInterface(QAccessibleInterface *iface) const | - | ||||||
| 47 | { | - | ||||||
| 48 |     return never executed:   interfaceToId.value(iface);return interfaceToId.value(iface);never executed:  return interfaceToId.value(iface); | 0 | ||||||
| 49 | } | - | ||||||
| 50 | - | |||||||
| 51 | QAccessible::Id QAccessibleCache::insert(QObject *object, QAccessibleInterface *iface) const | - | ||||||
| 52 | { | - | ||||||
| 53 | ((!(iface)) ? qt_assert("iface",__FILE__,87) : qt_noop()); | - | ||||||
| 54 | (void)object; | - | ||||||
| 55 | - | |||||||
| 56 | - | |||||||
| 57 | ((!(!objectToId.contains(object))) ? qt_assert("!objectToId.contains(object)",__FILE__,91) : qt_noop()); | - | ||||||
| 58 | ((!(!interfaceToId.contains(iface))) ? qt_assert_x("", "Accessible interface inserted into cache twice!",__FILE__,92) : qt_noop()); | - | ||||||
| 59 | - | |||||||
| 60 | QAccessible::Id id = acquireId(); | - | ||||||
| 61 | QObject *obj = iface->object(); | - | ||||||
| 62 | ((!(object == obj)) ? qt_assert("object == obj",__FILE__,96) : qt_noop()); | - | ||||||
| 63 |     if (obj
  | 0 | ||||||
| 64 | objectToId.insert(obj, id); | - | ||||||
| 65 | connect(obj, &QObject::destroyed, this, &QAccessibleCache::objectDestroyed); | - | ||||||
| 66 |     } never executed:  end of block | 0 | ||||||
| 67 | idToInterface.insert(id, iface); | - | ||||||
| 68 | interfaceToId.insert(iface, id); | - | ||||||
| 69 |     return never executed:   id;return id;never executed:  return id; | 0 | ||||||
| 70 | } | - | ||||||
| 71 | - | |||||||
| 72 | void QAccessibleCache::objectDestroyed(QObject* obj) | - | ||||||
| 73 | { | - | ||||||
| 74 | QAccessible::Id id = objectToId.value(obj); | - | ||||||
| 75 |     if (id
  | 0 | ||||||
| 76 | ((!(idToInterface.contains(id))) ? qt_assert_x("", "QObject with accessible interface deleted, where interface not in cache!",__FILE__,110) : qt_noop()); | - | ||||||
| 77 | deleteInterface(id, obj); | - | ||||||
| 78 |     } never executed:  end of block | 0 | ||||||
| 79 | } never executed:  end of block | 0 | ||||||
| 80 | - | |||||||
| 81 | void QAccessibleCache::deleteInterface(QAccessible::Id id, QObject *obj) | - | ||||||
| 82 | { | - | ||||||
| 83 | QAccessibleInterface *iface = idToInterface.take(id); | - | ||||||
| 84 | interfaceToId.take(iface); | - | ||||||
| 85 |     if (!obj
  | 0 | ||||||
| 86 |         obj = iface->object(); never executed:  obj = iface->object(); | 0 | ||||||
| 87 |     if (obj
  | 0 | ||||||
| 88 |         objectToId.remove(obj); never executed:  objectToId.remove(obj); | 0 | ||||||
| 89 | delete iface; | - | ||||||
| 90 | - | |||||||
| 91 | - | |||||||
| 92 | - | |||||||
| 93 | - | |||||||
| 94 | } never executed:  end of block | 0 | ||||||
| 95 | - | |||||||
| 96 | - | |||||||
| Switch to Source code | Preprocessed file |