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

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

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

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

Class std::forward_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::forward_iterator_tag (0x0x7fe47892ff08) 0 empty
  std::input_iterator_tag (0x0x7fe4789c7d20) 0 empty

Class std::bidirectional_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::bidirectional_iterator_tag (0x0x7fe47892ff70) 0 empty
  std::forward_iterator_tag (0x0x7fe4789ee000) 0 empty
    std::input_iterator_tag (0x0x7fe4789c7d80) 0 empty

Class std::random_access_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::random_access_iterator_tag (0x0x7fe4789ee068) 0 empty
  std::bidirectional_iterator_tag (0x0x7fe4789ee0d0) 0 empty
    std::forward_iterator_tag (0x0x7fe4789ee138) 0 empty
      std::input_iterator_tag (0x0x7fe4789c7de0) 0 empty

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Class QAtomicInt
   size=4 align=4
   base size=4 base align=4
QAtomicInt (0x0x7fe47760bc30) 0
  QAtomicInteger<int> (0x0x7fe47760bc98) 0
    QBasicAtomicInteger<int> (0x0x7fe47748e060) 0

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

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

Class QGenericReturnArgument
   size=16 align=8
   base size=16 base align=8
QGenericReturnArgument (0x0x7fe477159dd0) 0
  QGenericArgument (0x0x7fe476f2f120) 0

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

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

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

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

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

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

Class QtPrivate::QContainerImplHelper
   size=1 align=1
   base size=0 base align=1
QtPrivate::QContainerImplHelper (0x0x7fe476f2fae0) 0 empty

Class lconv
   size=96 align=8
   base size=96 base align=8
lconv (0x0x7fe476f2fe40) 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 (0x0x7fe476f2fea0) 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 (0x0x7fe476d62960) 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Class std::ios_base::Init
   size=1 align=1
   base size=0 base align=1
std::ios_base::Init (0x0x7fe4767986c0) 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 (0x0x7fe476798540) 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 (0x0x7fe476798840) 0 empty

Class std::__num_base
   size=1 align=1
   base size=0 base align=1
std::__num_base (0x0x7fe476798f00) 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> (0x0x7fe4764a71a0 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> (0x0x7fe4764a7270 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> (0x0x7fe4764a7548 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> (0x0x7fe4764a7618 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 (0x0x7fe476461300) 0

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

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

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

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

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

Class std::_Bit_iterator
   size=16 align=8
   base size=12 base align=8
std::_Bit_iterator (0x0x7fe4764a7ea0) 0
  std::_Bit_iterator_base (0x0x7fe4764a7f08) 0
    std::iterator<std::random_access_iterator_tag, bool> (0x0x7fe475ee59c0) 0 empty

Class std::_Bit_const_iterator
   size=16 align=8
   base size=12 base align=8
std::_Bit_const_iterator (0x0x7fe4764a7f70) 0
  std::_Bit_iterator_base (0x0x7fe4764a73a8) 0
    std::iterator<std::random_access_iterator_tag, bool> (0x0x7fe475ee5a20) 0 empty

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

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

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

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

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

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

Class QtMetaTypePrivate::VectorBoolElements
   size=1 align=1
   base size=0 base align=1
QtMetaTypePrivate::VectorBoolElements (0x0x7fe475ccec60) 0 empty

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

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

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

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

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

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

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

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

Class QAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAnimationGroup::QPrivateSignal (0x0x7fe4759683c0) 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 (0x0x7fe475b53c30) 0
    vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16u)
  QAbstractAnimation (0x0x7fe475b53c98) 0
      primary-for QAnimationGroup (0x0x7fe475b53c30)
    QObject (0x0x7fe475968360) 0
        primary-for QAbstractAnimation (0x0x7fe475b53c98)

Class QParallelAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QParallelAnimationGroup::QPrivateSignal (0x0x7fe475968480) 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 (0x0x7fe475b53d00) 0
    vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16u)
  QAnimationGroup (0x0x7fe475b53d68) 0
      primary-for QParallelAnimationGroup (0x0x7fe475b53d00)
    QAbstractAnimation (0x0x7fe475b53dd0) 0
        primary-for QAnimationGroup (0x0x7fe475b53d68)
      QObject (0x0x7fe475968420) 0
          primary-for QAbstractAnimation (0x0x7fe475b53dd0)

Class QPauseAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPauseAnimation::QPrivateSignal (0x0x7fe475968540) 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 (0x0x7fe475b53e38) 0
    vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16u)
  QAbstractAnimation (0x0x7fe475b53ea0) 0
      primary-for QPauseAnimation (0x0x7fe475b53e38)
    QObject (0x0x7fe4759684e0) 0
        primary-for QAbstractAnimation (0x0x7fe475b53ea0)

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

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

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

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

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

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

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

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

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

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

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

Class QStringList
   size=8 align=8
   base size=8 base align=8
QStringList (0x0x7fe475a688f0) 0
  QList<QString> (0x0x7fe475a68958) 0
    QListSpecialMethods<QString> (0x0x7fe4757f4840) 0 empty

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

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

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

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

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

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

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

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

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

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

Class QVariantAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QVariantAnimation::QPrivateSignal (0x0x7fe475678cc0) 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 (0x0x7fe4752d43a8) 0
    vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16u)
  QAbstractAnimation (0x0x7fe4752d4410) 0
      primary-for QVariantAnimation (0x0x7fe4752d43a8)
    QObject (0x0x7fe475678c60) 0
        primary-for QAbstractAnimation (0x0x7fe4752d4410)

Class QPropertyAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPropertyAnimation::QPrivateSignal (0x0x7fe475678d80) 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 (0x0x7fe4752d44e0) 0
    vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16u)
  QVariantAnimation (0x0x7fe4752d4548) 0
      primary-for QPropertyAnimation (0x0x7fe4752d44e0)
    QAbstractAnimation (0x0x7fe4752d45b0) 0
        primary-for QVariantAnimation (0x0x7fe4752d4548)
      QObject (0x0x7fe475678d20) 0
          primary-for QAbstractAnimation (0x0x7fe4752d45b0)

Class QSequentialAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSequentialAnimationGroup::QPrivateSignal (0x0x7fe475678e40) 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 (0x0x7fe4752d4618) 0
    vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16u)
  QAnimationGroup (0x0x7fe4752d4680) 0
      primary-for QSequentialAnimationGroup (0x0x7fe4752d4618)
    QAbstractAnimation (0x0x7fe4752d46e8) 0
        primary-for QAnimationGroup (0x0x7fe4752d4680)
      QObject (0x0x7fe475678de0) 0
          primary-for QAbstractAnimation (0x0x7fe4752d46e8)

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

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

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

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

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

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

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

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

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

Class QBuffer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QBuffer::QPrivateSignal (0x0x7fe475342f00) 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 (0x0x7fe4752d49c0) 0
    vptr=((& QBuffer::_ZTV7QBuffer) + 16u)
  QIODevice (0x0x7fe4752d4a28) 0
      primary-for QBuffer (0x0x7fe4752d49c0)
    QObject (0x0x7fe475342ea0) 0
        primary-for QIODevice (0x0x7fe4752d4a28)

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

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

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

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

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

Class QDebug::Stream
   size=80 align=8
   base size=76 base align=8
QDebug::Stream (0x0x7fe475149f00) 0

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

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

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

Class QFileDevice::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFileDevice::QPrivateSignal (0x0x7fe474f0c1e0) 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 (0x0x7fe4752d4ea0) 0
    vptr=((& QFileDevice::_ZTV11QFileDevice) + 16u)
  QIODevice (0x0x7fe4752d4f08) 0
      primary-for QFileDevice (0x0x7fe4752d4ea0)
    QObject (0x0x7fe474f0c180) 0
        primary-for QIODevice (0x0x7fe4752d4f08)

Class QFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFile::QPrivateSignal (0x0x7fe474f0c360) 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 (0x0x7fe4752d4270) 0
    vptr=((& QFile::_ZTV5QFile) + 16u)
  QFileDevice (0x0x7fe4752d42d8) 0
      primary-for QFile (0x0x7fe4752d4270)
    QIODevice (0x0x7fe4752d4d68) 0
        primary-for QFileDevice (0x0x7fe4752d42d8)
      QObject (0x0x7fe474f0c300) 0
          primary-for QIODevice (0x0x7fe4752d4d68)

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

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

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

Class QFileSelector::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFileSelector::QPrivateSignal (0x0x7fe474f0cc00) 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 (0x0x7fe474f88478) 0
    vptr=((& QFileSelector::_ZTV13QFileSelector) + 16u)
  QObject (0x0x7fe474f0cba0) 0
      primary-for QFileSelector (0x0x7fe474f88478)

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

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

Class QLoggingCategory::AtomicBools
   size=3 align=1
   base size=3 base align=1
QLoggingCategory::AtomicBools (0x0x7fe474f0cea0) 0

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

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

Class QProcess::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QProcess::QPrivateSignal (0x0x7fe475099240) 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 (0x0x7fe474f886e8) 0
    vptr=((& QProcess::_ZTV8QProcess) + 16u)
  QIODevice (0x0x7fe474f88750) 0
      primary-for QProcess (0x0x7fe474f886e8)
    QObject (0x0x7fe4750991e0) 0
        primary-for QIODevice (0x0x7fe474f88750)

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

Class QSaveFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSaveFile::QPrivateSignal (0x0x7fe475099420) 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 (0x0x7fe474f887b8) 0
    vptr=((& QSaveFile::_ZTV9QSaveFile) + 16u)
  QFileDevice (0x0x7fe474f88820) 0
      primary-for QSaveFile (0x0x7fe474f887b8)
    QIODevice (0x0x7fe474f88888) 0
        primary-for QFileDevice (0x0x7fe474f88820)
      QObject (0x0x7fe4750993c0) 0
          primary-for QIODevice (0x0x7fe474f88888)

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

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

Class QStorageInfo
   size=8 align=8
   base size=8 base align=8
QStorageInfo (0x0x7fe475099660) 0

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

Class QTemporaryFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTemporaryFile::QPrivateSignal (0x0x7fe475099a20) 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 (0x0x7fe474f88a90) 0
    vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16u)
  QFile (0x0x7fe474f88af8) 0
      primary-for QTemporaryFile (0x0x7fe474f88a90)
    QFileDevice (0x0x7fe474f88b60) 0
        primary-for QFile (0x0x7fe474f88af8)
      QIODevice (0x0x7fe474f88bc8) 0
          primary-for QFileDevice (0x0x7fe474f88b60)
        QObject (0x0x7fe4750999c0) 0
            primary-for QIODevice (0x0x7fe474f88bc8)

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

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

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

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

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

Class QAbstractTableModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractTableModel::QPrivateSignal (0x0x7fe474e3e7e0) 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 (0x0x7fe474e7e270) 0
    vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16u)
  QAbstractItemModel (0x0x7fe474e7e2d8) 0
      primary-for QAbstractTableModel (0x0x7fe474e7e270)
    QObject (0x0x7fe474e3e780) 0
        primary-for QAbstractItemModel (0x0x7fe474e7e2d8)

Class QAbstractListModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractListModel::QPrivateSignal (0x0x7fe474e3e8a0) 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 (0x0x7fe474e7e340) 0
    vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16u)
  QAbstractItemModel (0x0x7fe474e7e3a8) 0
      primary-for QAbstractListModel (0x0x7fe474e7e340)
    QObject (0x0x7fe474e3e840) 0
        primary-for QAbstractItemModel (0x0x7fe474e7e3a8)

Class QAbstractProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractProxyModel::QPrivateSignal (0x0x7fe474e3e960) 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 (*)(...))QAbstractProxyModel::canDropMimeData
232   (int (*)(...))QAbstractProxyModel::dropMimeData
240   (int (*)(...))QAbstractProxyModel::supportedDropActions
248   (int (*)(...))QAbstractProxyModel::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 (0x0x7fe474e7e410) 0
    vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16u)
  QAbstractItemModel (0x0x7fe474e7e478) 0
      primary-for QAbstractProxyModel (0x0x7fe474e7e410)
    QObject (0x0x7fe474e3e900) 0
        primary-for QAbstractItemModel (0x0x7fe474e7e478)

Class QIdentityProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QIdentityProxyModel::QPrivateSignal (0x0x7fe474e3ea20) 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 (*)(...))QAbstractProxyModel::canDropMimeData
232   (int (*)(...))QIdentityProxyModel::dropMimeData
240   (int (*)(...))QAbstractProxyModel::supportedDropActions
248   (int (*)(...))QAbstractProxyModel::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 (0x0x7fe474e7e4e0) 0
    vptr=((& QIdentityProxyModel::_ZTV19QIdentityProxyModel) + 16u)
  QAbstractProxyModel (0x0x7fe474e7e548) 0
      primary-for QIdentityProxyModel (0x0x7fe474e7e4e0)
    QAbstractItemModel (0x0x7fe474e7e5b0) 0
        primary-for QAbstractProxyModel (0x0x7fe474e7e548)
      QObject (0x0x7fe474e3e9c0) 0
          primary-for QAbstractItemModel (0x0x7fe474e7e5b0)

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

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

Class QItemSelection
   size=8 align=8
   base size=8 base align=8
QItemSelection (0x0x7fe474e7e820) 0
  QList<QItemSelectionRange> (0x0x7fe474e7e888) 0
    QListSpecialMethods<QItemSelectionRange> (0x0x7fe474e3ee40) 0 empty

Class QSortFilterProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSortFilterProxyModel::QPrivateSignal (0x0x7fe474e3ef00) 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 (*)(...))QAbstractProxyModel::canDropMimeData
232   (int (*)(...))QSortFilterProxyModel::dropMimeData
240   (int (*)(...))QSortFilterProxyModel::supportedDropActions
248   (int (*)(...))QAbstractProxyModel::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 (0x0x7fe474e7e8f0) 0
    vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16u)
  QAbstractProxyModel (0x0x7fe474e7e958) 0
      primary-for QSortFilterProxyModel (0x0x7fe474e7e8f0)
    QAbstractItemModel (0x0x7fe474e7e9c0) 0
        primary-for QAbstractProxyModel (0x0x7fe474e7e958)
      QObject (0x0x7fe474e3eea0) 0
          primary-for QAbstractItemModel (0x0x7fe474e7e9c0)

Class QStringListModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QStringListModel::QPrivateSignal (0x0x7fe474c38000) 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 (0x0x7fe474e7ea28) 0
    vptr=((& QStringListModel::_ZTV16QStringListModel) + 16u)
  QAbstractListModel (0x0x7fe474e7ea90) 0
      primary-for QStringListModel (0x0x7fe474e7ea28)
    QAbstractItemModel (0x0x7fe474e7eaf8) 0
        primary-for QAbstractListModel (0x0x7fe474e7ea90)
      QObject (0x0x7fe474e3ef60) 0
          primary-for QAbstractItemModel (0x0x7fe474e7eaf8)

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

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

Class QJsonValuePtr
   size=24 align=8
   base size=24 base align=8
QJsonValuePtr (0x0x7fe474c381e0) 0

Class QJsonValueRefPtr
   size=16 align=8
   base size=16 base align=8
QJsonValueRefPtr (0x0x7fe474c38240) 0

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

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

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

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

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

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

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

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

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

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

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

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

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

Class QBasicTimer
   size=4 align=4
   base size=4 base align=4
QBasicTimer (0x0x7fe474c38960) 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 (0x0x7fe474c38a80) 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 (0x0x7fe474e7ed68) 0
    vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16u)
  QEvent (0x0x7fe474c38ae0) 0
      primary-for QTimerEvent (0x0x7fe474e7ed68)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Class QEventTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QEventTransition::QPrivateSignal (0x0x7fe4747e0a20) 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 (0x0x7fe474a68bc8) 0
    vptr=((& QEventTransition::_ZTV16QEventTransition) + 16u)
  QAbstractTransition (0x0x7fe474a68c30) 0
      primary-for QEventTransition (0x0x7fe474a68bc8)
    QObject (0x0x7fe4747e09c0) 0
        primary-for QAbstractTransition (0x0x7fe474a68c30)

Class QFinalState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFinalState::QPrivateSignal (0x0x7fe4747e0ae0) 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 (0x0x7fe474a68c98) 0
    vptr=((& QFinalState::_ZTV11QFinalState) + 16u)
  QAbstractState (0x0x7fe474a68d00) 0
      primary-for QFinalState (0x0x7fe474a68c98)
    QObject (0x0x7fe4747e0a80) 0
        primary-for QAbstractState (0x0x7fe474a68d00)

Class QHistoryState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QHistoryState::QPrivateSignal (0x0x7fe4747e0ba0) 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 (0x0x7fe474a68d68) 0
    vptr=((& QHistoryState::_ZTV13QHistoryState) + 16u)
  QAbstractState (0x0x7fe474a68dd0) 0
      primary-for QHistoryState (0x0x7fe474a68d68)
    QObject (0x0x7fe4747e0b40) 0
        primary-for QAbstractState (0x0x7fe474a68dd0)

Class QSignalTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSignalTransition::QPrivateSignal (0x0x7fe4747e0c60) 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 (0x0x7fe474a68e38) 0
    vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16u)
  QAbstractTransition (0x0x7fe474a68ea0) 0
      primary-for QSignalTransition (0x0x7fe474a68e38)
    QObject (0x0x7fe4747e0c00) 0
        primary-for QAbstractTransition (0x0x7fe474a68ea0)

Class QState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QState::QPrivateSignal (0x0x7fe4747e0d20) 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 (0x0x7fe474a68f08) 0
    vptr=((& QState::_ZTV6QState) + 16u)
  QAbstractState (0x0x7fe474a68f70) 0
      primary-for QState (0x0x7fe474a68f08)
    QObject (0x0x7fe4747e0cc0) 0
        primary-for QAbstractState (0x0x7fe474a68f70)

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

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

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 (0x0x7fe474a68410) 0
    vptr=((& QStateMachine::_ZTV13QStateMachine) + 16u)
  QState (0x0x7fe474a68478) 0
      primary-for QStateMachine (0x0x7fe474a68410)
    QAbstractState (0x0x7fe474a684e0) 0
        primary-for QState (0x0x7fe474a68478)
      QObject (0x0x7fe4747e0de0) 0
          primary-for QAbstractState (0x0x7fe474a684e0)

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

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

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

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

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

Class QMutex
   size=8 align=8
   base size=8 base align=8
QMutex (0x0x7fe4745072d8) 0
  QBasicMutex (0x0x7fe47452b300) 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Class QXmlStreamAttributes
   size=8 align=8
   base size=8 base align=8
QXmlStreamAttributes (0x0x7fe473fddb60) 0
  QVector<QXmlStreamAttribute> (0x0x7fe47407b4e0) 0

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

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

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

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

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

Class QNetworkRequest
   size=8 align=8
   base size=8 base align=8
QNetworkRequest (0x0x7fe47407bb40) 0

Class QNetworkCacheMetaData
   size=8 align=8
   base size=8 base align=8
QNetworkCacheMetaData (0x0x7fe47407bde0) 0

Class QAbstractNetworkCache::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractNetworkCache::QPrivateSignal (0x0x7fe473d45000) 0 empty

Vtable for QAbstractNetworkCache
QAbstractNetworkCache::_ZTV21QAbstractNetworkCache: 22u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI21QAbstractNetworkCache)
16    (int (*)(...))QAbstractNetworkCache::metaObject
24    (int (*)(...))QAbstractNetworkCache::qt_metacast
32    (int (*)(...))QAbstractNetworkCache::qt_metacall
40    (int (*)(...))QAbstractNetworkCache::~QAbstractNetworkCache
48    (int (*)(...))QAbstractNetworkCache::~QAbstractNetworkCache
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

Class QAbstractNetworkCache
   size=16 align=8
   base size=16 base align=8
QAbstractNetworkCache (0x0x7fe473fdddd0) 0
    vptr=((& QAbstractNetworkCache::_ZTV21QAbstractNetworkCache) + 16u)
  QObject (0x0x7fe47407bf60) 0
      primary-for QAbstractNetworkCache (0x0x7fe473fdddd0)

Class QHttpPart
   size=8 align=8
   base size=8 base align=8
QHttpPart (0x0x7fe473d45060) 0

Class QHttpMultiPart::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QHttpMultiPart::QPrivateSignal (0x0x7fe473d45240) 0 empty

Vtable for QHttpMultiPart
QHttpMultiPart::_ZTV14QHttpMultiPart: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QHttpMultiPart)
16    (int (*)(...))QHttpMultiPart::metaObject
24    (int (*)(...))QHttpMultiPart::qt_metacast
32    (int (*)(...))QHttpMultiPart::qt_metacall
40    (int (*)(...))QHttpMultiPart::~QHttpMultiPart
48    (int (*)(...))QHttpMultiPart::~QHttpMultiPart
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 QHttpMultiPart
   size=16 align=8
   base size=16 base align=8
QHttpMultiPart (0x0x7fe473fddea0) 0
    vptr=((& QHttpMultiPart::_ZTV14QHttpMultiPart) + 16u)
  QObject (0x0x7fe473d451e0) 0
      primary-for QHttpMultiPart (0x0x7fe473fddea0)

Class QAbstractSocket::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractSocket::QPrivateSignal (0x0x7fe473d45300) 0 empty

Vtable for QAbstractSocket
QAbstractSocket::_ZTV15QAbstractSocket: 41u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QAbstractSocket)
16    (int (*)(...))QAbstractSocket::metaObject
24    (int (*)(...))QAbstractSocket::qt_metacast
32    (int (*)(...))QAbstractSocket::qt_metacall
40    (int (*)(...))QAbstractSocket::~QAbstractSocket
48    (int (*)(...))QAbstractSocket::~QAbstractSocket
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 (*)(...))QAbstractSocket::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QAbstractSocket::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QAbstractSocket::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QAbstractSocket::bytesAvailable
184   (int (*)(...))QAbstractSocket::bytesToWrite
192   (int (*)(...))QAbstractSocket::canReadLine
200   (int (*)(...))QAbstractSocket::waitForReadyRead
208   (int (*)(...))QAbstractSocket::waitForBytesWritten
216   (int (*)(...))QAbstractSocket::readData
224   (int (*)(...))QAbstractSocket::readLineData
232   (int (*)(...))QAbstractSocket::writeData
240   (int (*)(...))QAbstractSocket::resume
248   (int (*)(...))QAbstractSocket::connectToHost
256   (int (*)(...))QAbstractSocket::connectToHost
264   (int (*)(...))QAbstractSocket::disconnectFromHost
272   (int (*)(...))QAbstractSocket::setReadBufferSize
280   (int (*)(...))QAbstractSocket::socketDescriptor
288   (int (*)(...))QAbstractSocket::setSocketDescriptor
296   (int (*)(...))QAbstractSocket::setSocketOption
304   (int (*)(...))QAbstractSocket::socketOption
312   (int (*)(...))QAbstractSocket::waitForConnected
320   (int (*)(...))QAbstractSocket::waitForDisconnected

Class QAbstractSocket
   size=16 align=8
   base size=16 base align=8
QAbstractSocket (0x0x7fe473fddf08) 0
    vptr=((& QAbstractSocket::_ZTV15QAbstractSocket) + 16u)
  QIODevice (0x0x7fe473fddf70) 0
      primary-for QAbstractSocket (0x0x7fe473fddf08)
    QObject (0x0x7fe473d452a0) 0
        primary-for QIODevice (0x0x7fe473fddf70)

Class QTcpSocket::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTcpSocket::QPrivateSignal (0x0x7fe473d45780) 0 empty

Vtable for QTcpSocket
QTcpSocket::_ZTV10QTcpSocket: 41u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QTcpSocket)
16    (int (*)(...))QTcpSocket::metaObject
24    (int (*)(...))QTcpSocket::qt_metacast
32    (int (*)(...))QTcpSocket::qt_metacall
40    (int (*)(...))QTcpSocket::~QTcpSocket
48    (int (*)(...))QTcpSocket::~QTcpSocket
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 (*)(...))QAbstractSocket::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QAbstractSocket::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QAbstractSocket::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QAbstractSocket::bytesAvailable
184   (int (*)(...))QAbstractSocket::bytesToWrite
192   (int (*)(...))QAbstractSocket::canReadLine
200   (int (*)(...))QAbstractSocket::waitForReadyRead
208   (int (*)(...))QAbstractSocket::waitForBytesWritten
216   (int (*)(...))QAbstractSocket::readData
224   (int (*)(...))QAbstractSocket::readLineData
232   (int (*)(...))QAbstractSocket::writeData
240   (int (*)(...))QAbstractSocket::resume
248   (int (*)(...))QAbstractSocket::connectToHost
256   (int (*)(...))QAbstractSocket::connectToHost
264   (int (*)(...))QAbstractSocket::disconnectFromHost
272   (int (*)(...))QAbstractSocket::setReadBufferSize
280   (int (*)(...))QAbstractSocket::socketDescriptor
288   (int (*)(...))QAbstractSocket::setSocketDescriptor
296   (int (*)(...))QAbstractSocket::setSocketOption
304   (int (*)(...))QAbstractSocket::socketOption
312   (int (*)(...))QAbstractSocket::waitForConnected
320   (int (*)(...))QAbstractSocket::waitForDisconnected

Class QTcpSocket
   size=16 align=8
   base size=16 base align=8
QTcpSocket (0x0x7fe473da61a0) 0
    vptr=((& QTcpSocket::_ZTV10QTcpSocket) + 16u)
  QAbstractSocket (0x0x7fe473da6208) 0
      primary-for QTcpSocket (0x0x7fe473da61a0)
    QIODevice (0x0x7fe473da6270) 0
        primary-for QAbstractSocket (0x0x7fe473da6208)
      QObject (0x0x7fe473d45720) 0
          primary-for QIODevice (0x0x7fe473da6270)

Class QSslCertificate
   size=8 align=8
   base size=8 base align=8
QSslCertificate (0x0x7fe473d458a0) 0

Class QSslError
   size=8 align=8
   base size=8 base align=8
QSslError (0x0x7fe473d45b40) 0

Class QSslSocket::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSslSocket::QPrivateSignal (0x0x7fe473a95000) 0 empty

Vtable for QSslSocket
QSslSocket::_ZTV10QSslSocket: 41u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QSslSocket)
16    (int (*)(...))QSslSocket::metaObject
24    (int (*)(...))QSslSocket::qt_metacast
32    (int (*)(...))QSslSocket::qt_metacall
40    (int (*)(...))QSslSocket::~QSslSocket
48    (int (*)(...))QSslSocket::~QSslSocket
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 (*)(...))QAbstractSocket::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QSslSocket::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QSslSocket::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QSslSocket::bytesAvailable
184   (int (*)(...))QSslSocket::bytesToWrite
192   (int (*)(...))QSslSocket::canReadLine
200   (int (*)(...))QSslSocket::waitForReadyRead
208   (int (*)(...))QSslSocket::waitForBytesWritten
216   (int (*)(...))QSslSocket::readData
224   (int (*)(...))QAbstractSocket::readLineData
232   (int (*)(...))QSslSocket::writeData
240   (int (*)(...))QSslSocket::resume
248   (int (*)(...))QSslSocket::connectToHost
256   (int (*)(...))QAbstractSocket::connectToHost
264   (int (*)(...))QSslSocket::disconnectFromHost
272   (int (*)(...))QSslSocket::setReadBufferSize
280   (int (*)(...))QAbstractSocket::socketDescriptor
288   (int (*)(...))QSslSocket::setSocketDescriptor
296   (int (*)(...))QSslSocket::setSocketOption
304   (int (*)(...))QSslSocket::socketOption
312   (int (*)(...))QSslSocket::waitForConnected
320   (int (*)(...))QSslSocket::waitForDisconnected

Class QSslSocket
   size=16 align=8
   base size=16 base align=8
QSslSocket (0x0x7fe473da64e0) 0
    vptr=((& QSslSocket::_ZTV10QSslSocket) + 16u)
  QTcpSocket (0x0x7fe473da6548) 0
      primary-for QSslSocket (0x0x7fe473da64e0)
    QAbstractSocket (0x0x7fe473da65b0) 0
        primary-for QTcpSocket (0x0x7fe473da6548)
      QIODevice (0x0x7fe473da6618) 0
          primary-for QAbstractSocket (0x0x7fe473da65b0)
        QObject (0x0x7fe473d45f60) 0
            primary-for QIODevice (0x0x7fe473da6618)

Class QSslConfiguration
   size=8 align=8
   base size=8 base align=8
QSslConfiguration (0x0x7fe473a95060) 0

Class QNetworkAccessManager::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkAccessManager::QPrivateSignal (0x0x7fe473a95360) 0 empty

Vtable for QNetworkAccessManager
QNetworkAccessManager::_ZTV21QNetworkAccessManager: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI21QNetworkAccessManager)
16    (int (*)(...))QNetworkAccessManager::metaObject
24    (int (*)(...))QNetworkAccessManager::qt_metacast
32    (int (*)(...))QNetworkAccessManager::qt_metacall
40    (int (*)(...))QNetworkAccessManager::~QNetworkAccessManager
48    (int (*)(...))QNetworkAccessManager::~QNetworkAccessManager
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 (*)(...))QNetworkAccessManager::createRequest

Class QNetworkAccessManager
   size=16 align=8
   base size=16 base align=8
QNetworkAccessManager (0x0x7fe473da66e8) 0
    vptr=((& QNetworkAccessManager::_ZTV21QNetworkAccessManager) + 16u)
  QObject (0x0x7fe473a95300) 0
      primary-for QNetworkAccessManager (0x0x7fe473da66e8)

Class QNetworkCookie
   size=8 align=8
   base size=8 base align=8
QNetworkCookie (0x0x7fe473a953c0) 0

Class QNetworkCookieJar::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkCookieJar::QPrivateSignal (0x0x7fe473a956c0) 0 empty

Vtable for QNetworkCookieJar
QNetworkCookieJar::_ZTV17QNetworkCookieJar: 20u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QNetworkCookieJar)
16    (int (*)(...))QNetworkCookieJar::metaObject
24    (int (*)(...))QNetworkCookieJar::qt_metacast
32    (int (*)(...))QNetworkCookieJar::qt_metacall
40    (int (*)(...))QNetworkCookieJar::~QNetworkCookieJar
48    (int (*)(...))QNetworkCookieJar::~QNetworkCookieJar
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 (*)(...))QNetworkCookieJar::cookiesForUrl
120   (int (*)(...))QNetworkCookieJar::setCookiesFromUrl
128   (int (*)(...))QNetworkCookieJar::insertCookie
136   (int (*)(...))QNetworkCookieJar::updateCookie
144   (int (*)(...))QNetworkCookieJar::deleteCookie
152   (int (*)(...))QNetworkCookieJar::validateCookie

Class QNetworkCookieJar
   size=16 align=8
   base size=16 base align=8
QNetworkCookieJar (0x0x7fe473da67b8) 0
    vptr=((& QNetworkCookieJar::_ZTV17QNetworkCookieJar) + 16u)
  QObject (0x0x7fe473a95660) 0
      primary-for QNetworkCookieJar (0x0x7fe473da67b8)

Class QNetworkDiskCache::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkDiskCache::QPrivateSignal (0x0x7fe473a95780) 0 empty

Vtable for QNetworkDiskCache
QNetworkDiskCache::_ZTV17QNetworkDiskCache: 23u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QNetworkDiskCache)
16    (int (*)(...))QNetworkDiskCache::metaObject
24    (int (*)(...))QNetworkDiskCache::qt_metacast
32    (int (*)(...))QNetworkDiskCache::qt_metacall
40    (int (*)(...))QNetworkDiskCache::~QNetworkDiskCache
48    (int (*)(...))QNetworkDiskCache::~QNetworkDiskCache
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 (*)(...))QNetworkDiskCache::metaData
120   (int (*)(...))QNetworkDiskCache::updateMetaData
128   (int (*)(...))QNetworkDiskCache::data
136   (int (*)(...))QNetworkDiskCache::remove
144   (int (*)(...))QNetworkDiskCache::cacheSize
152   (int (*)(...))QNetworkDiskCache::prepare
160   (int (*)(...))QNetworkDiskCache::insert
168   (int (*)(...))QNetworkDiskCache::clear
176   (int (*)(...))QNetworkDiskCache::expire

Class QNetworkDiskCache
   size=16 align=8
   base size=16 base align=8
QNetworkDiskCache (0x0x7fe473da6820) 0
    vptr=((& QNetworkDiskCache::_ZTV17QNetworkDiskCache) + 16u)
  QAbstractNetworkCache (0x0x7fe473da6888) 0
      primary-for QNetworkDiskCache (0x0x7fe473da6820)
    QObject (0x0x7fe473a95720) 0
        primary-for QAbstractNetworkCache (0x0x7fe473da6888)

Class QNetworkReply::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkReply::QPrivateSignal (0x0x7fe473a95840) 0 empty

Vtable for QNetworkReply
QNetworkReply::_ZTV13QNetworkReply: 36u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QNetworkReply)
16    (int (*)(...))QNetworkReply::metaObject
24    (int (*)(...))QNetworkReply::qt_metacast
32    (int (*)(...))QNetworkReply::qt_metacall
40    (int (*)(...))QNetworkReply::~QNetworkReply
48    (int (*)(...))QNetworkReply::~QNetworkReply
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 (*)(...))QNetworkReply::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QNetworkReply::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 (*)(...))QNetworkReply::writeData
240   (int (*)(...))QNetworkReply::setReadBufferSize
248   (int (*)(...))__cxa_pure_virtual
256   (int (*)(...))QNetworkReply::ignoreSslErrors
264   (int (*)(...))QNetworkReply::sslConfigurationImplementation
272   (int (*)(...))QNetworkReply::setSslConfigurationImplementation
280   (int (*)(...))QNetworkReply::ignoreSslErrorsImplementation

Class QNetworkReply
   size=16 align=8
   base size=16 base align=8
QNetworkReply (0x0x7fe473da68f0) 0
    vptr=((& QNetworkReply::_ZTV13QNetworkReply) + 16u)
  QIODevice (0x0x7fe473da6958) 0
      primary-for QNetworkReply (0x0x7fe473da68f0)
    QObject (0x0x7fe473a957e0) 0
        primary-for QIODevice (0x0x7fe473da6958)

Class QNetworkConfiguration
   size=8 align=8
   base size=8 base align=8
QNetworkConfiguration (0x0x7fe473a959c0) 0

Class QNetworkConfigurationManager::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkConfigurationManager::QPrivateSignal (0x0x7fe473a95cc0) 0 empty

Vtable for QNetworkConfigurationManager
QNetworkConfigurationManager::_ZTV28QNetworkConfigurationManager: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI28QNetworkConfigurationManager)
16    (int (*)(...))QNetworkConfigurationManager::metaObject
24    (int (*)(...))QNetworkConfigurationManager::qt_metacast
32    (int (*)(...))QNetworkConfigurationManager::qt_metacall
40    (int (*)(...))QNetworkConfigurationManager::~QNetworkConfigurationManager
48    (int (*)(...))QNetworkConfigurationManager::~QNetworkConfigurationManager
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 QNetworkConfigurationManager
   size=16 align=8
   base size=16 base align=8
QNetworkConfigurationManager (0x0x7fe473da6a28) 0
    vptr=((& QNetworkConfigurationManager::_ZTV28QNetworkConfigurationManager) + 16u)
  QObject (0x0x7fe473a95c60) 0
      primary-for QNetworkConfigurationManager (0x0x7fe473da6a28)

Class QIPv6Address
   size=16 align=1
   base size=16 base align=1
QIPv6Address (0x0x7fe473a95ea0) 0

Class QHostAddress
   size=8 align=8
   base size=8 base align=8
QHostAddress (0x0x7fe473a95f00) 0

Class QNetworkAddressEntry
   size=8 align=8
   base size=8 base align=8
QNetworkAddressEntry (0x0x7fe473be5060) 0

Class QNetworkInterface
   size=8 align=8
   base size=8 base align=8
QNetworkInterface (0x0x7fe473be5240) 0

Class QNetworkSession::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkSession::QPrivateSignal (0x0x7fe473be5540) 0 empty

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

Class QNetworkSession
   size=24 align=8
   base size=24 base align=8
QNetworkSession (0x0x7fe473da6dd0) 0
    vptr=((& QNetworkSession::_ZTV15QNetworkSession) + 16u)
  QObject (0x0x7fe473be54e0) 0
      primary-for QNetworkSession (0x0x7fe473da6dd0)

Class QAuthenticator
   size=8 align=8
   base size=8 base align=8
QAuthenticator (0x0x7fe473be5a20) 0

Class QDnsDomainNameRecord
   size=8 align=8
   base size=8 base align=8
QDnsDomainNameRecord (0x0x7fe473be5a80) 0

Class QDnsHostAddressRecord
   size=8 align=8
   base size=8 base align=8
QDnsHostAddressRecord (0x0x7fe473be5c00) 0

Class QDnsMailExchangeRecord
   size=8 align=8
   base size=8 base align=8
QDnsMailExchangeRecord (0x0x7fe473be5d80) 0

Class QDnsServiceRecord
   size=8 align=8
   base size=8 base align=8
QDnsServiceRecord (0x0x7fe473be5f00) 0

Class QDnsTextRecord
   size=8 align=8
   base size=8 base align=8
QDnsTextRecord (0x0x7fe4738da0c0) 0

Class QDnsLookup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QDnsLookup::QPrivateSignal (0x0x7fe4738da2a0) 0 empty

Vtable for QDnsLookup
QDnsLookup::_ZTV10QDnsLookup: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QDnsLookup)
16    (int (*)(...))QDnsLookup::metaObject
24    (int (*)(...))QDnsLookup::qt_metacast
32    (int (*)(...))QDnsLookup::qt_metacall
40    (int (*)(...))QDnsLookup::~QDnsLookup
48    (int (*)(...))QDnsLookup::~QDnsLookup
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 QDnsLookup
   size=16 align=8
   base size=16 base align=8
QDnsLookup (0x0x7fe4738c1138) 0
    vptr=((& QDnsLookup::_ZTV10QDnsLookup) + 16u)
  QObject (0x0x7fe4738da240) 0
      primary-for QDnsLookup (0x0x7fe4738c1138)

Class QHostInfo
   size=8 align=8
   base size=8 base align=8
QHostInfo (0x0x7fe4738da300) 0

Class QNetworkProxyQuery
   size=8 align=8
   base size=8 base align=8
QNetworkProxyQuery (0x0x7fe4738da4e0) 0

Class QNetworkProxy
   size=8 align=8
   base size=8 base align=8
QNetworkProxy (0x0x7fe4738da660) 0

Vtable for QNetworkProxyFactory
QNetworkProxyFactory::_ZTV20QNetworkProxyFactory: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QNetworkProxyFactory)
16    (int (*)(...))QNetworkProxyFactory::~QNetworkProxyFactory
24    (int (*)(...))QNetworkProxyFactory::~QNetworkProxyFactory
32    (int (*)(...))__cxa_pure_virtual

Class QNetworkProxyFactory
   size=8 align=8
   base size=8 base align=8
QNetworkProxyFactory (0x0x7fe4738da8a0) 0 nearly-empty
    vptr=((& QNetworkProxyFactory::_ZTV20QNetworkProxyFactory) + 16u)

Class QLocalServer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QLocalServer::QPrivateSignal (0x0x7fe4738daa80) 0 empty

Vtable for QLocalServer
QLocalServer::_ZTV12QLocalServer: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QLocalServer)
16    (int (*)(...))QLocalServer::metaObject
24    (int (*)(...))QLocalServer::qt_metacast
32    (int (*)(...))QLocalServer::qt_metacall
40    (int (*)(...))QLocalServer::~QLocalServer
48    (int (*)(...))QLocalServer::~QLocalServer
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 (*)(...))QLocalServer::hasPendingConnections
120   (int (*)(...))QLocalServer::nextPendingConnection
128   (int (*)(...))QLocalServer::incomingConnection

Class QLocalServer
   size=16 align=8
   base size=16 base align=8
QLocalServer (0x0x7fe4738c1340) 0
    vptr=((& QLocalServer::_ZTV12QLocalServer) + 16u)
  QObject (0x0x7fe4738daa20) 0
      primary-for QLocalServer (0x0x7fe4738c1340)

Class QLocalSocket::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QLocalSocket::QPrivateSignal (0x0x7fe4738dac00) 0 empty

Vtable for QLocalSocket
QLocalSocket::_ZTV12QLocalSocket: 30u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QLocalSocket)
16    (int (*)(...))QLocalSocket::metaObject
24    (int (*)(...))QLocalSocket::qt_metacast
32    (int (*)(...))QLocalSocket::qt_metacall
40    (int (*)(...))QLocalSocket::~QLocalSocket
48    (int (*)(...))QLocalSocket::~QLocalSocket
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 (*)(...))QLocalSocket::isSequential
120   (int (*)(...))QLocalSocket::open
128   (int (*)(...))QLocalSocket::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QIODevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QLocalSocket::bytesAvailable
184   (int (*)(...))QLocalSocket::bytesToWrite
192   (int (*)(...))QLocalSocket::canReadLine
200   (int (*)(...))QLocalSocket::waitForReadyRead
208   (int (*)(...))QLocalSocket::waitForBytesWritten
216   (int (*)(...))QLocalSocket::readData
224   (int (*)(...))QIODevice::readLineData
232   (int (*)(...))QLocalSocket::writeData

Class QLocalSocket
   size=16 align=8
   base size=16 base align=8
QLocalSocket (0x0x7fe4738c14e0) 0
    vptr=((& QLocalSocket::_ZTV12QLocalSocket) + 16u)
  QIODevice (0x0x7fe4738c1548) 0
      primary-for QLocalSocket (0x0x7fe4738c14e0)
    QObject (0x0x7fe4738daba0) 0
        primary-for QIODevice (0x0x7fe4738c1548)

Class QTcpServer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTcpServer::QPrivateSignal (0x0x7fe4738dacc0) 0 empty

Vtable for QTcpServer
QTcpServer::_ZTV10QTcpServer: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QTcpServer)
16    (int (*)(...))QTcpServer::metaObject
24    (int (*)(...))QTcpServer::qt_metacast
32    (int (*)(...))QTcpServer::qt_metacall
40    (int (*)(...))QTcpServer::~QTcpServer
48    (int (*)(...))QTcpServer::~QTcpServer
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 (*)(...))QTcpServer::hasPendingConnections
120   (int (*)(...))QTcpServer::nextPendingConnection
128   (int (*)(...))QTcpServer::incomingConnection

Class QTcpServer
   size=16 align=8
   base size=16 base align=8
QTcpServer (0x0x7fe4738c15b0) 0
    vptr=((& QTcpServer::_ZTV10QTcpServer) + 16u)
  QObject (0x0x7fe4738dac60) 0
      primary-for QTcpServer (0x0x7fe4738c15b0)

Class QUdpSocket::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QUdpSocket::QPrivateSignal (0x0x7fe4738dad80) 0 empty

Vtable for QUdpSocket
QUdpSocket::_ZTV10QUdpSocket: 41u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QUdpSocket)
16    (int (*)(...))QUdpSocket::metaObject
24    (int (*)(...))QUdpSocket::qt_metacast
32    (int (*)(...))QUdpSocket::qt_metacall
40    (int (*)(...))QUdpSocket::~QUdpSocket
48    (int (*)(...))QUdpSocket::~QUdpSocket
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 (*)(...))QAbstractSocket::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QAbstractSocket::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QAbstractSocket::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QAbstractSocket::bytesAvailable
184   (int (*)(...))QAbstractSocket::bytesToWrite
192   (int (*)(...))QAbstractSocket::canReadLine
200   (int (*)(...))QAbstractSocket::waitForReadyRead
208   (int (*)(...))QAbstractSocket::waitForBytesWritten
216   (int (*)(...))QAbstractSocket::readData
224   (int (*)(...))QAbstractSocket::readLineData
232   (int (*)(...))QAbstractSocket::writeData
240   (int (*)(...))QAbstractSocket::resume
248   (int (*)(...))QAbstractSocket::connectToHost
256   (int (*)(...))QAbstractSocket::connectToHost
264   (int (*)(...))QAbstractSocket::disconnectFromHost
272   (int (*)(...))QAbstractSocket::setReadBufferSize
280   (int (*)(...))QAbstractSocket::socketDescriptor
288   (int (*)(...))QAbstractSocket::setSocketDescriptor
296   (int (*)(...))QAbstractSocket::setSocketOption
304   (int (*)(...))QAbstractSocket::socketOption
312   (int (*)(...))QAbstractSocket::waitForConnected
320   (int (*)(...))QAbstractSocket::waitForDisconnected

Class QUdpSocket
   size=16 align=8
   base size=16 base align=8
QUdpSocket (0x0x7fe4738c1618) 0
    vptr=((& QUdpSocket::_ZTV10QUdpSocket) + 16u)
  QAbstractSocket (0x0x7fe4738c1680) 0
      primary-for QUdpSocket (0x0x7fe4738c1618)
    QIODevice (0x0x7fe4738c16e8) 0
        primary-for QAbstractSocket (0x0x7fe4738c1680)
      QObject (0x0x7fe4738dad20) 0
          primary-for QIODevice (0x0x7fe4738c16e8)

Class QSslCertificateExtension
   size=8 align=8
   base size=8 base align=8
QSslCertificateExtension (0x0x7fe4738dade0) 0

Class QSslCipher
   size=8 align=8
   base size=8 base align=8
QSslCipher (0x0x7fe4738daf60) 0

Class QSslKey
   size=8 align=8
   base size=8 base align=8
QSslKey (0x0x7fe473a2b180) 0

