Class std::__true_type
   size=1 align=1
   base size=0 base align=1
std::__true_type (0x7f7183dfa5a0) 0 empty

Class std::__false_type
   size=1 align=1
   base size=0 base align=1
std::__false_type (0x7f7183dfa600) 0 empty

Class std::input_iterator_tag
   size=1 align=1
   base size=0 base align=1
std::input_iterator_tag (0x7f7183e8c420) 0 empty

Class std::output_iterator_tag
   size=1 align=1
   base size=0 base align=1
std::output_iterator_tag (0x7f7183e8c480) 0 empty

Class std::forward_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::forward_iterator_tag (0x7f7186398270) 0 empty
  std::input_iterator_tag (0x7f7183e8c4e0) 0 empty

Class std::bidirectional_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::bidirectional_iterator_tag (0x7f71863982d8) 0 empty
  std::forward_iterator_tag (0x7f7186398340) 0 empty
    std::input_iterator_tag (0x7f7183e8c540) 0 empty

Class std::random_access_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::random_access_iterator_tag (0x7f71863983a8) 0 empty
  std::bidirectional_iterator_tag (0x7f7186398410) 0 empty
    std::forward_iterator_tag (0x7f7186398478) 0 empty
      std::input_iterator_tag (0x7f7183e8c5a0) 0 empty

Class wait
   size=4 align=4
   base size=4 base align=4
wait (0x7f7183ade0c0) 0

Class __locale_struct
   size=232 align=8
   base size=232 base align=8
__locale_struct (0x7f7183ade300) 0

Class timespec
   size=16 align=8
   base size=16 base align=8
timespec (0x7f7183ade420) 0

Class timeval
   size=16 align=8
   base size=16 base align=8
timeval (0x7f7183ade480) 0

Class __pthread_internal_list
   size=16 align=8
   base size=16 base align=8
__pthread_internal_list (0x7f7183ade5a0) 0

Class random_data
   size=48 align=8
   base size=48 base align=8
random_data (0x7f7183adea20) 0

Class drand48_data
   size=24 align=8
   base size=24 base align=8
drand48_data (0x7f7183adea80) 0

Vtable for std::exception
std::exception::_ZTVSt9exception: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt9exception)
16    (int (*)(...))std::exception::~exception
24    (int (*)(...))std::exception::~exception
32    (int (*)(...))std::exception::what

Class std::exception
   size=8 align=8
   base size=8 base align=8
std::exception (0x7f7183adec60) 0 nearly-empty
    vptr=((& std::exception::_ZTVSt9exception) + 16u)

Vtable for std::bad_exception
std::bad_exception::_ZTVSt13bad_exception: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt13bad_exception)
16    (int (*)(...))std::bad_exception::~bad_exception
24    (int (*)(...))std::bad_exception::~bad_exception
32    (int (*)(...))std::bad_exception::what

Class std::bad_exception
   size=8 align=8
   base size=8 base align=8
std::bad_exception (0x7f7186398a28) 0 nearly-empty
    vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 16u)
  std::exception (0x7f7183adecc0) 0 nearly-empty
      primary-for std::bad_exception (0x7f7186398a28)

Vtable for std::bad_alloc
std::bad_alloc::_ZTVSt9bad_alloc: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt9bad_alloc)
16    (int (*)(...))std::bad_alloc::~bad_alloc
24    (int (*)(...))std::bad_alloc::~bad_alloc
32    (int (*)(...))std::bad_alloc::what

Class std::bad_alloc
   size=8 align=8
   base size=8 base align=8
std::bad_alloc (0x7f7186398bc8) 0 nearly-empty
    vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 16u)
  std::exception (0x7f7183aded20) 0 nearly-empty
      primary-for std::bad_alloc (0x7f7186398bc8)

Class std::nothrow_t
   size=1 align=1
   base size=0 base align=1
std::nothrow_t (0x7f7183aded80) 0 empty

Class qIsNull(double)::U
   size=8 align=8
   base size=8 base align=8
qIsNull(double)::U (0x7f71839ba3c0) 0

Class qIsNull(float)::U
   size=4 align=4
   base size=4 base align=4
qIsNull(float)::U (0x7f71839ba420) 0

Class QMessageLogContext
   size=32 align=8
   base size=32 base align=8
QMessageLogContext (0x7f71839ba540) 0

Class QMessageLogger
   size=32 align=8
   base size=32 base align=8
QMessageLogger (0x7f71839ba5a0) 0

Class QtPrivate::big_
   size=2 align=1
   base size=2 base align=1
QtPrivate::big_ (0x7f7183a2e180) 0

Class QFlag
   size=4 align=4
   base size=4 base align=4
QFlag (0x7f7183a82d80) 0

Class QIncompatibleFlag
   size=4 align=4
   base size=4 base align=4
QIncompatibleFlag (0x7f7183a82e40) 0

Class QSysInfo
   size=1 align=1
   base size=0 base align=1
QSysInfo (0x7f7183a82f60) 0 empty

Class QInternal
   size=1 align=1
   base size=0 base align=1
QInternal (0x7f718373de40) 0 empty

Class QGenericArgument
   size=16 align=8
   base size=16 base align=8
QGenericArgument (0x7f7183512660) 0

Class QGenericReturnArgument
   size=16 align=8
   base size=16 base align=8
QGenericReturnArgument (0x7f718353a068) 0
  QGenericArgument (0x7f71835126c0) 0

Class QMetaObject
   size=48 align=8
   base size=48 base align=8
QMetaObject (0x7f7183512840) 0

Class QMetaObject::Connection
   size=8 align=8
   base size=8 base align=8
QMetaObject::Connection (0x7f7183512960) 0

Class QLatin1Char
   size=1 align=1
   base size=1 base align=1
QLatin1Char (0x7f71835129c0) 0

Class QChar
   size=2 align=2
   base size=2 base align=2
QChar (0x7f7183512a20) 0

Class QAtomicInt
   size=4 align=4
   base size=4 base align=4
QAtomicInt (0x7f71832ff138) 0
  QBasicAtomicInteger<int> (0x7f7183617660) 0

Class QtPrivate::RefCount
   size=4 align=4
   base size=4 base align=4
QtPrivate::RefCount (0x7f7183617720) 0

Class QArrayData
   size=24 align=8
   base size=24 base align=8
QArrayData (0x7f7183617780) 0

Class QByteArrayDataPtr
   size=8 align=8
   base size=8 base align=8
QByteArrayDataPtr (0x7f7183617ae0) 0

Class QByteArray
   size=8 align=8
   base size=8 base align=8
QByteArray (0x7f7183617b40) 0

Class QByteRef
   size=16 align=8
   base size=12 base align=8
QByteRef (0x7f7183617c00) 0

Class lconv
   size=96 align=8
   base size=96 base align=8
lconv (0x7f7183491120) 0

Vtable for __cxxabiv1::__forced_unwind
__cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN10__cxxabiv115__forced_unwindE)
16    (int (*)(...))__cxxabiv1::__forced_unwind::~__forced_unwind
24    (int (*)(...))__cxxabiv1::__forced_unwind::~__forced_unwind
32    (int (*)(...))__cxa_pure_virtual

Class __cxxabiv1::__forced_unwind
   size=8 align=8
   base size=8 base align=8
__cxxabiv1::__forced_unwind (0x7f7183491180) 0 nearly-empty
    vptr=((& __cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE) + 16u)

Class sched_param
   size=4 align=4
   base size=4 base align=4
sched_param (0x7f7183136c00) 0

Class __sched_param
   size=4 align=4
   base size=4 base align=4
__sched_param (0x7f7183136c60) 0

Class tm
   size=56 align=8
   base size=56 base align=8
tm (0x7f7183136d80) 0

Class itimerspec
   size=32 align=8
   base size=32 base align=8
itimerspec (0x7f7183136de0) 0

Class _pthread_cleanup_buffer
   size=32 align=8
   base size=32 base align=8
_pthread_cleanup_buffer (0x7f7183136e40) 0

Class __pthread_cleanup_frame
   size=24 align=8
   base size=24 base align=8
__pthread_cleanup_frame (0x7f7183136f60) 0

Class __pthread_cleanup_class
   size=24 align=8
   base size=24 base align=8
__pthread_cleanup_class (0x7f718319f000) 0

Class QLatin1String
   size=16 align=8
   base size=16 base align=8
QLatin1String (0x7f718319f780) 0

Class QStringDataPtr
   size=8 align=8
   base size=8 base align=8
QStringDataPtr (0x7f718319f8a0) 0

Class QString::Null
   size=1 align=1
   base size=0 base align=1
QString::Null (0x7f718319f960) 0 empty

Class QString
   size=8 align=8
   base size=8 base align=8
QString (0x7f718319f900) 0

Class QCharRef
   size=16 align=8
   base size=12 base align=8
QCharRef (0x7f7182d37060) 0

Class QStringRef
   size=16 align=8
   base size=16 base align=8
QStringRef (0x7f7182d37b40) 0

Class std::locale
   size=8 align=8
   base size=8 base align=8
std::locale (0x7f7182e524e0) 0

Vtable for std::locale::facet
std::locale::facet::_ZTVNSt6locale5facetE: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt6locale5facetE)
16    (int (*)(...))std::locale::facet::~facet
24    (int (*)(...))std::locale::facet::~facet

Class std::locale::facet
   size=16 align=8
   base size=12 base align=8
std::locale::facet (0x7f7182e52540) 0
    vptr=((& std::locale::facet::_ZTVNSt6locale5facetE) + 16u)

Class std::locale::id
   size=8 align=8
   base size=8 base align=8
std::locale::id (0x7f7182e525a0) 0

Class std::locale::_Impl
   size=40 align=8
   base size=40 base align=8
std::locale::_Impl (0x7f7182e52600) 0

Vtable for std::ios_base::failure
std::ios_base::failure::_ZTVNSt8ios_base7failureE: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt8ios_base7failureE)
16    (int (*)(...))std::ios_base::failure::~failure
24    (int (*)(...))std::ios_base::failure::~failure
32    (int (*)(...))std::ios_base::failure::what

Class std::ios_base::failure
   size=16 align=8
   base size=16 base align=8
std::ios_base::failure (0x7f7182afc478) 0
    vptr=((& std::ios_base::failure::_ZTVNSt8ios_base7failureE) + 16u)
  std::exception (0x7f7182e52a20) 0 nearly-empty
      primary-for std::ios_base::failure (0x7f7182afc478)

Class std::ios_base::_Callback_list
   size=24 align=8
   base size=24 base align=8
std::ios_base::_Callback_list (0x7f7182e52a80) 0

Class std::ios_base::_Words
   size=16 align=8
   base size=16 base align=8
std::ios_base::_Words (0x7f7182e52ae0) 0

Class std::ios_base::Init
   size=1 align=1
   base size=0 base align=1
std::ios_base::Init (0x7f7182e52b40) 0 empty

Vtable for std::ios_base
std::ios_base::_ZTVSt8ios_base: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt8ios_base)
16    (int (*)(...))std::ios_base::~ios_base
24    (int (*)(...))std::ios_base::~ios_base

Class std::ios_base
   size=216 align=8
   base size=216 base align=8
std::ios_base (0x7f7182e529c0) 0
    vptr=((& std::ios_base::_ZTVSt8ios_base) + 16u)

Class std::ctype_base
   size=1 align=1
   base size=0 base align=1
std::ctype_base (0x7f7182e52cc0) 0 empty

Class std::__num_base
   size=1 align=1
   base size=0 base align=1
std::__num_base (0x7f7182c6c420) 0 empty

VTT for std::basic_ostream<char>
std::basic_ostream<char>::_ZTTSo: 2u entries
0     ((& std::basic_ostream<char>::_ZTVSo) + 24u)
8     ((& std::basic_ostream<char>::_ZTVSo) + 64u)

VTT for std::basic_ostream<wchar_t>
std::basic_ostream<wchar_t>::_ZTTSt13basic_ostreamIwSt11char_traitsIwEE: 2u entries
0     ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 24u)
8     ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 64u)

VTT for std::basic_istream<char>
std::basic_istream<char>::_ZTTSi: 2u entries
0     ((& std::basic_istream<char>::_ZTVSi) + 24u)
8     ((& std::basic_istream<char>::_ZTVSi) + 64u)

VTT for std::basic_istream<wchar_t>
std::basic_istream<wchar_t>::_ZTTSt13basic_istreamIwSt11char_traitsIwEE: 2u entries
0     ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 24u)
8     ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 64u)

Construction vtable for std::basic_istream<char> (0x7f7182795138 instance) in std::basic_iostream<char>
std::basic_iostream<char>::_ZTCSd0_Si: 10u entries
0     24u
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISi)
24    (int (*)(...))std::basic_istream<_CharT, _Traits>::~basic_istream<char, std::char_traits<char> >
32    (int (*)(...))std::basic_istream<_CharT, _Traits>::~basic_istream<char, std::char_traits<char> >
40    18446744073709551592u
48    (int (*)(...))-24
56    (int (*)(...))(& _ZTISi)
64    (int (*)(...))std::basic_istream<char>::_ZTv0_n24_NSiD1Ev
72    (int (*)(...))std::basic_istream<char>::_ZTv0_n24_NSiD0Ev

Construction vtable for std::basic_ostream<char> (0x7f7182795208 instance) in std::basic_iostream<char>
std::basic_iostream<char>::_ZTCSd16_So: 10u entries
0     8u
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISo)
24    (int (*)(...))std::basic_ostream<_CharT, _Traits>::~basic_ostream<char, std::char_traits<char> >
32    (int (*)(...))std::basic_ostream<_CharT, _Traits>::~basic_ostream<char, std::char_traits<char> >
40    18446744073709551608u
48    (int (*)(...))-8
56    (int (*)(...))(& _ZTISo)
64    (int (*)(...))std::basic_ostream<char>::_ZTv0_n24_NSoD1Ev
72    (int (*)(...))std::basic_ostream<char>::_ZTv0_n24_NSoD0Ev

VTT for std::basic_iostream<char>
std::basic_iostream<char>::_ZTTSd: 7u entries
0     ((& std::basic_iostream<char>::_ZTVSd) + 24u)
8     ((& std::basic_iostream<char>::_ZTCSd0_Si) + 24u)
16    ((& std::basic_iostream<char>::_ZTCSd0_Si) + 64u)
24    ((& std::basic_iostream<char>::_ZTCSd16_So) + 24u)
32    ((& std::basic_iostream<char>::_ZTCSd16_So) + 64u)
40    ((& std::basic_iostream<char>::_ZTVSd) + 104u)
48    ((& std::basic_iostream<char>::_ZTVSd) + 64u)

Construction vtable for std::basic_istream<wchar_t> (0x7f7182795548 instance) in std::basic_iostream<wchar_t>
std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E: 10u entries
0     24u
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
24    (int (*)(...))std::basic_istream<_CharT, _Traits>::~basic_istream<wchar_t, std::char_traits<wchar_t> >
32    (int (*)(...))std::basic_istream<_CharT, _Traits>::~basic_istream<wchar_t, std::char_traits<wchar_t> >
40    18446744073709551592u
48    (int (*)(...))-24
56    (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
64    (int (*)(...))std::basic_istream<wchar_t>::_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev
72    (int (*)(...))std::basic_istream<wchar_t>::_ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev

Construction vtable for std::basic_ostream<wchar_t> (0x7f7182795618 instance) in std::basic_iostream<wchar_t>
std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E: 10u entries
0     8u
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
24    (int (*)(...))std::basic_ostream<_CharT, _Traits>::~basic_ostream<wchar_t, std::char_traits<wchar_t> >
32    (int (*)(...))std::basic_ostream<_CharT, _Traits>::~basic_ostream<wchar_t, std::char_traits<wchar_t> >
40    18446744073709551608u
48    (int (*)(...))-8
56    (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
64    (int (*)(...))std::basic_ostream<wchar_t>::_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev
72    (int (*)(...))std::basic_ostream<wchar_t>::_ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev

VTT for std::basic_iostream<wchar_t>
std::basic_iostream<wchar_t>::_ZTTSt14basic_iostreamIwSt11char_traitsIwEE: 7u entries
0     ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 24u)
8     ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 24u)
16    ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 64u)
24    ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 24u)
32    ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 64u)
40    ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 104u)
48    ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 64u)

Class std::__detail::_List_node_base
   size=16 align=8
   base size=16 base align=8
std::__detail::_List_node_base (0x7f71827f0000) 0

Class QListData::Data
   size=24 align=8
   base size=24 base align=8
QListData::Data (0x7f71827f0300) 0

Class QListData
   size=8 align=8
   base size=8 base align=8
QListData (0x7f71827f02a0) 0

Class QScopedPointerPodDeleter
   size=1 align=1
   base size=0 base align=1
QScopedPointerPodDeleter (0x7f71827f0720) 0 empty

Class QMetaType
   size=80 align=8
   base size=80 base align=8
QMetaType (0x7f71825f1000) 0

Class QtPrivate::QSlotObjectBase
   size=16 align=8
   base size=16 base align=8
QtPrivate::QSlotObjectBase (0x7f71823803c0) 0

Vtable for QObjectData
QObjectData::_ZTV11QObjectData: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QObjectData)
16    (int (*)(...))__cxa_pure_virtual
24    (int (*)(...))__cxa_pure_virtual

Class QObjectData
   size=48 align=8
   base size=48 base align=8
QObjectData (0x7f7182380660) 0
    vptr=((& QObjectData::_ZTV11QObjectData) + 16u)

Class QObject::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QObject::QPrivateSignal (0x7f71823807e0) 0 empty

Vtable for QObject
QObject::_ZTV7QObject: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI7QObject)
16    (int (*)(...))QObject::metaObject
24    (int (*)(...))QObject::qt_metacast
32    (int (*)(...))QObject::qt_metacall
40    (int (*)(...))QObject::~QObject
48    (int (*)(...))QObject::~QObject
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QObject
   size=16 align=8
   base size=16 base align=8
QObject (0x7f7182380780) 0
    vptr=((& QObject::_ZTV7QObject) + 16u)

Vtable for QObjectUserData
QObjectUserData::_ZTV15QObjectUserData: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QObjectUserData)
16    (int (*)(...))QObjectUserData::~QObjectUserData
24    (int (*)(...))QObjectUserData::~QObjectUserData

Class QObjectUserData
   size=8 align=8
   base size=8 base align=8
QObjectUserData (0x7f7182380ea0) 0 nearly-empty
    vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 16u)

Class QAbstractAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractAnimation::QPrivateSignal (0x7f7182380f60) 0 empty

Vtable for QAbstractAnimation
QAbstractAnimation::_ZTV18QAbstractAnimation: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QAbstractAnimation)
16    (int (*)(...))QAbstractAnimation::metaObject
24    (int (*)(...))QAbstractAnimation::qt_metacast
32    (int (*)(...))QAbstractAnimation::qt_metacall
40    (int (*)(...))QAbstractAnimation::~QAbstractAnimation
48    (int (*)(...))QAbstractAnimation::~QAbstractAnimation
56    (int (*)(...))QAbstractAnimation::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))QAbstractAnimation::updateState
136   (int (*)(...))QAbstractAnimation::updateDirection

Class QAbstractAnimation
   size=16 align=8
   base size=16 base align=8
QAbstractAnimation (0x7f7182412d00) 0
    vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 16u)
  QObject (0x7f7182380f00) 0
      primary-for QAbstractAnimation (0x7f7182412d00)

Class QAnimationDriver::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAnimationDriver::QPrivateSignal (0x7f7182460060) 0 empty

Vtable for QAnimationDriver
QAnimationDriver::_ZTV16QAnimationDriver: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QAnimationDriver)
16    (int (*)(...))QAnimationDriver::metaObject
24    (int (*)(...))QAnimationDriver::qt_metacast
32    (int (*)(...))QAnimationDriver::qt_metacall
40    (int (*)(...))QAnimationDriver::~QAnimationDriver
48    (int (*)(...))QAnimationDriver::~QAnimationDriver
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAnimationDriver::advance
120   (int (*)(...))QAnimationDriver::elapsed
128   (int (*)(...))QAnimationDriver::start
136   (int (*)(...))QAnimationDriver::stop

Class QAnimationDriver
   size=16 align=8
   base size=16 base align=8
QAnimationDriver (0x7f718245a478) 0
    vptr=((& QAnimationDriver::_ZTV16QAnimationDriver) + 16u)
  QObject (0x7f7182460000) 0
      primary-for QAnimationDriver (0x7f718245a478)

Class QAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAnimationGroup::QPrivateSignal (0x7f7182460120) 0 empty

Vtable for QAnimationGroup
QAnimationGroup::_ZTV15QAnimationGroup: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QAnimationGroup)
16    (int (*)(...))QAnimationGroup::metaObject
24    (int (*)(...))QAnimationGroup::qt_metacast
32    (int (*)(...))QAnimationGroup::qt_metacall
40    (int (*)(...))QAnimationGroup::~QAnimationGroup
48    (int (*)(...))QAnimationGroup::~QAnimationGroup
56    (int (*)(...))QAnimationGroup::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))QAbstractAnimation::updateState
136   (int (*)(...))QAbstractAnimation::updateDirection

Class QAnimationGroup
   size=16 align=8
   base size=16 base align=8
QAnimationGroup (0x7f718245ac30) 0
    vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16u)
  QAbstractAnimation (0x7f718245ac98) 0
      primary-for QAnimationGroup (0x7f718245ac30)
    QObject (0x7f71824600c0) 0
        primary-for QAbstractAnimation (0x7f718245ac98)

Class QParallelAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QParallelAnimationGroup::QPrivateSignal (0x7f71824601e0) 0 empty

Vtable for QParallelAnimationGroup
QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI23QParallelAnimationGroup)
16    (int (*)(...))QParallelAnimationGroup::metaObject
24    (int (*)(...))QParallelAnimationGroup::qt_metacast
32    (int (*)(...))QParallelAnimationGroup::qt_metacall
40    (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
48    (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
56    (int (*)(...))QParallelAnimationGroup::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QParallelAnimationGroup::duration
120   (int (*)(...))QParallelAnimationGroup::updateCurrentTime
128   (int (*)(...))QParallelAnimationGroup::updateState
136   (int (*)(...))QParallelAnimationGroup::updateDirection

Class QParallelAnimationGroup
   size=16 align=8
   base size=16 base align=8
QParallelAnimationGroup (0x7f7182476bc8) 0
    vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16u)
  QAnimationGroup (0x7f7182476c30) 0
      primary-for QParallelAnimationGroup (0x7f7182476bc8)
    QAbstractAnimation (0x7f7182476c98) 0
        primary-for QAnimationGroup (0x7f7182476c30)
      QObject (0x7f7182460180) 0
          primary-for QAbstractAnimation (0x7f7182476c98)

Class QPauseAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPauseAnimation::QPrivateSignal (0x7f71824602a0) 0 empty

Vtable for QPauseAnimation
QPauseAnimation::_ZTV15QPauseAnimation: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QPauseAnimation)
16    (int (*)(...))QPauseAnimation::metaObject
24    (int (*)(...))QPauseAnimation::qt_metacast
32    (int (*)(...))QPauseAnimation::qt_metacall
40    (int (*)(...))QPauseAnimation::~QPauseAnimation
48    (int (*)(...))QPauseAnimation::~QPauseAnimation
56    (int (*)(...))QPauseAnimation::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QPauseAnimation::duration
120   (int (*)(...))QPauseAnimation::updateCurrentTime
128   (int (*)(...))QAbstractAnimation::updateState
136   (int (*)(...))QAbstractAnimation::updateDirection

Class QPauseAnimation
   size=16 align=8
   base size=16 base align=8
QPauseAnimation (0x7f7182087bc8) 0
    vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16u)
  QAbstractAnimation (0x7f7182087c30) 0
      primary-for QPauseAnimation (0x7f7182087bc8)
    QObject (0x7f7182460240) 0
        primary-for QAbstractAnimation (0x7f7182087c30)

Class std::_Bit_reference
   size=16 align=8
   base size=16 base align=8
std::_Bit_reference (0x7f7182460660) 0

Class std::_Bit_iterator_base
   size=16 align=8
   base size=12 base align=8
std::_Bit_iterator_base (0x7f718212b8f0) 0
  std::iterator<std::random_access_iterator_tag, bool> (0x7f7182460720) 0 empty

Class std::_Bit_iterator
   size=16 align=8
   base size=12 base align=8
std::_Bit_iterator (0x7f7182144618) 0
  std::_Bit_iterator_base (0x7f7182144680) 0
    std::iterator<std::random_access_iterator_tag, bool> (0x7f7182460780) 0 empty

Class std::_Bit_const_iterator
   size=16 align=8
   base size=12 base align=8
std::_Bit_const_iterator (0x7f71821558f0) 0
  std::_Bit_iterator_base (0x7f7182155958) 0
    std::iterator<std::random_access_iterator_tag, bool> (0x7f71824607e0) 0 empty

Class QEasingCurve
   size=8 align=8
   base size=8 base align=8
QEasingCurve (0x7f7182460d20) 0

Class std::_Rb_tree_node_base
   size=32 align=8
   base size=32 base align=8
std::_Rb_tree_node_base (0x7f7182460ea0) 0

Class QMapNodeBase
   size=24 align=8
   base size=24 base align=8
QMapNodeBase (0x7f7181f072a0) 0

Class QMapDataBase
   size=40 align=8
   base size=40 base align=8
QMapDataBase (0x7f7181f07360) 0

Class QHashData::Node
   size=16 align=8
   base size=16 base align=8
QHashData::Node (0x7f7181f076c0) 0

Class QHashData
   size=48 align=8
   base size=48 base align=8
QHashData (0x7f7181f07660) 0

Class QHashDummyValue
   size=1 align=1
   base size=0 base align=1
QHashDummyValue (0x7f7181f07720) 0 empty

Class QVariant::PrivateShared
   size=16 align=8
   base size=12 base align=8
QVariant::PrivateShared (0x7f7181f07d20) 0

Class QVariant::Private::Data
   size=8 align=8
   base size=8 base align=8
QVariant::Private::Data (0x7f7181f07de0) 0

Class QVariant::Private
   size=16 align=8
   base size=12 base align=8
QVariant::Private (0x7f7181f07d80) 0

Class QVariant::Handler
   size=72 align=8
   base size=72 base align=8
QVariant::Handler (0x7f7181f07e40) 0

Class QVariant
   size=16 align=8
   base size=16 base align=8
QVariant (0x7f7181f07cc0) 0

Class QVariantComparisonHelper
   size=8 align=8
   base size=8 base align=8
QVariantComparisonHelper (0x7f7181aa5120) 0

Class QVariantAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QVariantAnimation::QPrivateSignal (0x7f7181aa52a0) 0 empty

Vtable for QVariantAnimation
QVariantAnimation::_ZTV17QVariantAnimation: 20u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QVariantAnimation)
16    (int (*)(...))QVariantAnimation::metaObject
24    (int (*)(...))QVariantAnimation::qt_metacast
32    (int (*)(...))QVariantAnimation::qt_metacall
40    (int (*)(...))QVariantAnimation::~QVariantAnimation
48    (int (*)(...))QVariantAnimation::~QVariantAnimation
56    (int (*)(...))QVariantAnimation::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QVariantAnimation::duration
120   (int (*)(...))QVariantAnimation::updateCurrentTime
128   (int (*)(...))QVariantAnimation::updateState
136   (int (*)(...))QAbstractAnimation::updateDirection
144   (int (*)(...))QVariantAnimation::updateCurrentValue
152   (int (*)(...))QVariantAnimation::interpolated

Class QVariantAnimation
   size=16 align=8
   base size=16 base align=8
QVariantAnimation (0x7f7181a80f08) 0
    vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16u)
  QAbstractAnimation (0x7f7181a80f70) 0
      primary-for QVariantAnimation (0x7f7181a80f08)
    QObject (0x7f7181aa5240) 0
        primary-for QAbstractAnimation (0x7f7181a80f70)

Class QPropertyAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPropertyAnimation::QPrivateSignal (0x7f7181aa5360) 0 empty

Vtable for QPropertyAnimation
QPropertyAnimation::_ZTV18QPropertyAnimation: 20u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QPropertyAnimation)
16    (int (*)(...))QPropertyAnimation::metaObject
24    (int (*)(...))QPropertyAnimation::qt_metacast
32    (int (*)(...))QPropertyAnimation::qt_metacall
40    (int (*)(...))QPropertyAnimation::~QPropertyAnimation
48    (int (*)(...))QPropertyAnimation::~QPropertyAnimation
56    (int (*)(...))QPropertyAnimation::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QVariantAnimation::duration
120   (int (*)(...))QVariantAnimation::updateCurrentTime
128   (int (*)(...))QPropertyAnimation::updateState
136   (int (*)(...))QAbstractAnimation::updateDirection
144   (int (*)(...))QPropertyAnimation::updateCurrentValue
152   (int (*)(...))QVariantAnimation::interpolated

Class QPropertyAnimation
   size=16 align=8
   base size=16 base align=8
QPropertyAnimation (0x7f7181b0e2d8) 0
    vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16u)
  QVariantAnimation (0x7f7181b0e340) 0
      primary-for QPropertyAnimation (0x7f7181b0e2d8)
    QAbstractAnimation (0x7f7181b0e3a8) 0
        primary-for QVariantAnimation (0x7f7181b0e340)
      QObject (0x7f7181aa5300) 0
          primary-for QAbstractAnimation (0x7f7181b0e3a8)

Class QSequentialAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSequentialAnimationGroup::QPrivateSignal (0x7f7181aa5420) 0 empty

Vtable for QSequentialAnimationGroup
QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI25QSequentialAnimationGroup)
16    (int (*)(...))QSequentialAnimationGroup::metaObject
24    (int (*)(...))QSequentialAnimationGroup::qt_metacast
32    (int (*)(...))QSequentialAnimationGroup::qt_metacall
40    (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
48    (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
56    (int (*)(...))QSequentialAnimationGroup::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QSequentialAnimationGroup::duration
120   (int (*)(...))QSequentialAnimationGroup::updateCurrentTime
128   (int (*)(...))QSequentialAnimationGroup::updateState
136   (int (*)(...))QSequentialAnimationGroup::updateDirection

Class QSequentialAnimationGroup
   size=16 align=8
   base size=16 base align=8
QSequentialAnimationGroup (0x7f7181b1a478) 0
    vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16u)
  QAnimationGroup (0x7f7181b1a4e0) 0
      primary-for QSequentialAnimationGroup (0x7f7181b1a478)
    QAbstractAnimation (0x7f7181b1a548) 0
        primary-for QAnimationGroup (0x7f7181b1a4e0)
      QObject (0x7f7181aa53c0) 0
          primary-for QAbstractAnimation (0x7f7181b1a548)

Class QTextCodec::ConverterState
   size=32 align=8
   base size=32 base align=8
QTextCodec::ConverterState (0x7f7181aa54e0) 0

Vtable for QTextCodec
QTextCodec::_ZTV10QTextCodec: 9u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QTextCodec)
16    (int (*)(...))__cxa_pure_virtual
24    (int (*)(...))QTextCodec::aliases
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))QTextCodec::~QTextCodec
64    (int (*)(...))QTextCodec::~QTextCodec

Class QTextCodec
   size=8 align=8
   base size=8 base align=8
QTextCodec (0x7f7181aa5480) 0 nearly-empty
    vptr=((& QTextCodec::_ZTV10QTextCodec) + 16u)

Class QTextEncoder
   size=40 align=8
   base size=40 base align=8
QTextEncoder (0x7f7181aa5600) 0

Class QTextDecoder
   size=40 align=8
   base size=40 base align=8
QTextDecoder (0x7f7181aa5660) 0

Class QSharedData
   size=4 align=4
   base size=4 base align=4
QSharedData (0x7f7181aa56c0) 0

Class QtSharedPointer::NormalDeleter
   size=1 align=1
   base size=0 base align=1
QtSharedPointer::NormalDeleter (0x7f7181aa5960) 0 empty

Class QtSharedPointer::ExternalRefCountData
   size=16 align=8
   base size=16 base align=8
QtSharedPointer::ExternalRefCountData (0x7f7181aa5ae0) 0

Class std::__numeric_limits_base
   size=1 align=1
   base size=0 base align=1
std::__numeric_limits_base (0x7f7181aa5f60) 0 empty

Class QDate
   size=8 align=8
   base size=8 base align=8
QDate (0x7f7181892720) 0

Class QTime
   size=4 align=4
   base size=4 base align=4
QTime (0x7f71818927e0) 0

Class QDateTime
   size=8 align=8
   base size=8 base align=8
QDateTime (0x7f71818928a0) 0

Class QLibraryInfo
   size=1 align=1
   base size=0 base align=1
QLibraryInfo (0x7f71818929c0) 0 empty

Class QIODevice::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QIODevice::QPrivateSignal (0x7f7181892a80) 0 empty

Vtable for QIODevice
QIODevice::_ZTV9QIODevice: 30u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QIODevice)
16    (int (*)(...))QIODevice::metaObject
24    (int (*)(...))QIODevice::qt_metacast
32    (int (*)(...))QIODevice::qt_metacall
40    (int (*)(...))QIODevice::~QIODevice
48    (int (*)(...))QIODevice::~QIODevice
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QIODevice::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QIODevice::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QIODevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QIODevice::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))__cxa_pure_virtual
224   (int (*)(...))QIODevice::readLineData
232   (int (*)(...))__cxa_pure_virtual

Class QIODevice
   size=16 align=8
   base size=16 base align=8
QIODevice (0x7f71819595b0) 0
    vptr=((& QIODevice::_ZTV9QIODevice) + 16u)
  QObject (0x7f7181892a20) 0
      primary-for QIODevice (0x7f71819595b0)

Class QBuffer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QBuffer::QPrivateSignal (0x7f7181892c00) 0 empty

Vtable for QBuffer
QBuffer::_ZTV7QBuffer: 30u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI7QBuffer)
16    (int (*)(...))QBuffer::metaObject
24    (int (*)(...))QBuffer::qt_metacast
32    (int (*)(...))QBuffer::qt_metacall
40    (int (*)(...))QBuffer::~QBuffer
48    (int (*)(...))QBuffer::~QBuffer
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QBuffer::connectNotify
104   (int (*)(...))QBuffer::disconnectNotify
112   (int (*)(...))QIODevice::isSequential
120   (int (*)(...))QBuffer::open
128   (int (*)(...))QBuffer::close
136   (int (*)(...))QBuffer::pos
144   (int (*)(...))QBuffer::size
152   (int (*)(...))QBuffer::seek
160   (int (*)(...))QBuffer::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QBuffer::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))QBuffer::readData
224   (int (*)(...))QIODevice::readLineData
232   (int (*)(...))QBuffer::writeData

Class QBuffer
   size=16 align=8
   base size=16 base align=8
QBuffer (0x7f71819a0f08) 0
    vptr=((& QBuffer::_ZTV7QBuffer) + 16u)
  QIODevice (0x7f71819a0f70) 0
      primary-for QBuffer (0x7f71819a0f08)
    QObject (0x7f7181892ba0) 0
        primary-for QIODevice (0x7f71819a0f70)

Class QDataStream
   size=32 align=8
   base size=32 base align=8
QDataStream (0x7f7181892c60) 0

Class QLocale
   size=8 align=8
   base size=8 base align=8
QLocale (0x7f7181892d20) 0

Class _IO_marker
   size=24 align=8
   base size=24 base align=8
_IO_marker (0x7f718168a000) 0

Class _IO_FILE
   size=216 align=8
   base size=216 base align=8
_IO_FILE (0x7f718168a060) 0

Vtable for QTextStream
QTextStream::_ZTV11QTextStream: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QTextStream)
16    (int (*)(...))QTextStream::~QTextStream
24    (int (*)(...))QTextStream::~QTextStream

Class QTextStream
   size=16 align=8
   base size=16 base align=8
QTextStream (0x7f718168a120) 0
    vptr=((& QTextStream::_ZTV11QTextStream) + 16u)

Class QTextStreamManipulator
   size=40 align=8
   base size=38 base align=8
QTextStreamManipulator (0x7f718168a3c0) 0

Class QContiguousCacheData
   size=24 align=4
   base size=24 base align=4
QContiguousCacheData (0x7f718168a600) 0

Class QDebug::Stream
   size=72 align=8
   base size=72 base align=8
QDebug::Stream (0x7f718168ac60) 0

Class QDebug
   size=8 align=8
   base size=8 base align=8
QDebug (0x7f718168ac00) 0

Class QNoDebug
   size=1 align=1
   base size=0 base align=1
QNoDebug (0x7f718168ad20) 0 empty

Class QFileDevice::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFileDevice::QPrivateSignal (0x7f718168ade0) 0 empty

Vtable for QFileDevice
QFileDevice::_ZTV11QFileDevice: 34u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QFileDevice)
16    (int (*)(...))QFileDevice::metaObject
24    (int (*)(...))QFileDevice::qt_metacast
32    (int (*)(...))QFileDevice::qt_metacall
40    (int (*)(...))QFileDevice::~QFileDevice
48    (int (*)(...))QFileDevice::~QFileDevice
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QFileDevice::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QFileDevice::close
136   (int (*)(...))QFileDevice::pos
144   (int (*)(...))QFileDevice::size
152   (int (*)(...))QFileDevice::seek
160   (int (*)(...))QFileDevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QIODevice::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))QFileDevice::readData
224   (int (*)(...))QFileDevice::readLineData
232   (int (*)(...))QFileDevice::writeData
240   (int (*)(...))QFileDevice::fileName
248   (int (*)(...))QFileDevice::resize
256   (int (*)(...))QFileDevice::permissions
264   (int (*)(...))QFileDevice::setPermissions

Class QFileDevice
   size=16 align=8
   base size=16 base align=8
QFileDevice (0x7f718182b7b8) 0
    vptr=((& QFileDevice::_ZTV11QFileDevice) + 16u)
  QIODevice (0x7f718182b820) 0
      primary-for QFileDevice (0x7f718182b7b8)
    QObject (0x7f718168ad80) 0
        primary-for QIODevice (0x7f718182b820)

Class QFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFile::QPrivateSignal (0x7f718168af60) 0 empty

Vtable for QFile
QFile::_ZTV5QFile: 34u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI5QFile)
16    (int (*)(...))QFile::metaObject
24    (int (*)(...))QFile::qt_metacast
32    (int (*)(...))QFile::qt_metacall
40    (int (*)(...))QFile::~QFile
48    (int (*)(...))QFile::~QFile
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QFileDevice::isSequential
120   (int (*)(...))QFile::open
128   (int (*)(...))QFileDevice::close
136   (int (*)(...))QFileDevice::pos
144   (int (*)(...))QFile::size
152   (int (*)(...))QFileDevice::seek
160   (int (*)(...))QFileDevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QIODevice::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))QFileDevice::readData
224   (int (*)(...))QFileDevice::readLineData
232   (int (*)(...))QFileDevice::writeData
240   (int (*)(...))QFile::fileName
248   (int (*)(...))QFile::resize
256   (int (*)(...))QFile::permissions
264   (int (*)(...))QFile::setPermissions

Class QFile
   size=16 align=8
   base size=16 base align=8
QFile (0x7f7181872410) 0
    vptr=((& QFile::_ZTV5QFile) + 16u)
  QFileDevice (0x7f7181872478) 0
      primary-for QFile (0x7f7181872410)
    QIODevice (0x7f71818724e0) 0
        primary-for QFileDevice (0x7f7181872478)
      QObject (0x7f718168af00) 0
          primary-for QIODevice (0x7f71818724e0)

Class QFileInfo
   size=8 align=8
   base size=8 base align=8
QFileInfo (0x7f71814850c0) 0

Class QRegExp
   size=8 align=8
   base size=8 base align=8
QRegExp (0x7f7181485300) 0

Class QStringMatcher::Data
   size=272 align=8
   base size=272 base align=8
QStringMatcher::Data (0x7f7181485420) 0

Class QStringMatcher
   size=1048 align=8
   base size=1048 base align=8
QStringMatcher (0x7f71814853c0) 0

Class QStringList
   size=8 align=8
   base size=8 base align=8
QStringList (0x7f71814e2208) 0
  QList<QString> (0x7f71814855a0) 0

Class QDir
   size=8 align=8
   base size=8 base align=8
QDir (0x7f7181485660) 0

Class QDirIterator
   size=8 align=8
   base size=8 base align=8
QDirIterator (0x7f7181485900) 0

Class QFileSystemWatcher::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFileSystemWatcher::QPrivateSignal (0x7f7181485ae0) 0 empty

Vtable for QFileSystemWatcher
QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QFileSystemWatcher)
16    (int (*)(...))QFileSystemWatcher::metaObject
24    (int (*)(...))QFileSystemWatcher::qt_metacast
32    (int (*)(...))QFileSystemWatcher::qt_metacall
40    (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
48    (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QFileSystemWatcher
   size=16 align=8
   base size=16 base align=8
QFileSystemWatcher (0x7f71815bbd68) 0
    vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 16u)
  QObject (0x7f7181485a80) 0
      primary-for QFileSystemWatcher (0x7f71815bbd68)

Class QProcessEnvironment
   size=8 align=8
   base size=8 base align=8
QProcessEnvironment (0x7f7181485b40) 0

Class QProcess::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QProcess::QPrivateSignal (0x7f7181485cc0) 0 empty

Vtable for QProcess
QProcess::_ZTV8QProcess: 31u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI8QProcess)
16    (int (*)(...))QProcess::metaObject
24    (int (*)(...))QProcess::qt_metacast
32    (int (*)(...))QProcess::qt_metacall
40    (int (*)(...))QProcess::~QProcess
48    (int (*)(...))QProcess::~QProcess
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QProcess::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QProcess::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QProcess::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QProcess::bytesAvailable
184   (int (*)(...))QProcess::bytesToWrite
192   (int (*)(...))QProcess::canReadLine
200   (int (*)(...))QProcess::waitForReadyRead
208   (int (*)(...))QProcess::waitForBytesWritten
216   (int (*)(...))QProcess::readData
224   (int (*)(...))QIODevice::readLineData
232   (int (*)(...))QProcess::writeData
240   (int (*)(...))QProcess::setupChildProcess

Class QProcess
   size=16 align=8
   base size=16 base align=8
QProcess (0x7f71815e6138) 0
    vptr=((& QProcess::_ZTV8QProcess) + 16u)
  QIODevice (0x7f71815e61a0) 0
      primary-for QProcess (0x7f71815e6138)
    QObject (0x7f7181485c60) 0
        primary-for QIODevice (0x7f71815e61a0)

Class QResource
   size=8 align=8
   base size=8 base align=8
QResource (0x7f7181485d20) 0

Class QSettings::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSettings::QPrivateSignal (0x7f7181485ea0) 0 empty

Vtable for QSettings
QSettings::_ZTV9QSettings: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QSettings)
16    (int (*)(...))QSettings::metaObject
24    (int (*)(...))QSettings::qt_metacast
32    (int (*)(...))QSettings::qt_metacall
40    (int (*)(...))QSettings::~QSettings
48    (int (*)(...))QSettings::~QSettings
56    (int (*)(...))QSettings::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QSettings
   size=16 align=8
   base size=16 base align=8
QSettings (0x7f718160af70) 0
    vptr=((& QSettings::_ZTV9QSettings) + 16u)
  QObject (0x7f7181485e40) 0
      primary-for QSettings (0x7f718160af70)

Class QStandardPaths
   size=1 align=1
   base size=0 base align=1
QStandardPaths (0x7f7181485f00) 0 empty

Class QTemporaryDir
   size=8 align=8
   base size=8 base align=8
QTemporaryDir (0x7f7181654060) 0

Class QTemporaryFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTemporaryFile::QPrivateSignal (0x7f7181654180) 0 empty

Vtable for QTemporaryFile
QTemporaryFile::_ZTV14QTemporaryFile: 34u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QTemporaryFile)
16    (int (*)(...))QTemporaryFile::metaObject
24    (int (*)(...))QTemporaryFile::qt_metacast
32    (int (*)(...))QTemporaryFile::qt_metacall
40    (int (*)(...))QTemporaryFile::~QTemporaryFile
48    (int (*)(...))QTemporaryFile::~QTemporaryFile
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QFileDevice::isSequential
120   (int (*)(...))QTemporaryFile::open
128   (int (*)(...))QFileDevice::close
136   (int (*)(...))QFileDevice::pos
144   (int (*)(...))QFile::size
152   (int (*)(...))QFileDevice::seek
160   (int (*)(...))QFileDevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QIODevice::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))QFileDevice::readData
224   (int (*)(...))QFileDevice::readLineData
232   (int (*)(...))QFileDevice::writeData
240   (int (*)(...))QTemporaryFile::fileName
248   (int (*)(...))QFile::resize
256   (int (*)(...))QFile::permissions
264   (int (*)(...))QFile::setPermissions

Class QTemporaryFile
   size=16 align=8
   base size=16 base align=8
QTemporaryFile (0x7f718164f958) 0
    vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16u)
  QFile (0x7f718164f9c0) 0
      primary-for QTemporaryFile (0x7f718164f958)
    QFileDevice (0x7f718164fa28) 0
        primary-for QFile (0x7f718164f9c0)
      QIODevice (0x7f718164fa90) 0
          primary-for QFileDevice (0x7f718164fa28)
        QObject (0x7f7181654120) 0
            primary-for QIODevice (0x7f718164fa90)

Class QUrl
   size=8 align=8
   base size=8 base align=8
QUrl (0x7f71816542a0) 0

Class QUrlQuery
   size=8 align=8
   base size=8 base align=8
QUrlQuery (0x7f7181654660) 0

Class QModelIndex
   size=24 align=8
   base size=24 base align=8
QModelIndex (0x7f7181654780) 0

Class QPersistentModelIndex
   size=8 align=8
   base size=8 base align=8
QPersistentModelIndex (0x7f7181654840) 0

Class QAbstractItemModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractItemModel::QPrivateSignal (0x7f7181654960) 0 empty

Vtable for QAbstractItemModel
QAbstractItemModel::_ZTV18QAbstractItemModel: 48u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QAbstractItemModel)
16    (int (*)(...))QAbstractItemModel::metaObject
24    (int (*)(...))QAbstractItemModel::qt_metacast
32    (int (*)(...))QAbstractItemModel::qt_metacall
40    (int (*)(...))QAbstractItemModel::~QAbstractItemModel
48    (int (*)(...))QAbstractItemModel::~QAbstractItemModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))QAbstractItemModel::sibling
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))QAbstractItemModel::hasChildren
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))QAbstractItemModel::setData
176   (int (*)(...))QAbstractItemModel::headerData
184   (int (*)(...))QAbstractItemModel::setHeaderData
192   (int (*)(...))QAbstractItemModel::itemData
200   (int (*)(...))QAbstractItemModel::setItemData
208   (int (*)(...))QAbstractItemModel::mimeTypes
216   (int (*)(...))QAbstractItemModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QAbstractItemModel::dropMimeData
240   (int (*)(...))QAbstractItemModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QAbstractItemModel::insertRows
264   (int (*)(...))QAbstractItemModel::insertColumns
272   (int (*)(...))QAbstractItemModel::removeRows
280   (int (*)(...))QAbstractItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractItemModel::fetchMore
312   (int (*)(...))QAbstractItemModel::canFetchMore
320   (int (*)(...))QAbstractItemModel::flags
328   (int (*)(...))QAbstractItemModel::sort
336   (int (*)(...))QAbstractItemModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractItemModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractItemModel::submit
376   (int (*)(...))QAbstractItemModel::revert

Class QAbstractItemModel
   size=16 align=8
   base size=16 base align=8
QAbstractItemModel (0x7f7181362270) 0
    vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 16u)
  QObject (0x7f7181654900) 0
      primary-for QAbstractItemModel (0x7f7181362270)

Class QAbstractTableModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractTableModel::QPrivateSignal (0x7f7181654d20) 0 empty

Vtable for QAbstractTableModel
QAbstractTableModel::_ZTV19QAbstractTableModel: 48u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QAbstractTableModel)
16    (int (*)(...))QAbstractTableModel::metaObject
24    (int (*)(...))QAbstractTableModel::qt_metacast
32    (int (*)(...))QAbstractTableModel::qt_metacall
40    (int (*)(...))QAbstractTableModel::~QAbstractTableModel
48    (int (*)(...))QAbstractTableModel::~QAbstractTableModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAbstractTableModel::index
120   (int (*)(...))QAbstractTableModel::parent
128   (int (*)(...))QAbstractItemModel::sibling
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))QAbstractTableModel::hasChildren
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))QAbstractItemModel::setData
176   (int (*)(...))QAbstractItemModel::headerData
184   (int (*)(...))QAbstractItemModel::setHeaderData
192   (int (*)(...))QAbstractItemModel::itemData
200   (int (*)(...))QAbstractItemModel::setItemData
208   (int (*)(...))QAbstractItemModel::mimeTypes
216   (int (*)(...))QAbstractItemModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QAbstractTableModel::dropMimeData
240   (int (*)(...))QAbstractItemModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QAbstractItemModel::insertRows
264   (int (*)(...))QAbstractItemModel::insertColumns
272   (int (*)(...))QAbstractItemModel::removeRows
280   (int (*)(...))QAbstractItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractItemModel::fetchMore
312   (int (*)(...))QAbstractItemModel::canFetchMore
320   (int (*)(...))QAbstractItemModel::flags
328   (int (*)(...))QAbstractItemModel::sort
336   (int (*)(...))QAbstractItemModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractItemModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractItemModel::submit
376   (int (*)(...))QAbstractItemModel::revert

Class QAbstractTableModel
   size=16 align=8
   base size=16 base align=8
QAbstractTableModel (0x7f71813f19c0) 0
    vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16u)
  QAbstractItemModel (0x7f71813f1a28) 0
      primary-for QAbstractTableModel (0x7f71813f19c0)
    QObject (0x7f7181654cc0) 0
        primary-for QAbstractItemModel (0x7f71813f1a28)

Class QAbstractListModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractListModel::QPrivateSignal (0x7f7181654de0) 0 empty

Vtable for QAbstractListModel
QAbstractListModel::_ZTV18QAbstractListModel: 48u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QAbstractListModel)
16    (int (*)(...))QAbstractListModel::metaObject
24    (int (*)(...))QAbstractListModel::qt_metacast
32    (int (*)(...))QAbstractListModel::qt_metacall
40    (int (*)(...))QAbstractListModel::~QAbstractListModel
48    (int (*)(...))QAbstractListModel::~QAbstractListModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAbstractListModel::index
120   (int (*)(...))QAbstractListModel::parent
128   (int (*)(...))QAbstractItemModel::sibling
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))QAbstractListModel::columnCount
152   (int (*)(...))QAbstractListModel::hasChildren
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))QAbstractItemModel::setData
176   (int (*)(...))QAbstractItemModel::headerData
184   (int (*)(...))QAbstractItemModel::setHeaderData
192   (int (*)(...))QAbstractItemModel::itemData
200   (int (*)(...))QAbstractItemModel::setItemData
208   (int (*)(...))QAbstractItemModel::mimeTypes
216   (int (*)(...))QAbstractItemModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QAbstractListModel::dropMimeData
240   (int (*)(...))QAbstractItemModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QAbstractItemModel::insertRows
264   (int (*)(...))QAbstractItemModel::insertColumns
272   (int (*)(...))QAbstractItemModel::removeRows
280   (int (*)(...))QAbstractItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractItemModel::fetchMore
312   (int (*)(...))QAbstractItemModel::canFetchMore
320   (int (*)(...))QAbstractItemModel::flags
328   (int (*)(...))QAbstractItemModel::sort
336   (int (*)(...))QAbstractItemModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractItemModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractItemModel::submit
376   (int (*)(...))QAbstractItemModel::revert

Class QAbstractListModel
   size=16 align=8
   base size=16 base align=8
QAbstractListModel (0x7f71814014e0) 0
    vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16u)
  QAbstractItemModel (0x7f7181401548) 0
      primary-for QAbstractListModel (0x7f71814014e0)
    QObject (0x7f7181654d80) 0
        primary-for QAbstractItemModel (0x7f7181401548)

Class QAbstractProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractProxyModel::QPrivateSignal (0x7f7181654ea0) 0 empty

Vtable for QAbstractProxyModel
QAbstractProxyModel::_ZTV19QAbstractProxyModel: 53u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QAbstractProxyModel)
16    (int (*)(...))QAbstractProxyModel::metaObject
24    (int (*)(...))QAbstractProxyModel::qt_metacast
32    (int (*)(...))QAbstractProxyModel::qt_metacall
40    (int (*)(...))QAbstractProxyModel::~QAbstractProxyModel
48    (int (*)(...))QAbstractProxyModel::~QAbstractProxyModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))QAbstractProxyModel::sibling
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))QAbstractProxyModel::hasChildren
160   (int (*)(...))QAbstractProxyModel::data
168   (int (*)(...))QAbstractProxyModel::setData
176   (int (*)(...))QAbstractProxyModel::headerData
184   (int (*)(...))QAbstractProxyModel::setHeaderData
192   (int (*)(...))QAbstractProxyModel::itemData
200   (int (*)(...))QAbstractProxyModel::setItemData
208   (int (*)(...))QAbstractProxyModel::mimeTypes
216   (int (*)(...))QAbstractProxyModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QAbstractItemModel::dropMimeData
240   (int (*)(...))QAbstractProxyModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QAbstractItemModel::insertRows
264   (int (*)(...))QAbstractItemModel::insertColumns
272   (int (*)(...))QAbstractItemModel::removeRows
280   (int (*)(...))QAbstractItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractProxyModel::fetchMore
312   (int (*)(...))QAbstractProxyModel::canFetchMore
320   (int (*)(...))QAbstractProxyModel::flags
328   (int (*)(...))QAbstractProxyModel::sort
336   (int (*)(...))QAbstractProxyModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractProxyModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractProxyModel::submit
376   (int (*)(...))QAbstractProxyModel::revert
384   (int (*)(...))QAbstractProxyModel::setSourceModel
392   (int (*)(...))__cxa_pure_virtual
400   (int (*)(...))__cxa_pure_virtual
408   (int (*)(...))QAbstractProxyModel::mapSelectionToSource
416   (int (*)(...))QAbstractProxyModel::mapSelectionFromSource

Class QAbstractProxyModel
   size=16 align=8
   base size=16 base align=8
QAbstractProxyModel (0x7f718141de38) 0
    vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16u)
  QAbstractItemModel (0x7f718141dea0) 0
      primary-for QAbstractProxyModel (0x7f718141de38)
    QObject (0x7f7181654e40) 0
        primary-for QAbstractItemModel (0x7f718141dea0)

Class QIdentityProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QIdentityProxyModel::QPrivateSignal (0x7f7181654f60) 0 empty

Vtable for QIdentityProxyModel
QIdentityProxyModel::_ZTV19QIdentityProxyModel: 53u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QIdentityProxyModel)
16    (int (*)(...))QIdentityProxyModel::metaObject
24    (int (*)(...))QIdentityProxyModel::qt_metacast
32    (int (*)(...))QIdentityProxyModel::qt_metacall
40    (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
48    (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QIdentityProxyModel::index
120   (int (*)(...))QIdentityProxyModel::parent
128   (int (*)(...))QIdentityProxyModel::sibling
136   (int (*)(...))QIdentityProxyModel::rowCount
144   (int (*)(...))QIdentityProxyModel::columnCount
152   (int (*)(...))QAbstractProxyModel::hasChildren
160   (int (*)(...))QAbstractProxyModel::data
168   (int (*)(...))QAbstractProxyModel::setData
176   (int (*)(...))QIdentityProxyModel::headerData
184   (int (*)(...))QAbstractProxyModel::setHeaderData
192   (int (*)(...))QAbstractProxyModel::itemData
200   (int (*)(...))QAbstractProxyModel::setItemData
208   (int (*)(...))QAbstractProxyModel::mimeTypes
216   (int (*)(...))QAbstractProxyModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QIdentityProxyModel::dropMimeData
240   (int (*)(...))QAbstractProxyModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QIdentityProxyModel::insertRows
264   (int (*)(...))QIdentityProxyModel::insertColumns
272   (int (*)(...))QIdentityProxyModel::removeRows
280   (int (*)(...))QIdentityProxyModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractProxyModel::fetchMore
312   (int (*)(...))QAbstractProxyModel::canFetchMore
320   (int (*)(...))QAbstractProxyModel::flags
328   (int (*)(...))QAbstractProxyModel::sort
336   (int (*)(...))QAbstractProxyModel::buddy
344   (int (*)(...))QIdentityProxyModel::match
352   (int (*)(...))QAbstractProxyModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractProxyModel::submit
376   (int (*)(...))QAbstractProxyModel::revert
384   (int (*)(...))QIdentityProxyModel::setSourceModel
392   (int (*)(...))QIdentityProxyModel::mapToSource
400   (int (*)(...))QIdentityProxyModel::mapFromSource
408   (int (*)(...))QIdentityProxyModel::mapSelectionToSource
416   (int (*)(...))QIdentityProxyModel::mapSelectionFromSource

Class QIdentityProxyModel
   size=16 align=8
   base size=16 base align=8
QIdentityProxyModel (0x7f7181426d00) 0
    vptr=((& QIdentityProxyModel::_ZTV19QIdentityProxyModel) + 16u)
  QAbstractProxyModel (0x7f7181426d68) 0
      primary-for QIdentityProxyModel (0x7f7181426d00)
    QAbstractItemModel (0x7f7181426dd0) 0
        primary-for QAbstractProxyModel (0x7f7181426d68)
      QObject (0x7f7181654f00) 0
          primary-for QAbstractItemModel (0x7f7181426dd0)

Class QItemSelectionRange
   size=16 align=8
   base size=16 base align=8
QItemSelectionRange (0x7f7181458000) 0

Class QItemSelectionModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QItemSelectionModel::QPrivateSignal (0x7f7181458120) 0 empty

Vtable for QItemSelectionModel
QItemSelectionModel::_ZTV19QItemSelectionModel: 20u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QItemSelectionModel)
16    (int (*)(...))QItemSelectionModel::metaObject
24    (int (*)(...))QItemSelectionModel::qt_metacast
32    (int (*)(...))QItemSelectionModel::qt_metacall
40    (int (*)(...))QItemSelectionModel::~QItemSelectionModel
48    (int (*)(...))QItemSelectionModel::~QItemSelectionModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QItemSelectionModel::setCurrentIndex
120   (int (*)(...))QItemSelectionModel::select
128   (int (*)(...))QItemSelectionModel::select
136   (int (*)(...))QItemSelectionModel::clear
144   (int (*)(...))QItemSelectionModel::reset
152   (int (*)(...))QItemSelectionModel::clearCurrentIndex

Class QItemSelectionModel
   size=16 align=8
   base size=16 base align=8
QItemSelectionModel (0x7f718107f618) 0
    vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 16u)
  QObject (0x7f71814580c0) 0
      primary-for QItemSelectionModel (0x7f718107f618)

Class QItemSelection
   size=8 align=8
   base size=8 base align=8
QItemSelection (0x7f71810b0340) 0
  QList<QItemSelectionRange> (0x7f7181458300) 0

Class QSortFilterProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSortFilterProxyModel::QPrivateSignal (0x7f71814583c0) 0 empty

Vtable for QSortFilterProxyModel
QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 56u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI21QSortFilterProxyModel)
16    (int (*)(...))QSortFilterProxyModel::metaObject
24    (int (*)(...))QSortFilterProxyModel::qt_metacast
32    (int (*)(...))QSortFilterProxyModel::qt_metacall
40    (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
48    (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QSortFilterProxyModel::index
120   (int (*)(...))QSortFilterProxyModel::parent
128   (int (*)(...))QSortFilterProxyModel::sibling
136   (int (*)(...))QSortFilterProxyModel::rowCount
144   (int (*)(...))QSortFilterProxyModel::columnCount
152   (int (*)(...))QSortFilterProxyModel::hasChildren
160   (int (*)(...))QSortFilterProxyModel::data
168   (int (*)(...))QSortFilterProxyModel::setData
176   (int (*)(...))QSortFilterProxyModel::headerData
184   (int (*)(...))QSortFilterProxyModel::setHeaderData
192   (int (*)(...))QAbstractProxyModel::itemData
200   (int (*)(...))QAbstractProxyModel::setItemData
208   (int (*)(...))QSortFilterProxyModel::mimeTypes
216   (int (*)(...))QSortFilterProxyModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QSortFilterProxyModel::dropMimeData
240   (int (*)(...))QSortFilterProxyModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QSortFilterProxyModel::insertRows
264   (int (*)(...))QSortFilterProxyModel::insertColumns
272   (int (*)(...))QSortFilterProxyModel::removeRows
280   (int (*)(...))QSortFilterProxyModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QSortFilterProxyModel::fetchMore
312   (int (*)(...))QSortFilterProxyModel::canFetchMore
320   (int (*)(...))QSortFilterProxyModel::flags
328   (int (*)(...))QSortFilterProxyModel::sort
336   (int (*)(...))QSortFilterProxyModel::buddy
344   (int (*)(...))QSortFilterProxyModel::match
352   (int (*)(...))QSortFilterProxyModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractProxyModel::submit
376   (int (*)(...))QAbstractProxyModel::revert
384   (int (*)(...))QSortFilterProxyModel::setSourceModel
392   (int (*)(...))QSortFilterProxyModel::mapToSource
400   (int (*)(...))QSortFilterProxyModel::mapFromSource
408   (int (*)(...))QSortFilterProxyModel::mapSelectionToSource
416   (int (*)(...))QSortFilterProxyModel::mapSelectionFromSource
424   (int (*)(...))QSortFilterProxyModel::filterAcceptsRow
432   (int (*)(...))QSortFilterProxyModel::filterAcceptsColumn
440   (int (*)(...))QSortFilterProxyModel::lessThan

Class QSortFilterProxyModel
   size=16 align=8
   base size=16 base align=8
QSortFilterProxyModel (0x7f71810b0618) 0
    vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16u)
  QAbstractProxyModel (0x7f71810b0680) 0
      primary-for QSortFilterProxyModel (0x7f71810b0618)
    QAbstractItemModel (0x7f71810b06e8) 0
        primary-for QAbstractProxyModel (0x7f71810b0680)
      QObject (0x7f7181458360) 0
          primary-for QAbstractItemModel (0x7f71810b06e8)

Class QStringListModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QStringListModel::QPrivateSignal (0x7f7181458480) 0 empty

Vtable for QStringListModel
QStringListModel::_ZTV16QStringListModel: 48u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QStringListModel)
16    (int (*)(...))QStringListModel::metaObject
24    (int (*)(...))QStringListModel::qt_metacast
32    (int (*)(...))QStringListModel::qt_metacall
40    (int (*)(...))QStringListModel::~QStringListModel
48    (int (*)(...))QStringListModel::~QStringListModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAbstractListModel::index
120   (int (*)(...))QAbstractListModel::parent
128   (int (*)(...))QStringListModel::sibling
136   (int (*)(...))QStringListModel::rowCount
144   (int (*)(...))QAbstractListModel::columnCount
152   (int (*)(...))QAbstractListModel::hasChildren
160   (int (*)(...))QStringListModel::data
168   (int (*)(...))QStringListModel::setData
176   (int (*)(...))QAbstractItemModel::headerData
184   (int (*)(...))QAbstractItemModel::setHeaderData
192   (int (*)(...))QAbstractItemModel::itemData
200   (int (*)(...))QAbstractItemModel::setItemData
208   (int (*)(...))QAbstractItemModel::mimeTypes
216   (int (*)(...))QAbstractItemModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QAbstractListModel::dropMimeData
240   (int (*)(...))QStringListModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QStringListModel::insertRows
264   (int (*)(...))QAbstractItemModel::insertColumns
272   (int (*)(...))QStringListModel::removeRows
280   (int (*)(...))QAbstractItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractItemModel::fetchMore
312   (int (*)(...))QAbstractItemModel::canFetchMore
320   (int (*)(...))QStringListModel::flags
328   (int (*)(...))QStringListModel::sort
336   (int (*)(...))QAbstractItemModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractItemModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractItemModel::submit
376   (int (*)(...))QAbstractItemModel::revert

Class QStringListModel
   size=24 align=8
   base size=24 base align=8
QStringListModel (0x7f71810fb680) 0
    vptr=((& QStringListModel::_ZTV16QStringListModel) + 16u)
  QAbstractListModel (0x7f71810fb6e8) 0
      primary-for QStringListModel (0x7f71810fb680)
    QAbstractItemModel (0x7f71810fb750) 0
        primary-for QAbstractListModel (0x7f71810fb6e8)
      QObject (0x7f7181458420) 0
          primary-for QAbstractItemModel (0x7f71810fb750)

Class QJsonValue
   size=24 align=8
   base size=20 base align=8
QJsonValue (0x7f71814584e0) 0

Class QJsonValueRef
   size=16 align=8
   base size=12 base align=8
QJsonValueRef (0x7f71814585a0) 0

Class QJsonArray::iterator
   size=16 align=8
   base size=12 base align=8
QJsonArray::iterator (0x7f71814586c0) 0

Class QJsonArray::const_iterator
   size=16 align=8
   base size=12 base align=8
QJsonArray::const_iterator (0x7f7181458720) 0

Class QJsonArray
   size=16 align=8
   base size=16 base align=8
QJsonArray (0x7f7181458660) 0

Class QJsonParseError
   size=8 align=4
   base size=8 base align=4
QJsonParseError (0x7f7181458780) 0

Class QJsonDocument
   size=8 align=8
   base size=8 base align=8
QJsonDocument (0x7f71814587e0) 0

Class QJsonObject::iterator
   size=16 align=8
   base size=12 base align=8
QJsonObject::iterator (0x7f71814588a0) 0

Class QJsonObject::const_iterator
   size=16 align=8
   base size=12 base align=8
QJsonObject::const_iterator (0x7f7181458900) 0

Class QJsonObject
   size=16 align=8
   base size=16 base align=8
QJsonObject (0x7f7181458840) 0

Class QEventLoop::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QEventLoop::QPrivateSignal (0x7f7181458a20) 0 empty

Vtable for QEventLoop
QEventLoop::_ZTV10QEventLoop: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QEventLoop)
16    (int (*)(...))QEventLoop::metaObject
24    (int (*)(...))QEventLoop::qt_metacast
32    (int (*)(...))QEventLoop::qt_metacall
40    (int (*)(...))QEventLoop::~QEventLoop
48    (int (*)(...))QEventLoop::~QEventLoop
56    (int (*)(...))QEventLoop::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QEventLoop
   size=16 align=8
   base size=16 base align=8
QEventLoop (0x7f71811f9138) 0
    vptr=((& QEventLoop::_ZTV10QEventLoop) + 16u)
  QObject (0x7f71814589c0) 0
      primary-for QEventLoop (0x7f71811f9138)

Class QEventLoopLocker
   size=8 align=8
   base size=8 base align=8
QEventLoopLocker (0x7f7181458b40) 0

Class QAbstractEventDispatcher::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractEventDispatcher::QPrivateSignal (0x7f7181458c00) 0 empty

Class QAbstractEventDispatcher::TimerInfo
   size=12 align=4
   base size=12 base align=4
QAbstractEventDispatcher::TimerInfo (0x7f7181458c60) 0

Vtable for QAbstractEventDispatcher
QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 28u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
16    (int (*)(...))QAbstractEventDispatcher::metaObject
24    (int (*)(...))QAbstractEventDispatcher::qt_metacast
32    (int (*)(...))QAbstractEventDispatcher::qt_metacall
40    (int (*)(...))QAbstractEventDispatcher::~QAbstractEventDispatcher
48    (int (*)(...))QAbstractEventDispatcher::~QAbstractEventDispatcher
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))__cxa_pure_virtual
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))__cxa_pure_virtual
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))__cxa_pure_virtual
176   (int (*)(...))__cxa_pure_virtual
184   (int (*)(...))__cxa_pure_virtual
192   (int (*)(...))__cxa_pure_virtual
200   (int (*)(...))__cxa_pure_virtual
208   (int (*)(...))QAbstractEventDispatcher::startingUp
216   (int (*)(...))QAbstractEventDispatcher::closingDown

Class QAbstractEventDispatcher
   size=16 align=8
   base size=16 base align=8
QAbstractEventDispatcher (0x7f7181219958) 0
    vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 16u)
  QObject (0x7f7181458ba0) 0
      primary-for QAbstractEventDispatcher (0x7f7181219958)

Vtable for QAbstractNativeEventFilter
QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI26QAbstractNativeEventFilter)
16    (int (*)(...))QAbstractNativeEventFilter::~QAbstractNativeEventFilter
24    (int (*)(...))QAbstractNativeEventFilter::~QAbstractNativeEventFilter
32    (int (*)(...))__cxa_pure_virtual

Class QAbstractNativeEventFilter
   size=16 align=8
   base size=16 base align=8
QAbstractNativeEventFilter (0x7f7181458cc0) 0
    vptr=((& QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter) + 16u)

Class QBasicTimer
   size=4 align=4
   base size=4 base align=4
QBasicTimer (0x7f7181458d20) 0

Vtable for QEvent
QEvent::_ZTV6QEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI6QEvent)
16    (int (*)(...))QEvent::~QEvent
24    (int (*)(...))QEvent::~QEvent

Class QEvent
   size=24 align=8
   base size=20 base align=8
QEvent (0x7f7181458de0) 0
    vptr=((& QEvent::_ZTV6QEvent) + 16u)

Vtable for QTimerEvent
QTimerEvent::_ZTV11QTimerEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QTimerEvent)
16    (int (*)(...))QTimerEvent::~QTimerEvent
24    (int (*)(...))QTimerEvent::~QTimerEvent

Class QTimerEvent
   size=24 align=8
   base size=24 base align=8
QTimerEvent (0x7f718125e478) 0
    vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16u)
  QEvent (0x7f7181458e40) 0
      primary-for QTimerEvent (0x7f718125e478)

Vtable for QChildEvent
QChildEvent::_ZTV11QChildEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QChildEvent)
16    (int (*)(...))QChildEvent::~QChildEvent
24    (int (*)(...))QChildEvent::~QChildEvent

Class QChildEvent
   size=32 align=8
   base size=32 base align=8
QChildEvent (0x7f718125e6e8) 0
    vptr=((& QChildEvent::_ZTV11QChildEvent) + 16u)
  QEvent (0x7f7181458ea0) 0
      primary-for QChildEvent (0x7f718125e6e8)

Vtable for QDynamicPropertyChangeEvent
QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI27QDynamicPropertyChangeEvent)
16    (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
24    (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent

Class QDynamicPropertyChangeEvent
   size=32 align=8
   base size=32 base align=8
QDynamicPropertyChangeEvent (0x7f718125ef08) 0
    vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 16u)
  QEvent (0x7f7181458f00) 0
      primary-for QDynamicPropertyChangeEvent (0x7f718125ef08)

Vtable for QDeferredDeleteEvent
QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QDeferredDeleteEvent)
16    (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
24    (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent

Class QDeferredDeleteEvent
   size=24 align=8
   base size=24 base align=8
QDeferredDeleteEvent (0x7f7180e69068) 0
    vptr=((& QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent) + 16u)
  QEvent (0x7f7181458f60) 0
      primary-for QDeferredDeleteEvent (0x7f7180e69068)

Class QCoreApplication::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QCoreApplication::QPrivateSignal (0x7f7180e6d060) 0 empty

Vtable for QCoreApplication
QCoreApplication::_ZTV16QCoreApplication: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QCoreApplication)
16    (int (*)(...))QCoreApplication::metaObject
24    (int (*)(...))QCoreApplication::qt_metacast
32    (int (*)(...))QCoreApplication::qt_metacall
40    (int (*)(...))QCoreApplication::~QCoreApplication
48    (int (*)(...))QCoreApplication::~QCoreApplication
56    (int (*)(...))QCoreApplication::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QCoreApplication::notify
120   (int (*)(...))QCoreApplication::compressEvent

Class QCoreApplication
   size=16 align=8
   base size=16 base align=8
QCoreApplication (0x7f7180e692d8) 0
    vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 16u)
  QObject (0x7f7180e6d000) 0
      primary-for QCoreApplication (0x7f7180e692d8)

Class __exception
   size=40 align=8
   base size=40 base align=8
__exception (0x7f7180e6d0c0) 0

Class QMetaMethod
   size=16 align=8
   base size=12 base align=8
QMetaMethod (0x7f7180e6d120) 0

Class QMetaEnum
   size=16 align=8
   base size=12 base align=8
QMetaEnum (0x7f7180e6d1e0) 0

Class QMetaProperty
   size=32 align=8
   base size=32 base align=8
QMetaProperty (0x7f7180e6d2a0) 0

Class QMetaClassInfo
   size=16 align=8
   base size=12 base align=8
QMetaClassInfo (0x7f7180e6d300) 0

Class QMimeData::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QMimeData::QPrivateSignal (0x7f7180e6d420) 0 empty

Vtable for QMimeData
QMimeData::_ZTV9QMimeData: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QMimeData)
16    (int (*)(...))QMimeData::metaObject
24    (int (*)(...))QMimeData::qt_metacast
32    (int (*)(...))QMimeData::qt_metacall
40    (int (*)(...))QMimeData::~QMimeData
48    (int (*)(...))QMimeData::~QMimeData
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QMimeData::hasFormat
120   (int (*)(...))QMimeData::formats
128   (int (*)(...))QMimeData::retrieveData

Class QMimeData
   size=16 align=8
   base size=16 base align=8
QMimeData (0x7f7180f27000) 0
    vptr=((& QMimeData::_ZTV9QMimeData) + 16u)
  QObject (0x7f7180e6d3c0) 0
      primary-for QMimeData (0x7f7180f27000)

Class QObjectCleanupHandler::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QObjectCleanupHandler::QPrivateSignal (0x7f7180e6d4e0) 0 empty

Vtable for QObjectCleanupHandler
QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI21QObjectCleanupHandler)
16    (int (*)(...))QObjectCleanupHandler::metaObject
24    (int (*)(...))QObjectCleanupHandler::qt_metacast
32    (int (*)(...))QObjectCleanupHandler::qt_metacall
40    (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
48    (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QObjectCleanupHandler
   size=24 align=8
   base size=24 base align=8
QObjectCleanupHandler (0x7f7180f27a90) 0
    vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 16u)
  QObject (0x7f7180e6d480) 0
      primary-for QObjectCleanupHandler (0x7f7180f27a90)

Class QSharedMemory::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSharedMemory::QPrivateSignal (0x7f7180e6d6c0) 0 empty

Vtable for QSharedMemory
QSharedMemory::_ZTV13QSharedMemory: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QSharedMemory)
16    (int (*)(...))QSharedMemory::metaObject
24    (int (*)(...))QSharedMemory::qt_metacast
32    (int (*)(...))QSharedMemory::qt_metacall
40    (int (*)(...))QSharedMemory::~QSharedMemory
48    (int (*)(...))QSharedMemory::~QSharedMemory
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QSharedMemory
   size=16 align=8
   base size=16 base align=8
QSharedMemory (0x7f7180f3fb60) 0
    vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 16u)
  QObject (0x7f7180e6d660) 0
      primary-for QSharedMemory (0x7f7180f3fb60)

Class QSignalMapper::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSignalMapper::QPrivateSignal (0x7f7180e6d780) 0 empty

Vtable for QSignalMapper
QSignalMapper::_ZTV13QSignalMapper: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QSignalMapper)
16    (int (*)(...))QSignalMapper::metaObject
24    (int (*)(...))QSignalMapper::qt_metacast
32    (int (*)(...))QSignalMapper::qt_metacall
40    (int (*)(...))QSignalMapper::~QSignalMapper
48    (int (*)(...))QSignalMapper::~QSignalMapper
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QSignalMapper
   size=16 align=8
   base size=16 base align=8
QSignalMapper (0x7f7180f72af8) 0
    vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 16u)
  QObject (0x7f7180e6d720) 0
      primary-for QSignalMapper (0x7f7180f72af8)

Class QSocketNotifier::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSocketNotifier::QPrivateSignal (0x7f7180e6d840) 0 empty

Vtable for QSocketNotifier
QSocketNotifier::_ZTV15QSocketNotifier: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QSocketNotifier)
16    (int (*)(...))QSocketNotifier::metaObject
24    (int (*)(...))QSocketNotifier::qt_metacast
32    (int (*)(...))QSocketNotifier::qt_metacall
40    (int (*)(...))QSocketNotifier::~QSocketNotifier
48    (int (*)(...))QSocketNotifier::~QSocketNotifier
56    (int (*)(...))QSocketNotifier::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QSocketNotifier
   size=16 align=8
   base size=16 base align=8
QSocketNotifier (0x7f7180f82ea0) 0
    vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 16u)
  QObject (0x7f7180e6d7e0) 0
      primary-for QSocketNotifier (0x7f7180f82ea0)

Class QSystemSemaphore
   size=8 align=8
   base size=8 base align=8
QSystemSemaphore (0x7f7180e6d8a0) 0

Class QTimer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTimer::QPrivateSignal (0x7f7180e6d9c0) 0 empty

Vtable for QTimer
QTimer::_ZTV6QTimer: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI6QTimer)
16    (int (*)(...))QTimer::metaObject
24    (int (*)(...))QTimer::qt_metacast
32    (int (*)(...))QTimer::qt_metacall
40    (int (*)(...))QTimer::~QTimer
48    (int (*)(...))QTimer::~QTimer
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QTimer::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QTimer
   size=32 align=8
   base size=29 base align=8
QTimer (0x7f7180fa0340) 0
    vptr=((& QTimer::_ZTV6QTimer) + 16u)
  QObject (0x7f7180e6d960) 0
      primary-for QTimer (0x7f7180fa0340)

Class QTranslator::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTranslator::QPrivateSignal (0x7f7180e6dae0) 0 empty

Vtable for QTranslator
QTranslator::_ZTV11QTranslator: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QTranslator)
16    (int (*)(...))QTranslator::metaObject
24    (int (*)(...))QTranslator::qt_metacast
32    (int (*)(...))QTranslator::qt_metacall
40    (int (*)(...))QTranslator::~QTranslator
48    (int (*)(...))QTranslator::~QTranslator
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QTranslator::translate
120   (int (*)(...))QTranslator::isEmpty

Class QTranslator
   size=16 align=8
   base size=16 base align=8
QTranslator (0x7f7180fbb410) 0
    vptr=((& QTranslator::_ZTV11QTranslator) + 16u)
  QObject (0x7f7180e6da80) 0
      primary-for QTranslator (0x7f7180fbb410)

Class QMimeType
   size=8 align=8
   base size=8 base align=8
QMimeType (0x7f7180e6db40) 0

Class QMimeDatabase
   size=8 align=8
   base size=8 base align=8
QMimeDatabase (0x7f7180e6dc60) 0

Vtable for QFactoryInterface
QFactoryInterface::_ZTV17QFactoryInterface: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QFactoryInterface)
16    (int (*)(...))QFactoryInterface::~QFactoryInterface
24    (int (*)(...))QFactoryInterface::~QFactoryInterface
32    (int (*)(...))__cxa_pure_virtual

Class QFactoryInterface
   size=8 align=8
   base size=8 base align=8
QFactoryInterface (0x7f7180e6dcc0) 0 nearly-empty
    vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 16u)

Class QLibrary::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QLibrary::QPrivateSignal (0x7f7180e6dde0) 0 empty

Vtable for QLibrary
QLibrary::_ZTV8QLibrary: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI8QLibrary)
16    (int (*)(...))QLibrary::metaObject
24    (int (*)(...))QLibrary::qt_metacast
32    (int (*)(...))QLibrary::qt_metacall
40    (int (*)(...))QLibrary::~QLibrary
48    (int (*)(...))QLibrary::~QLibrary
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QLibrary
   size=32 align=8
   base size=25 base align=8
QLibrary (0x7f7180ff4340) 0
    vptr=((& QLibrary::_ZTV8QLibrary) + 16u)
  QObject (0x7f7180e6dd80) 0
      primary-for QLibrary (0x7f7180ff4340)

Class QStaticPlugin
   size=16 align=8
   base size=16 base align=8
QStaticPlugin (0x7f7180e6df00) 0

Class QPluginLoader::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPluginLoader::QPrivateSignal (0x7f7181030000) 0 empty

Vtable for QPluginLoader
QPluginLoader::_ZTV13QPluginLoader: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QPluginLoader)
16    (int (*)(...))QPluginLoader::metaObject
24    (int (*)(...))QPluginLoader::qt_metacast
32    (int (*)(...))QPluginLoader::qt_metacall
40    (int (*)(...))QPluginLoader::~QPluginLoader
48    (int (*)(...))QPluginLoader::~QPluginLoader
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QPluginLoader
   size=32 align=8
   base size=25 base align=8
QPluginLoader (0x7f71810258f0) 0
    vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 16u)
  QObject (0x7f7180e6df60) 0
      primary-for QPluginLoader (0x7f71810258f0)

Class QUuid
   size=16 align=4
   base size=16 base align=4
QUuid (0x7f7181030060) 0

Class QAbstractState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractState::QPrivateSignal (0x7f7181030180) 0 empty

Vtable for QAbstractState
QAbstractState::_ZTV14QAbstractState: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QAbstractState)
16    (int (*)(...))QAbstractState::metaObject
24    (int (*)(...))QAbstractState::qt_metacast
32    (int (*)(...))QAbstractState::qt_metacall
40    (int (*)(...))QAbstractState::~QAbstractState
48    (int (*)(...))QAbstractState::~QAbstractState
56    (int (*)(...))QAbstractState::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual

Class QAbstractState
   size=16 align=8
   base size=16 base align=8
QAbstractState (0x7f718104de38) 0
    vptr=((& QAbstractState::_ZTV14QAbstractState) + 16u)
  QObject (0x7f7181030120) 0
      primary-for QAbstractState (0x7f718104de38)

Class QAbstractTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractTransition::QPrivateSignal (0x7f7181030240) 0 empty

Vtable for QAbstractTransition
QAbstractTransition::_ZTV19QAbstractTransition: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QAbstractTransition)
16    (int (*)(...))QAbstractTransition::metaObject
24    (int (*)(...))QAbstractTransition::qt_metacast
32    (int (*)(...))QAbstractTransition::qt_metacall
40    (int (*)(...))QAbstractTransition::~QAbstractTransition
48    (int (*)(...))QAbstractTransition::~QAbstractTransition
56    (int (*)(...))QAbstractTransition::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual

Class QAbstractTransition
   size=16 align=8
   base size=16 base align=8
QAbstractTransition (0x7f718105f9c0) 0
    vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 16u)
  QObject (0x7f71810301e0) 0
      primary-for QAbstractTransition (0x7f718105f9c0)

Class QEventTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QEventTransition::QPrivateSignal (0x7f7181030300) 0 empty

Vtable for QEventTransition
QEventTransition::_ZTV16QEventTransition: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QEventTransition)
16    (int (*)(...))QEventTransition::metaObject
24    (int (*)(...))QEventTransition::qt_metacast
32    (int (*)(...))QEventTransition::qt_metacall
40    (int (*)(...))QEventTransition::~QEventTransition
48    (int (*)(...))QEventTransition::~QEventTransition
56    (int (*)(...))QEventTransition::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QEventTransition::eventTest
120   (int (*)(...))QEventTransition::onTransition

Class QEventTransition
   size=16 align=8
   base size=16 base align=8
QEventTransition (0x7f7180c6a478) 0
    vptr=((& QEventTransition::_ZTV16QEventTransition) + 16u)
  QAbstractTransition (0x7f7180c6a4e0) 0
      primary-for QEventTransition (0x7f7180c6a478)
    QObject (0x7f71810302a0) 0
        primary-for QAbstractTransition (0x7f7180c6a4e0)

Class QFinalState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFinalState::QPrivateSignal (0x7f71810303c0) 0 empty

Vtable for QFinalState
QFinalState::_ZTV11QFinalState: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QFinalState)
16    (int (*)(...))QFinalState::metaObject
24    (int (*)(...))QFinalState::qt_metacast
32    (int (*)(...))QFinalState::qt_metacall
40    (int (*)(...))QFinalState::~QFinalState
48    (int (*)(...))QFinalState::~QFinalState
56    (int (*)(...))QFinalState::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QFinalState::onEntry
120   (int (*)(...))QFinalState::onExit

Class QFinalState
   size=16 align=8
   base size=16 base align=8
QFinalState (0x7f7180c7d4e0) 0
    vptr=((& QFinalState::_ZTV11QFinalState) + 16u)
  QAbstractState (0x7f7180c7d548) 0
      primary-for QFinalState (0x7f7180c7d4e0)
    QObject (0x7f7181030360) 0
        primary-for QAbstractState (0x7f7180c7d548)

Class QHistoryState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QHistoryState::QPrivateSignal (0x7f7181030480) 0 empty

Vtable for QHistoryState
QHistoryState::_ZTV13QHistoryState: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QHistoryState)
16    (int (*)(...))QHistoryState::metaObject
24    (int (*)(...))QHistoryState::qt_metacast
32    (int (*)(...))QHistoryState::qt_metacall
40    (int (*)(...))QHistoryState::~QHistoryState
48    (int (*)(...))QHistoryState::~QHistoryState
56    (int (*)(...))QHistoryState::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QHistoryState::onEntry
120   (int (*)(...))QHistoryState::onExit

Class QHistoryState
   size=16 align=8
   base size=16 base align=8
QHistoryState (0x7f7180c7df70) 0
    vptr=((& QHistoryState::_ZTV13QHistoryState) + 16u)
  QAbstractState (0x7f7180c7d138) 0
      primary-for QHistoryState (0x7f7180c7df70)
    QObject (0x7f7181030420) 0
        primary-for QAbstractState (0x7f7180c7d138)

Class QSignalTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSignalTransition::QPrivateSignal (0x7f7181030540) 0 empty

Vtable for QSignalTransition
QSignalTransition::_ZTV17QSignalTransition: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QSignalTransition)
16    (int (*)(...))QSignalTransition::metaObject
24    (int (*)(...))QSignalTransition::qt_metacast
32    (int (*)(...))QSignalTransition::qt_metacall
40    (int (*)(...))QSignalTransition::~QSignalTransition
48    (int (*)(...))QSignalTransition::~QSignalTransition
56    (int (*)(...))QSignalTransition::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QSignalTransition::eventTest
120   (int (*)(...))QSignalTransition::onTransition

Class QSignalTransition
   size=16 align=8
   base size=16 base align=8
QSignalTransition (0x7f7180c95dd0) 0
    vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16u)
  QAbstractTransition (0x7f7180c95e38) 0
      primary-for QSignalTransition (0x7f7180c95dd0)
    QObject (0x7f71810304e0) 0
        primary-for QAbstractTransition (0x7f7180c95e38)

Class QState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QState::QPrivateSignal (0x7f7181030600) 0 empty

Vtable for QState
QState::_ZTV6QState: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI6QState)
16    (int (*)(...))QState::metaObject
24    (int (*)(...))QState::qt_metacast
32    (int (*)(...))QState::qt_metacall
40    (int (*)(...))QState::~QState
48    (int (*)(...))QState::~QState
56    (int (*)(...))QState::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QState::onEntry
120   (int (*)(...))QState::onExit

Class QState
   size=16 align=8
   base size=16 base align=8
QState (0x7f7180cabb60) 0
    vptr=((& QState::_ZTV6QState) + 16u)
  QAbstractState (0x7f7180cabbc8) 0
      primary-for QState (0x7f7180cabb60)
    QObject (0x7f71810305a0) 0
        primary-for QAbstractState (0x7f7180cabbc8)

Class QStateMachine::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QStateMachine::QPrivateSignal (0x7f7181030720) 0 empty

Vtable for QStateMachine::SignalEvent
QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN13QStateMachine11SignalEventE)
16    (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
24    (int (*)(...))QStateMachine::SignalEvent::~SignalEvent

Class QStateMachine::SignalEvent
   size=48 align=8
   base size=48 base align=8
QStateMachine::SignalEvent (0x7f7180ccd3a8) 0
    vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 16u)
  QEvent (0x7f7181030780) 0
      primary-for QStateMachine::SignalEvent (0x7f7180ccd3a8)

Vtable for QStateMachine::WrappedEvent
QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN13QStateMachine12WrappedEventE)
16    (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
24    (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent

Class QStateMachine::WrappedEvent
   size=40 align=8
   base size=40 base align=8
QStateMachine::WrappedEvent (0x7f7180ccd888) 0
    vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 16u)
  QEvent (0x7f71810307e0) 0
      primary-for QStateMachine::WrappedEvent (0x7f7180ccd888)

Vtable for QStateMachine
QStateMachine::_ZTV13QStateMachine: 20u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QStateMachine)
16    (int (*)(...))QStateMachine::metaObject
24    (int (*)(...))QStateMachine::qt_metacast
32    (int (*)(...))QStateMachine::qt_metacall
40    (int (*)(...))QStateMachine::~QStateMachine
48    (int (*)(...))QStateMachine::~QStateMachine
56    (int (*)(...))QStateMachine::event
64    (int (*)(...))QStateMachine::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QStateMachine::onEntry
120   (int (*)(...))QStateMachine::onExit
128   (int (*)(...))QStateMachine::beginSelectTransitions
136   (int (*)(...))QStateMachine::endSelectTransitions
144   (int (*)(...))QStateMachine::beginMicrostep
152   (int (*)(...))QStateMachine::endMicrostep

Class QStateMachine
   size=16 align=8
   base size=16 base align=8
QStateMachine (0x7f7180ccd138) 0
    vptr=((& QStateMachine::_ZTV13QStateMachine) + 16u)
  QState (0x7f7180ccd1a0) 0
      primary-for QStateMachine (0x7f7180ccd138)
    QAbstractState (0x7f7180ccd208) 0
        primary-for QState (0x7f7180ccd1a0)
      QObject (0x7f71810306c0) 0
          primary-for QAbstractState (0x7f7180ccd208)

Vtable for QException
QException::_ZTV10QException: 7u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QException)
16    (int (*)(...))QException::~QException
24    (int (*)(...))QException::~QException
32    (int (*)(...))std::exception::what
40    (int (*)(...))QException::raise
48    (int (*)(...))QException::clone

Class QException
   size=8 align=8
   base size=8 base align=8
QException (0x7f7180ce2ea0) 0 nearly-empty
    vptr=((& QException::_ZTV10QException) + 16u)
  std::exception (0x7f7181030840) 0 nearly-empty
      primary-for QException (0x7f7180ce2ea0)

Vtable for QUnhandledException
QUnhandledException::_ZTV19QUnhandledException: 7u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QUnhandledException)
16    (int (*)(...))QUnhandledException::~QUnhandledException
24    (int (*)(...))QUnhandledException::~QUnhandledException
32    (int (*)(...))std::exception::what
40    (int (*)(...))QUnhandledException::raise
48    (int (*)(...))QUnhandledException::clone

Class QUnhandledException
   size=8 align=8
   base size=8 base align=8
QUnhandledException (0x7f7180cf6068) 0 nearly-empty
    vptr=((& QUnhandledException::_ZTV19QUnhandledException) + 16u)
  QException (0x7f7180cf60d0) 0 nearly-empty
      primary-for QUnhandledException (0x7f7180cf6068)
    std::exception (0x7f71810308a0) 0 nearly-empty
        primary-for QException (0x7f7180cf60d0)

Class QtPrivate::ExceptionHolder
   size=8 align=8
   base size=8 base align=8
QtPrivate::ExceptionHolder (0x7f7181030900) 0

Class QtPrivate::ExceptionStore
   size=8 align=8
   base size=8 base align=8
QtPrivate::ExceptionStore (0x7f71810309c0) 0

Vtable for QRunnable
QRunnable::_ZTV9QRunnable: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QRunnable)
16    (int (*)(...))__cxa_pure_virtual
24    (int (*)(...))QRunnable::~QRunnable
32    (int (*)(...))QRunnable::~QRunnable

Class QRunnable
   size=16 align=8
   base size=12 base align=8
QRunnable (0x7f7181030a20) 0
    vptr=((& QRunnable::_ZTV9QRunnable) + 16u)

Class QBasicMutex
   size=8 align=8
   base size=8 base align=8
QBasicMutex (0x7f7181030a80) 0

Class QMutex
   size=8 align=8
   base size=8 base align=8
QMutex (0x7f7180d1f478) 0
  QBasicMutex (0x7f7181030ba0) 0

Class QMutexLocker
   size=8 align=8
   base size=8 base align=8
QMutexLocker (0x7f7181030c00) 0

Class QtPrivate::ResultItem
   size=16 align=8
   base size=16 base align=8
QtPrivate::ResultItem (0x7f7181030c60) 0

Class QtPrivate::ResultIteratorBase
   size=16 align=8
   base size=12 base align=8
QtPrivate::ResultIteratorBase (0x7f7181030cc0) 0

Vtable for QtPrivate::ResultStoreBase
QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN9QtPrivate15ResultStoreBaseE)
16    (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
24    (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase

Class QtPrivate::ResultStoreBase
   size=48 align=8
   base size=44 base align=8
QtPrivate::ResultStoreBase (0x7f7181030e40) 0
    vptr=((& QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE) + 16u)

Vtable for QFutureInterfaceBase
QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QFutureInterfaceBase)
16    (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
24    (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase

Class QFutureInterfaceBase
   size=16 align=8
   base size=16 base align=8
QFutureInterfaceBase (0x7f7181030f00) 0
    vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 16u)

Class QFutureWatcherBase::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFutureWatcherBase::QPrivateSignal (0x7f7180dae2a0) 0 empty

Vtable for QFutureWatcherBase
QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QFutureWatcherBase)
16    (int (*)(...))QFutureWatcherBase::metaObject
24    (int (*)(...))QFutureWatcherBase::qt_metacast
32    (int (*)(...))QFutureWatcherBase::qt_metacall
40    (int (*)(...))QFutureWatcherBase::~QFutureWatcherBase
48    (int (*)(...))QFutureWatcherBase::~QFutureWatcherBase
56    (int (*)(...))QFutureWatcherBase::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QFutureWatcherBase::connectNotify
104   (int (*)(...))QFutureWatcherBase::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual

Class QFutureWatcherBase
   size=16 align=8
   base size=16 base align=8
QFutureWatcherBase (0x7f7180e11270) 0
    vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 16u)
  QObject (0x7f7180dae240) 0
      primary-for QFutureWatcherBase (0x7f7180e11270)

Class QReadWriteLock
   size=8 align=8
   base size=8 base align=8
QReadWriteLock (0x7f7180dae3c0) 0

Class QReadLocker
   size=8 align=8
   base size=8 base align=8
QReadLocker (0x7f7180dae420) 0

Class QWriteLocker
   size=8 align=8
   base size=8 base align=8
QWriteLocker (0x7f7180dae4e0) 0

Class QSemaphore
   size=8 align=8
   base size=8 base align=8
QSemaphore (0x7f7180dae5a0) 0

Class QThread::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QThread::QPrivateSignal (0x7f7180dae660) 0 empty

Vtable for QThread
QThread::_ZTV7QThread: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI7QThread)
16    (int (*)(...))QThread::metaObject
24    (int (*)(...))QThread::qt_metacast
32    (int (*)(...))QThread::qt_metacall
40    (int (*)(...))QThread::~QThread
48    (int (*)(...))QThread::~QThread
56    (int (*)(...))QThread::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QThread::run

Class QThread
   size=16 align=8
   base size=16 base align=8
QThread (0x7f7180a61750) 0
    vptr=((& QThread::_ZTV7QThread) + 16u)
  QObject (0x7f7180dae600) 0
      primary-for QThread (0x7f7180a61750)

Class QThreadPool::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QThreadPool::QPrivateSignal (0x7f7180dae720) 0 empty

Vtable for QThreadPool
QThreadPool::_ZTV11QThreadPool: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QThreadPool)
16    (int (*)(...))QThreadPool::metaObject
24    (int (*)(...))QThreadPool::qt_metacast
32    (int (*)(...))QThreadPool::qt_metacall
40    (int (*)(...))QThreadPool::~QThreadPool
48    (int (*)(...))QThreadPool::~QThreadPool
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QThreadPool
   size=16 align=8
   base size=16 base align=8
QThreadPool (0x7f7180a793a8) 0
    vptr=((& QThreadPool::_ZTV11QThreadPool) + 16u)
  QObject (0x7f7180dae6c0) 0
      primary-for QThreadPool (0x7f7180a793a8)

Class QThreadStorageData
   size=4 align=4
   base size=4 base align=4
QThreadStorageData (0x7f7180dae780) 0

Class QWaitCondition
   size=8 align=8
   base size=8 base align=8
QWaitCondition (0x7f7180dae840) 0

Class QBitArray
   size=8 align=8
   base size=8 base align=8
QBitArray (0x7f7180daede0) 0

Class QBitRef
   size=16 align=8
   base size=12 base align=8
QBitRef (0x7f7180daee40) 0

Class QByteArrayMatcher::Data
   size=272 align=8
   base size=272 base align=8
QByteArrayMatcher::Data (0x7f7180daef60) 0

Class QByteArrayMatcher
   size=1040 align=8
   base size=1040 base align=8
QByteArrayMatcher (0x7f7180daef00) 0

Class QCryptographicHash
   size=8 align=8
   base size=8 base align=8
QCryptographicHash (0x7f7180b3e120) 0

Class QElapsedTimer
   size=16 align=8
   base size=16 base align=8
QElapsedTimer (0x7f7180b3e1e0) 0

Class QPoint
   size=8 align=4
   base size=8 base align=4
QPoint (0x7f7180b3e240) 0

Class QPointF
   size=16 align=8
   base size=16 base align=8
QPointF (0x7f7180b3e300) 0

Class QLine
   size=16 align=4
   base size=16 base align=4
QLine (0x7f7180b3e3c0) 0

Class QLineF
   size=32 align=8
   base size=32 base align=8
QLineF (0x7f7180b3e480) 0

Class QLinkedListData
   size=32 align=8
   base size=32 base align=8
QLinkedListData (0x7f7180b3e540) 0

Class QMargins
   size=16 align=4
   base size=16 base align=4
QMargins (0x7f7180b3e8a0) 0

Class QSize
   size=8 align=4
   base size=8 base align=4
QSize (0x7f7180b3e9c0) 0

Class QSizeF
   size=16 align=8
   base size=16 base align=8
QSizeF (0x7f7180b3ea80) 0

Class QRect
   size=16 align=4
   base size=16 base align=4
QRect (0x7f7180b3eb40) 0

Class QRectF
   size=32 align=8
   base size=32 base align=8
QRectF (0x7f7180b3ec00) 0

Class QRegularExpression
   size=8 align=8
   base size=8 base align=8
QRegularExpression (0x7f7180a17000) 0

Class QRegularExpressionMatch
   size=8 align=8
   base size=8 base align=8
QRegularExpressionMatch (0x7f7180a172a0) 0

Class QRegularExpressionMatchIterator
   size=8 align=8
   base size=8 base align=8
QRegularExpressionMatchIterator (0x7f7180a173c0) 0

Class QAbstractConcatenable
   size=1 align=1
   base size=0 base align=1
QAbstractConcatenable (0x7f7180a175a0) 0 empty

Class QTextBoundaryFinder
   size=48 align=8
   base size=48 base align=8
QTextBoundaryFinder (0x7f7180718000) 0

Class QTimeLine::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTimeLine::QPrivateSignal (0x7f7180718180) 0 empty

Vtable for QTimeLine
QTimeLine::_ZTV9QTimeLine: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QTimeLine)
16    (int (*)(...))QTimeLine::metaObject
24    (int (*)(...))QTimeLine::qt_metacast
32    (int (*)(...))QTimeLine::qt_metacall
40    (int (*)(...))QTimeLine::~QTimeLine
48    (int (*)(...))QTimeLine::~QTimeLine
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QTimeLine::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QTimeLine::valueForTime

Class QTimeLine
   size=16 align=8
   base size=16 base align=8
QTimeLine (0x7f71807373a8) 0
    vptr=((& QTimeLine::_ZTV9QTimeLine) + 16u)
  QObject (0x7f7180718120) 0
      primary-for QTimeLine (0x7f71807373a8)

Class QXmlStreamStringRef
   size=16 align=8
   base size=16 base align=8
QXmlStreamStringRef (0x7f71807181e0) 0

Class QXmlStreamAttribute
   size=80 align=8
   base size=73 base align=8
QXmlStreamAttribute (0x7f7180718240) 0

Class QXmlStreamAttributes
   size=8 align=8
   base size=8 base align=8
QXmlStreamAttributes (0x7f7180773e38) 0
  QVector<QXmlStreamAttribute> (0x7f71807183c0) 0

Class QXmlStreamNamespaceDeclaration
   size=40 align=8
   base size=40 base align=8
QXmlStreamNamespaceDeclaration (0x7f7180718420) 0

Class QXmlStreamNotationDeclaration
   size=56 align=8
   base size=56 base align=8
QXmlStreamNotationDeclaration (0x7f71807184e0) 0

Class QXmlStreamEntityDeclaration
   size=88 align=8
   base size=88 base align=8
QXmlStreamEntityDeclaration (0x7f71807185a0) 0

Vtable for QXmlStreamEntityResolver
QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI24QXmlStreamEntityResolver)
16    (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
24    (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
32    (int (*)(...))QXmlStreamEntityResolver::resolveEntity
40    (int (*)(...))QXmlStreamEntityResolver::resolveUndeclaredEntity

Class QXmlStreamEntityResolver
   size=8 align=8
   base size=8 base align=8
QXmlStreamEntityResolver (0x7f7180718660) 0 nearly-empty
    vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 16u)

Class QXmlStreamReader
   size=8 align=8
   base size=8 base align=8
QXmlStreamReader (0x7f71807186c0) 0

Class QXmlStreamWriter
   size=8 align=8
   base size=8 base align=8
QXmlStreamWriter (0x7f71807187e0) 0

Class QColor
   size=16 align=4
   base size=14 base align=4
QColor (0x7f7180718900) 0

Class QRegion::QRegionData
   size=16 align=8
   base size=16 base align=8
QRegion::QRegionData (0x7f7180718d20) 0

Class QRegion
   size=8 align=8
   base size=8 base align=8
QRegion (0x7f7180718cc0) 0

Class QKeySequence
   size=8 align=8
   base size=8 base align=8
QKeySequence (0x7f7180718d80) 0

Class QVector2D
   size=8 align=4
   base size=8 base align=4
QVector2D (0x7f7180718e40) 0

Class QTouchDevice
   size=8 align=8
   base size=8 base align=8
QTouchDevice (0x7f7180718f00) 0

Vtable for QInputEvent
QInputEvent::_ZTV11QInputEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QInputEvent)
16    (int (*)(...))QInputEvent::~QInputEvent
24    (int (*)(...))QInputEvent::~QInputEvent

Class QInputEvent
   size=32 align=8
   base size=32 base align=8
QInputEvent (0x7f71804f8820) 0
    vptr=((& QInputEvent::_ZTV11QInputEvent) + 16u)
  QEvent (0x7f71804eb060) 0
      primary-for QInputEvent (0x7f71804f8820)

Vtable for QEnterEvent
QEnterEvent::_ZTV11QEnterEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QEnterEvent)
16    (int (*)(...))QEnterEvent::~QEnterEvent
24    (int (*)(...))QEnterEvent::~QEnterEvent

Class QEnterEvent
   size=72 align=8
   base size=72 base align=8
QEnterEvent (0x7f71804f8f70) 0
    vptr=((& QEnterEvent::_ZTV11QEnterEvent) + 16u)
  QEvent (0x7f71804eb0c0) 0
      primary-for QEnterEvent (0x7f71804f8f70)

Vtable for QMouseEvent
QMouseEvent::_ZTV11QMouseEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QMouseEvent)
16    (int (*)(...))QMouseEvent::~QMouseEvent
24    (int (*)(...))QMouseEvent::~QMouseEvent

Class QMouseEvent
   size=104 align=8
   base size=100 base align=8
QMouseEvent (0x7f7180508820) 0
    vptr=((& QMouseEvent::_ZTV11QMouseEvent) + 16u)
  QInputEvent (0x7f7180508888) 0
      primary-for QMouseEvent (0x7f7180508820)
    QEvent (0x7f71804eb120) 0
        primary-for QInputEvent (0x7f7180508888)

Vtable for QHoverEvent
QHoverEvent::_ZTV11QHoverEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QHoverEvent)
16    (int (*)(...))QHoverEvent::~QHoverEvent
24    (int (*)(...))QHoverEvent::~QHoverEvent

Class QHoverEvent
   size=64 align=8
   base size=64 base align=8
QHoverEvent (0x7f71805205b0) 0
    vptr=((& QHoverEvent::_ZTV11QHoverEvent) + 16u)
  QInputEvent (0x7f7180520618) 0
      primary-for QHoverEvent (0x7f71805205b0)
    QEvent (0x7f71804eb180) 0
        primary-for QInputEvent (0x7f7180520618)

Vtable for QWheelEvent
QWheelEvent::_ZTV11QWheelEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QWheelEvent)
16    (int (*)(...))QWheelEvent::~QWheelEvent
24    (int (*)(...))QWheelEvent::~QWheelEvent

Class QWheelEvent
   size=96 align=8
   base size=96 base align=8
QWheelEvent (0x7f7180520bc8) 0
    vptr=((& QWheelEvent::_ZTV11QWheelEvent) + 16u)
  QInputEvent (0x7f7180520c30) 0
      primary-for QWheelEvent (0x7f7180520bc8)
    QEvent (0x7f71804eb1e0) 0
        primary-for QInputEvent (0x7f7180520c30)

Vtable for QTabletEvent
QTabletEvent::_ZTV12QTabletEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QTabletEvent)
16    (int (*)(...))QTabletEvent::~QTabletEvent
24    (int (*)(...))QTabletEvent::~QTabletEvent

Class QTabletEvent
   size=128 align=8
   base size=128 base align=8
QTabletEvent (0x7f7180535888) 0
    vptr=((& QTabletEvent::_ZTV12QTabletEvent) + 16u)
  QInputEvent (0x7f71805358f0) 0
      primary-for QTabletEvent (0x7f7180535888)
    QEvent (0x7f71804eb2a0) 0
        primary-for QInputEvent (0x7f71805358f0)

Vtable for QKeyEvent
QKeyEvent::_ZTV9QKeyEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QKeyEvent)
16    (int (*)(...))QKeyEvent::~QKeyEvent
24    (int (*)(...))QKeyEvent::~QKeyEvent

Class QKeyEvent
   size=64 align=8
   base size=59 base align=8
QKeyEvent (0x7f718054cea0) 0
    vptr=((& QKeyEvent::_ZTV9QKeyEvent) + 16u)
  QInputEvent (0x7f718054cf08) 0
      primary-for QKeyEvent (0x7f718054cea0)
    QEvent (0x7f71804eb300) 0
        primary-for QInputEvent (0x7f718054cf08)

Vtable for QFocusEvent
QFocusEvent::_ZTV11QFocusEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QFocusEvent)
16    (int (*)(...))QFocusEvent::~QFocusEvent
24    (int (*)(...))QFocusEvent::~QFocusEvent

Class QFocusEvent
   size=24 align=8
   base size=24 base align=8
QFocusEvent (0x7f7180555a28) 0
    vptr=((& QFocusEvent::_ZTV11QFocusEvent) + 16u)
  QEvent (0x7f71804eb360) 0
      primary-for QFocusEvent (0x7f7180555a28)

Vtable for QPaintEvent
QPaintEvent::_ZTV11QPaintEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QPaintEvent)
16    (int (*)(...))QPaintEvent::~QPaintEvent
24    (int (*)(...))QPaintEvent::~QPaintEvent

Class QPaintEvent
   size=56 align=8
   base size=49 base align=8
QPaintEvent (0x7f71805552d8) 0
    vptr=((& QPaintEvent::_ZTV11QPaintEvent) + 16u)
  QEvent (0x7f71804eb3c0) 0
      primary-for QPaintEvent (0x7f71805552d8)

Vtable for QMoveEvent
QMoveEvent::_ZTV10QMoveEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QMoveEvent)
16    (int (*)(...))QMoveEvent::~QMoveEvent
24    (int (*)(...))QMoveEvent::~QMoveEvent

Class QMoveEvent
   size=40 align=8
   base size=36 base align=8
QMoveEvent (0x7f71805682d8) 0
    vptr=((& QMoveEvent::_ZTV10QMoveEvent) + 16u)
  QEvent (0x7f71804eb420) 0
      primary-for QMoveEvent (0x7f71805682d8)

Vtable for QExposeEvent
QExposeEvent::_ZTV12QExposeEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QExposeEvent)
16    (int (*)(...))QExposeEvent::~QExposeEvent
24    (int (*)(...))QExposeEvent::~QExposeEvent

Class QExposeEvent
   size=32 align=8
   base size=32 base align=8
QExposeEvent (0x7f7180568618) 0
    vptr=((& QExposeEvent::_ZTV12QExposeEvent) + 16u)
  QEvent (0x7f71804eb480) 0
      primary-for QExposeEvent (0x7f7180568618)

Vtable for QResizeEvent
QResizeEvent::_ZTV12QResizeEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QResizeEvent)
16    (int (*)(...))QResizeEvent::~QResizeEvent
24    (int (*)(...))QResizeEvent::~QResizeEvent

Class QResizeEvent
   size=40 align=8
   base size=36 base align=8
QResizeEvent (0x7f7180568888) 0
    vptr=((& QResizeEvent::_ZTV12QResizeEvent) + 16u)
  QEvent (0x7f71804eb4e0) 0
      primary-for QResizeEvent (0x7f7180568888)

Vtable for QCloseEvent
QCloseEvent::_ZTV11QCloseEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QCloseEvent)
16    (int (*)(...))QCloseEvent::~QCloseEvent
24    (int (*)(...))QCloseEvent::~QCloseEvent

Class QCloseEvent
   size=24 align=8
   base size=20 base align=8
QCloseEvent (0x7f7180568bc8) 0
    vptr=((& QCloseEvent::_ZTV11QCloseEvent) + 16u)
  QEvent (0x7f71804eb540) 0
      primary-for QCloseEvent (0x7f7180568bc8)

Vtable for QIconDragEvent
QIconDragEvent::_ZTV14QIconDragEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QIconDragEvent)
16    (int (*)(...))QIconDragEvent::~QIconDragEvent
24    (int (*)(...))QIconDragEvent::~QIconDragEvent

Class QIconDragEvent
   size=24 align=8
   base size=20 base align=8
QIconDragEvent (0x7f7180568d68) 0
    vptr=((& QIconDragEvent::_ZTV14QIconDragEvent) + 16u)
  QEvent (0x7f71804eb5a0) 0
      primary-for QIconDragEvent (0x7f7180568d68)

Vtable for QShowEvent
QShowEvent::_ZTV10QShowEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QShowEvent)
16    (int (*)(...))QShowEvent::~QShowEvent
24    (int (*)(...))QShowEvent::~QShowEvent

Class QShowEvent
   size=24 align=8
   base size=20 base align=8
QShowEvent (0x7f7180568f08) 0
    vptr=((& QShowEvent::_ZTV10QShowEvent) + 16u)
  QEvent (0x7f71804eb600) 0
      primary-for QShowEvent (0x7f7180568f08)

Vtable for QHideEvent
QHideEvent::_ZTV10QHideEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QHideEvent)
16    (int (*)(...))QHideEvent::~QHideEvent
24    (int (*)(...))QHideEvent::~QHideEvent

Class QHideEvent
   size=24 align=8
   base size=20 base align=8
QHideEvent (0x7f7180568410) 0
    vptr=((& QHideEvent::_ZTV10QHideEvent) + 16u)
  QEvent (0x7f71804eb660) 0
      primary-for QHideEvent (0x7f7180568410)

Vtable for QContextMenuEvent
QContextMenuEvent::_ZTV17QContextMenuEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QContextMenuEvent)
16    (int (*)(...))QContextMenuEvent::~QContextMenuEvent
24    (int (*)(...))QContextMenuEvent::~QContextMenuEvent

Class QContextMenuEvent
   size=56 align=8
   base size=49 base align=8
QContextMenuEvent (0x7f7180568d00) 0
    vptr=((& QContextMenuEvent::_ZTV17QContextMenuEvent) + 16u)
  QInputEvent (0x7f7180568ea0) 0
      primary-for QContextMenuEvent (0x7f7180568d00)
    QEvent (0x7f71804eb6c0) 0
        primary-for QInputEvent (0x7f7180568ea0)

Class QInputMethodEvent::Attribute
   size=32 align=8
   base size=32 base align=8
QInputMethodEvent::Attribute (0x7f71804eb780) 0

Vtable for QInputMethodEvent
QInputMethodEvent::_ZTV17QInputMethodEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QInputMethodEvent)
16    (int (*)(...))QInputMethodEvent::~QInputMethodEvent
24    (int (*)(...))QInputMethodEvent::~QInputMethodEvent

Class QInputMethodEvent
   size=56 align=8
   base size=56 base align=8
QInputMethodEvent (0x7f7180587c30) 0
    vptr=((& QInputMethodEvent::_ZTV17QInputMethodEvent) + 16u)
  QEvent (0x7f71804eb720) 0
      primary-for QInputMethodEvent (0x7f7180587c30)

Class QInputMethodQueryEvent::QueryPair
   size=24 align=8
   base size=24 base align=8
QInputMethodQueryEvent::QueryPair (0x7f71804eb960) 0

Vtable for QInputMethodQueryEvent
QInputMethodQueryEvent::_ZTV22QInputMethodQueryEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI22QInputMethodQueryEvent)
16    (int (*)(...))QInputMethodQueryEvent::~QInputMethodQueryEvent
24    (int (*)(...))QInputMethodQueryEvent::~QInputMethodQueryEvent

Class QInputMethodQueryEvent
   size=32 align=8
   base size=32 base align=8
QInputMethodQueryEvent (0x7f71805c22d8) 0
    vptr=((& QInputMethodQueryEvent::_ZTV22QInputMethodQueryEvent) + 16u)
  QEvent (0x7f71804eb900) 0
      primary-for QInputMethodQueryEvent (0x7f71805c22d8)

Vtable for QDropEvent
QDropEvent::_ZTV10QDropEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QDropEvent)
16    (int (*)(...))QDropEvent::~QDropEvent
24    (int (*)(...))QDropEvent::~QDropEvent

Class QDropEvent
   size=72 align=8
   base size=72 base align=8
QDropEvent (0x7f71805c2b60) 0
    vptr=((& QDropEvent::_ZTV10QDropEvent) + 16u)
  QEvent (0x7f71804eba80) 0
      primary-for QDropEvent (0x7f71805c2b60)

Vtable for QDragMoveEvent
QDragMoveEvent::_ZTV14QDragMoveEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QDragMoveEvent)
16    (int (*)(...))QDragMoveEvent::~QDragMoveEvent
24    (int (*)(...))QDragMoveEvent::~QDragMoveEvent

Class QDragMoveEvent
   size=88 align=8
   base size=88 base align=8
QDragMoveEvent (0x7f71805f9750) 0
    vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 16u)
  QDropEvent (0x7f71805f97b8) 0
      primary-for QDragMoveEvent (0x7f71805f9750)
    QEvent (0x7f71804ebae0) 0
        primary-for QDropEvent (0x7f71805f97b8)

Vtable for QDragEnterEvent
QDragEnterEvent::_ZTV15QDragEnterEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QDragEnterEvent)
16    (int (*)(...))QDragEnterEvent::~QDragEnterEvent
24    (int (*)(...))QDragEnterEvent::~QDragEnterEvent

Class QDragEnterEvent
   size=88 align=8
   base size=88 base align=8
QDragEnterEvent (0x7f7180608340) 0
    vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 16u)
  QDragMoveEvent (0x7f71806083a8) 0
      primary-for QDragEnterEvent (0x7f7180608340)
    QDropEvent (0x7f7180608410) 0
        primary-for QDragMoveEvent (0x7f71806083a8)
      QEvent (0x7f71804ebb40) 0
          primary-for QDropEvent (0x7f7180608410)

Vtable for QDragLeaveEvent
QDragLeaveEvent::_ZTV15QDragLeaveEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QDragLeaveEvent)
16    (int (*)(...))QDragLeaveEvent::~QDragLeaveEvent
24    (int (*)(...))QDragLeaveEvent::~QDragLeaveEvent

Class QDragLeaveEvent
   size=24 align=8
   base size=20 base align=8
QDragLeaveEvent (0x7f71806085b0) 0
    vptr=((& QDragLeaveEvent::_ZTV15QDragLeaveEvent) + 16u)
  QEvent (0x7f71804ebba0) 0
      primary-for QDragLeaveEvent (0x7f71806085b0)

Vtable for QHelpEvent
QHelpEvent::_ZTV10QHelpEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QHelpEvent)
16    (int (*)(...))QHelpEvent::~QHelpEvent
24    (int (*)(...))QHelpEvent::~QHelpEvent

Class QHelpEvent
   size=40 align=8
   base size=36 base align=8
QHelpEvent (0x7f7180608750) 0
    vptr=((& QHelpEvent::_ZTV10QHelpEvent) + 16u)
  QEvent (0x7f71804ebc00) 0
      primary-for QHelpEvent (0x7f7180608750)

Vtable for QStatusTipEvent
QStatusTipEvent::_ZTV15QStatusTipEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QStatusTipEvent)
16    (int (*)(...))QStatusTipEvent::~QStatusTipEvent
24    (int (*)(...))QStatusTipEvent::~QStatusTipEvent

Class QStatusTipEvent
   size=32 align=8
   base size=32 base align=8
QStatusTipEvent (0x7f7180608ea0) 0
    vptr=((& QStatusTipEvent::_ZTV15QStatusTipEvent) + 16u)
  QEvent (0x7f71804ebc60) 0
      primary-for QStatusTipEvent (0x7f7180608ea0)

Vtable for QWhatsThisClickedEvent
QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI22QWhatsThisClickedEvent)
16    (int (*)(...))QWhatsThisClickedEvent::~QWhatsThisClickedEvent
24    (int (*)(...))QWhatsThisClickedEvent::~QWhatsThisClickedEvent

Class QWhatsThisClickedEvent
   size=32 align=8
   base size=32 base align=8
QWhatsThisClickedEvent (0x7f7180608958) 0
    vptr=((& QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent) + 16u)
  QEvent (0x7f71804ebcc0) 0
      primary-for QWhatsThisClickedEvent (0x7f7180608958)

Vtable for QActionEvent
QActionEvent::_ZTV12QActionEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QActionEvent)
16    (int (*)(...))QActionEvent::~QActionEvent
24    (int (*)(...))QActionEvent::~QActionEvent

Class QActionEvent
   size=40 align=8
   base size=40 base align=8
QActionEvent (0x7f718061a208) 0
    vptr=((& QActionEvent::_ZTV12QActionEvent) + 16u)
  QEvent (0x7f71804ebd20) 0
      primary-for QActionEvent (0x7f718061a208)

Vtable for QFileOpenEvent
QFileOpenEvent::_ZTV14QFileOpenEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QFileOpenEvent)
16    (int (*)(...))QFileOpenEvent::~QFileOpenEvent
24    (int (*)(...))QFileOpenEvent::~QFileOpenEvent

Class QFileOpenEvent
   size=40 align=8
   base size=40 base align=8
QFileOpenEvent (0x7f718061a548) 0
    vptr=((& QFileOpenEvent::_ZTV14QFileOpenEvent) + 16u)
  QEvent (0x7f71804ebd80) 0
      primary-for QFileOpenEvent (0x7f718061a548)

Vtable for QToolBarChangeEvent
QToolBarChangeEvent::_ZTV19QToolBarChangeEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QToolBarChangeEvent)
16    (int (*)(...))QToolBarChangeEvent::~QToolBarChangeEvent
24    (int (*)(...))QToolBarChangeEvent::~QToolBarChangeEvent

Class QToolBarChangeEvent
   size=24 align=8
   base size=21 base align=8
QToolBarChangeEvent (0x7f718061a958) 0
    vptr=((& QToolBarChangeEvent::_ZTV19QToolBarChangeEvent) + 16u)
  QEvent (0x7f71804ebde0) 0
      primary-for QToolBarChangeEvent (0x7f718061a958)

Vtable for QShortcutEvent
QShortcutEvent::_ZTV14QShortcutEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QShortcutEvent)
16    (int (*)(...))QShortcutEvent::~QShortcutEvent
24    (int (*)(...))QShortcutEvent::~QShortcutEvent

Class QShortcutEvent
   size=40 align=8
   base size=40 base align=8
QShortcutEvent (0x7f718061abc8) 0
    vptr=((& QShortcutEvent::_ZTV14QShortcutEvent) + 16u)
  QEvent (0x7f71804ebe40) 0
      primary-for QShortcutEvent (0x7f718061abc8)

Vtable for QWindowStateChangeEvent
QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI23QWindowStateChangeEvent)
16    (int (*)(...))QWindowStateChangeEvent::~QWindowStateChangeEvent
24    (int (*)(...))QWindowStateChangeEvent::~QWindowStateChangeEvent

Class QWindowStateChangeEvent
   size=32 align=8
   base size=25 base align=8
QWindowStateChangeEvent (0x7f718061a0d0) 0
    vptr=((& QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent) + 16u)
  QEvent (0x7f71804ebea0) 0
      primary-for QWindowStateChangeEvent (0x7f718061a0d0)

Class QTouchEvent::TouchPoint
   size=8 align=8
   base size=8 base align=8
QTouchEvent::TouchPoint (0x7f71804ebf60) 0

Vtable for QTouchEvent
QTouchEvent::_ZTV11QTouchEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QTouchEvent)
16    (int (*)(...))QTouchEvent::~QTouchEvent
24    (int (*)(...))QTouchEvent::~QTouchEvent

Class QTouchEvent
   size=72 align=8
   base size=72 base align=8
QTouchEvent (0x7f7180638270) 0
    vptr=((& QTouchEvent::_ZTV11QTouchEvent) + 16u)
  QInputEvent (0x7f71806382d8) 0
      primary-for QTouchEvent (0x7f7180638270)
    QEvent (0x7f71804ebf00) 0
        primary-for QInputEvent (0x7f71806382d8)

Vtable for QScrollPrepareEvent
QScrollPrepareEvent::_ZTV19QScrollPrepareEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QScrollPrepareEvent)
16    (int (*)(...))QScrollPrepareEvent::~QScrollPrepareEvent
24    (int (*)(...))QScrollPrepareEvent::~QScrollPrepareEvent

Class QScrollPrepareEvent
   size=112 align=8
   base size=112 base align=8
QScrollPrepareEvent (0x7f7180294340) 0
    vptr=((& QScrollPrepareEvent::_ZTV19QScrollPrepareEvent) + 16u)
  QEvent (0x7f71806521e0) 0
      primary-for QScrollPrepareEvent (0x7f7180294340)

Vtable for QScrollEvent
QScrollEvent::_ZTV12QScrollEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QScrollEvent)
16    (int (*)(...))QScrollEvent::~QScrollEvent
24    (int (*)(...))QScrollEvent::~QScrollEvent

Class QScrollEvent
   size=64 align=8
   base size=60 base align=8
QScrollEvent (0x7f71802944e0) 0
    vptr=((& QScrollEvent::_ZTV12QScrollEvent) + 16u)
  QEvent (0x7f7180652240) 0
      primary-for QScrollEvent (0x7f71802944e0)

Vtable for QScreenOrientationChangeEvent
QScreenOrientationChangeEvent::_ZTV29QScreenOrientationChangeEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI29QScreenOrientationChangeEvent)
16    (int (*)(...))QScreenOrientationChangeEvent::~QScreenOrientationChangeEvent
24    (int (*)(...))QScreenOrientationChangeEvent::~QScreenOrientationChangeEvent

Class QScreenOrientationChangeEvent
   size=40 align=8
   base size=36 base align=8
QScreenOrientationChangeEvent (0x7f7180294bc8) 0
    vptr=((& QScreenOrientationChangeEvent::_ZTV29QScreenOrientationChangeEvent) + 16u)
  QEvent (0x7f71806522a0) 0
      primary-for QScreenOrientationChangeEvent (0x7f7180294bc8)

Class QAccessible::State
   size=8 align=8
   base size=5 base align=8
QAccessible::State (0x7f71806523c0) 0

Class QAccessible
   size=1 align=1
   base size=0 base align=1
QAccessible (0x7f7180294d68) 0 empty

Vtable for QAccessibleInterface
QAccessibleInterface::_ZTV20QAccessibleInterface: 23u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QAccessibleInterface)
16    (int (*)(...))QAccessibleInterface::~QAccessibleInterface
24    (int (*)(...))QAccessibleInterface::~QAccessibleInterface
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))QAccessibleInterface::window
56    (int (*)(...))QAccessibleInterface::relations
64    (int (*)(...))QAccessibleInterface::focusChild
72    (int (*)(...))__cxa_pure_virtual
80    (int (*)(...))__cxa_pure_virtual
88    (int (*)(...))__cxa_pure_virtual
96    (int (*)(...))__cxa_pure_virtual
104   (int (*)(...))__cxa_pure_virtual
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))__cxa_pure_virtual
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))QAccessibleInterface::foregroundColor
160   (int (*)(...))QAccessibleInterface::backgroundColor
168   (int (*)(...))QAccessibleInterface::virtual_hook
176   (int (*)(...))QAccessibleInterface::interface_cast

Class QAccessibleInterface
   size=8 align=8
   base size=8 base align=8
QAccessibleInterface (0x7f71806524e0) 0 nearly-empty
    vptr=((& QAccessibleInterface::_ZTV20QAccessibleInterface) + 16u)

Vtable for QAccessibleEvent
QAccessibleEvent::_ZTV16QAccessibleEvent: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QAccessibleEvent)
16    (int (*)(...))QAccessibleEvent::~QAccessibleEvent
24    (int (*)(...))QAccessibleEvent::~QAccessibleEvent
32    (int (*)(...))QAccessibleEvent::accessibleInterface

Class QAccessibleEvent
   size=32 align=8
   base size=28 base align=8
QAccessibleEvent (0x7f7180652540) 0
    vptr=((& QAccessibleEvent::_ZTV16QAccessibleEvent) + 16u)

Vtable for QAccessibleStateChangeEvent
QAccessibleStateChangeEvent::_ZTV27QAccessibleStateChangeEvent: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI27QAccessibleStateChangeEvent)
16    (int (*)(...))QAccessibleStateChangeEvent::~QAccessibleStateChangeEvent
24    (int (*)(...))QAccessibleStateChangeEvent::~QAccessibleStateChangeEvent
32    (int (*)(...))QAccessibleEvent::accessibleInterface

Class QAccessibleStateChangeEvent
   size=40 align=8
   base size=40 base align=8
QAccessibleStateChangeEvent (0x7f71803059c0) 0
    vptr=((& QAccessibleStateChangeEvent::_ZTV27QAccessibleStateChangeEvent) + 16u)
  QAccessibleEvent (0x7f71806525a0) 0
      primary-for QAccessibleStateChangeEvent (0x7f71803059c0)

Vtable for QAccessibleTextCursorEvent
QAccessibleTextCursorEvent::_ZTV26QAccessibleTextCursorEvent: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI26QAccessibleTextCursorEvent)
16    (int (*)(...))QAccessibleTextCursorEvent::~QAccessibleTextCursorEvent
24    (int (*)(...))QAccessibleTextCursorEvent::~QAccessibleTextCursorEvent
32    (int (*)(...))QAccessibleEvent::accessibleInterface

Class QAccessibleTextCursorEvent
   size=32 align=8
   base size=32 base align=8
QAccessibleTextCursorEvent (0x7f71803141a0) 0
    vptr=((& QAccessibleTextCursorEvent::_ZTV26QAccessibleTextCursorEvent) + 16u)
  QAccessibleEvent (0x7f7180652600) 0
      primary-for QAccessibleTextCursorEvent (0x7f71803141a0)

Vtable for QAccessibleTextSelectionEvent
QAccessibleTextSelectionEvent::_ZTV29QAccessibleTextSelectionEvent: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI29QAccessibleTextSelectionEvent)
16    (int (*)(...))QAccessibleTextSelectionEvent::~QAccessibleTextSelectionEvent
24    (int (*)(...))QAccessibleTextSelectionEvent::~QAccessibleTextSelectionEvent
32    (int (*)(...))QAccessibleEvent::accessibleInterface

Class QAccessibleTextSelectionEvent
   size=40 align=8
   base size=40 base align=8
QAccessibleTextSelectionEvent (0x7f7180314958) 0
    vptr=((& QAccessibleTextSelectionEvent::_ZTV29QAccessibleTextSelectionEvent) + 16u)
  QAccessibleTextCursorEvent (0x7f71803149c0) 0
      primary-for QAccessibleTextSelectionEvent (0x7f7180314958)
    QAccessibleEvent (0x7f7180652660) 0
        primary-for QAccessibleTextCursorEvent (0x7f71803149c0)

Vtable for QAccessibleTextInsertEvent
QAccessibleTextInsertEvent::_ZTV26QAccessibleTextInsertEvent: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI26QAccessibleTextInsertEvent)
16    (int (*)(...))QAccessibleTextInsertEvent::~QAccessibleTextInsertEvent
24    (int (*)(...))QAccessibleTextInsertEvent::~QAccessibleTextInsertEvent
32    (int (*)(...))QAccessibleEvent::accessibleInterface

Class QAccessibleTextInsertEvent
   size=48 align=8
   base size=48 base align=8
QAccessibleTextInsertEvent (0x7f71803292d8) 0
    vptr=((& QAccessibleTextInsertEvent::_ZTV26QAccessibleTextInsertEvent) + 16u)
  QAccessibleTextCursorEvent (0x7f7180329340) 0
      primary-for QAccessibleTextInsertEvent (0x7f71803292d8)
    QAccessibleEvent (0x7f71806526c0) 0
        primary-for QAccessibleTextCursorEvent (0x7f7180329340)

Vtable for QAccessibleTextRemoveEvent
QAccessibleTextRemoveEvent::_ZTV26QAccessibleTextRemoveEvent: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI26QAccessibleTextRemoveEvent)
16    (int (*)(...))QAccessibleTextRemoveEvent::~QAccessibleTextRemoveEvent
24    (int (*)(...))QAccessibleTextRemoveEvent::~QAccessibleTextRemoveEvent
32    (int (*)(...))QAccessibleEvent::accessibleInterface

Class QAccessibleTextRemoveEvent
   size=48 align=8
   base size=48 base align=8
QAccessibleTextRemoveEvent (0x7f71803299c0) 0
    vptr=((& QAccessibleTextRemoveEvent::_ZTV26QAccessibleTextRemoveEvent) + 16u)
  QAccessibleTextCursorEvent (0x7f7180329a28) 0
      primary-for QAccessibleTextRemoveEvent (0x7f71803299c0)
    QAccessibleEvent (0x7f7180652720) 0
        primary-for QAccessibleTextCursorEvent (0x7f7180329a28)

Vtable for QAccessibleTextUpdateEvent
QAccessibleTextUpdateEvent::_ZTV26QAccessibleTextUpdateEvent: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI26QAccessibleTextUpdateEvent)
16    (int (*)(...))QAccessibleTextUpdateEvent::~QAccessibleTextUpdateEvent
24    (int (*)(...))QAccessibleTextUpdateEvent::~QAccessibleTextUpdateEvent
32    (int (*)(...))QAccessibleEvent::accessibleInterface

Class QAccessibleTextUpdateEvent
   size=56 align=8
   base size=56 base align=8
QAccessibleTextUpdateEvent (0x7f718033a000) 0
    vptr=((& QAccessibleTextUpdateEvent::_ZTV26QAccessibleTextUpdateEvent) + 16u)
  QAccessibleTextCursorEvent (0x7f718033a068) 0
      primary-for QAccessibleTextUpdateEvent (0x7f718033a000)
    QAccessibleEvent (0x7f7180652780) 0
        primary-for QAccessibleTextCursorEvent (0x7f718033a068)

Vtable for QAccessibleValueChangeEvent
QAccessibleValueChangeEvent::_ZTV27QAccessibleValueChangeEvent: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI27QAccessibleValueChangeEvent)
16    (int (*)(...))QAccessibleValueChangeEvent::~QAccessibleValueChangeEvent
24    (int (*)(...))QAccessibleValueChangeEvent::~QAccessibleValueChangeEvent
32    (int (*)(...))QAccessibleEvent::accessibleInterface

Class QAccessibleValueChangeEvent
   size=48 align=8
   base size=48 base align=8
QAccessibleValueChangeEvent (0x7f718033a820) 0
    vptr=((& QAccessibleValueChangeEvent::_ZTV27QAccessibleValueChangeEvent) + 16u)
  QAccessibleEvent (0x7f71806527e0) 0
      primary-for QAccessibleValueChangeEvent (0x7f718033a820)

Vtable for QAccessibleTableModelChangeEvent
QAccessibleTableModelChangeEvent::_ZTV32QAccessibleTableModelChangeEvent: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI32QAccessibleTableModelChangeEvent)
16    (int (*)(...))QAccessibleTableModelChangeEvent::~QAccessibleTableModelChangeEvent
24    (int (*)(...))QAccessibleTableModelChangeEvent::~QAccessibleTableModelChangeEvent
32    (int (*)(...))QAccessibleEvent::accessibleInterface

Class QAccessibleTableModelChangeEvent
   size=48 align=8
   base size=48 base align=8
QAccessibleTableModelChangeEvent (0x7f718033a138) 0
    vptr=((& QAccessibleTableModelChangeEvent::_ZTV32QAccessibleTableModelChangeEvent) + 16u)
  QAccessibleEvent (0x7f7180652840) 0
      primary-for QAccessibleTableModelChangeEvent (0x7f718033a138)

Vtable for QAccessibleBridge
QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QAccessibleBridge)
16    (int (*)(...))QAccessibleBridge::~QAccessibleBridge
24    (int (*)(...))QAccessibleBridge::~QAccessibleBridge
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual

Class QAccessibleBridge
   size=8 align=8
   base size=8 base align=8
QAccessibleBridge (0x7f7180652ba0) 0 nearly-empty
    vptr=((& QAccessibleBridge::_ZTV17QAccessibleBridge) + 16u)

Class QAccessibleBridgePlugin::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAccessibleBridgePlugin::QPrivateSignal (0x7f7180652c60) 0 empty

Vtable for QAccessibleBridgePlugin
QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI23QAccessibleBridgePlugin)
16    (int (*)(...))QAccessibleBridgePlugin::metaObject
24    (int (*)(...))QAccessibleBridgePlugin::qt_metacast
32    (int (*)(...))QAccessibleBridgePlugin::qt_metacall
40    (int (*)(...))QAccessibleBridgePlugin::~QAccessibleBridgePlugin
48    (int (*)(...))QAccessibleBridgePlugin::~QAccessibleBridgePlugin
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual

Class QAccessibleBridgePlugin
   size=16 align=8
   base size=16 base align=8
QAccessibleBridgePlugin (0x7f718035be38) 0
    vptr=((& QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin) + 16u)
  QObject (0x7f7180652c00) 0
      primary-for QAccessibleBridgePlugin (0x7f718035be38)

Vtable for QAccessibleObject
QAccessibleObject::_ZTV17QAccessibleObject: 23u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QAccessibleObject)
16    (int (*)(...))QAccessibleObject::~QAccessibleObject
24    (int (*)(...))QAccessibleObject::~QAccessibleObject
32    (int (*)(...))QAccessibleObject::isValid
40    (int (*)(...))QAccessibleObject::object
48    (int (*)(...))QAccessibleInterface::window
56    (int (*)(...))QAccessibleInterface::relations
64    (int (*)(...))QAccessibleInterface::focusChild
72    (int (*)(...))QAccessibleObject::childAt
80    (int (*)(...))__cxa_pure_virtual
88    (int (*)(...))__cxa_pure_virtual
96    (int (*)(...))__cxa_pure_virtual
104   (int (*)(...))__cxa_pure_virtual
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))QAccessibleObject::setText
128   (int (*)(...))QAccessibleObject::rect
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))QAccessibleInterface::foregroundColor
160   (int (*)(...))QAccessibleInterface::backgroundColor
168   (int (*)(...))QAccessibleInterface::virtual_hook
176   (int (*)(...))QAccessibleInterface::interface_cast

Class QAccessibleObject
   size=16 align=8
   base size=16 base align=8
QAccessibleObject (0x7f71803a8000) 0
    vptr=((& QAccessibleObject::_ZTV17QAccessibleObject) + 16u)
  QAccessibleInterface (0x7f7180652cc0) 0 nearly-empty
      primary-for QAccessibleObject (0x7f71803a8000)

Vtable for QAccessibleApplication
QAccessibleApplication::_ZTV22QAccessibleApplication: 23u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI22QAccessibleApplication)
16    (int (*)(...))QAccessibleApplication::~QAccessibleApplication
24    (int (*)(...))QAccessibleApplication::~QAccessibleApplication
32    (int (*)(...))QAccessibleObject::isValid
40    (int (*)(...))QAccessibleObject::object
48    (int (*)(...))QAccessibleApplication::window
56    (int (*)(...))QAccessibleInterface::relations
64    (int (*)(...))QAccessibleApplication::focusChild
72    (int (*)(...))QAccessibleObject::childAt
80    (int (*)(...))QAccessibleApplication::parent
88    (int (*)(...))QAccessibleApplication::child
96    (int (*)(...))QAccessibleApplication::childCount
104   (int (*)(...))QAccessibleApplication::indexOfChild
112   (int (*)(...))QAccessibleApplication::text
120   (int (*)(...))QAccessibleObject::setText
128   (int (*)(...))QAccessibleObject::rect
136   (int (*)(...))QAccessibleApplication::role
144   (int (*)(...))QAccessibleApplication::state
152   (int (*)(...))QAccessibleInterface::foregroundColor
160   (int (*)(...))QAccessibleInterface::backgroundColor
168   (int (*)(...))QAccessibleInterface::virtual_hook
176   (int (*)(...))QAccessibleInterface::interface_cast

Class QAccessibleApplication
   size=16 align=8
   base size=16 base align=8
QAccessibleApplication (0x7f71803a8750) 0
    vptr=((& QAccessibleApplication::_ZTV22QAccessibleApplication) + 16u)
  QAccessibleObject (0x7f71803a87b8) 0
      primary-for QAccessibleApplication (0x7f71803a8750)
    QAccessibleInterface (0x7f7180652d20) 0 nearly-empty
        primary-for QAccessibleObject (0x7f71803a87b8)

Class QAccessiblePlugin::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAccessiblePlugin::QPrivateSignal (0x7f7180652de0) 0 empty

Vtable for QAccessiblePlugin
QAccessiblePlugin::_ZTV17QAccessiblePlugin: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QAccessiblePlugin)
16    (int (*)(...))QAccessiblePlugin::metaObject
24    (int (*)(...))QAccessiblePlugin::qt_metacast
32    (int (*)(...))QAccessiblePlugin::qt_metacall
40    (int (*)(...))QAccessiblePlugin::~QAccessiblePlugin
48    (int (*)(...))QAccessiblePlugin::~QAccessiblePlugin
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual

Class QAccessiblePlugin
   size=16 align=8
   base size=16 base align=8
QAccessiblePlugin (0x7f71803a8f70) 0
    vptr=((& QAccessiblePlugin::_ZTV17QAccessiblePlugin) + 16u)
  QObject (0x7f7180652d80) 0
      primary-for QAccessiblePlugin (0x7f71803a8f70)

Vtable for QPaintDevice
QPaintDevice::_ZTV12QPaintDevice: 10u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QPaintDevice)
16    (int (*)(...))QPaintDevice::~QPaintDevice
24    (int (*)(...))QPaintDevice::~QPaintDevice
32    (int (*)(...))QPaintDevice::devType
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))QPaintDevice::metric
56    (int (*)(...))QPaintDevice::initPainter
64    (int (*)(...))QPaintDevice::redirected
72    (int (*)(...))QPaintDevice::sharedPainter

Class QPaintDevice
   size=24 align=8
   base size=24 base align=8
QPaintDevice (0x7f7180652e40) 0
    vptr=((& QPaintDevice::_ZTV12QPaintDevice) + 16u)

Class QPolygon
   size=8 align=8
   base size=8 base align=8
QPolygon (0x7f71803cdf08) 0
  QVector<QPoint> (0x7f7180652f60) 0

Class QPolygonF
   size=8 align=8
   base size=8 base align=8
QPolygonF (0x7f71803fef08) 0
  QVector<QPointF> (0x7f71804170c0) 0

Class QMatrix
   size=48 align=8
   base size=48 base align=8
QMatrix (0x7f7180417120) 0

Class QPainterPath::Element
   size=24 align=8
   base size=24 base align=8
QPainterPath::Element (0x7f7180417240) 0

Class QPainterPath
   size=8 align=8
   base size=8 base align=8
QPainterPath (0x7f71804171e0) 0

Class QPainterPathStroker
   size=8 align=8
   base size=8 base align=8
QPainterPathStroker (0x7f7180417360) 0

Class QTransform
   size=88 align=8
   base size=88 base align=8
QTransform (0x7f7180417ae0) 0

Vtable for QImage
QImage::_ZTV6QImage: 10u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI6QImage)
16    (int (*)(...))QImage::~QImage
24    (int (*)(...))QImage::~QImage
32    (int (*)(...))QImage::devType
40    (int (*)(...))QImage::paintEngine
48    (int (*)(...))QImage::metric
56    (int (*)(...))QPaintDevice::initPainter
64    (int (*)(...))QPaintDevice::redirected
72    (int (*)(...))QPaintDevice::sharedPainter

Class QImage
   size=32 align=8
   base size=32 base align=8
QImage (0x7f7180122680) 0
    vptr=((& QImage::_ZTV6QImage) + 16u)
  QPaintDevice (0x7f7180417ba0) 0
      primary-for QImage (0x7f7180122680)

Vtable for QPixmap
QPixmap::_ZTV7QPixmap: 10u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI7QPixmap)
16    (int (*)(...))QPixmap::~QPixmap
24    (int (*)(...))QPixmap::~QPixmap
32    (int (*)(...))QPixmap::devType
40    (int (*)(...))QPixmap::paintEngine
48    (int (*)(...))QPixmap::metric
56    (int (*)(...))QPaintDevice::initPainter
64    (int (*)(...))QPaintDevice::redirected
72    (int (*)(...))QPaintDevice::sharedPainter

Class QPixmap
   size=32 align=8
   base size=32 base align=8
QPixmap (0x7f718016c3a8) 0
    vptr=((& QPixmap::_ZTV7QPixmap) + 16u)
  QPaintDevice (0x7f7180417d20) 0
      primary-for QPixmap (0x7f718016c3a8)

Vtable for QBitmap
QBitmap::_ZTV7QBitmap: 10u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI7QBitmap)
16    (int (*)(...))QBitmap::~QBitmap
24    (int (*)(...))QBitmap::~QBitmap
32    (int (*)(...))QPixmap::devType
40    (int (*)(...))QPixmap::paintEngine
48    (int (*)(...))QPixmap::metric
56    (int (*)(...))QPaintDevice::initPainter
64    (int (*)(...))QPaintDevice::redirected
72    (int (*)(...))QPaintDevice::sharedPainter

Class QBitmap
   size=32 align=8
   base size=32 base align=8
QBitmap (0x7f71801aa6e8) 0
    vptr=((& QBitmap::_ZTV7QBitmap) + 16u)
  QPixmap (0x7f71801aa750) 0
      primary-for QBitmap (0x7f71801aa6e8)
    QPaintDevice (0x7f71801c1180) 0
        primary-for QPixmap (0x7f71801aa750)

Class QIcon
   size=8 align=8
   base size=8 base align=8
QIcon (0x7f71801c1240) 0

Class QIconEngine::AvailableSizesArgument
   size=16 align=8
   base size=16 base align=8
QIconEngine::AvailableSizesArgument (0x7f71801c1420) 0

Vtable for QIconEngine
QIconEngine::_ZTV11QIconEngine: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QIconEngine)
16    (int (*)(...))QIconEngine::~QIconEngine
24    (int (*)(...))QIconEngine::~QIconEngine
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))QIconEngine::actualSize
48    (int (*)(...))QIconEngine::pixmap
56    (int (*)(...))QIconEngine::addPixmap
64    (int (*)(...))QIconEngine::addFile
72    (int (*)(...))QIconEngine::key
80    (int (*)(...))__cxa_pure_virtual
88    (int (*)(...))QIconEngine::read
96    (int (*)(...))QIconEngine::write
104   (int (*)(...))QIconEngine::availableSizes
112   (int (*)(...))QIconEngine::iconName
120   (int (*)(...))QIconEngine::virtual_hook

Class QIconEngine
   size=8 align=8
   base size=8 base align=8
QIconEngine (0x7f71801c13c0) 0 nearly-empty
    vptr=((& QIconEngine::_ZTV11QIconEngine) + 16u)

Class QIconEnginePlugin::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QIconEnginePlugin::QPrivateSignal (0x7f71801c15a0) 0 empty

Vtable for QIconEnginePlugin
QIconEnginePlugin::_ZTV17QIconEnginePlugin: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QIconEnginePlugin)
16    (int (*)(...))QIconEnginePlugin::metaObject
24    (int (*)(...))QIconEnginePlugin::qt_metacast
32    (int (*)(...))QIconEnginePlugin::qt_metacall
40    (int (*)(...))QIconEnginePlugin::~QIconEnginePlugin
48    (int (*)(...))QIconEnginePlugin::~QIconEnginePlugin
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual

Class QIconEnginePlugin
   size=16 align=8
   base size=16 base align=8
QIconEnginePlugin (0x7f71801f98f0) 0
    vptr=((& QIconEnginePlugin::_ZTV17QIconEnginePlugin) + 16u)
  QObject (0x7f71801c1540) 0
      primary-for QIconEnginePlugin (0x7f71801f98f0)

Vtable for QImageIOHandler
QImageIOHandler::_ZTV15QImageIOHandler: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QImageIOHandler)
16    (int (*)(...))QImageIOHandler::~QImageIOHandler
24    (int (*)(...))QImageIOHandler::~QImageIOHandler
32    (int (*)(...))QImageIOHandler::name
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))QImageIOHandler::write
64    (int (*)(...))QImageIOHandler::option
72    (int (*)(...))QImageIOHandler::setOption
80    (int (*)(...))QImageIOHandler::supportsOption
88    (int (*)(...))QImageIOHandler::jumpToNextImage
96    (int (*)(...))QImageIOHandler::jumpToImage
104   (int (*)(...))QImageIOHandler::loopCount
112   (int (*)(...))QImageIOHandler::imageCount
120   (int (*)(...))QImageIOHandler::nextImageDelay
128   (int (*)(...))QImageIOHandler::currentImageNumber
136   (int (*)(...))QImageIOHandler::currentImageRect

Class QImageIOHandler
   size=16 align=8
   base size=16 base align=8
QImageIOHandler (0x7f71801c1600) 0
    vptr=((& QImageIOHandler::_ZTV15QImageIOHandler) + 16u)

Class QImageIOPlugin::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QImageIOPlugin::QPrivateSignal (0x7f71801c1780) 0 empty

Vtable for QImageIOPlugin
QImageIOPlugin::_ZTV14QImageIOPlugin: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QImageIOPlugin)
16    (int (*)(...))QImageIOPlugin::metaObject
24    (int (*)(...))QImageIOPlugin::qt_metacast
32    (int (*)(...))QImageIOPlugin::qt_metacall
40    (int (*)(...))QImageIOPlugin::~QImageIOPlugin
48    (int (*)(...))QImageIOPlugin::~QImageIOPlugin
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual

Class QImageIOPlugin
   size=16 align=8
   base size=16 base align=8
QImageIOPlugin (0x7f7180234750) 0
    vptr=((& QImageIOPlugin::_ZTV14QImageIOPlugin) + 16u)
  QObject (0x7f71801c1720) 0
      primary-for QImageIOPlugin (0x7f7180234750)

Class QImageReader
   size=8 align=8
   base size=8 base align=8
QImageReader (0x7f71801c18a0) 0

Class QImageWriter
   size=8 align=8
   base size=8 base align=8
QImageWriter (0x7f71801c1900) 0

Class QMovie::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QMovie::QPrivateSignal (0x7f71801c19c0) 0 empty

Vtable for QMovie
QMovie::_ZTV6QMovie: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI6QMovie)
16    (int (*)(...))QMovie::metaObject
24    (int (*)(...))QMovie::qt_metacast
32    (int (*)(...))QMovie::qt_metacall
40    (int (*)(...))QMovie::~QMovie
48    (int (*)(...))QMovie::~QMovie
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QMovie
   size=16 align=8
   base size=16 base align=8
QMovie (0x7f717fe79618) 0
    vptr=((& QMovie::_ZTV6QMovie) + 16u)
  QObject (0x7f71801c1960) 0
      primary-for QMovie (0x7f717fe79618)

Vtable for QPicture
QPicture::_ZTV8QPicture: 11u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI8QPicture)
16    (int (*)(...))QPicture::~QPicture
24    (int (*)(...))QPicture::~QPicture
32    (int (*)(...))QPicture::devType
40    (int (*)(...))QPicture::paintEngine
48    (int (*)(...))QPicture::metric
56    (int (*)(...))QPaintDevice::initPainter
64    (int (*)(...))QPaintDevice::redirected
72    (int (*)(...))QPaintDevice::sharedPainter
80    (int (*)(...))QPicture::setData

Class QPicture
   size=32 align=8
   base size=32 base align=8
QPicture (0x7f717fe93888) 0
    vptr=((& QPicture::_ZTV8QPicture) + 16u)
  QPaintDevice (0x7f71801c1a20) 0
      primary-for QPicture (0x7f717fe93888)

Class QPictureIO
   size=8 align=8
   base size=8 base align=8
QPictureIO (0x7f71801c1b40) 0

Class QPictureFormatPlugin::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPictureFormatPlugin::QPrivateSignal (0x7f71801c1c00) 0 empty

Vtable for QPictureFormatPlugin
QPictureFormatPlugin::_ZTV20QPictureFormatPlugin: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QPictureFormatPlugin)
16    (int (*)(...))QPictureFormatPlugin::metaObject
24    (int (*)(...))QPictureFormatPlugin::qt_metacast
32    (int (*)(...))QPictureFormatPlugin::qt_metacall
40    (int (*)(...))QPictureFormatPlugin::~QPictureFormatPlugin
48    (int (*)(...))QPictureFormatPlugin::~QPictureFormatPlugin
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QPictureFormatPlugin::loadPicture
120   (int (*)(...))QPictureFormatPlugin::savePicture
128   (int (*)(...))__cxa_pure_virtual

Class QPictureFormatPlugin
   size=16 align=8
   base size=16 base align=8
QPictureFormatPlugin (0x7f717fea4d68) 0
    vptr=((& QPictureFormatPlugin::_ZTV20QPictureFormatPlugin) + 16u)
  QObject (0x7f71801c1ba0) 0
      primary-for QPictureFormatPlugin (0x7f717fea4d68)

Class QPixmapCache::Key
   size=8 align=8
   base size=8 base align=8
QPixmapCache::Key (0x7f71801c1cc0) 0

Class QPixmapCache
   size=1 align=1
   base size=0 base align=1
QPixmapCache (0x7f71801c1c60) 0 empty

Class QBrush
   size=8 align=8
   base size=8 base align=8
QBrush (0x7f71801c1d20) 0

Class QBrushData
   size=112 align=8
   base size=112 base align=8
QBrushData (0x7f71801c1e40) 0

Class QGradient
   size=64 align=8
   base size=64 base align=8
QGradient (0x7f71801c1ea0) 0

Class QLinearGradient
   size=64 align=8
   base size=64 base align=8
QLinearGradient (0x7f717ff42138) 0
  QGradient (0x7f717ff3d180) 0

Class QRadialGradient
   size=64 align=8
   base size=64 base align=8
QRadialGradient (0x7f717ff423a8) 0
  QGradient (0x7f717ff3d1e0) 0

Class QConicalGradient
   size=64 align=8
   base size=64 base align=8
QConicalGradient (0x7f717ff427b8) 0
  QGradient (0x7f717ff3d240) 0

Class QFont
   size=16 align=8
   base size=12 base align=8
QFont (0x7f717ff3d2a0) 0

Vtable for QStandardItem
QStandardItem::_ZTV13QStandardItem: 11u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QStandardItem)
16    (int (*)(...))QStandardItem::~QStandardItem
24    (int (*)(...))QStandardItem::~QStandardItem
32    (int (*)(...))QStandardItem::data
40    (int (*)(...))QStandardItem::setData
48    (int (*)(...))QStandardItem::clone
56    (int (*)(...))QStandardItem::type
64    (int (*)(...))QStandardItem::read
72    (int (*)(...))QStandardItem::write
80    (int (*)(...))QStandardItem::operator<

Class QStandardItem
   size=16 align=8
   base size=16 base align=8
QStandardItem (0x7f717ff3d3c0) 0
    vptr=((& QStandardItem::_ZTV13QStandardItem) + 16u)

Class QStandardItemModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QStandardItemModel::QPrivateSignal (0x7f717ff3d600) 0 empty

Vtable for QStandardItemModel
QStandardItemModel::_ZTV18QStandardItemModel: 48u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QStandardItemModel)
16    (int (*)(...))QStandardItemModel::metaObject
24    (int (*)(...))QStandardItemModel::qt_metacast
32    (int (*)(...))QStandardItemModel::qt_metacall
40    (int (*)(...))QStandardItemModel::~QStandardItemModel
48    (int (*)(...))QStandardItemModel::~QStandardItemModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QStandardItemModel::index
120   (int (*)(...))QStandardItemModel::parent
128   (int (*)(...))QStandardItemModel::sibling
136   (int (*)(...))QStandardItemModel::rowCount
144   (int (*)(...))QStandardItemModel::columnCount
152   (int (*)(...))QStandardItemModel::hasChildren
160   (int (*)(...))QStandardItemModel::data
168   (int (*)(...))QStandardItemModel::setData
176   (int (*)(...))QStandardItemModel::headerData
184   (int (*)(...))QStandardItemModel::setHeaderData
192   (int (*)(...))QStandardItemModel::itemData
200   (int (*)(...))QStandardItemModel::setItemData
208   (int (*)(...))QStandardItemModel::mimeTypes
216   (int (*)(...))QStandardItemModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QStandardItemModel::dropMimeData
240   (int (*)(...))QStandardItemModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QStandardItemModel::insertRows
264   (int (*)(...))QStandardItemModel::insertColumns
272   (int (*)(...))QStandardItemModel::removeRows
280   (int (*)(...))QStandardItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractItemModel::fetchMore
312   (int (*)(...))QAbstractItemModel::canFetchMore
320   (int (*)(...))QStandardItemModel::flags
328   (int (*)(...))QStandardItemModel::sort
336   (int (*)(...))QAbstractItemModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractItemModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractItemModel::submit
376   (int (*)(...))QAbstractItemModel::revert

Class QStandardItemModel
   size=16 align=8
   base size=16 base align=8
QStandardItemModel (0x7f718002ad68) 0
    vptr=((& QStandardItemModel::_ZTV18QStandardItemModel) + 16u)
  QAbstractItemModel (0x7f718002add0) 0
      primary-for QStandardItemModel (0x7f718002ad68)
    QObject (0x7f717ff3d5a0) 0
        primary-for QAbstractItemModel (0x7f718002add0)

Class QClipboard::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QClipboard::QPrivateSignal (0x7f717ff3d6c0) 0 empty

Vtable for QClipboard
QClipboard::_ZTV10QClipboard: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QClipboard)
16    (int (*)(...))QClipboard::metaObject
24    (int (*)(...))QClipboard::qt_metacast
32    (int (*)(...))QClipboard::qt_metacall
40    (int (*)(...))QClipboard::~QClipboard
48    (int (*)(...))QClipboard::~QClipboard
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QClipboard
   size=16 align=8
   base size=16 base align=8
QClipboard (0x7f717fc5d340) 0
    vptr=((& QClipboard::_ZTV10QClipboard) + 16u)
  QObject (0x7f717ff3d660) 0
      primary-for QClipboard (0x7f717fc5d340)

Class QCursor
   size=8 align=8
   base size=8 base align=8
QCursor (0x7f717ff3d720) 0

Class QDrag::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QDrag::QPrivateSignal (0x7f717ff3d7e0) 0 empty

Vtable for QDrag
QDrag::_ZTV5QDrag: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI5QDrag)
16    (int (*)(...))QDrag::metaObject
24    (int (*)(...))QDrag::qt_metacast
32    (int (*)(...))QDrag::qt_metacall
40    (int (*)(...))QDrag::~QDrag
48    (int (*)(...))QDrag::~QDrag
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QDrag
   size=16 align=8
   base size=16 base align=8
QDrag (0x7f717fc75208) 0
    vptr=((& QDrag::_ZTV5QDrag) + 16u)
  QObject (0x7f717ff3d780) 0
      primary-for QDrag (0x7f717fc75208)

Class QGenericPlugin::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QGenericPlugin::QPrivateSignal (0x7f717ff3d8a0) 0 empty

Vtable for QGenericPlugin
QGenericPlugin::_ZTV14QGenericPlugin: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QGenericPlugin)
16    (int (*)(...))QGenericPlugin::metaObject
24    (int (*)(...))QGenericPlugin::qt_metacast
32    (int (*)(...))QGenericPlugin::qt_metacall
40    (int (*)(...))QGenericPlugin::~QGenericPlugin
48    (int (*)(...))QGenericPlugin::~QGenericPlugin
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual

Class QGenericPlugin
   size=16 align=8
   base size=16 base align=8
QGenericPlugin (0x7f717fc75c30) 0
    vptr=((& QGenericPlugin::_ZTV14QGenericPlugin) + 16u)
  QObject (0x7f717ff3d840) 0
      primary-for QGenericPlugin (0x7f717fc75c30)

Class QGenericPluginFactory
   size=1 align=1
   base size=0 base align=1
QGenericPluginFactory (0x7f717ff3d900) 0 empty

Class QInputMethod::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QInputMethod::QPrivateSignal (0x7f717ff3d9c0) 0 empty

Vtable for QInputMethod
QInputMethod::_ZTV12QInputMethod: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QInputMethod)
16    (int (*)(...))QInputMethod::metaObject
24    (int (*)(...))QInputMethod::qt_metacast
32    (int (*)(...))QInputMethod::qt_metacall
40    (int (*)(...))QInputMethod::~QInputMethod
48    (int (*)(...))QInputMethod::~QInputMethod
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QInputMethod
   size=16 align=8
   base size=16 base align=8
QInputMethod (0x7f717fc93618) 0
    vptr=((& QInputMethod::_ZTV12QInputMethod) + 16u)
  QObject (0x7f717ff3d960) 0
      primary-for QInputMethod (0x7f717fc93618)

Class QGuiApplication::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QGuiApplication::QPrivateSignal (0x7f717ff3da80) 0 empty

Vtable for QGuiApplication
QGuiApplication::_ZTV15QGuiApplication: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QGuiApplication)
16    (int (*)(...))QGuiApplication::metaObject
24    (int (*)(...))QGuiApplication::qt_metacast
32    (int (*)(...))QGuiApplication::qt_metacall
40    (int (*)(...))QGuiApplication::~QGuiApplication
48    (int (*)(...))QGuiApplication::~QGuiApplication
56    (int (*)(...))QGuiApplication::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QGuiApplication::notify
120   (int (*)(...))QGuiApplication::compressEvent

Class QGuiApplication
   size=16 align=8
   base size=16 base align=8
QGuiApplication (0x7f717fc93c98) 0
    vptr=((& QGuiApplication::_ZTV15QGuiApplication) + 16u)
  QCoreApplication (0x7f717fc93d00) 0
      primary-for QGuiApplication (0x7f717fc93c98)
    QObject (0x7f717ff3da20) 0
        primary-for QCoreApplication (0x7f717fc93d00)

Class QSurfaceFormat
   size=8 align=8
   base size=8 base align=8
QSurfaceFormat (0x7f717ff3dae0) 0

Class QOpenGLContextGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QOpenGLContextGroup::QPrivateSignal (0x7f717ff3dcc0) 0 empty

Vtable for QOpenGLContextGroup
QOpenGLContextGroup::_ZTV19QOpenGLContextGroup: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QOpenGLContextGroup)
16    (int (*)(...))QOpenGLContextGroup::metaObject
24    (int (*)(...))QOpenGLContextGroup::qt_metacast
32    (int (*)(...))QOpenGLContextGroup::qt_metacall
40    (int (*)(...))QOpenGLContextGroup::~QOpenGLContextGroup
48    (int (*)(...))QOpenGLContextGroup::~QOpenGLContextGroup
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QOpenGLContextGroup
   size=16 align=8
   base size=16 base align=8
QOpenGLContextGroup (0x7f717fcee888) 0
    vptr=((& QOpenGLContextGroup::_ZTV19QOpenGLContextGroup) + 16u)
  QObject (0x7f717ff3dc60) 0
      primary-for QOpenGLContextGroup (0x7f717fcee888)

Class QOpenGLContext::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QOpenGLContext::QPrivateSignal (0x7f717ff3dd80) 0 empty

Vtable for QOpenGLContext
QOpenGLContext::_ZTV14QOpenGLContext: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QOpenGLContext)
16    (int (*)(...))QOpenGLContext::metaObject
24    (int (*)(...))QOpenGLContext::qt_metacast
32    (int (*)(...))QOpenGLContext::qt_metacall
40    (int (*)(...))QOpenGLContext::~QOpenGLContext
48    (int (*)(...))QOpenGLContext::~QOpenGLContext
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QOpenGLContext
   size=16 align=8
   base size=16 base align=8
QOpenGLContext (0x7f717fceec30) 0
    vptr=((& QOpenGLContext::_ZTV14QOpenGLContext) + 16u)
  QObject (0x7f717ff3dd20) 0
      primary-for QOpenGLContext (0x7f717fceec30)

Class QPalette
   size=16 align=8
   base size=12 base align=8
QPalette (0x7f717ff3dde0) 0

Class QScreen::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QScreen::QPrivateSignal (0x7f717f985000) 0 empty

Vtable for QScreen
QScreen::_ZTV7QScreen: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI7QScreen)
16    (int (*)(...))QScreen::metaObject
24    (int (*)(...))QScreen::qt_metacast
32    (int (*)(...))QScreen::qt_metacall
40    (int (*)(...))QScreen::~QScreen
48    (int (*)(...))QScreen::~QScreen
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QScreen
   size=16 align=8
   base size=16 base align=8
QScreen (0x7f717f972680) 0
    vptr=((& QScreen::_ZTV7QScreen) + 16u)
  QObject (0x7f717ff3df60) 0
      primary-for QScreen (0x7f717f972680)

Class QSessionManager::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSessionManager::QPrivateSignal (0x7f717f9850c0) 0 empty

Vtable for QSessionManager
QSessionManager::_ZTV15QSessionManager: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QSessionManager)
16    (int (*)(...))QSessionManager::metaObject
24    (int (*)(...))QSessionManager::qt_metacast
32    (int (*)(...))QSessionManager::qt_metacall
40    (int (*)(...))QSessionManager::~QSessionManager
48    (int (*)(...))QSessionManager::~QSessionManager
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QSessionManager
   size=16 align=8
   base size=16 base align=8
QSessionManager (0x7f717f9934e0) 0
    vptr=((& QSessionManager::_ZTV15QSessionManager) + 16u)
  QObject (0x7f717f985060) 0
      primary-for QSessionManager (0x7f717f9934e0)

Class QStyleHints::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QStyleHints::QPrivateSignal (0x7f717f985180) 0 empty

Vtable for QStyleHints
QStyleHints::_ZTV11QStyleHints: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QStyleHints)
16    (int (*)(...))QStyleHints::metaObject
24    (int (*)(...))QStyleHints::qt_metacast
32    (int (*)(...))QStyleHints::qt_metacall
40    (int (*)(...))QStyleHints::~QStyleHints
48    (int (*)(...))QStyleHints::~QStyleHints
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QStyleHints
   size=16 align=8
   base size=16 base align=8
QStyleHints (0x7f717f993c98) 0
    vptr=((& QStyleHints::_ZTV11QStyleHints) + 16u)
  QObject (0x7f717f985120) 0
      primary-for QStyleHints (0x7f717f993c98)

Vtable for QSurface
QSurface::_ZTV8QSurface: 8u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI8QSurface)
16    (int (*)(...))QSurface::~QSurface
24    (int (*)(...))QSurface::~QSurface
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual

Class QSurface
   size=24 align=8
   base size=24 base align=8
QSurface (0x7f717f9851e0) 0
    vptr=((& QSurface::_ZTV8QSurface) + 16u)

Class QWindow::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QWindow::QPrivateSignal (0x7f717f985300) 0 empty

Vtable for QWindow
QWindow::_ZTV7QWindow: 45u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI7QWindow)
16    (int (*)(...))QWindow::metaObject
24    (int (*)(...))QWindow::qt_metacast
32    (int (*)(...))QWindow::qt_metacall
40    (int (*)(...))QWindow::~QWindow
48    (int (*)(...))QWindow::~QWindow
56    (int (*)(...))QWindow::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QWindow::surfaceType
120   (int (*)(...))QWindow::format
128   (int (*)(...))QWindow::size
136   (int (*)(...))QWindow::accessibleRoot
144   (int (*)(...))QWindow::focusObject
152   (int (*)(...))QWindow::exposeEvent
160   (int (*)(...))QWindow::resizeEvent
168   (int (*)(...))QWindow::moveEvent
176   (int (*)(...))QWindow::focusInEvent
184   (int (*)(...))QWindow::focusOutEvent
192   (int (*)(...))QWindow::showEvent
200   (int (*)(...))QWindow::hideEvent
208   (int (*)(...))QWindow::keyPressEvent
216   (int (*)(...))QWindow::keyReleaseEvent
224   (int (*)(...))QWindow::mousePressEvent
232   (int (*)(...))QWindow::mouseReleaseEvent
240   (int (*)(...))QWindow::mouseDoubleClickEvent
248   (int (*)(...))QWindow::mouseMoveEvent
256   (int (*)(...))QWindow::wheelEvent
264   (int (*)(...))QWindow::touchEvent
272   (int (*)(...))QWindow::tabletEvent
280   (int (*)(...))QWindow::nativeEvent
288   (int (*)(...))QWindow::surfaceHandle
296   (int (*)(...))-16
304   (int (*)(...))(& _ZTI7QWindow)
312   (int (*)(...))QWindow::_ZThn16_N7QWindowD1Ev
320   (int (*)(...))QWindow::_ZThn16_N7QWindowD0Ev
328   (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
336   (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
344   (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
352   (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv

Class QWindow
   size=40 align=8
   base size=40 base align=8
QWindow (0x7f717f9a1c40) 0
    vptr=((& QWindow::_ZTV7QWindow) + 16u)
  QObject (0x7f717f985240) 0
      primary-for QWindow (0x7f717f9a1c40)
  QSurface (0x7f717f9852a0) 16
      vptr=((& QWindow::_ZTV7QWindow) + 312u)

Class QVector3D
   size=12 align=4
   base size=12 base align=4
QVector3D (0x7f717f739000) 0

Class QVector4D
   size=16 align=4
   base size=16 base align=4
QVector4D (0x7f717f7390c0) 0

Class QQuaternion
   size=16 align=4
   base size=16 base align=4
QQuaternion (0x7f717f7396c0) 0

Class QMatrix4x4
   size=68 align=4
   base size=68 base align=4
QMatrix4x4 (0x7f717f739e40) 0

Class QOpenGLBuffer
   size=8 align=8
   base size=8 base align=8
QOpenGLBuffer (0x7f717f83d240) 0

Vtable for QOpenGLFramebufferObject
QOpenGLFramebufferObject::_ZTV24QOpenGLFramebufferObject: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI24QOpenGLFramebufferObject)
16    (int (*)(...))QOpenGLFramebufferObject::~QOpenGLFramebufferObject
24    (int (*)(...))QOpenGLFramebufferObject::~QOpenGLFramebufferObject

Class QOpenGLFramebufferObject
   size=16 align=8
   base size=16 base align=8
QOpenGLFramebufferObject (0x7f717f83d2a0) 0
    vptr=((& QOpenGLFramebufferObject::_ZTV24QOpenGLFramebufferObject) + 16u)

Class QOpenGLFramebufferObjectFormat
   size=8 align=8
   base size=8 base align=8
QOpenGLFramebufferObjectFormat (0x7f717f83d3c0) 0

Class QOpenGLFunctions
   size=8 align=8
   base size=8 base align=8
QOpenGLFunctions (0x7f717f83d420) 0

Class QOpenGLFunctionsPrivate
   size=760 align=8
   base size=760 base align=8
QOpenGLFunctionsPrivate (0x7f717f83d540) 0

Vtable for QOpenGLPaintDevice
QOpenGLPaintDevice::_ZTV18QOpenGLPaintDevice: 11u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QOpenGLPaintDevice)
16    (int (*)(...))QOpenGLPaintDevice::~QOpenGLPaintDevice
24    (int (*)(...))QOpenGLPaintDevice::~QOpenGLPaintDevice
32    (int (*)(...))QOpenGLPaintDevice::devType
40    (int (*)(...))QOpenGLPaintDevice::paintEngine
48    (int (*)(...))QOpenGLPaintDevice::metric
56    (int (*)(...))QPaintDevice::initPainter
64    (int (*)(...))QPaintDevice::redirected
72    (int (*)(...))QPaintDevice::sharedPainter
80    (int (*)(...))QOpenGLPaintDevice::ensureActiveTarget

Class QOpenGLPaintDevice
   size=32 align=8
   base size=32 base align=8
QOpenGLPaintDevice (0x7f717f62ee38) 0
    vptr=((& QOpenGLPaintDevice::_ZTV18QOpenGLPaintDevice) + 16u)
  QPaintDevice (0x7f717f602ba0) 0
      primary-for QOpenGLPaintDevice (0x7f717f62ee38)

Class QOpenGLShader::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QOpenGLShader::QPrivateSignal (0x7f717f602d20) 0 empty

Vtable for QOpenGLShader
QOpenGLShader::_ZTV13QOpenGLShader: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QOpenGLShader)
16    (int (*)(...))QOpenGLShader::metaObject
24    (int (*)(...))QOpenGLShader::qt_metacast
32    (int (*)(...))QOpenGLShader::qt_metacall
40    (int (*)(...))QOpenGLShader::~QOpenGLShader
48    (int (*)(...))QOpenGLShader::~QOpenGLShader
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QOpenGLShader
   size=16 align=8
   base size=16 base align=8
QOpenGLShader (0x7f717f634a28) 0
    vptr=((& QOpenGLShader::_ZTV13QOpenGLShader) + 16u)
  QObject (0x7f717f602cc0) 0
      primary-for QOpenGLShader (0x7f717f634a28)

Class QOpenGLShaderProgram::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QOpenGLShaderProgram::QPrivateSignal (0x7f717f602ea0) 0 empty

Vtable for QOpenGLShaderProgram
QOpenGLShaderProgram::_ZTV20QOpenGLShaderProgram: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QOpenGLShaderProgram)
16    (int (*)(...))QOpenGLShaderProgram::metaObject
24    (int (*)(...))QOpenGLShaderProgram::qt_metacast
32    (int (*)(...))QOpenGLShaderProgram::qt_metacall
40    (int (*)(...))QOpenGLShaderProgram::~QOpenGLShaderProgram
48    (int (*)(...))QOpenGLShaderProgram::~QOpenGLShaderProgram
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QOpenGLShaderProgram::link

Class QOpenGLShaderProgram
   size=16 align=8
   base size=16 base align=8
QOpenGLShaderProgram (0x7f717f2692d8) 0
    vptr=((& QOpenGLShaderProgram::_ZTV20QOpenGLShaderProgram) + 16u)
  QObject (0x7f717f602e40) 0
      primary-for QOpenGLShaderProgram (0x7f717f2692d8)

Class QBackingStore
   size=8 align=8
   base size=8 base align=8
QBackingStore (0x7f717f602f00) 0

Class QPagedPaintDevice::Margins
   size=32 align=8
   base size=32 base align=8
QPagedPaintDevice::Margins (0x7f717f2ce060) 0

Vtable for QPagedPaintDevice
QPagedPaintDevice::_ZTV17QPagedPaintDevice: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QPagedPaintDevice)
16    (int (*)(...))QPagedPaintDevice::~QPagedPaintDevice
24    (int (*)(...))QPagedPaintDevice::~QPagedPaintDevice
32    (int (*)(...))QPaintDevice::devType
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))QPaintDevice::metric
56    (int (*)(...))QPaintDevice::initPainter
64    (int (*)(...))QPaintDevice::redirected
72    (int (*)(...))QPaintDevice::sharedPainter
80    (int (*)(...))__cxa_pure_virtual
88    (int (*)(...))QPagedPaintDevice::setPageSize
96    (int (*)(...))QPagedPaintDevice::setPageSizeMM
104   (int (*)(...))QPagedPaintDevice::setMargins

Class QPagedPaintDevice
   size=32 align=8
   base size=32 base align=8
QPagedPaintDevice (0x7f717f2c30d0) 0
    vptr=((& QPagedPaintDevice::_ZTV17QPagedPaintDevice) + 16u)
  QPaintDevice (0x7f717f2ce000) 0
      primary-for QPagedPaintDevice (0x7f717f2c30d0)

Class QTextOption::Tab
   size=16 align=8
   base size=14 base align=8
QTextOption::Tab (0x7f717f2ce120) 0

Class QTextOption
   size=32 align=8
   base size=32 base align=8
QTextOption (0x7f717f2ce0c0) 0

Class QPen
   size=8 align=8
   base size=8 base align=8
QPen (0x7f717f2ce360) 0

Class QFontInfo
   size=8 align=8
   base size=8 base align=8
QFontInfo (0x7f717f2ce420) 0

Class QFontMetrics
   size=8 align=8
   base size=8 base align=8
QFontMetrics (0x7f717f2ce4e0) 0

Class QFontMetricsF
   size=8 align=8
   base size=8 base align=8
QFontMetricsF (0x7f717f2ce660) 0

Class QPainter::PixmapFragment
   size=80 align=8
   base size=80 base align=8
QPainter::PixmapFragment (0x7f717f2ce780) 0

Class QPainter
   size=8 align=8
   base size=8 base align=8
QPainter (0x7f717f2ce720) 0

Class QTextItem
   size=1 align=1
   base size=0 base align=1
QTextItem (0x7f717f0ee9c0) 0 empty

Vtable for QPaintEngine
QPaintEngine::_ZTV12QPaintEngine: 24u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QPaintEngine)
16    (int (*)(...))QPaintEngine::~QPaintEngine
24    (int (*)(...))QPaintEngine::~QPaintEngine
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))QPaintEngine::drawRects
64    (int (*)(...))QPaintEngine::drawRects
72    (int (*)(...))QPaintEngine::drawLines
80    (int (*)(...))QPaintEngine::drawLines
88    (int (*)(...))QPaintEngine::drawEllipse
96    (int (*)(...))QPaintEngine::drawEllipse
104   (int (*)(...))QPaintEngine::drawPath
112   (int (*)(...))QPaintEngine::drawPoints
120   (int (*)(...))QPaintEngine::drawPoints
128   (int (*)(...))QPaintEngine::drawPolygon
136   (int (*)(...))QPaintEngine::drawPolygon
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))QPaintEngine::drawTextItem
160   (int (*)(...))QPaintEngine::drawTiledPixmap
168   (int (*)(...))QPaintEngine::drawImage
176   (int (*)(...))QPaintEngine::coordinateOffset
184   (int (*)(...))__cxa_pure_virtual

Class QPaintEngine
   size=32 align=8
   base size=32 base align=8
QPaintEngine (0x7f717f0eea80) 0
    vptr=((& QPaintEngine::_ZTV12QPaintEngine) + 16u)

Class QPaintEngineState
   size=4 align=4
   base size=4 base align=4
QPaintEngineState (0x7f717f0eec60) 0

Class QPdfWriter::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPdfWriter::QPrivateSignal (0x7f717f0eef00) 0 empty

Vtable for QPdfWriter
QPdfWriter::_ZTV10QPdfWriter: 34u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QPdfWriter)
16    (int (*)(...))QPdfWriter::metaObject
24    (int (*)(...))QPdfWriter::qt_metacast
32    (int (*)(...))QPdfWriter::qt_metacall
40    (int (*)(...))QPdfWriter::~QPdfWriter
48    (int (*)(...))QPdfWriter::~QPdfWriter
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QPdfWriter::newPage
120   (int (*)(...))QPdfWriter::setPageSize
128   (int (*)(...))QPdfWriter::setPageSizeMM
136   (int (*)(...))QPdfWriter::setMargins
144   (int (*)(...))QPdfWriter::paintEngine
152   (int (*)(...))QPdfWriter::metric
160   (int (*)(...))-16
168   (int (*)(...))(& _ZTI10QPdfWriter)
176   (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriterD1Ev
184   (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriterD0Ev
192   (int (*)(...))QPaintDevice::devType
200   (int (*)(...))QPdfWriter::_ZThn16_NK10QPdfWriter11paintEngineEv
208   (int (*)(...))QPdfWriter::_ZThn16_NK10QPdfWriter6metricEN12QPaintDevice17PaintDeviceMetricE
216   (int (*)(...))QPaintDevice::initPainter
224   (int (*)(...))QPaintDevice::redirected
232   (int (*)(...))QPaintDevice::sharedPainter
240   (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter7newPageEv
248   (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter11setPageSizeEN17QPagedPaintDevice8PageSizeE
256   (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter13setPageSizeMMERK6QSizeF
264   (int (*)(...))QPdfWriter::_ZThn16_N10QPdfWriter10setMarginsERKN17QPagedPaintDevice7MarginsE

Class QPdfWriter
   size=48 align=8
   base size=48 base align=8
QPdfWriter (0x7f717f180540) 0
    vptr=((& QPdfWriter::_ZTV10QPdfWriter) + 16u)
  QObject (0x7f717f0eee40) 0
      primary-for QPdfWriter (0x7f717f180540)
  QPagedPaintDevice (0x7f717f198208) 16
      vptr=((& QPdfWriter::_ZTV10QPdfWriter) + 176u)
    QPaintDevice (0x7f717f0eeea0) 16
        primary-for QPagedPaintDevice (0x7f717f198208)

Class QTextLength
   size=16 align=8
   base size=16 base align=8
QTextLength (0x7f717f0eef60) 0

Class QTextFormat
   size=16 align=8
   base size=12 base align=8
QTextFormat (0x7f717f1c1000) 0

Class QTextCharFormat
   size=16 align=8
   base size=12 base align=8
QTextCharFormat (0x7f717ee412d8) 0
  QTextFormat (0x7f717f1c12a0) 0

Class QTextBlockFormat
   size=16 align=8
   base size=12 base align=8
QTextBlockFormat (0x7f717ee81f70) 0
  QTextFormat (0x7f717f1c1360) 0

Class QTextListFormat
   size=16 align=8
   base size=12 base align=8
QTextListFormat (0x7f717eeba680) 0
  QTextFormat (0x7f717f1c1420) 0

Class QTextImageFormat
   size=16 align=8
   base size=12 base align=8
QTextImageFormat (0x7f717eec06e8) 0
  QTextCharFormat (0x7f717eec0750) 0
    QTextFormat (0x7f717f1c14e0) 0

Class QTextFrameFormat
   size=16 align=8
   base size=12 base align=8
QTextFrameFormat (0x7f717eedf1a0) 0
  QTextFormat (0x7f717f1c15a0) 0

Class QTextTableFormat
   size=16 align=8
   base size=12 base align=8
QTextTableFormat (0x7f717ef07888) 0
  QTextFrameFormat (0x7f717ef078f0) 0
    QTextFormat (0x7f717f1c1660) 0

Class QTextTableCellFormat
   size=16 align=8
   base size=12 base align=8
QTextTableCellFormat (0x7f717ef18dd0) 0
  QTextCharFormat (0x7f717ef18e38) 0
    QTextFormat (0x7f717f1c1720) 0

Class QFontDatabase
   size=8 align=8
   base size=8 base align=8
QFontDatabase (0x7f717f1c17e0) 0

Class QRawFont
   size=8 align=8
   base size=8 base align=8
QRawFont (0x7f717f1c1840) 0

Class QGlyphRun
   size=8 align=8
   base size=8 base align=8
QGlyphRun (0x7f717f1c1a20) 0

Class QTextCursor
   size=8 align=8
   base size=8 base align=8
QTextCursor (0x7f717f1c1b40) 0

Class QTextInlineObject
   size=16 align=8
   base size=16 base align=8
QTextInlineObject (0x7f717f1c1c60) 0

Class QTextLayout::FormatRange
   size=24 align=8
   base size=24 base align=8
QTextLayout::FormatRange (0x7f717f1c1d20) 0

Class QTextLayout
   size=8 align=8
   base size=8 base align=8
QTextLayout (0x7f717f1c1cc0) 0

Class QTextLine
   size=16 align=8
   base size=16 base align=8
QTextLine (0x7f717f1c1e40) 0

Vtable for QAbstractUndoItem
QAbstractUndoItem::_ZTV17QAbstractUndoItem: 6u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QAbstractUndoItem)
16    (int (*)(...))__cxa_pure_virtual
24    (int (*)(...))__cxa_pure_virtual
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual

Class QAbstractUndoItem
   size=8 align=8
   base size=8 base align=8
QAbstractUndoItem (0x7f717f1c1ea0) 0 nearly-empty
    vptr=((& QAbstractUndoItem::_ZTV17QAbstractUndoItem) + 16u)

Class QTextDocument::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTextDocument::QPrivateSignal (0x7f717f1c1f60) 0 empty

Vtable for QTextDocument
QTextDocument::_ZTV13QTextDocument: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QTextDocument)
16    (int (*)(...))QTextDocument::metaObject
24    (int (*)(...))QTextDocument::qt_metacast
32    (int (*)(...))QTextDocument::qt_metacall
40    (int (*)(...))QTextDocument::~QTextDocument
48    (int (*)(...))QTextDocument::~QTextDocument
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QTextDocument::clear
120   (int (*)(...))QTextDocument::createObject
128   (int (*)(...))QTextDocument::loadResource

Class QTextDocument
   size=16 align=8
   base size=16 base align=8
QTextDocument (0x7f717ec3c4e0) 0
    vptr=((& QTextDocument::_ZTV13QTextDocument) + 16u)
  QObject (0x7f717f1c1f00) 0
      primary-for QTextDocument (0x7f717ec3c4e0)

Class QAbstractTextDocumentLayout::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractTextDocumentLayout::QPrivateSignal (0x7f717ec76120) 0 empty

Class QAbstractTextDocumentLayout::Selection
   size=24 align=8
   base size=24 base align=8
QAbstractTextDocumentLayout::Selection (0x7f717ec76180) 0

Class QAbstractTextDocumentLayout::PaintContext
   size=64 align=8
   base size=64 base align=8
QAbstractTextDocumentLayout::PaintContext (0x7f717ec761e0) 0

Vtable for QAbstractTextDocumentLayout
QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout: 24u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI27QAbstractTextDocumentLayout)
16    (int (*)(...))QAbstractTextDocumentLayout::metaObject
24    (int (*)(...))QAbstractTextDocumentLayout::qt_metacast
32    (int (*)(...))QAbstractTextDocumentLayout::qt_metacall
40    (int (*)(...))QAbstractTextDocumentLayout::~QAbstractTextDocumentLayout
48    (int (*)(...))QAbstractTextDocumentLayout::~QAbstractTextDocumentLayout
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))__cxa_pure_virtual
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))__cxa_pure_virtual
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))QAbstractTextDocumentLayout::resizeInlineObject
176   (int (*)(...))QAbstractTextDocumentLayout::positionInlineObject
184   (int (*)(...))QAbstractTextDocumentLayout::drawInlineObject

Class QAbstractTextDocumentLayout
   size=16 align=8
   base size=16 base align=8
QAbstractTextDocumentLayout (0x7f717ec8d208) 0
    vptr=((& QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout) + 16u)
  QObject (0x7f717ec760c0) 0
      primary-for QAbstractTextDocumentLayout (0x7f717ec8d208)

Vtable for QTextObjectInterface
QTextObjectInterface::_ZTV20QTextObjectInterface: 6u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QTextObjectInterface)
16    (int (*)(...))QTextObjectInterface::~QTextObjectInterface
24    (int (*)(...))QTextObjectInterface::~QTextObjectInterface
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual

Class QTextObjectInterface
   size=8 align=8
   base size=8 base align=8
QTextObjectInterface (0x7f717ec763c0) 0 nearly-empty
    vptr=((& QTextObjectInterface::_ZTV20QTextObjectInterface) + 16u)

Class QStaticText
   size=8 align=8
   base size=8 base align=8
QStaticText (0x7f717ec76480) 0

Class QTextObject::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTextObject::QPrivateSignal (0x7f717ec76720) 0 empty

Vtable for QTextObject
QTextObject::_ZTV11QTextObject: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QTextObject)
16    (int (*)(...))QTextObject::metaObject
24    (int (*)(...))QTextObject::qt_metacast
32    (int (*)(...))QTextObject::qt_metacall
40    (int (*)(...))QTextObject::~QTextObject
48    (int (*)(...))QTextObject::~QTextObject
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QTextObject
   size=16 align=8
   base size=16 base align=8
QTextObject (0x7f717ecd1f70) 0
    vptr=((& QTextObject::_ZTV11QTextObject) + 16u)
  QObject (0x7f717ec766c0) 0
      primary-for QTextObject (0x7f717ecd1f70)

Class QTextBlockGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTextBlockGroup::QPrivateSignal (0x7f717ec767e0) 0 empty

Vtable for QTextBlockGroup
QTextBlockGroup::_ZTV15QTextBlockGroup: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QTextBlockGroup)
16    (int (*)(...))QTextBlockGroup::metaObject
24    (int (*)(...))QTextBlockGroup::qt_metacast
32    (int (*)(...))QTextBlockGroup::qt_metacall
40    (int (*)(...))QTextBlockGroup::~QTextBlockGroup
48    (int (*)(...))QTextBlockGroup::~QTextBlockGroup
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QTextBlockGroup::blockInserted
120   (int (*)(...))QTextBlockGroup::blockRemoved
128   (int (*)(...))QTextBlockGroup::blockFormatChanged

Class QTextBlockGroup
   size=16 align=8
   base size=16 base align=8
QTextBlockGroup (0x7f717ed06958) 0
    vptr=((& QTextBlockGroup::_ZTV15QTextBlockGroup) + 16u)
  QTextObject (0x7f717ed069c0) 0
      primary-for QTextBlockGroup (0x7f717ed06958)
    QObject (0x7f717ec76780) 0
        primary-for QTextObject (0x7f717ed069c0)

Vtable for QTextFrameLayoutData
QTextFrameLayoutData::_ZTV20QTextFrameLayoutData: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QTextFrameLayoutData)
16    (int (*)(...))QTextFrameLayoutData::~QTextFrameLayoutData
24    (int (*)(...))QTextFrameLayoutData::~QTextFrameLayoutData

Class QTextFrameLayoutData
   size=8 align=8
   base size=8 base align=8
QTextFrameLayoutData (0x7f717ec76840) 0 nearly-empty
    vptr=((& QTextFrameLayoutData::_ZTV20QTextFrameLayoutData) + 16u)

Class QTextFrame::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTextFrame::QPrivateSignal (0x7f717ec76900) 0 empty

Class QTextFrame::iterator
   size=32 align=8
   base size=28 base align=8
QTextFrame::iterator (0x7f717ec76960) 0

Vtable for QTextFrame
QTextFrame::_ZTV10QTextFrame: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QTextFrame)
16    (int (*)(...))QTextFrame::metaObject
24    (int (*)(...))QTextFrame::qt_metacast
32    (int (*)(...))QTextFrame::qt_metacall
40    (int (*)(...))QTextFrame::~QTextFrame
48    (int (*)(...))QTextFrame::~QTextFrame
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QTextFrame
   size=16 align=8
   base size=16 base align=8
QTextFrame (0x7f717ed164e0) 0
    vptr=((& QTextFrame::_ZTV10QTextFrame) + 16u)
  QTextObject (0x7f717ed16548) 0
      primary-for QTextFrame (0x7f717ed164e0)
    QObject (0x7f717ec768a0) 0
        primary-for QTextObject (0x7f717ed16548)

Vtable for QTextBlockUserData
QTextBlockUserData::_ZTV18QTextBlockUserData: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QTextBlockUserData)
16    (int (*)(...))QTextBlockUserData::~QTextBlockUserData
24    (int (*)(...))QTextBlockUserData::~QTextBlockUserData

Class QTextBlockUserData
   size=8 align=8
   base size=8 base align=8
QTextBlockUserData (0x7f717ec76a20) 0 nearly-empty
    vptr=((& QTextBlockUserData::_ZTV18QTextBlockUserData) + 16u)

Class QTextBlock::iterator
   size=24 align=8
   base size=20 base align=8
QTextBlock::iterator (0x7f717ec76ae0) 0

Class QTextBlock
   size=16 align=8
   base size=12 base align=8
QTextBlock (0x7f717ec76a80) 0

Class QTextFragment
   size=16 align=8
   base size=16 base align=8
QTextFragment (0x7f717ec76c00) 0

Class QSyntaxHighlighter::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSyntaxHighlighter::QPrivateSignal (0x7f717ec76d20) 0 empty

Vtable for QSyntaxHighlighter
QSyntaxHighlighter::_ZTV18QSyntaxHighlighter: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QSyntaxHighlighter)
16    (int (*)(...))QSyntaxHighlighter::metaObject
24    (int (*)(...))QSyntaxHighlighter::qt_metacast
32    (int (*)(...))QSyntaxHighlighter::qt_metacall
40    (int (*)(...))QSyntaxHighlighter::~QSyntaxHighlighter
48    (int (*)(...))QSyntaxHighlighter::~QSyntaxHighlighter
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual

Class QSyntaxHighlighter
   size=16 align=8
   base size=16 base align=8
QSyntaxHighlighter (0x7f717ed843a8) 0
    vptr=((& QSyntaxHighlighter::_ZTV18QSyntaxHighlighter) + 16u)
  QObject (0x7f717ec76cc0) 0
      primary-for QSyntaxHighlighter (0x7f717ed843a8)

Class QTextDocumentFragment
   size=8 align=8
   base size=8 base align=8
QTextDocumentFragment (0x7f717ec76d80) 0

Class QTextDocumentWriter
   size=8 align=8
   base size=8 base align=8
QTextDocumentWriter (0x7f717ec76de0) 0

Class QTextList::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTextList::QPrivateSignal (0x7f717ec76ea0) 0 empty

Vtable for QTextList
QTextList::_ZTV9QTextList: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QTextList)
16    (int (*)(...))QTextList::metaObject
24    (int (*)(...))QTextList::qt_metacast
32    (int (*)(...))QTextList::qt_metacall
40    (int (*)(...))QTextList::~QTextList
48    (int (*)(...))QTextList::~QTextList
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QTextBlockGroup::blockInserted
120   (int (*)(...))QTextBlockGroup::blockRemoved
128   (int (*)(...))QTextBlockGroup::blockFormatChanged

Class QTextList
   size=16 align=8
   base size=16 base align=8
QTextList (0x7f717ed97dd0) 0
    vptr=((& QTextList::_ZTV9QTextList) + 16u)
  QTextBlockGroup (0x7f717ed97e38) 0
      primary-for QTextList (0x7f717ed97dd0)
    QTextObject (0x7f717ed97ea0) 0
        primary-for QTextBlockGroup (0x7f717ed97e38)
      QObject (0x7f717ec76e40) 0
          primary-for QTextObject (0x7f717ed97ea0)

Class QTextTableCell
   size=16 align=8
   base size=12 base align=8
QTextTableCell (0x7f717ec76f00) 0

Class QTextTable::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTextTable::QPrivateSignal (0x7f717edd2000) 0 empty

Vtable for QTextTable
QTextTable::_ZTV10QTextTable: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QTextTable)
16    (int (*)(...))QTextTable::metaObject
24    (int (*)(...))QTextTable::qt_metacast
32    (int (*)(...))QTextTable::qt_metacall
40    (int (*)(...))QTextTable::~QTextTable
48    (int (*)(...))QTextTable::~QTextTable
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QTextTable
   size=16 align=8
   base size=16 base align=8
QTextTable (0x7f717edbdea0) 0
    vptr=((& QTextTable::_ZTV10QTextTable) + 16u)
  QTextFrame (0x7f717edbdf08) 0
      primary-for QTextTable (0x7f717edbdea0)
    QTextObject (0x7f717edbdf70) 0
        primary-for QTextFrame (0x7f717edbdf08)
      QObject (0x7f717ec76f60) 0
          primary-for QTextObject (0x7f717edbdf70)

Class QDesktopServices
   size=1 align=1
   base size=0 base align=1
QDesktopServices (0x7f717edd2060) 0 empty

Class QValidator::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QValidator::QPrivateSignal (0x7f717edd2120) 0 empty

Vtable for QValidator
QValidator::_ZTV10QValidator: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QValidator)
16    (int (*)(...))QValidator::metaObject
24    (int (*)(...))QValidator::qt_metacast
32    (int (*)(...))QValidator::qt_metacall
40    (int (*)(...))QValidator::~QValidator
48    (int (*)(...))QValidator::~QValidator
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))QValidator::fixup

Class QValidator
   size=16 align=8
   base size=16 base align=8
QValidator (0x7f717edcfc98) 0
    vptr=((& QValidator::_ZTV10QValidator) + 16u)
  QObject (0x7f717edd20c0) 0
      primary-for QValidator (0x7f717edcfc98)

Class QIntValidator::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QIntValidator::QPrivateSignal (0x7f717edd21e0) 0 empty

Vtable for QIntValidator
QIntValidator::_ZTV13QIntValidator: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QIntValidator)
16    (int (*)(...))QIntValidator::metaObject
24    (int (*)(...))QIntValidator::qt_metacast
32    (int (*)(...))QIntValidator::qt_metacall
40    (int (*)(...))QIntValidator::~QIntValidator
48    (int (*)(...))QIntValidator::~QIntValidator
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QIntValidator::validate
120   (int (*)(...))QIntValidator::fixup
128   (int (*)(...))QIntValidator::setRange

Class QIntValidator
   size=24 align=8
   base size=24 base align=8
QIntValidator (0x7f717edf0a28) 0
    vptr=((& QIntValidator::_ZTV13QIntValidator) + 16u)
  QValidator (0x7f717edf0a90) 0
      primary-for QIntValidator (0x7f717edf0a28)
    QObject (0x7f717edd2180) 0
        primary-for QValidator (0x7f717edf0a90)

Class QDoubleValidator::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QDoubleValidator::QPrivateSignal (0x7f717edd22a0) 0 empty

Vtable for QDoubleValidator
QDoubleValidator::_ZTV16QDoubleValidator: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QDoubleValidator)
16    (int (*)(...))QDoubleValidator::metaObject
24    (int (*)(...))QDoubleValidator::qt_metacast
32    (int (*)(...))QDoubleValidator::qt_metacall
40    (int (*)(...))QDoubleValidator::~QDoubleValidator
48    (int (*)(...))QDoubleValidator::~QDoubleValidator
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QDoubleValidator::validate
120   (int (*)(...))QValidator::fixup
128   (int (*)(...))QDoubleValidator::setRange

Class QDoubleValidator
   size=40 align=8
   base size=36 base align=8
QDoubleValidator (0x7f717ee009c0) 0
    vptr=((& QDoubleValidator::_ZTV16QDoubleValidator) + 16u)
  QValidator (0x7f717ee00a28) 0
      primary-for QDoubleValidator (0x7f717ee009c0)
    QObject (0x7f717edd2240) 0
        primary-for QValidator (0x7f717ee00a28)

Class QRegExpValidator::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QRegExpValidator::QPrivateSignal (0x7f717edd23c0) 0 empty

Vtable for QRegExpValidator
QRegExpValidator::_ZTV16QRegExpValidator: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QRegExpValidator)
16    (int (*)(...))QRegExpValidator::metaObject
24    (int (*)(...))QRegExpValidator::qt_metacast
32    (int (*)(...))QRegExpValidator::qt_metacall
40    (int (*)(...))QRegExpValidator::~QRegExpValidator
48    (int (*)(...))QRegExpValidator::~QRegExpValidator
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QRegExpValidator::validate
120   (int (*)(...))QValidator::fixup

Class QRegExpValidator
   size=24 align=8
   base size=24 base align=8
QRegExpValidator (0x7f717ee11ea0) 0
    vptr=((& QRegExpValidator::_ZTV16QRegExpValidator) + 16u)
  QValidator (0x7f717ee11f08) 0
      primary-for QRegExpValidator (0x7f717ee11ea0)
    QObject (0x7f717edd2360) 0
        primary-for QValidator (0x7f717ee11f08)

