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

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

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

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

Class std::forward_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::forward_iterator_tag (0x0x7fec4002b5b0) 0 empty
  std::input_iterator_tag (0x0x7fec40090c00) 0 empty

Class std::bidirectional_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::bidirectional_iterator_tag (0x0x7fec4002b618) 0 empty
  std::forward_iterator_tag (0x0x7fec4002b680) 0 empty
    std::input_iterator_tag (0x0x7fec40090c60) 0 empty

Class std::random_access_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::random_access_iterator_tag (0x0x7fec4002b6e8) 0 empty
  std::bidirectional_iterator_tag (0x0x7fec4002b750) 0 empty
    std::forward_iterator_tag (0x0x7fec4002b7b8) 0 empty
      std::input_iterator_tag (0x0x7fec40090cc0) 0 empty

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

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

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

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

Class pthread_attr_t
   size=56 align=8
   base size=56 base align=8
pthread_attr_t (0x0x7fec400eac60) 0

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

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

Class drand48_data
   size=24 align=8
   base size=24 base align=8
drand48_data (0x0x7fec401aa1e0) 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 (0x0x7fec401aa240) 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 (0x0x7fec4002baf8) 0 nearly-empty
    vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 16u)
  std::exception (0x0x7fec401aa2a0) 0 nearly-empty
      primary-for std::bad_exception (0x0x7fec4002baf8)

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 (0x0x7fec4002bb60) 0 nearly-empty
    vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 16u)
  std::exception (0x0x7fec401aa300) 0 nearly-empty
      primary-for std::bad_alloc (0x0x7fec4002bb60)

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

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

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

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

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

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

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

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

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

Class QAtomicInt
   size=4 align=4
   base size=4 base align=4
QAtomicInt (0x0x7fec3eb3f138) 0
  QAtomicInteger<int> (0x0x7fec3eb3f1a0) 0
    QBasicAtomicInteger<int> (0x0x7fec3ed18d80) 0

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

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

Class QGenericReturnArgument
   size=16 align=8
   base size=16 base align=8
QGenericReturnArgument (0x0x7fec3e9022d8) 0
  QGenericArgument (0x0x7fec3e99fe40) 0

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

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

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

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

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

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

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

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

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

Class lconv
   size=96 align=8
   base size=96 base align=8
lconv (0x0x7fec3e603ea0) 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 (0x0x7fec3e603f00) 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 (0x0x7fec3e5029c0) 0

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

Class timex
   size=208 align=8
   base size=208 base align=8
timex (0x0x7fec3e502ae0) 0

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

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

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

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

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

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

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

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

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

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

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

Class std::locale
   size=8 align=8
   base size=8 base align=8
std::locale (0x0x7fec3e208d20) 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 (0x0x7fec3e208d80) 0
    vptr=((& std::locale::facet::_ZTVNSt6locale5facetE) + 16u)

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

Class std::locale::_Impl
   size=40 align=8
   base size=40 base align=8
std::locale::_Impl (0x0x7fec3e208e40) 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 (0x0x7fec3e393bc8) 0
    vptr=((& std::ios_base::failure::_ZTVNSt8ios_base7failureE) + 16u)
  std::exception (0x0x7fec3dec92a0) 0 nearly-empty
      primary-for std::ios_base::failure (0x0x7fec3e393bc8)

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

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

Class std::ios_base::Init
   size=1 align=1
   base size=0 base align=1
std::ios_base::Init (0x0x7fec3dec93c0) 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 (0x0x7fec3dec9240) 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 (0x0x7fec3dec9540) 0 empty

Class std::__num_base
   size=1 align=1
   base size=0 base align=1
std::__num_base (0x0x7fec3dec9c00) 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> (0x0x7fec3db286e8 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> (0x0x7fec3db287b8 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> (0x0x7fec3db28a90 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> (0x0x7fec3db28b60 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 (0x0x7fec3dbb0000) 0

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

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

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

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

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

Class std::_Bit_iterator
   size=16 align=8
   base size=12 base align=8
std::_Bit_iterator (0x0x7fec3db28c98) 0
  std::_Bit_iterator_base (0x0x7fec3db28d00) 0
    std::iterator<std::random_access_iterator_tag, bool> (0x0x7fec3d9a3540) 0 empty

Class std::_Bit_const_iterator
   size=16 align=8
   base size=12 base align=8
std::_Bit_const_iterator (0x0x7fec3db28d68) 0
  std::_Bit_iterator_base (0x0x7fec3d666000) 0
    std::iterator<std::random_access_iterator_tag, bool> (0x0x7fec3d9a35a0) 0 empty

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

Class QtPrivate::AbstractDebugStreamFunction
   size=16 align=8
   base size=16 base align=8
QtPrivate::AbstractDebugStreamFunction (0x0x7fec3d9a3d80) 0

Class QtPrivate::AbstractComparatorFunction
   size=24 align=8
   base size=24 base align=8
QtPrivate::AbstractComparatorFunction (0x0x7fec3d9a3e40) 0

Class QtPrivate::AbstractConverterFunction
   size=8 align=8
   base size=8 base align=8
QtPrivate::AbstractConverterFunction (0x0x7fec3d9a3f00) 0

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

Class QtMetaTypePrivate::VariantData
   size=24 align=8
   base size=20 base align=8
QtMetaTypePrivate::VariantData (0x0x7fec3d4816c0) 0

Class QtMetaTypePrivate::QSequentialIterableImpl
   size=104 align=8
   base size=104 base align=8
QtMetaTypePrivate::QSequentialIterableImpl (0x0x7fec3d481ae0) 0

Class QtMetaTypePrivate::QAssociativeIterableImpl
   size=112 align=8
   base size=112 base align=8
QtMetaTypePrivate::QAssociativeIterableImpl (0x0x7fec3d481cc0) 0

Class QtMetaTypePrivate::QPairVariantInterfaceImpl
   size=40 align=8
   base size=40 base align=8
QtMetaTypePrivate::QPairVariantInterfaceImpl (0x0x7fec3d481d80) 0

Class QtPrivate::QSlotObjectBase
   size=16 align=8
   base size=16 base align=8
QtPrivate::QSlotObjectBase (0x0x7fec3d2f3060) 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 (0x0x7fec3d2f31e0) 0
    vptr=((& QObjectData::_ZTV11QObjectData) + 16u)

Class QObject::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QObject::QPrivateSignal (0x0x7fec3d2f3360) 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 (0x0x7fec3d2f3300) 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 (0x0x7fec3d2f3660) 0 nearly-empty
    vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 16u)

Class QSignalBlocker
   size=16 align=8
   base size=10 base align=8
QSignalBlocker (0x0x7fec3d2f36c0) 0

Class QAbstractAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractAnimation::QPrivateSignal (0x0x7fec3d2f3780) 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 (0x0x7fec3d578b60) 0
    vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 16u)
  QObject (0x0x7fec3d2f3720) 0
      primary-for QAbstractAnimation (0x0x7fec3d578b60)

Class QAnimationDriver::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAnimationDriver::QPrivateSignal (0x0x7fec3d2f3840) 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 (0x0x7fec3d578bc8) 0
    vptr=((& QAnimationDriver::_ZTV16QAnimationDriver) + 16u)
  QObject (0x0x7fec3d2f37e0) 0
      primary-for QAnimationDriver (0x0x7fec3d578bc8)

Class QAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAnimationGroup::QPrivateSignal (0x0x7fec3d2f3900) 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 (0x0x7fec3d578c30) 0
    vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16u)
  QAbstractAnimation (0x0x7fec3d578c98) 0
      primary-for QAnimationGroup (0x0x7fec3d578c30)
    QObject (0x0x7fec3d2f38a0) 0
        primary-for QAbstractAnimation (0x0x7fec3d578c98)

Class QParallelAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QParallelAnimationGroup::QPrivateSignal (0x0x7fec3d2f39c0) 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 (0x0x7fec3d578d00) 0
    vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16u)
  QAnimationGroup (0x0x7fec3d578d68) 0
      primary-for QParallelAnimationGroup (0x0x7fec3d578d00)
    QAbstractAnimation (0x0x7fec3d578dd0) 0
        primary-for QAnimationGroup (0x0x7fec3d578d68)
      QObject (0x0x7fec3d2f3960) 0
          primary-for QAbstractAnimation (0x0x7fec3d578dd0)

Class QPauseAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPauseAnimation::QPrivateSignal (0x0x7fec3d2f3a80) 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 (0x0x7fec3d578e38) 0
    vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16u)
  QAbstractAnimation (0x0x7fec3d578ea0) 0
      primary-for QPauseAnimation (0x0x7fec3d578e38)
    QObject (0x0x7fec3d2f3a20) 0
        primary-for QAbstractAnimation (0x0x7fec3d578ea0)

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

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

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

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

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

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

Class QIODevice::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QIODevice::QPrivateSignal (0x0x7fec3d1237e0) 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 (0x0x7fec3d0827b8) 0
    vptr=((& QIODevice::_ZTV9QIODevice) + 16u)
  QObject (0x0x7fec3d123780) 0
      primary-for QIODevice (0x0x7fec3d0827b8)

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

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

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

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

Class QStringList
   size=8 align=8
   base size=8 base align=8
QStringList (0x0x7fec3d082958) 0
  QList<QString> (0x0x7fec3d123cc0) 0

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

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

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

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

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

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

Class QSequentialIterable::const_iterator
   size=112 align=8
   base size=112 base align=8
QSequentialIterable::const_iterator (0x0x7fec3cbff480) 0

Class QSequentialIterable
   size=104 align=8
   base size=104 base align=8
QSequentialIterable (0x0x7fec3cbff420) 0

Class QAssociativeIterable::const_iterator
   size=120 align=8
   base size=120 base align=8
QAssociativeIterable::const_iterator (0x0x7fec3cbff540) 0

Class QAssociativeIterable
   size=112 align=8
   base size=112 base align=8
QAssociativeIterable (0x0x7fec3cbff4e0) 0

Class QVariantAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QVariantAnimation::QPrivateSignal (0x0x7fec3cd14120) 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 (0x0x7fec3ccf4340) 0
    vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16u)
  QAbstractAnimation (0x0x7fec3ccf43a8) 0
      primary-for QVariantAnimation (0x0x7fec3ccf4340)
    QObject (0x0x7fec3cd140c0) 0
        primary-for QAbstractAnimation (0x0x7fec3ccf43a8)

Class QPropertyAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPropertyAnimation::QPrivateSignal (0x0x7fec3cd141e0) 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 (0x0x7fec3ccf4478) 0
    vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16u)
  QVariantAnimation (0x0x7fec3ccf44e0) 0
      primary-for QPropertyAnimation (0x0x7fec3ccf4478)
    QAbstractAnimation (0x0x7fec3ccf4548) 0
        primary-for QVariantAnimation (0x0x7fec3ccf44e0)
      QObject (0x0x7fec3cd14180) 0
          primary-for QAbstractAnimation (0x0x7fec3ccf4548)

Class QSequentialAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSequentialAnimationGroup::QPrivateSignal (0x0x7fec3cd142a0) 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 (0x0x7fec3ccf45b0) 0
    vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16u)
  QAnimationGroup (0x0x7fec3ccf4618) 0
      primary-for QSequentialAnimationGroup (0x0x7fec3ccf45b0)
    QAbstractAnimation (0x0x7fec3ccf4680) 0
        primary-for QAnimationGroup (0x0x7fec3ccf4618)
      QObject (0x0x7fec3cd14240) 0
          primary-for QAbstractAnimation (0x0x7fec3ccf4680)

Class QTextCodec::ConverterState
   size=32 align=8
   base size=32 base align=8
QTextCodec::ConverterState (0x0x7fec3cd14360) 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 (0x0x7fec3cd14300) 0 nearly-empty
    vptr=((& QTextCodec::_ZTV10QTextCodec) + 16u)

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

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

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

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

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

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

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

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

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

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

Class QBuffer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QBuffer::QPrivateSignal (0x0x7fec3cacfa20) 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 (0x0x7fec3ccf4c98) 0
    vptr=((& QBuffer::_ZTV7QBuffer) + 16u)
  QIODevice (0x0x7fec3ccf4d00) 0
      primary-for QBuffer (0x0x7fec3ccf4c98)
    QObject (0x0x7fec3cacf9c0) 0
        primary-for QIODevice (0x0x7fec3ccf4d00)

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

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

Class _IO_FILE
   size=216 align=8
   base size=216 base align=8
_IO_FILE (0x0x7fec3cacfde0) 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 (0x0x7fec3cacfea0) 0
    vptr=((& QTextStream::_ZTV11QTextStream) + 16u)

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

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

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

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

Class QDebugStateSaver
   size=8 align=8
   base size=8 base align=8
QDebugStateSaver (0x0x7fec3c8a0b40) 0

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

Class QFileDevice::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFileDevice::QPrivateSignal (0x0x7fec3c8a0cc0) 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 (0x0x7fec3ccf4a90) 0
    vptr=((& QFileDevice::_ZTV11QFileDevice) + 16u)
  QIODevice (0x0x7fec3ccf49c0) 0
      primary-for QFileDevice (0x0x7fec3ccf4a90)
    QObject (0x0x7fec3c8a0c60) 0
        primary-for QIODevice (0x0x7fec3ccf49c0)

Class QFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFile::QPrivateSignal (0x0x7fec3c8a0e40) 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 (0x0x7fec3c6260d0) 0
    vptr=((& QFile::_ZTV5QFile) + 16u)
  QFileDevice (0x0x7fec3c626138) 0
      primary-for QFile (0x0x7fec3c6260d0)
    QIODevice (0x0x7fec3c6261a0) 0
        primary-for QFileDevice (0x0x7fec3c626138)
      QObject (0x0x7fec3c8a0de0) 0
          primary-for QIODevice (0x0x7fec3c6261a0)

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

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

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

Class QFileSelector::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFileSelector::QPrivateSignal (0x0x7fec3c671720) 0 empty

Vtable for QFileSelector
QFileSelector::_ZTV13QFileSelector: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QFileSelector)
16    (int (*)(...))QFileSelector::metaObject
24    (int (*)(...))QFileSelector::qt_metacast
32    (int (*)(...))QFileSelector::qt_metacall
40    (int (*)(...))QFileSelector::~QFileSelector
48    (int (*)(...))QFileSelector::~QFileSelector
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 QFileSelector
   size=16 align=8
   base size=16 base align=8
QFileSelector (0x0x7fec3c626680) 0
    vptr=((& QFileSelector::_ZTV13QFileSelector) + 16u)
  QObject (0x0x7fec3c6716c0) 0
      primary-for QFileSelector (0x0x7fec3c626680)

Class QFileSystemWatcher::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFileSystemWatcher::QPrivateSignal (0x0x7fec3c6717e0) 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 (0x0x7fec3c6266e8) 0
    vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 16u)
  QObject (0x0x7fec3c671780) 0
      primary-for QFileSystemWatcher (0x0x7fec3c6266e8)

Class QLockFile
   size=8 align=8
   base size=8 base align=8
QLockFile (0x0x7fec3c671840) 0

Class QLoggingCategory
   size=24 align=8
   base size=24 base align=8
QLoggingCategory (0x0x7fec3c671960) 0

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

Class QProcess::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QProcess::QPrivateSignal (0x0x7fec3c671ba0) 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 (*)(...))QProcess::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 (0x0x7fec3c6267b8) 0
    vptr=((& QProcess::_ZTV8QProcess) + 16u)
  QIODevice (0x0x7fec3c626820) 0
      primary-for QProcess (0x0x7fec3c6267b8)
    QObject (0x0x7fec3c671b40) 0
        primary-for QIODevice (0x0x7fec3c626820)

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

Class QSaveFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSaveFile::QPrivateSignal (0x0x7fec3c671d80) 0 empty

Vtable for QSaveFile
QSaveFile::_ZTV9QSaveFile: 34u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QSaveFile)
16    (int (*)(...))QSaveFile::metaObject
24    (int (*)(...))QSaveFile::qt_metacast
32    (int (*)(...))QSaveFile::qt_metacall
40    (int (*)(...))QSaveFile::~QSaveFile
48    (int (*)(...))QSaveFile::~QSaveFile
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 (*)(...))QSaveFile::open
128   (int (*)(...))QSaveFile::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 (*)(...))QSaveFile::writeData
240   (int (*)(...))QSaveFile::fileName
248   (int (*)(...))QFileDevice::resize
256   (int (*)(...))QFileDevice::permissions
264   (int (*)(...))QFileDevice::setPermissions

Class QSaveFile
   size=16 align=8
   base size=16 base align=8
QSaveFile (0x0x7fec3c626888) 0
    vptr=((& QSaveFile::_ZTV9QSaveFile) + 16u)
  QFileDevice (0x0x7fec3c6268f0) 0
      primary-for QSaveFile (0x0x7fec3c626888)
    QIODevice (0x0x7fec3c626958) 0
        primary-for QFileDevice (0x0x7fec3c6268f0)
      QObject (0x0x7fec3c671d20) 0
          primary-for QIODevice (0x0x7fec3c626958)

Class QSettings::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSettings::QPrivateSignal (0x0x7fec3c671e40) 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 (0x0x7fec3c6269c0) 0
    vptr=((& QSettings::_ZTV9QSettings) + 16u)
  QObject (0x0x7fec3c671de0) 0
      primary-for QSettings (0x0x7fec3c6269c0)

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

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

Class QTemporaryFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTemporaryFile::QPrivateSignal (0x0x7fec3c3f3120) 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 (0x0x7fec3c626af8) 0
    vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16u)
  QFile (0x0x7fec3c626b60) 0
      primary-for QTemporaryFile (0x0x7fec3c626af8)
    QFileDevice (0x0x7fec3c626bc8) 0
        primary-for QFile (0x0x7fec3c626b60)
      QIODevice (0x0x7fec3c626c30) 0
          primary-for QFileDevice (0x0x7fec3c626bc8)
        QObject (0x0x7fec3c3f30c0) 0
            primary-for QIODevice (0x0x7fec3c626c30)

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

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

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

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

Class QAbstractItemModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractItemModel::QPrivateSignal (0x0x7fec3c3f3a80) 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 (0x0x7fec3c507068) 0
    vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 16u)
  QObject (0x0x7fec3c3f3a20) 0
      primary-for QAbstractItemModel (0x0x7fec3c507068)

Class QAbstractTableModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractTableModel::QPrivateSignal (0x0x7fec3c3f3d80) 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 (*)(...))QAbstractTableModel::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 (0x0x7fec3c5071a0) 0
    vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16u)
  QAbstractItemModel (0x0x7fec3c507208) 0
      primary-for QAbstractTableModel (0x0x7fec3c5071a0)
    QObject (0x0x7fec3c3f3d20) 0
        primary-for QAbstractItemModel (0x0x7fec3c507208)

Class QAbstractListModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractListModel::QPrivateSignal (0x0x7fec3c3f3e40) 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 (*)(...))QAbstractListModel::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 (0x0x7fec3c507270) 0
    vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16u)
  QAbstractItemModel (0x0x7fec3c5072d8) 0
      primary-for QAbstractListModel (0x0x7fec3c507270)
    QObject (0x0x7fec3c3f3de0) 0
        primary-for QAbstractItemModel (0x0x7fec3c5072d8)

Class QAbstractProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractProxyModel::QPrivateSignal (0x0x7fec3c3f3f00) 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 (0x0x7fec3c507340) 0
    vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16u)
  QAbstractItemModel (0x0x7fec3c5073a8) 0
      primary-for QAbstractProxyModel (0x0x7fec3c507340)
    QObject (0x0x7fec3c3f3ea0) 0
        primary-for QAbstractItemModel (0x0x7fec3c5073a8)

Class QIdentityProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QIdentityProxyModel::QPrivateSignal (0x0x7fec3c1e9000) 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 (0x0x7fec3c507410) 0
    vptr=((& QIdentityProxyModel::_ZTV19QIdentityProxyModel) + 16u)
  QAbstractProxyModel (0x0x7fec3c507478) 0
      primary-for QIdentityProxyModel (0x0x7fec3c507410)
    QAbstractItemModel (0x0x7fec3c5074e0) 0
        primary-for QAbstractProxyModel (0x0x7fec3c507478)
      QObject (0x0x7fec3c3f3f60) 0
          primary-for QAbstractItemModel (0x0x7fec3c5074e0)

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

Class QItemSelectionModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QItemSelectionModel::QPrivateSignal (0x0x7fec3c1e91e0) 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 (0x0x7fec3c5075b0) 0
    vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 16u)
  QObject (0x0x7fec3c1e9180) 0
      primary-for QItemSelectionModel (0x0x7fec3c5075b0)

Class QItemSelection
   size=8 align=8
   base size=8 base align=8
QItemSelection (0x0x7fec3c5076e8) 0
  QList<QItemSelectionRange> (0x0x7fec3c1e93c0) 0

Class QSortFilterProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSortFilterProxyModel::QPrivateSignal (0x0x7fec3c1e9480) 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 (0x0x7fec3c507750) 0
    vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16u)
  QAbstractProxyModel (0x0x7fec3c5077b8) 0
      primary-for QSortFilterProxyModel (0x0x7fec3c507750)
    QAbstractItemModel (0x0x7fec3c507820) 0
        primary-for QAbstractProxyModel (0x0x7fec3c5077b8)
      QObject (0x0x7fec3c1e9420) 0
          primary-for QAbstractItemModel (0x0x7fec3c507820)

Class QStringListModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QStringListModel::QPrivateSignal (0x0x7fec3c1e9540) 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 (0x0x7fec3c507888) 0
    vptr=((& QStringListModel::_ZTV16QStringListModel) + 16u)
  QAbstractListModel (0x0x7fec3c5078f0) 0
      primary-for QStringListModel (0x0x7fec3c507888)
    QAbstractItemModel (0x0x7fec3c507958) 0
        primary-for QAbstractListModel (0x0x7fec3c5078f0)
      QObject (0x0x7fec3c1e94e0) 0
          primary-for QAbstractItemModel (0x0x7fec3c507958)

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

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

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

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

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

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

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

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

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

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

Class QEventLoop::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QEventLoop::QPrivateSignal (0x0x7fec3c1e9ae0) 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 (0x0x7fec3c5079c0) 0
    vptr=((& QEventLoop::_ZTV10QEventLoop) + 16u)
  QObject (0x0x7fec3c1e9a80) 0
      primary-for QEventLoop (0x0x7fec3c5079c0)

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

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

Class QAbstractEventDispatcher::TimerInfo
   size=12 align=4
   base size=12 base align=4
QAbstractEventDispatcher::TimerInfo (0x0x7fec3c1e9d20) 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 (0x0x7fec3c507af8) 0
    vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 16u)
  QObject (0x0x7fec3c1e9c60) 0
      primary-for QAbstractEventDispatcher (0x0x7fec3c507af8)

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 (0x0x7fec3c1e9d80) 0
    vptr=((& QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter) + 16u)

Class QBasicTimer
   size=4 align=4
   base size=4 base align=4
QBasicTimer (0x0x7fec3c1e9de0) 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 (0x0x7fec3c1e9f00) 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 (0x0x7fec3c507bc8) 0
    vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16u)
  QEvent (0x0x7fec3c1e9f60) 0
      primary-for QTimerEvent (0x0x7fec3c507bc8)

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 (0x0x7fec3c507c30) 0
    vptr=((& QChildEvent::_ZTV11QChildEvent) + 16u)
  QEvent (0x0x7fec3c01a000) 0
      primary-for QChildEvent (0x0x7fec3c507c30)

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 (0x0x7fec3c507c98) 0
    vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 16u)
  QEvent (0x0x7fec3c01a060) 0
      primary-for QDynamicPropertyChangeEvent (0x0x7fec3c507c98)

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 (0x0x7fec3c507d00) 0
    vptr=((& QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent) + 16u)
  QEvent (0x0x7fec3c01a0c0) 0
      primary-for QDeferredDeleteEvent (0x0x7fec3c507d00)

Class QCoreApplication::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QCoreApplication::QPrivateSignal (0x0x7fec3c01a180) 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 (0x0x7fec3c507d68) 0
    vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 16u)
  QObject (0x0x7fec3c01a120) 0
      primary-for QCoreApplication (0x0x7fec3c507d68)

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

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

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

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

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

Class QMimeData::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QMimeData::QPrivateSignal (0x0x7fec3c01a660) 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 (0x0x7fec3c0e9000) 0
    vptr=((& QMimeData::_ZTV9QMimeData) + 16u)
  QObject (0x0x7fec3c01a600) 0
      primary-for QMimeData (0x0x7fec3c0e9000)

Class QObjectCleanupHandler::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QObjectCleanupHandler::QPrivateSignal (0x0x7fec3c01a720) 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 (0x0x7fec3c0e9068) 0
    vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 16u)
  QObject (0x0x7fec3c01a6c0) 0
      primary-for QObjectCleanupHandler (0x0x7fec3c0e9068)

Class QSharedMemory::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSharedMemory::QPrivateSignal (0x0x7fec3c01a960) 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 (0x0x7fec3c0e90d0) 0
    vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 16u)
  QObject (0x0x7fec3c01a900) 0
      primary-for QSharedMemory (0x0x7fec3c0e90d0)

Class QSignalMapper::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSignalMapper::QPrivateSignal (0x0x7fec3c01aa20) 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 (0x0x7fec3c0e9138) 0
    vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 16u)
  QObject (0x0x7fec3c01a9c0) 0
      primary-for QSignalMapper (0x0x7fec3c0e9138)

Class QSocketNotifier::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSocketNotifier::QPrivateSignal (0x0x7fec3c01aae0) 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 (0x0x7fec3c0e91a0) 0
    vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 16u)
  QObject (0x0x7fec3c01aa80) 0
      primary-for QSocketNotifier (0x0x7fec3c0e91a0)

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

Class QTimer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTimer::QPrivateSignal (0x0x7fec3c01ac60) 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 (0x0x7fec3c0e9208) 0
    vptr=((& QTimer::_ZTV6QTimer) + 16u)
  QObject (0x0x7fec3c01ac00) 0
      primary-for QTimer (0x0x7fec3c0e9208)

Class QTranslator::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTranslator::QPrivateSignal (0x0x7fec3c01ad80) 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 (0x0x7fec3c0e9270) 0
    vptr=((& QTranslator::_ZTV11QTranslator) + 16u)
  QObject (0x0x7fec3c01ad20) 0
      primary-for QTranslator (0x0x7fec3c0e9270)

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

Class QMimeDatabase
   size=8 align=8
   base size=8 base align=8
QMimeDatabase (0x0x7fec3c01af60) 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 (0x0x7fec3c1ad000) 0 nearly-empty
    vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 16u)

Class QLibrary::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QLibrary::QPrivateSignal (0x0x7fec3c1ad120) 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 (0x0x7fec3c0e9340) 0
    vptr=((& QLibrary::_ZTV8QLibrary) + 16u)
  QObject (0x0x7fec3c1ad0c0) 0
      primary-for QLibrary (0x0x7fec3c0e9340)

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

Class QPluginLoader::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPluginLoader::QPrivateSignal (0x0x7fec3c1ad3c0) 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 (0x0x7fec3c0e94e0) 0
    vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 16u)
  QObject (0x0x7fec3c1ad360) 0
      primary-for QPluginLoader (0x0x7fec3c0e94e0)

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

Class QAbstractState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractState::QPrivateSignal (0x0x7fec3c1ad5a0) 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 (0x0x7fec3c0e95b0) 0
    vptr=((& QAbstractState::_ZTV14QAbstractState) + 16u)
  QObject (0x0x7fec3c1ad540) 0
      primary-for QAbstractState (0x0x7fec3c0e95b0)

Class QAbstractTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractTransition::QPrivateSignal (0x0x7fec3c1ad660) 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 (0x0x7fec3c0e9618) 0
    vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 16u)
  QObject (0x0x7fec3c1ad600) 0
      primary-for QAbstractTransition (0x0x7fec3c0e9618)

Class QEventTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QEventTransition::QPrivateSignal (0x0x7fec3c1ad720) 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 (0x0x7fec3c0e9680) 0
    vptr=((& QEventTransition::_ZTV16QEventTransition) + 16u)
  QAbstractTransition (0x0x7fec3c0e96e8) 0
      primary-for QEventTransition (0x0x7fec3c0e9680)
    QObject (0x0x7fec3c1ad6c0) 0
        primary-for QAbstractTransition (0x0x7fec3c0e96e8)

Class QFinalState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFinalState::QPrivateSignal (0x0x7fec3c1ad7e0) 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 (0x0x7fec3c0e9750) 0
    vptr=((& QFinalState::_ZTV11QFinalState) + 16u)
  QAbstractState (0x0x7fec3c0e97b8) 0
      primary-for QFinalState (0x0x7fec3c0e9750)
    QObject (0x0x7fec3c1ad780) 0
        primary-for QAbstractState (0x0x7fec3c0e97b8)

Class QHistoryState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QHistoryState::QPrivateSignal (0x0x7fec3c1ad8a0) 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 (0x0x7fec3c0e9820) 0
    vptr=((& QHistoryState::_ZTV13QHistoryState) + 16u)
  QAbstractState (0x0x7fec3c0e9888) 0
      primary-for QHistoryState (0x0x7fec3c0e9820)
    QObject (0x0x7fec3c1ad840) 0
        primary-for QAbstractState (0x0x7fec3c0e9888)

Class QSignalTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSignalTransition::QPrivateSignal (0x0x7fec3c1ad960) 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 (0x0x7fec3c0e98f0) 0
    vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16u)
  QAbstractTransition (0x0x7fec3c0e9958) 0
      primary-for QSignalTransition (0x0x7fec3c0e98f0)
    QObject (0x0x7fec3c1ad900) 0
        primary-for QAbstractTransition (0x0x7fec3c0e9958)

Class QState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QState::QPrivateSignal (0x0x7fec3c1ada20) 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 (0x0x7fec3c0e99c0) 0
    vptr=((& QState::_ZTV6QState) + 16u)
  QAbstractState (0x0x7fec3c0e9a28) 0
      primary-for QState (0x0x7fec3c0e99c0)
    QObject (0x0x7fec3c1ad9c0) 0
        primary-for QAbstractState (0x0x7fec3c0e9a28)

Class QStateMachine::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QStateMachine::QPrivateSignal (0x0x7fec3c1adb40) 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 (0x0x7fec3c0e9bc8) 0
    vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 16u)
  QEvent (0x0x7fec3c1adba0) 0
      primary-for QStateMachine::SignalEvent (0x0x7fec3c0e9bc8)

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 (0x0x7fec3c0e9c30) 0
    vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 16u)
  QEvent (0x0x7fec3c1adc00) 0
      primary-for QStateMachine::WrappedEvent (0x0x7fec3c0e9c30)

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 (0x0x7fec3c0e9a90) 0
    vptr=((& QStateMachine::_ZTV13QStateMachine) + 16u)
  QState (0x0x7fec3c0e9af8) 0
      primary-for QStateMachine (0x0x7fec3c0e9a90)
    QAbstractState (0x0x7fec3c0e9b60) 0
        primary-for QState (0x0x7fec3c0e9af8)
      QObject (0x0x7fec3c1adae0) 0
          primary-for QAbstractState (0x0x7fec3c0e9b60)

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 (0x0x7fec3c0e9c98) 0 nearly-empty
    vptr=((& QException::_ZTV10QException) + 16u)
  std::exception (0x0x7fec3c1adc60) 0 nearly-empty
      primary-for QException (0x0x7fec3c0e9c98)

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 (0x0x7fec3c0e9d00) 0 nearly-empty
    vptr=((& QUnhandledException::_ZTV19QUnhandledException) + 16u)
  QException (0x0x7fec3c0e9d68) 0 nearly-empty
      primary-for QUnhandledException (0x0x7fec3c0e9d00)
    std::exception (0x0x7fec3c1adcc0) 0 nearly-empty
        primary-for QException (0x0x7fec3c0e9d68)

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

Class QtPrivate::ExceptionStore
   size=8 align=8
   base size=8 base align=8
QtPrivate::ExceptionStore (0x0x7fec3c1adde0) 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 (0x0x7fec3c1ade40) 0
    vptr=((& QRunnable::_ZTV9QRunnable) + 16u)

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

Class QMutex
   size=8 align=8
   base size=8 base align=8
QMutex (0x0x7fec3c0e9f08) 0
  QBasicMutex (0x0x7fec3beeb000) 0

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

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

Class QtPrivate::ResultIteratorBase
   size=16 align=8
   base size=12 base align=8
QtPrivate::ResultIteratorBase (0x0x7fec3beeb120) 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 (0x0x7fec3beeb2a0) 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 (0x0x7fec3beeb360) 0
    vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 16u)

Class QFutureWatcherBase::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFutureWatcherBase::QPrivateSignal (0x0x7fec3beeb6c0) 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 (0x0x7fec3bf2f820) 0
    vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 16u)
  QObject (0x0x7fec3beeb660) 0
      primary-for QFutureWatcherBase (0x0x7fec3bf2f820)

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

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

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

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

Class QThread::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QThread::QPrivateSignal (0x0x7fec3beeb9c0) 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 (0x0x7fec3bf2fbc8) 0
    vptr=((& QThread::_ZTV7QThread) + 16u)
  QObject (0x0x7fec3beeb960) 0
      primary-for QThread (0x0x7fec3bf2fbc8)

Class QThreadPool::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QThreadPool::QPrivateSignal (0x0x7fec3beeba80) 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 (0x0x7fec3bf2fc30) 0
    vptr=((& QThreadPool::_ZTV11QThreadPool) + 16u)
  QObject (0x0x7fec3beeba20) 0
      primary-for QThreadPool (0x0x7fec3bf2fc30)

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

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

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

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

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

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

Class QCollatorSortKey
   size=8 align=8
   base size=8 base align=8
QCollatorSortKey (0x0x7fec3bca74e0) 0

Class QCollator
   size=8 align=8
   base size=8 base align=8
QCollator (0x0x7fec3bca75a0) 0

Class QCommandLineOption
   size=8 align=8
   base size=8 base align=8
QCommandLineOption (0x0x7fec3bca7780) 0

Class QCommandLineParser
   size=8 align=8
   base size=8 base align=8
QCommandLineParser (0x0x7fec3bca7900) 0

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

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

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

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

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

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

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

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

Class QMarginsF
   size=32 align=8
   base size=32 base align=8
QMarginsF (0x0x7fec3ba5a360) 0

Class QMessageAuthenticationCode
   size=8 align=8
   base size=8 base align=8
QMessageAuthenticationCode (0x0x7fec3ba5a480) 0

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

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

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

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

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

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

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

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

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

Class QTimeLine::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTimeLine::QPrivateSignal (0x0x7fec3b940c60) 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 (0x0x7fec3b992548) 0
    vptr=((& QTimeLine::_ZTV9QTimeLine) + 16u)
  QObject (0x0x7fec3b940c00) 0
      primary-for QTimeLine (0x0x7fec3b992548)

Class QTimeZone::OffsetData
   size=32 align=8
   base size=28 base align=8
QTimeZone::OffsetData (0x0x7fec3b940d20) 0

Class QTimeZone
   size=8 align=8
   base size=8 base align=8
QTimeZone (0x0x7fec3b940cc0) 0

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

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

Class QXmlStreamAttributes
   size=8 align=8
   base size=8 base align=8
QXmlStreamAttributes (0x0x7fec3b9927b8) 0
  QVector<QXmlStreamAttribute> (0x0x7fec3b6391e0) 0

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

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

Class QXmlStreamEntityDeclaration
   size=88 align=8
   base size=88 base align=8
QXmlStreamEntityDeclaration (0x0x7fec3b639480) 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 (0x0x7fec3b6395a0) 0 nearly-empty
    vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 16u)

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

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

Class QDomImplementation
   size=8 align=8
   base size=8 base align=8
QDomImplementation (0x0x7fec3b639840) 0

Class QDomNode
   size=8 align=8
   base size=8 base align=8
QDomNode (0x0x7fec3b6398a0) 0

Class QDomNodeList
   size=8 align=8
   base size=8 base align=8
QDomNodeList (0x0x7fec3b639900) 0

Class QDomDocumentType
   size=8 align=8
   base size=8 base align=8
QDomDocumentType (0x0x7fec3b992958) 0
  QDomNode (0x0x7fec3b639960) 0

Class QDomDocument
   size=8 align=8
   base size=8 base align=8
QDomDocument (0x0x7fec3b9929c0) 0
  QDomNode (0x0x7fec3b6399c0) 0

Class QDomNamedNodeMap
   size=8 align=8
   base size=8 base align=8
QDomNamedNodeMap (0x0x7fec3b639a20) 0

Class QDomDocumentFragment
   size=8 align=8
   base size=8 base align=8
QDomDocumentFragment (0x0x7fec3b992a28) 0
  QDomNode (0x0x7fec3b639a80) 0

Class QDomCharacterData
   size=8 align=8
   base size=8 base align=8
QDomCharacterData (0x0x7fec3b992a90) 0
  QDomNode (0x0x7fec3b639ae0) 0

Class QDomAttr
   size=8 align=8
   base size=8 base align=8
QDomAttr (0x0x7fec3b992af8) 0
  QDomNode (0x0x7fec3b639b40) 0

Class QDomElement
   size=8 align=8
   base size=8 base align=8
QDomElement (0x0x7fec3b992b60) 0
  QDomNode (0x0x7fec3b639ba0) 0

Class QDomText
   size=8 align=8
   base size=8 base align=8
QDomText (0x0x7fec3b992bc8) 0
  QDomCharacterData (0x0x7fec3b992c30) 0
    QDomNode (0x0x7fec3b639c00) 0

Class QDomComment
   size=8 align=8
   base size=8 base align=8
QDomComment (0x0x7fec3b992c98) 0
  QDomCharacterData (0x0x7fec3b992d00) 0
    QDomNode (0x0x7fec3b639c60) 0

Class QDomCDATASection
   size=8 align=8
   base size=8 base align=8
QDomCDATASection (0x0x7fec3b992d68) 0
  QDomText (0x0x7fec3b992dd0) 0
    QDomCharacterData (0x0x7fec3b992e38) 0
      QDomNode (0x0x7fec3b639cc0) 0

Class QDomNotation
   size=8 align=8
   base size=8 base align=8
QDomNotation (0x0x7fec3b992ea0) 0
  QDomNode (0x0x7fec3b639d20) 0

Class QDomEntity
   size=8 align=8
   base size=8 base align=8
QDomEntity (0x0x7fec3b992f08) 0
  QDomNode (0x0x7fec3b639d80) 0

Class QDomEntityReference
   size=8 align=8
   base size=8 base align=8
QDomEntityReference (0x0x7fec3b992f70) 0
  QDomNode (0x0x7fec3b639de0) 0

Class QDomProcessingInstruction
   size=8 align=8
   base size=8 base align=8
QDomProcessingInstruction (0x0x7fec3b77d000) 0
  QDomNode (0x0x7fec3b639e40) 0

Class QXmlNamespaceSupport
   size=8 align=8
   base size=8 base align=8
QXmlNamespaceSupport (0x0x7fec3b639ea0) 0

Class QXmlAttributes::Attribute
   size=32 align=8
   base size=32 base align=8
QXmlAttributes::Attribute (0x0x7fec3b639f60) 0

Vtable for QXmlAttributes
QXmlAttributes::_ZTV14QXmlAttributes: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QXmlAttributes)
16    (int (*)(...))QXmlAttributes::~QXmlAttributes
24    (int (*)(...))QXmlAttributes::~QXmlAttributes

Class QXmlAttributes
   size=24 align=8
   base size=24 base align=8
QXmlAttributes (0x0x7fec3b639f00) 0
    vptr=((& QXmlAttributes::_ZTV14QXmlAttributes) + 16u)

Vtable for QXmlInputSource
QXmlInputSource::_ZTV15QXmlInputSource: 11u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QXmlInputSource)
16    (int (*)(...))QXmlInputSource::~QXmlInputSource
24    (int (*)(...))QXmlInputSource::~QXmlInputSource
32    (int (*)(...))QXmlInputSource::setData
40    (int (*)(...))QXmlInputSource::setData
48    (int (*)(...))QXmlInputSource::fetchData
56    (int (*)(...))QXmlInputSource::data
64    (int (*)(...))QXmlInputSource::next
72    (int (*)(...))QXmlInputSource::reset
80    (int (*)(...))QXmlInputSource::fromRawData

Class QXmlInputSource
   size=16 align=8
   base size=16 base align=8
QXmlInputSource (0x0x7fec3b7910c0) 0
    vptr=((& QXmlInputSource::_ZTV15QXmlInputSource) + 16u)

Class QXmlParseException
   size=8 align=8
   base size=8 base align=8
QXmlParseException (0x0x7fec3b791120) 0

Vtable for QXmlReader
QXmlReader::_ZTV10QXmlReader: 24u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QXmlReader)
16    (int (*)(...))QXmlReader::~QXmlReader
24    (int (*)(...))QXmlReader::~QXmlReader
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual
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 (*)(...))__cxa_pure_virtual
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))__cxa_pure_virtual
176   (int (*)(...))__cxa_pure_virtual
184   (int (*)(...))__cxa_pure_virtual

Class QXmlReader
   size=8 align=8
   base size=8 base align=8
QXmlReader (0x0x7fec3b7911e0) 0 nearly-empty
    vptr=((& QXmlReader::_ZTV10QXmlReader) + 16u)

Vtable for QXmlSimpleReader
QXmlSimpleReader::_ZTV16QXmlSimpleReader: 26u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QXmlSimpleReader)
16    (int (*)(...))QXmlSimpleReader::~QXmlSimpleReader
24    (int (*)(...))QXmlSimpleReader::~QXmlSimpleReader
32    (int (*)(...))QXmlSimpleReader::feature
40    (int (*)(...))QXmlSimpleReader::setFeature
48    (int (*)(...))QXmlSimpleReader::hasFeature
56    (int (*)(...))QXmlSimpleReader::property
64    (int (*)(...))QXmlSimpleReader::setProperty
72    (int (*)(...))QXmlSimpleReader::hasProperty
80    (int (*)(...))QXmlSimpleReader::setEntityResolver
88    (int (*)(...))QXmlSimpleReader::entityResolver
96    (int (*)(...))QXmlSimpleReader::setDTDHandler
104   (int (*)(...))QXmlSimpleReader::DTDHandler
112   (int (*)(...))QXmlSimpleReader::setContentHandler
120   (int (*)(...))QXmlSimpleReader::contentHandler
128   (int (*)(...))QXmlSimpleReader::setErrorHandler
136   (int (*)(...))QXmlSimpleReader::errorHandler
144   (int (*)(...))QXmlSimpleReader::setLexicalHandler
152   (int (*)(...))QXmlSimpleReader::lexicalHandler
160   (int (*)(...))QXmlSimpleReader::setDeclHandler
168   (int (*)(...))QXmlSimpleReader::declHandler
176   (int (*)(...))QXmlSimpleReader::parse
184   (int (*)(...))QXmlSimpleReader::parse
192   (int (*)(...))QXmlSimpleReader::parse
200   (int (*)(...))QXmlSimpleReader::parseContinue

Class QXmlSimpleReader
   size=16 align=8
   base size=16 base align=8
QXmlSimpleReader (0x0x7fec3b77d068) 0
    vptr=((& QXmlSimpleReader::_ZTV16QXmlSimpleReader) + 16u)
  QXmlReader (0x0x7fec3b791240) 0 nearly-empty
      primary-for QXmlSimpleReader (0x0x7fec3b77d068)

Vtable for QXmlLocator
QXmlLocator::_ZTV11QXmlLocator: 6u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QXmlLocator)
16    (int (*)(...))QXmlLocator::~QXmlLocator
24    (int (*)(...))QXmlLocator::~QXmlLocator
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual

Class QXmlLocator
   size=8 align=8
   base size=8 base align=8
QXmlLocator (0x0x7fec3b791360) 0 nearly-empty
    vptr=((& QXmlLocator::_ZTV11QXmlLocator) + 16u)

Vtable for QXmlContentHandler
QXmlContentHandler::_ZTV18QXmlContentHandler: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QXmlContentHandler)
16    (int (*)(...))QXmlContentHandler::~QXmlContentHandler
24    (int (*)(...))QXmlContentHandler::~QXmlContentHandler
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual
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

Class QXmlContentHandler
   size=8 align=8
   base size=8 base align=8
QXmlContentHandler (0x0x7fec3b7913c0) 0 nearly-empty
    vptr=((& QXmlContentHandler::_ZTV18QXmlContentHandler) + 16u)

Vtable for QXmlErrorHandler
QXmlErrorHandler::_ZTV16QXmlErrorHandler: 8u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QXmlErrorHandler)
16    (int (*)(...))QXmlErrorHandler::~QXmlErrorHandler
24    (int (*)(...))QXmlErrorHandler::~QXmlErrorHandler
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual

Class QXmlErrorHandler
   size=8 align=8
   base size=8 base align=8
QXmlErrorHandler (0x0x7fec3b791420) 0 nearly-empty
    vptr=((& QXmlErrorHandler::_ZTV16QXmlErrorHandler) + 16u)

Vtable for QXmlDTDHandler
QXmlDTDHandler::_ZTV14QXmlDTDHandler: 7u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QXmlDTDHandler)
16    (int (*)(...))QXmlDTDHandler::~QXmlDTDHandler
24    (int (*)(...))QXmlDTDHandler::~QXmlDTDHandler
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual

Class QXmlDTDHandler
   size=8 align=8
   base size=8 base align=8
QXmlDTDHandler (0x0x7fec3b791480) 0 nearly-empty
    vptr=((& QXmlDTDHandler::_ZTV14QXmlDTDHandler) + 16u)

Vtable for QXmlEntityResolver
QXmlEntityResolver::_ZTV18QXmlEntityResolver: 6u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QXmlEntityResolver)
16    (int (*)(...))QXmlEntityResolver::~QXmlEntityResolver
24    (int (*)(...))QXmlEntityResolver::~QXmlEntityResolver
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual

Class QXmlEntityResolver
   size=8 align=8
   base size=8 base align=8
QXmlEntityResolver (0x0x7fec3b7914e0) 0 nearly-empty
    vptr=((& QXmlEntityResolver::_ZTV18QXmlEntityResolver) + 16u)

Vtable for QXmlLexicalHandler
QXmlLexicalHandler::_ZTV18QXmlLexicalHandler: 12u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QXmlLexicalHandler)
16    (int (*)(...))QXmlLexicalHandler::~QXmlLexicalHandler
24    (int (*)(...))QXmlLexicalHandler::~QXmlLexicalHandler
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual
72    (int (*)(...))__cxa_pure_virtual
80    (int (*)(...))__cxa_pure_virtual
88    (int (*)(...))__cxa_pure_virtual

Class QXmlLexicalHandler
   size=8 align=8
   base size=8 base align=8
QXmlLexicalHandler (0x0x7fec3b791540) 0 nearly-empty
    vptr=((& QXmlLexicalHandler::_ZTV18QXmlLexicalHandler) + 16u)

Vtable for QXmlDeclHandler
QXmlDeclHandler::_ZTV15QXmlDeclHandler: 8u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QXmlDeclHandler)
16    (int (*)(...))QXmlDeclHandler::~QXmlDeclHandler
24    (int (*)(...))QXmlDeclHandler::~QXmlDeclHandler
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual

Class QXmlDeclHandler
   size=8 align=8
   base size=8 base align=8
QXmlDeclHandler (0x0x7fec3b7915a0) 0 nearly-empty
    vptr=((& QXmlDeclHandler::_ZTV15QXmlDeclHandler) + 16u)

Vtable for QXmlDefaultHandler
QXmlDefaultHandler::_ZTV18QXmlDefaultHandler: 73u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QXmlDefaultHandler)
16    (int (*)(...))QXmlDefaultHandler::~QXmlDefaultHandler
24    (int (*)(...))QXmlDefaultHandler::~QXmlDefaultHandler
32    (int (*)(...))QXmlDefaultHandler::setDocumentLocator
40    (int (*)(...))QXmlDefaultHandler::startDocument
48    (int (*)(...))QXmlDefaultHandler::endDocument
56    (int (*)(...))QXmlDefaultHandler::startPrefixMapping
64    (int (*)(...))QXmlDefaultHandler::endPrefixMapping
72    (int (*)(...))QXmlDefaultHandler::startElement
80    (int (*)(...))QXmlDefaultHandler::endElement
88    (int (*)(...))QXmlDefaultHandler::characters
96    (int (*)(...))QXmlDefaultHandler::ignorableWhitespace
104   (int (*)(...))QXmlDefaultHandler::processingInstruction
112   (int (*)(...))QXmlDefaultHandler::skippedEntity
120   (int (*)(...))QXmlDefaultHandler::errorString
128   (int (*)(...))QXmlDefaultHandler::warning
136   (int (*)(...))QXmlDefaultHandler::error
144   (int (*)(...))QXmlDefaultHandler::fatalError
152   (int (*)(...))QXmlDefaultHandler::notationDecl
160   (int (*)(...))QXmlDefaultHandler::unparsedEntityDecl
168   (int (*)(...))QXmlDefaultHandler::resolveEntity
176   (int (*)(...))QXmlDefaultHandler::startDTD
184   (int (*)(...))QXmlDefaultHandler::endDTD
192   (int (*)(...))QXmlDefaultHandler::startEntity
200   (int (*)(...))QXmlDefaultHandler::endEntity
208   (int (*)(...))QXmlDefaultHandler::startCDATA
216   (int (*)(...))QXmlDefaultHandler::endCDATA
224   (int (*)(...))QXmlDefaultHandler::comment
232   (int (*)(...))QXmlDefaultHandler::attributeDecl
240   (int (*)(...))QXmlDefaultHandler::internalEntityDecl
248   (int (*)(...))QXmlDefaultHandler::externalEntityDecl
256   (int (*)(...))-8
264   (int (*)(...))(& _ZTI18QXmlDefaultHandler)
272   (int (*)(...))QXmlDefaultHandler::_ZThn8_N18QXmlDefaultHandlerD1Ev
280   (int (*)(...))QXmlDefaultHandler::_ZThn8_N18QXmlDefaultHandlerD0Ev
288   (int (*)(...))QXmlDefaultHandler::_ZThn8_N18QXmlDefaultHandler7warningERK18QXmlParseException
296   (int (*)(...))QXmlDefaultHandler::_ZThn8_N18QXmlDefaultHandler5errorERK18QXmlParseException
304   (int (*)(...))QXmlDefaultHandler::_ZThn8_N18QXmlDefaultHandler10fatalErrorERK18QXmlParseException
312   (int (*)(...))QXmlDefaultHandler::_ZThn8_NK18QXmlDefaultHandler11errorStringEv
320   (int (*)(...))-16
328   (int (*)(...))(& _ZTI18QXmlDefaultHandler)
336   (int (*)(...))QXmlDefaultHandler::_ZThn16_N18QXmlDefaultHandlerD1Ev
344   (int (*)(...))QXmlDefaultHandler::_ZThn16_N18QXmlDefaultHandlerD0Ev
352   (int (*)(...))QXmlDefaultHandler::_ZThn16_N18QXmlDefaultHandler12notationDeclERK7QStringS2_S2_
360   (int (*)(...))QXmlDefaultHandler::_ZThn16_N18QXmlDefaultHandler18unparsedEntityDeclERK7QStringS2_S2_S2_
368   (int (*)(...))QXmlDefaultHandler::_ZThn16_NK18QXmlDefaultHandler11errorStringEv
376   (int (*)(...))-24
384   (int (*)(...))(& _ZTI18QXmlDefaultHandler)
392   (int (*)(...))QXmlDefaultHandler::_ZThn24_N18QXmlDefaultHandlerD1Ev
400   (int (*)(...))QXmlDefaultHandler::_ZThn24_N18QXmlDefaultHandlerD0Ev
408   (int (*)(...))QXmlDefaultHandler::_ZThn24_N18QXmlDefaultHandler13resolveEntityERK7QStringS2_RP15QXmlInputSource
416   (int (*)(...))QXmlDefaultHandler::_ZThn24_NK18QXmlDefaultHandler11errorStringEv
424   (int (*)(...))-32
432   (int (*)(...))(& _ZTI18QXmlDefaultHandler)
440   (int (*)(...))QXmlDefaultHandler::_ZThn32_N18QXmlDefaultHandlerD1Ev
448   (int (*)(...))QXmlDefaultHandler::_ZThn32_N18QXmlDefaultHandlerD0Ev
456   (int (*)(...))QXmlDefaultHandler::_ZThn32_N18QXmlDefaultHandler8startDTDERK7QStringS2_S2_
464   (int (*)(...))QXmlDefaultHandler::_ZThn32_N18QXmlDefaultHandler6endDTDEv
472   (int (*)(...))QXmlDefaultHandler::_ZThn32_N18QXmlDefaultHandler11startEntityERK7QString
480   (int (*)(...))QXmlDefaultHandler::_ZThn32_N18QXmlDefaultHandler9endEntityERK7QString
488   (int (*)(...))QXmlDefaultHandler::_ZThn32_N18QXmlDefaultHandler10startCDATAEv
496   (int (*)(...))QXmlDefaultHandler::_ZThn32_N18QXmlDefaultHandler8endCDATAEv
504   (int (*)(...))QXmlDefaultHandler::_ZThn32_N18QXmlDefaultHandler7commentERK7QString
512   (int (*)(...))QXmlDefaultHandler::_ZThn32_NK18QXmlDefaultHandler11errorStringEv
520   (int (*)(...))-40
528   (int (*)(...))(& _ZTI18QXmlDefaultHandler)
536   (int (*)(...))QXmlDefaultHandler::_ZThn40_N18QXmlDefaultHandlerD1Ev
544   (int (*)(...))QXmlDefaultHandler::_ZThn40_N18QXmlDefaultHandlerD0Ev
552   (int (*)(...))QXmlDefaultHandler::_ZThn40_N18QXmlDefaultHandler13attributeDeclERK7QStringS2_S2_S2_S2_
560   (int (*)(...))QXmlDefaultHandler::_ZThn40_N18QXmlDefaultHandler18internalEntityDeclERK7QStringS2_
568   (int (*)(...))QXmlDefaultHandler::_ZThn40_N18QXmlDefaultHandler18externalEntityDeclERK7QStringS2_S2_
576   (int (*)(...))QXmlDefaultHandler::_ZThn40_NK18QXmlDefaultHandler11errorStringEv

Class QXmlDefaultHandler
   size=56 align=8
   base size=56 base align=8
QXmlDefaultHandler (0x0x7fec3b3862f8) 0
    vptr=((& QXmlDefaultHandler::_ZTV18QXmlDefaultHandler) + 16u)
  QXmlContentHandler (0x0x7fec3b791600) 0 nearly-empty
      primary-for QXmlDefaultHandler (0x0x7fec3b3862f8)
  QXmlErrorHandler (0x0x7fec3b791660) 8 nearly-empty
      vptr=((& QXmlDefaultHandler::_ZTV18QXmlDefaultHandler) + 272u)
  QXmlDTDHandler (0x0x7fec3b7916c0) 16 nearly-empty
      vptr=((& QXmlDefaultHandler::_ZTV18QXmlDefaultHandler) + 336u)
  QXmlEntityResolver (0x0x7fec3b791720) 24 nearly-empty
      vptr=((& QXmlDefaultHandler::_ZTV18QXmlDefaultHandler) + 392u)
  QXmlLexicalHandler (0x0x7fec3b791780) 32 nearly-empty
      vptr=((& QXmlDefaultHandler::_ZTV18QXmlDefaultHandler) + 440u)
  QXmlDeclHandler (0x0x7fec3b7917e0) 40 nearly-empty
      vptr=((& QXmlDefaultHandler::_ZTV18QXmlDefaultHandler) + 536u)

