Class std::__failure_type
   size=1 align=1
   base size=0 base align=1
std::__failure_type (0x0x7fdf11780b40) 0 empty

Class std::__do_is_destructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_destructible_impl (0x0x7fdf10c75300) 0 empty

Class std::__do_is_nt_destructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_nt_destructible_impl (0x0x7fdf10c75540) 0 empty

Class std::__do_is_default_constructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_default_constructible_impl (0x0x7fdf10c75780) 0 empty

Class std::__do_is_static_castable_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_static_castable_impl (0x0x7fdf10c759c0) 0 empty

Class std::__do_is_direct_constructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_direct_constructible_impl (0x0x7fdf10c75b40) 0 empty

Class std::__do_is_nary_constructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_nary_constructible_impl (0x0x7fdf10c75f00) 0 empty

Class std::__do_is_implicitly_default_constructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_implicitly_default_constructible_impl (0x0x7fdf10ce2060) 0 empty

Class std::__do_common_type_impl
   size=1 align=1
   base size=0 base align=1
std::__do_common_type_impl (0x0x7fdf10d35720) 0 empty

Class std::__do_member_type_wrapper
   size=1 align=1
   base size=0 base align=1
std::__do_member_type_wrapper (0x0x7fdf10d357e0) 0 empty

Class std::__invoke_memfun_ref
   size=1 align=1
   base size=0 base align=1
std::__invoke_memfun_ref (0x0x7fdf10d35ba0) 0 empty

Class std::__invoke_memfun_deref
   size=1 align=1
   base size=0 base align=1
std::__invoke_memfun_deref (0x0x7fdf10d35c00) 0 empty

Class std::__invoke_memobj_ref
   size=1 align=1
   base size=0 base align=1
std::__invoke_memobj_ref (0x0x7fdf10d35c60) 0 empty

Class std::__invoke_memobj_deref
   size=1 align=1
   base size=0 base align=1
std::__invoke_memobj_deref (0x0x7fdf10d35cc0) 0 empty

Class std::__invoke_other
   size=1 align=1
   base size=0 base align=1
std::__invoke_other (0x0x7fdf10d35d20) 0 empty

Class std::__result_of_memfun_ref_impl
   size=1 align=1
   base size=0 base align=1
std::__result_of_memfun_ref_impl (0x0x7fdf10d35de0) 0 empty

Class std::__result_of_memfun_deref_impl
   size=1 align=1
   base size=0 base align=1
std::__result_of_memfun_deref_impl (0x0x7fdf10d35ea0) 0 empty

Class std::__result_of_memobj_ref_impl
   size=1 align=1
   base size=0 base align=1
std::__result_of_memobj_ref_impl (0x0x7fdf10d35f60) 0 empty

Class std::__result_of_memobj_deref_impl
   size=1 align=1
   base size=0 base align=1
std::__result_of_memobj_deref_impl (0x0x7fdf10d69060) 0 empty

Class std::__result_of_other_impl
   size=1 align=1
   base size=0 base align=1
std::__result_of_other_impl (0x0x7fdf10d693c0) 0 empty

Class std::__swappable_details::__do_is_swappable_impl
   size=1 align=1
   base size=0 base align=1
std::__swappable_details::__do_is_swappable_impl (0x0x7fdf10d69720) 0 empty

Class std::__swappable_details::__do_is_nothrow_swappable_impl
   size=1 align=1
   base size=0 base align=1
std::__swappable_details::__do_is_nothrow_swappable_impl (0x0x7fdf10d69780) 0 empty

Class std::__nonesuch
   size=1 align=1
   base size=0 base align=1
std::__nonesuch (0x0x7fdf10d69d20) 0 empty

Class std::piecewise_construct_t
   size=1 align=1
   base size=0 base align=1
std::piecewise_construct_t (0x0x7fdf10db23c0) 0 empty

Class std::__nonesuch_no_braces
   size=1 align=1
   base size=1 base align=1
std::__nonesuch_no_braces (0x0x7fdf10cf8f70) 0 empty
  std::__nonesuch (0x0x7fdf10db28a0) 0 empty

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

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

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

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

Class std::forward_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::forward_iterator_tag (0x0x7fdf10dd9478) 0 empty
  std::input_iterator_tag (0x0x7fdf10a93060) 0 empty

Class std::bidirectional_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::bidirectional_iterator_tag (0x0x7fdf10dd94e0) 0 empty
  std::forward_iterator_tag (0x0x7fdf10dd9548) 0 empty
    std::input_iterator_tag (0x0x7fdf10a930c0) 0 empty

Class std::random_access_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::random_access_iterator_tag (0x0x7fdf10dd95b0) 0 empty
  std::bidirectional_iterator_tag (0x0x7fdf10dd9618) 0 empty
    std::forward_iterator_tag (0x0x7fdf10dd9680) 0 empty
      std::input_iterator_tag (0x0x7fdf10a93120) 0 empty

Class __gnu_cxx::__ops::_Iter_less_iter
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__ops::_Iter_less_iter (0x0x7fdf10b1fc00) 0 empty

Class __gnu_cxx::__ops::_Iter_less_val
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__ops::_Iter_less_val (0x0x7fdf10b1fd20) 0 empty

Class __gnu_cxx::__ops::_Val_less_iter
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__ops::_Val_less_iter (0x0x7fdf10b43060) 0 empty

Class __gnu_cxx::__ops::_Iter_equal_to_iter
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__ops::_Iter_equal_to_iter (0x0x7fdf10b43360) 0 empty

Class __gnu_cxx::__ops::_Iter_equal_to_val
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__ops::_Iter_equal_to_val (0x0x7fdf10b43480) 0 empty

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

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

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

Class __pthread_rwlock_arch_t
   size=56 align=8
   base size=56 base align=8
__pthread_rwlock_arch_t (0x0x7fdf10bcdba0) 0

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

Class __pthread_mutex_s
   size=40 align=8
   base size=40 base align=8
__pthread_mutex_s (0x0x7fdf10bcdc60) 0

Class __pthread_cond_s
   size=48 align=8
   base size=48 base align=8
__pthread_cond_s (0x0x7fdf10bcdcc0) 0

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

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

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

Vtable for std::exception
std::exception::_ZTVSt9exception: 5 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 (0x0x7fdf108ca060) 0 nearly-empty
    vptr=((& std::exception::_ZTVSt9exception) + 16)

Vtable for std::bad_exception
std::bad_exception::_ZTVSt13bad_exception: 5 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 (0x0x7fdf10dd99c0) 0 nearly-empty
    vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 16)
  std::exception (0x0x7fdf108ca240) 0 nearly-empty
      primary-for std::bad_exception (0x0x7fdf10dd99c0)

Vtable for std::type_info
std::type_info::_ZTVSt9type_info: 8 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt9type_info)
16    (int (*)(...))std::type_info::~type_info
24    (int (*)(...))std::type_info::~type_info
32    (int (*)(...))std::type_info::__is_pointer_p
40    (int (*)(...))std::type_info::__is_function_p
48    (int (*)(...))std::type_info::__do_catch
56    (int (*)(...))std::type_info::__do_upcast

Class std::type_info
   size=16 align=8
   base size=16 base align=8
std::type_info (0x0x7fdf108ca420) 0
    vptr=((& std::type_info::_ZTVSt9type_info) + 16)

Vtable for std::bad_cast
std::bad_cast::_ZTVSt8bad_cast: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt8bad_cast)
16    (int (*)(...))std::bad_cast::~bad_cast
24    (int (*)(...))std::bad_cast::~bad_cast
32    (int (*)(...))std::bad_cast::what

Class std::bad_cast
   size=8 align=8
   base size=8 base align=8
std::bad_cast (0x0x7fdf10dd9a28) 0 nearly-empty
    vptr=((& std::bad_cast::_ZTVSt8bad_cast) + 16)
  std::exception (0x0x7fdf108ca7e0) 0 nearly-empty
      primary-for std::bad_cast (0x0x7fdf10dd9a28)

Vtable for std::bad_typeid
std::bad_typeid::_ZTVSt10bad_typeid: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt10bad_typeid)
16    (int (*)(...))std::bad_typeid::~bad_typeid
24    (int (*)(...))std::bad_typeid::~bad_typeid
32    (int (*)(...))std::bad_typeid::what

Class std::bad_typeid
   size=8 align=8
   base size=8 base align=8
std::bad_typeid (0x0x7fdf10dd9a90) 0 nearly-empty
    vptr=((& std::bad_typeid::_ZTVSt10bad_typeid) + 16)
  std::exception (0x0x7fdf108ca9c0) 0 nearly-empty
      primary-for std::bad_typeid (0x0x7fdf10dd9a90)

Class std::__exception_ptr::exception_ptr
   size=8 align=8
   base size=8 base align=8
std::__exception_ptr::exception_ptr (0x0x7fdf108caba0) 0

Vtable for std::nested_exception
std::nested_exception::_ZTVSt16nested_exception: 4 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt16nested_exception)
16    (int (*)(...))std::nested_exception::~nested_exception
24    (int (*)(...))std::nested_exception::~nested_exception

Class std::nested_exception
   size=16 align=8
   base size=16 base align=8
std::nested_exception (0x0x7fdf10900180) 0
    vptr=((& std::nested_exception::_ZTVSt16nested_exception) + 16)

Vtable for std::bad_alloc
std::bad_alloc::_ZTVSt9bad_alloc: 5 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 (0x0x7fdf10dd9af8) 0 nearly-empty
    vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 16)
  std::exception (0x0x7fdf10900840) 0 nearly-empty
      primary-for std::bad_alloc (0x0x7fdf10dd9af8)

Vtable for std::bad_array_new_length
std::bad_array_new_length::_ZTVSt20bad_array_new_length: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt20bad_array_new_length)
16    (int (*)(...))std::bad_array_new_length::~bad_array_new_length
24    (int (*)(...))std::bad_array_new_length::~bad_array_new_length
32    (int (*)(...))std::bad_array_new_length::what

Class std::bad_array_new_length
   size=8 align=8
   base size=8 base align=8
std::bad_array_new_length (0x0x7fdf10dd9b60) 0 nearly-empty
    vptr=((& std::bad_array_new_length::_ZTVSt20bad_array_new_length) + 16)
  std::bad_alloc (0x0x7fdf10dd9bc8) 0 nearly-empty
      primary-for std::bad_array_new_length (0x0x7fdf10dd9b60)
    std::exception (0x0x7fdf10900a20) 0 nearly-empty
        primary-for std::bad_alloc (0x0x7fdf10dd9bc8)

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

Class std::__allocator_traits_base
   size=1 align=1
   base size=0 base align=1
std::__allocator_traits_base (0x0x7fdf10900de0) 0 empty

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

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

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

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

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

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

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

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

Class std::__atomic_flag_base
   size=1 align=1
   base size=1 base align=1
std::__atomic_flag_base (0x0x7fdf10335d80) 0

Class std::atomic_flag
   size=1 align=1
   base size=1 base align=1
std::atomic_flag (0x0x7fdf102dfa28) 0
  std::__atomic_flag_base (0x0x7fdf10335de0) 0

Class QAtomicInt
   size=4 align=4
   base size=4 base align=4
QAtomicInt (0x0x7fdf101b61a0) 0
  QAtomicInteger<int> (0x0x7fdf101b6208) 0
    QBasicAtomicInteger<int> (0x0x7fdf0fe6ad80) 0

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

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

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

Class QGenericReturnArgument
   size=16 align=8
   base size=16 base align=8
QGenericReturnArgument (0x0x7fdf0fcbbd68) 0
  QGenericArgument (0x0x7fdf0fb21060) 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Class std::_Hash_impl
   size=1 align=1
   base size=0 base align=1
std::_Hash_impl (0x0x7fdf0f5a1900) 0 empty

Class std::_Fnv_hash_impl
   size=1 align=1
   base size=0 base align=1
std::_Fnv_hash_impl (0x0x7fdf0f5a1a80) 0 empty

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

Vtable for std::locale::facet
std::locale::facet::_ZTVNSt6locale5facetE: 4 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 (0x0x7fdf0f364000) 0
    vptr=((& std::locale::facet::_ZTVNSt6locale5facetE) + 16)

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

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

Class std::__cow_string
   size=8 align=8
   base size=8 base align=8
std::__cow_string (0x0x7fdf0f3b1480) 0

Vtable for std::logic_error
std::logic_error::_ZTVSt11logic_error: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt11logic_error)
16    (int (*)(...))std::logic_error::~logic_error
24    (int (*)(...))std::logic_error::~logic_error
32    (int (*)(...))std::logic_error::what

Class std::logic_error
   size=16 align=8
   base size=16 base align=8
std::logic_error (0x0x7fdf0f5beea0) 0
    vptr=((& std::logic_error::_ZTVSt11logic_error) + 16)
  std::exception (0x0x7fdf0f3b1540) 0 nearly-empty
      primary-for std::logic_error (0x0x7fdf0f5beea0)

Vtable for std::domain_error
std::domain_error::_ZTVSt12domain_error: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12domain_error)
16    (int (*)(...))std::domain_error::~domain_error
24    (int (*)(...))std::domain_error::~domain_error
32    (int (*)(...))std::logic_error::what

Class std::domain_error
   size=16 align=8
   base size=16 base align=8
std::domain_error (0x0x7fdf0f5bef08) 0
    vptr=((& std::domain_error::_ZTVSt12domain_error) + 16)
  std::logic_error (0x0x7fdf0f5bef70) 0
      primary-for std::domain_error (0x0x7fdf0f5bef08)
    std::exception (0x0x7fdf0f3b15a0) 0 nearly-empty
        primary-for std::logic_error (0x0x7fdf0f5bef70)

Vtable for std::invalid_argument
std::invalid_argument::_ZTVSt16invalid_argument: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt16invalid_argument)
16    (int (*)(...))std::invalid_argument::~invalid_argument
24    (int (*)(...))std::invalid_argument::~invalid_argument
32    (int (*)(...))std::logic_error::what

Class std::invalid_argument
   size=16 align=8
   base size=16 base align=8
std::invalid_argument (0x0x7fdf0f5be3a8) 0
    vptr=((& std::invalid_argument::_ZTVSt16invalid_argument) + 16)
  std::logic_error (0x0x7fdf0f5be410) 0
      primary-for std::invalid_argument (0x0x7fdf0f5be3a8)
    std::exception (0x0x7fdf0f3b1600) 0 nearly-empty
        primary-for std::logic_error (0x0x7fdf0f5be410)

Vtable for std::length_error
std::length_error::_ZTVSt12length_error: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12length_error)
16    (int (*)(...))std::length_error::~length_error
24    (int (*)(...))std::length_error::~length_error
32    (int (*)(...))std::logic_error::what

Class std::length_error
   size=16 align=8
   base size=16 base align=8
std::length_error (0x0x7fdf0f5be750) 0
    vptr=((& std::length_error::_ZTVSt12length_error) + 16)
  std::logic_error (0x0x7fdf0f5be7b8) 0
      primary-for std::length_error (0x0x7fdf0f5be750)
    std::exception (0x0x7fdf0f3b1660) 0 nearly-empty
        primary-for std::logic_error (0x0x7fdf0f5be7b8)

Vtable for std::out_of_range
std::out_of_range::_ZTVSt12out_of_range: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12out_of_range)
16    (int (*)(...))std::out_of_range::~out_of_range
24    (int (*)(...))std::out_of_range::~out_of_range
32    (int (*)(...))std::logic_error::what

Class std::out_of_range
   size=16 align=8
   base size=16 base align=8
std::out_of_range (0x0x7fdf0f3de000) 0
    vptr=((& std::out_of_range::_ZTVSt12out_of_range) + 16)
  std::logic_error (0x0x7fdf0f3de068) 0
      primary-for std::out_of_range (0x0x7fdf0f3de000)
    std::exception (0x0x7fdf0f3b16c0) 0 nearly-empty
        primary-for std::logic_error (0x0x7fdf0f3de068)

Vtable for std::runtime_error
std::runtime_error::_ZTVSt13runtime_error: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt13runtime_error)
16    (int (*)(...))std::runtime_error::~runtime_error
24    (int (*)(...))std::runtime_error::~runtime_error
32    (int (*)(...))std::runtime_error::what

Class std::runtime_error
   size=16 align=8
   base size=16 base align=8
std::runtime_error (0x0x7fdf0f3de0d0) 0
    vptr=((& std::runtime_error::_ZTVSt13runtime_error) + 16)
  std::exception (0x0x7fdf0f3b1720) 0 nearly-empty
      primary-for std::runtime_error (0x0x7fdf0f3de0d0)

Vtable for std::range_error
std::range_error::_ZTVSt11range_error: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt11range_error)
16    (int (*)(...))std::range_error::~range_error
24    (int (*)(...))std::range_error::~range_error
32    (int (*)(...))std::runtime_error::what

Class std::range_error
   size=16 align=8
   base size=16 base align=8
std::range_error (0x0x7fdf0f3de138) 0
    vptr=((& std::range_error::_ZTVSt11range_error) + 16)
  std::runtime_error (0x0x7fdf0f3de1a0) 0
      primary-for std::range_error (0x0x7fdf0f3de138)
    std::exception (0x0x7fdf0f3b1780) 0 nearly-empty
        primary-for std::runtime_error (0x0x7fdf0f3de1a0)

Vtable for std::overflow_error
std::overflow_error::_ZTVSt14overflow_error: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt14overflow_error)
16    (int (*)(...))std::overflow_error::~overflow_error
24    (int (*)(...))std::overflow_error::~overflow_error
32    (int (*)(...))std::runtime_error::what

Class std::overflow_error
   size=16 align=8
   base size=16 base align=8
std::overflow_error (0x0x7fdf0f3de208) 0
    vptr=((& std::overflow_error::_ZTVSt14overflow_error) + 16)
  std::runtime_error (0x0x7fdf0f3de270) 0
      primary-for std::overflow_error (0x0x7fdf0f3de208)
    std::exception (0x0x7fdf0f3b17e0) 0 nearly-empty
        primary-for std::runtime_error (0x0x7fdf0f3de270)

Vtable for std::underflow_error
std::underflow_error::_ZTVSt15underflow_error: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt15underflow_error)
16    (int (*)(...))std::underflow_error::~underflow_error
24    (int (*)(...))std::underflow_error::~underflow_error
32    (int (*)(...))std::runtime_error::what

Class std::underflow_error
   size=16 align=8
   base size=16 base align=8
std::underflow_error (0x0x7fdf0f3de2d8) 0
    vptr=((& std::underflow_error::_ZTVSt15underflow_error) + 16)
  std::runtime_error (0x0x7fdf0f3de340) 0
      primary-for std::underflow_error (0x0x7fdf0f3de2d8)
    std::exception (0x0x7fdf0f3b1840) 0 nearly-empty
        primary-for std::runtime_error (0x0x7fdf0f3de340)

Vtable for std::_V2::error_category
std::_V2::error_category::_ZTVNSt3_V214error_categoryE: 10 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt3_V214error_categoryE)
16    0
24    0
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))std::_V2::error_category::_M_message
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))std::_V2::error_category::default_error_condition
64    (int (*)(...))std::_V2::error_category::equivalent
72    (int (*)(...))std::_V2::error_category::equivalent

Class std::_V2::error_category
   size=8 align=8
   base size=8 base align=8
std::_V2::error_category (0x0x7fdf0f3b19c0) 0 nearly-empty
    vptr=((& std::_V2::error_category::_ZTVNSt3_V214error_categoryE) + 16)

Class std::error_code
   size=16 align=8
   base size=16 base align=8
std::error_code (0x0x7fdf0f3b1d20) 0

Class std::error_condition
   size=16 align=8
   base size=16 base align=8
std::error_condition (0x0x7fdf0f0095a0) 0

Vtable for std::system_error
std::system_error::_ZTVSt12system_error: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12system_error)
16    (int (*)(...))std::system_error::~system_error
24    (int (*)(...))std::system_error::~system_error
32    (int (*)(...))std::runtime_error::what

Class std::system_error
   size=32 align=8
   base size=32 base align=8
std::system_error (0x0x7fdf0f3de750) 0
    vptr=((& std::system_error::_ZTVSt12system_error) + 16)
  std::runtime_error (0x0x7fdf0f3de7b8) 0
      primary-for std::system_error (0x0x7fdf0f3de750)
    std::exception (0x0x7fdf0f035180) 0 nearly-empty
        primary-for std::runtime_error (0x0x7fdf0f3de7b8)

Vtable for std::ios_base::failure
std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt8ios_base7failureB5cxx11E)
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=32 align=8
   base size=32 base align=8
std::ios_base::failure (0x0x7fdf0f3dea28) 0
    vptr=((& std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E) + 16)
  std::system_error (0x0x7fdf0f3dea90) 0
      primary-for std::ios_base::failure (0x0x7fdf0f3dea28)
    std::runtime_error (0x0x7fdf0f3deaf8) 0
        primary-for std::system_error (0x0x7fdf0f3dea90)
      std::exception (0x0x7fdf0f069720) 0 nearly-empty
          primary-for std::runtime_error (0x0x7fdf0f3deaf8)

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

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

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

Vtable for std::ios_base
std::ios_base::_ZTVSt8ios_base: 4 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 (0x0x7fdf0f0696c0) 0
    vptr=((& std::ios_base::_ZTVSt8ios_base) + 16)

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

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

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

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

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

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

Construction vtable for std::basic_istream<char> (0x0x7fdf0edc4208 instance) in std::basic_iostream<char>
std::basic_iostream<char>::_ZTCSd0_Si: 10 entries
0     24
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISi)
24    0
32    0
40    18446744073709551592
48    (int (*)(...))-24
56    (int (*)(...))(& _ZTISi)
64    0
72    0

Construction vtable for std::basic_ostream<char> (0x0x7fdf0edc42d8 instance) in std::basic_iostream<char>
std::basic_iostream<char>::_ZTCSd16_So: 10 entries
0     8
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISo)
24    0
32    0
40    18446744073709551608
48    (int (*)(...))-8
56    (int (*)(...))(& _ZTISo)
64    0
72    0

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

Construction vtable for std::basic_istream<wchar_t> (0x0x7fdf0edc44e0 instance) in std::basic_iostream<wchar_t>
std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E: 10 entries
0     24
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
24    0
32    0
40    18446744073709551592
48    (int (*)(...))-24
56    (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
64    0
72    0

Construction vtable for std::basic_ostream<wchar_t> (0x0x7fdf0ea11068 instance) in std::basic_iostream<wchar_t>
std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E: 10 entries
0     8
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
24    0
32    0
40    18446744073709551608
48    (int (*)(...))-8
56    (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
64    0
72    0

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

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

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

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

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

Class QStringView
   size=16 align=8
   base size=16 base align=8
QStringView (0x0x7fdf0e811420) 0

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

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

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

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

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

Class QtPrivate::QHashCombine
   size=1 align=1
   base size=0 base align=1
QtPrivate::QHashCombine (0x0x7fdf0e2f1900) 0 empty

Class QtPrivate::QHashCombineCommutative
   size=1 align=1
   base size=0 base align=1
QtPrivate::QHashCombineCommutative (0x0x7fdf0e2f19c0) 0 empty

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

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

Class std::_Bit_iterator
   size=16 align=8
   base size=12 base align=8
std::_Bit_iterator (0x0x7fdf0e3044e0) 0
  std::_Bit_iterator_base (0x0x7fdf0e304548) 0
    std::iterator<std::random_access_iterator_tag, bool> (0x0x7fdf0e3d6c60) 0 empty

Class std::_Bit_const_iterator
   size=16 align=8
   base size=12 base align=8
std::_Bit_const_iterator (0x0x7fdf0e3045b0) 0
  std::_Bit_iterator_base (0x0x7fdf0e304618) 0
    std::iterator<std::random_access_iterator_tag, bool> (0x0x7fdf0e009480) 0 empty

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

Class QListData::NotArrayCompatibleLayout
   size=1 align=1
   base size=0 base align=1
QListData::NotArrayCompatibleLayout (0x0x7fdf0dec18a0) 0 empty

Class QListData::NotIndirectLayout
   size=1 align=1
   base size=0 base align=1
QListData::NotIndirectLayout (0x0x7fdf0dec1900) 0 empty

Class QListData::ArrayCompatibleLayout
   size=1 align=1
   base size=1 base align=1
QListData::ArrayCompatibleLayout (0x0x7fdf0de41068) 0 empty
  QListData::NotIndirectLayout (0x0x7fdf0dec1960) 0 empty

Class QListData::InlineWithPaddingLayout
   size=1 align=1
   base size=1 base align=1
QListData::InlineWithPaddingLayout (0x0x7fdf0e0e6ee0) 0 empty
  QListData::NotArrayCompatibleLayout (0x0x7fdf0dec19c0) 0 empty
  QListData::NotIndirectLayout (0x0x7fdf0dec1a20) 0 empty

Class QListData::IndirectLayout
   size=1 align=1
   base size=1 base align=1
QListData::IndirectLayout (0x0x7fdf0de410d0) 0 empty
  QListData::NotArrayCompatibleLayout (0x0x7fdf0dec1a80) 0 empty

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

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

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

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

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

Class QStringList
   size=8 align=8
   base size=8 base align=8
QStringList (0x0x7fdf0dc92dd0) 0
  QList<QString> (0x0x7fdf0dc92e38) 0
    QListSpecialMethods<QString> (0x0x7fdf0dca85a0) 0 empty

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

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

Class std::_Rb_tree_header
   size=40 align=8
   base size=40 base align=8
std::_Rb_tree_header (0x0x7fdf0ddf85a0) 0

Class std::__erased_type
   size=1 align=1
   base size=0 base align=1
std::__erased_type (0x0x7fdf0dbdab40) 0 empty

Class std::allocator_arg_t
   size=1 align=1
   base size=0 base align=1
std::allocator_arg_t (0x0x7fdf0dbdaba0) 0 empty

Class std::__uses_alloc_base
   size=1 align=1
   base size=0 base align=1
std::__uses_alloc_base (0x0x7fdf0dbdad20) 0 empty

Class std::__uses_alloc0::_Sink
   size=1 align=1
   base size=0 base align=1
std::__uses_alloc0::_Sink (0x0x7fdf0dbdade0) 0 empty

Class std::__uses_alloc0
   size=1 align=1
   base size=1 base align=1
std::__uses_alloc0 (0x0x7fdf0dbef1a0) 0
  std::__uses_alloc_base (0x0x7fdf0dbdad80) 0 empty

Class std::_Swallow_assign
   size=1 align=1
   base size=0 base align=1
std::_Swallow_assign (0x0x7fdf0d96b180) 0 empty

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

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

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

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

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

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

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

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

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

Class std::chrono::_V2::system_clock
   size=1 align=1
   base size=0 base align=1
std::chrono::_V2::system_clock (0x0x7fdf0d2b75a0) 0 empty

Class std::chrono::_V2::steady_clock
   size=1 align=1
   base size=0 base align=1
std::chrono::_V2::steady_clock (0x0x7fdf0d3e8060) 0 empty

Vtable for QObjectData
QObjectData::_ZTV11QObjectData: 4 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 (0x0x7fdf0d3e80c0) 0
    vptr=((& QObjectData::_ZTV11QObjectData) + 16)

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

Vtable for QObject
QObject::_ZTV7QObject: 14 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 (0x0x7fdf0d3e8240) 0
    vptr=((& QObject::_ZTV7QObject) + 16)

Vtable for QObjectUserData
QObjectUserData::_ZTV15QObjectUserData: 4 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 (0x0x7fdf0d0b30c0) 0 nearly-empty
    vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 16)

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

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

Vtable for QAbstractAnimation
QAbstractAnimation::_ZTV18QAbstractAnimation: 18 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QAbstractAnimation)
16    (int (*)(...))QAbstractAnimation::metaObject
24    (int (*)(...))QAbstractAnimation::qt_metacast
32    (int (*)(...))QAbstractAnimation::qt_metacall
40    0
48    0
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 (0x0x7fdf0d0ad3a8) 0
    vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 16)
  QObject (0x0x7fdf0d0b3a80) 0
      primary-for QAbstractAnimation (0x0x7fdf0d0ad3a8)

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

Vtable for QAnimationDriver
QAnimationDriver::_ZTV16QAnimationDriver: 18 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 (0x0x7fdf0d0ad410) 0
    vptr=((& QAnimationDriver::_ZTV16QAnimationDriver) + 16)
  QObject (0x0x7fdf0d0b3e40) 0
      primary-for QAnimationDriver (0x0x7fdf0d0ad410)

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

Vtable for QEventLoop
QEventLoop::_ZTV10QEventLoop: 14 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 (0x0x7fdf0d0ad478) 0
    vptr=((& QEventLoop::_ZTV10QEventLoop) + 16)
  QObject (0x0x7fdf0d0f30c0) 0
      primary-for QEventLoop (0x0x7fdf0d0ad478)

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

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

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

Vtable for QAbstractEventDispatcher
QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 28 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
16    (int (*)(...))QAbstractEventDispatcher::metaObject
24    (int (*)(...))QAbstractEventDispatcher::qt_metacast
32    (int (*)(...))QAbstractEventDispatcher::qt_metacall
40    0
48    0
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 (0x0x7fdf0d0ad5b0) 0
    vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 16)
  QObject (0x0x7fdf0d0f3a20) 0
      primary-for QAbstractEventDispatcher (0x0x7fdf0d0ad5b0)

Vtable for std::bad_function_call
std::bad_function_call::_ZTVSt17bad_function_call: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt17bad_function_call)
16    (int (*)(...))std::bad_function_call::~bad_function_call
24    (int (*)(...))std::bad_function_call::~bad_function_call
32    (int (*)(...))std::bad_function_call::what

Class std::bad_function_call
   size=8 align=8
   base size=8 base align=8
std::bad_function_call (0x0x7fdf0d173f08) 0 nearly-empty
    vptr=((& std::bad_function_call::_ZTVSt17bad_function_call) + 16)
  std::exception (0x0x7fdf0d1cb180) 0 nearly-empty
      primary-for std::bad_function_call (0x0x7fdf0d173f08)

Class std::_Nocopy_types
   size=16 align=8
   base size=16 base align=8
std::_Nocopy_types (0x0x7fdf0d1cb240) 0

Class std::_Any_data
   size=16 align=8
   base size=16 base align=8
std::_Any_data (0x0x7fdf0d1cb2a0) 0

Class std::_Function_base
   size=24 align=8
   base size=24 base align=8
std::_Function_base (0x0x7fdf0d1cb5a0) 0

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

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

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

Class QHashData
   size=48 align=8
   base size=44 base align=8
QHashData (0x0x7fdf0ccc3ae0) 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vtable for QAbstractItemModel
QAbstractItemModel::_ZTV18QAbstractItemModel: 48 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QAbstractItemModel)
16    (int (*)(...))QAbstractItemModel::metaObject
24    (int (*)(...))QAbstractItemModel::qt_metacast
32    (int (*)(...))QAbstractItemModel::qt_metacall
40    0
48    0
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 (0x0x7fdf0c999af8) 0
    vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 16)
  QObject (0x0x7fdf0c996a80) 0
      primary-for QAbstractItemModel (0x0x7fdf0c999af8)

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

Vtable for QAbstractTableModel
QAbstractTableModel::_ZTV19QAbstractTableModel: 48 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QAbstractTableModel)
16    (int (*)(...))QAbstractTableModel::metaObject
24    (int (*)(...))QAbstractTableModel::qt_metacast
32    (int (*)(...))QAbstractTableModel::qt_metacall
40    0
48    0
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 (*)(...))QAbstractTableModel::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 (0x0x7fdf0c60f138) 0
    vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16)
  QAbstractItemModel (0x0x7fdf0c60f1a0) 0
      primary-for QAbstractTableModel (0x0x7fdf0c60f138)
    QObject (0x0x7fdf0c5fee40) 0
        primary-for QAbstractItemModel (0x0x7fdf0c60f1a0)

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

Vtable for QAbstractListModel
QAbstractListModel::_ZTV18QAbstractListModel: 48 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QAbstractListModel)
16    (int (*)(...))QAbstractListModel::metaObject
24    (int (*)(...))QAbstractListModel::qt_metacast
32    (int (*)(...))QAbstractListModel::qt_metacall
40    0
48    0
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 (*)(...))QAbstractListModel::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 (0x0x7fdf0c60f208) 0
    vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16)
  QAbstractItemModel (0x0x7fdf0c60f270) 0
      primary-for QAbstractListModel (0x0x7fdf0c60f208)
    QObject (0x0x7fdf0c683000) 0
        primary-for QAbstractItemModel (0x0x7fdf0c60f270)

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

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

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

Vtable for QAbstractProxyModel
QAbstractProxyModel::_ZTV19QAbstractProxyModel: 53 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QAbstractProxyModel)
16    (int (*)(...))QAbstractProxyModel::metaObject
24    (int (*)(...))QAbstractProxyModel::qt_metacast
32    (int (*)(...))QAbstractProxyModel::qt_metacall
40    0
48    0
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 (0x0x7fdf0c60f340) 0
    vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16)
  QAbstractItemModel (0x0x7fdf0c60f3a8) 0
      primary-for QAbstractProxyModel (0x0x7fdf0c60f340)
    QObject (0x0x7fdf0c6837e0) 0
        primary-for QAbstractItemModel (0x0x7fdf0c60f3a8)

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

Vtable for QAbstractState
QAbstractState::_ZTV14QAbstractState: 16 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QAbstractState)
16    (int (*)(...))QAbstractState::metaObject
24    (int (*)(...))QAbstractState::qt_metacast
32    (int (*)(...))QAbstractState::qt_metacall
40    0
48    0
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 (0x0x7fdf0c60f410) 0
    vptr=((& QAbstractState::_ZTV14QAbstractState) + 16)
  QObject (0x0x7fdf0c683a20) 0
      primary-for QAbstractState (0x0x7fdf0c60f410)

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

Vtable for QAbstractTransition
QAbstractTransition::_ZTV19QAbstractTransition: 16 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QAbstractTransition)
16    (int (*)(...))QAbstractTransition::metaObject
24    (int (*)(...))QAbstractTransition::qt_metacast
32    (int (*)(...))QAbstractTransition::qt_metacall
40    0
48    0
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 (0x0x7fdf0c60f478) 0
    vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 16)
  QObject (0x0x7fdf0c683c60) 0
      primary-for QAbstractTransition (0x0x7fdf0c60f478)

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

Vtable for QAnimationGroup
QAnimationGroup::_ZTV15QAnimationGroup: 18 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QAnimationGroup)
16    (int (*)(...))QAnimationGroup::metaObject
24    (int (*)(...))QAnimationGroup::qt_metacast
32    (int (*)(...))QAnimationGroup::qt_metacall
40    0
48    0
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 (0x0x7fdf0c60f4e0) 0
    vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16)
  QAbstractAnimation (0x0x7fdf0c60f548) 0
      primary-for QAnimationGroup (0x0x7fdf0c60f4e0)
    QObject (0x0x7fdf0c683f60) 0
        primary-for QAbstractAnimation (0x0x7fdf0c60f548)

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

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

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

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

Vtable for QIODevice
QIODevice::_ZTV9QIODevice: 30 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QIODevice)
16    (int (*)(...))QIODevice::metaObject
24    (int (*)(...))QIODevice::qt_metacast
32    (int (*)(...))QIODevice::qt_metacall
40    0
48    0
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 (0x0x7fdf0c456a90) 0
    vptr=((& QIODevice::_ZTV9QIODevice) + 16)
  QObject (0x0x7fdf0c447f00) 0
      primary-for QIODevice (0x0x7fdf0c456a90)

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

Vtable for QBuffer
QBuffer::_ZTV7QBuffer: 30 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 (0x0x7fdf0c456bc8) 0
    vptr=((& QBuffer::_ZTV7QBuffer) + 16)
  QIODevice (0x0x7fdf0c456c30) 0
      primary-for QBuffer (0x0x7fdf0c456bc8)
    QObject (0x0x7fdf0c47d8a0) 0
        primary-for QIODevice (0x0x7fdf0c456c30)

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

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

Class QStaticByteArrayMatcherBase::Skiptable
   size=256 align=1
   base size=256 base align=1
QStaticByteArrayMatcherBase::Skiptable (0x0x7fdf0c47dd20) 0

Class QStaticByteArrayMatcherBase
   size=256 align=16
   base size=256 base align=16
QStaticByteArrayMatcherBase (0x0x7fdf0c47dcc0) 0

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

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

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

Class QDateTime::ShortData
   size=8 align=8
   base size=8 base align=8
QDateTime::ShortData (0x0x7fdf0c5fb120) 0

Class QDateTime::Data
   size=8 align=8
   base size=8 base align=8
QDateTime::Data (0x0x7fdf0c5fb180) 0

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

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

Vtable for QTextStream
QTextStream::_ZTV11QTextStream: 4 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 (0x0x7fdf0c3bade0) 0
    vptr=((& QTextStream::_ZTV11QTextStream) + 16)

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

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

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

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

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

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

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

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

Class QCborError
   size=4 align=4
   base size=4 base align=4
QCborError (0x0x7fdf0bffa060) 0

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

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

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

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

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

Class QCborParserError
   size=16 align=8
   base size=12 base align=8
QCborParserError (0x0x7fdf0bb3f9c0) 0

Class QCborValue
   size=24 align=8
   base size=20 base align=8
QCborValue (0x0x7fdf0bb3fa80) 0

Class QCborValueRef
   size=16 align=8
   base size=16 base align=8
QCborValueRef (0x0x7fdf0b9aea80) 0

Class QCborArray::Iterator
   size=16 align=8
   base size=16 base align=8
QCborArray::Iterator (0x0x7fdf0b64b4e0) 0

Class QCborArray::ConstIterator
   size=16 align=8
   base size=16 base align=8
QCborArray::ConstIterator (0x0x7fdf0b64b540) 0

Class QCborArray
   size=8 align=8
   base size=8 base align=8
QCborArray (0x0x7fdf0b64b480) 0

Class QCborMap::Iterator
   size=16 align=8
   base size=16 base align=8
QCborMap::Iterator (0x0x7fdf0b73bf00) 0

Class QCborMap::ConstIterator
   size=16 align=8
   base size=16 base align=8
QCborMap::ConstIterator (0x0x7fdf0b73bf60) 0

Class QCborMap
   size=8 align=8
   base size=8 base align=8
QCborMap (0x0x7fdf0b73bea0) 0

Class qfloat16
   size=2 align=2
   base size=2 base align=2
qfloat16 (0x0x7fdf0b5516c0) 0

Class QCborStreamWriter
   size=8 align=8
   base size=8 base align=8
QCborStreamWriter (0x0x7fdf0b20c660) 0

Class QCborStreamReader
   size=24 align=8
   base size=20 base align=8
QCborStreamReader (0x0x7fdf0b2403c0) 0

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

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

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

Vtable for QEvent
QEvent::_ZTV6QEvent: 4 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 (0x0x7fdf0b0443c0) 0
    vptr=((& QEvent::_ZTV6QEvent) + 16)

Vtable for QTimerEvent
QTimerEvent::_ZTV11QTimerEvent: 4 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 (0x0x7fdf0b013dd0) 0
    vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16)
  QEvent (0x0x7fdf0b044780) 0
      primary-for QTimerEvent (0x0x7fdf0b013dd0)

Vtable for QChildEvent
QChildEvent::_ZTV11QChildEvent: 4 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 (0x0x7fdf0b013e38) 0
    vptr=((& QChildEvent::_ZTV11QChildEvent) + 16)
  QEvent (0x0x7fdf0b044840) 0
      primary-for QChildEvent (0x0x7fdf0b013e38)

Vtable for QDynamicPropertyChangeEvent
QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4 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 (0x0x7fdf0b0733a8) 0
    vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 16)
  QEvent (0x0x7fdf0b044ea0) 0
      primary-for QDynamicPropertyChangeEvent (0x0x7fdf0b0733a8)

Vtable for QDeferredDeleteEvent
QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent: 4 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 (0x0x7fdf0b073410) 0
    vptr=((& QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent) + 16)
  QEvent (0x0x7fdf0b044f60) 0
      primary-for QDeferredDeleteEvent (0x0x7fdf0b073410)

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

Vtable for QCoreApplication
QCoreApplication::_ZTV16QCoreApplication: 16 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 (0x0x7fdf0b073478) 0
    vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 16)
  QObject (0x0x7fdf0b08c060) 0
      primary-for QCoreApplication (0x0x7fdf0b073478)

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

Class QConcatenateTablesProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QConcatenateTablesProxyModel::QPrivateSignal (0x0x7fdf0b08c480) 0 empty

Vtable for QConcatenateTablesProxyModel
QConcatenateTablesProxyModel::_ZTV28QConcatenateTablesProxyModel: 48 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI28QConcatenateTablesProxyModel)
16    (int (*)(...))QConcatenateTablesProxyModel::metaObject
24    (int (*)(...))QConcatenateTablesProxyModel::qt_metacast
32    (int (*)(...))QConcatenateTablesProxyModel::qt_metacall
40    (int (*)(...))QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel
48    (int (*)(...))QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel
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 (*)(...))QConcatenateTablesProxyModel::index
120   (int (*)(...))QConcatenateTablesProxyModel::parent
128   (int (*)(...))QAbstractItemModel::sibling
136   (int (*)(...))QConcatenateTablesProxyModel::rowCount
144   (int (*)(...))QConcatenateTablesProxyModel::columnCount
152   (int (*)(...))QAbstractItemModel::hasChildren
160   (int (*)(...))QConcatenateTablesProxyModel::data
168   (int (*)(...))QConcatenateTablesProxyModel::setData
176   (int (*)(...))QConcatenateTablesProxyModel::headerData
184   (int (*)(...))QAbstractItemModel::setHeaderData
192   (int (*)(...))QConcatenateTablesProxyModel::itemData
200   (int (*)(...))QConcatenateTablesProxyModel::setItemData
208   (int (*)(...))QConcatenateTablesProxyModel::mimeTypes
216   (int (*)(...))QConcatenateTablesProxyModel::mimeData
224   (int (*)(...))QConcatenateTablesProxyModel::canDropMimeData
232   (int (*)(...))QConcatenateTablesProxyModel::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 (*)(...))QConcatenateTablesProxyModel::flags
328   (int (*)(...))QAbstractItemModel::sort
336   (int (*)(...))QAbstractItemModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QConcatenateTablesProxyModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractItemModel::submit
376   (int (*)(...))QAbstractItemModel::revert

Class QConcatenateTablesProxyModel
   size=16 align=8
   base size=16 base align=8
QConcatenateTablesProxyModel (0x0x7fdf0b0734e0) 0
    vptr=((& QConcatenateTablesProxyModel::_ZTV28QConcatenateTablesProxyModel) + 16)
  QAbstractItemModel (0x0x7fdf0b073548) 0
      primary-for QConcatenateTablesProxyModel (0x0x7fdf0b0734e0)
    QObject (0x0x7fdf0b08c420) 0
        primary-for QAbstractItemModel (0x0x7fdf0b073548)

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

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

Class QtPrivate::StreamStateSaver
   size=16 align=8
   base size=12 base align=8
QtPrivate::StreamStateSaver (0x0x7fdf0b08c900) 0

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

Class QDeadlineTimer
   size=16 align=8
   base size=16 base align=8
QDeadlineTimer (0x0x7fdf0b144780) 0

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

Vtable for QFileDevice
QFileDevice::_ZTV11QFileDevice: 34 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 (0x0x7fdf0ae80750) 0
    vptr=((& QFileDevice::_ZTV11QFileDevice) + 16)
  QIODevice (0x0x7fdf0ae807b8) 0
      primary-for QFileDevice (0x0x7fdf0ae80750)
    QObject (0x0x7fdf0ae87480) 0
        primary-for QIODevice (0x0x7fdf0ae807b8)

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

Vtable for QFile
QFile::_ZTV5QFile: 34 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 (0x0x7fdf0ae808f0) 0
    vptr=((& QFile::_ZTV5QFile) + 16)
  QFileDevice (0x0x7fdf0ae80958) 0
      primary-for QFile (0x0x7fdf0ae808f0)
    QIODevice (0x0x7fdf0ae809c0) 0
        primary-for QFileDevice (0x0x7fdf0ae80958)
      QObject (0x0x7fdf0ae87d80) 0
          primary-for QIODevice (0x0x7fdf0ae809c0)

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

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

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

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

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

Vtable for QEventTransition
QEventTransition::_ZTV16QEventTransition: 16 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 (0x0x7fdf0ad0fc30) 0
    vptr=((& QEventTransition::_ZTV16QEventTransition) + 16)
  QAbstractTransition (0x0x7fdf0ad0fc98) 0
      primary-for QEventTransition (0x0x7fdf0ad0fc30)
    QObject (0x0x7fdf0ad58420) 0
        primary-for QAbstractTransition (0x0x7fdf0ad0fc98)

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

Vtable for QUnhandledException
QUnhandledException::_ZTV19QUnhandledException: 7 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 (0x0x7fdf0ad0fd68) 0 nearly-empty
    vptr=((& QUnhandledException::_ZTV19QUnhandledException) + 16)
  QException (0x0x7fdf0ad0fdd0) 0 nearly-empty
      primary-for QUnhandledException (0x0x7fdf0ad0fd68)
    std::exception (0x0x7fdf0ad586c0) 0 nearly-empty
        primary-for QException (0x0x7fdf0ad0fdd0)

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

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

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

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

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

Vtable for QFileSelector
QFileSelector::_ZTV13QFileSelector: 14 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 (0x0x7fdf0ad0fe38) 0
    vptr=((& QFileSelector::_ZTV13QFileSelector) + 16)
  QObject (0x0x7fdf0ad58a20) 0
      primary-for QFileSelector (0x0x7fdf0ad0fe38)

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

Vtable for QFileSystemWatcher
QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14 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 (0x0x7fdf0ad0fea0) 0
    vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 16)
  QObject (0x0x7fdf0ad58c60) 0
      primary-for QFileSystemWatcher (0x0x7fdf0ad0fea0)

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

Vtable for QFinalState
QFinalState::_ZTV11QFinalState: 16 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 (0x0x7fdf0ad0ff08) 0
    vptr=((& QFinalState::_ZTV11QFinalState) + 16)
  QAbstractState (0x0x7fdf0ad0ff70) 0
      primary-for QFinalState (0x0x7fdf0ad0ff08)
    QObject (0x0x7fdf0ad58ea0) 0
        primary-for QAbstractState (0x0x7fdf0ad0ff70)

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

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

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

Class QMutex
   size=8 align=8
   base size=8 base align=8
QMutex (0x0x7fdf0adf1068) 0
  QBasicMutex (0x0x7fdf0aa34060) 0

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

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

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

Vtable for QtPrivate::ResultStoreBase
QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE: 4 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 (0x0x7fdf0aa34f00) 0
    vptr=((& QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE) + 16)

Vtable for QFutureInterfaceBase
QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4 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 (0x0x7fdf0aad5720) 0
    vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 16)

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

Vtable for QFutureWatcherBase
QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QFutureWatcherBase)
16    (int (*)(...))QFutureWatcherBase::metaObject
24    (int (*)(...))QFutureWatcherBase::qt_metacast
32    (int (*)(...))QFutureWatcherBase::qt_metacall
40    0
48    0
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 (0x0x7fdf0ab11680) 0
    vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 16)
  QObject (0x0x7fdf0ab749c0) 0
      primary-for QFutureWatcherBase (0x0x7fdf0ab11680)

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

Vtable for QHistoryState
QHistoryState::_ZTV13QHistoryState: 16 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 (0x0x7fdf0ab11ea0) 0
    vptr=((& QHistoryState::_ZTV13QHistoryState) + 16)
  QAbstractState (0x0x7fdf0ab11f08) 0
      primary-for QHistoryState (0x0x7fdf0ab11ea0)
    QObject (0x0x7fdf0aba5d20) 0
        primary-for QAbstractState (0x0x7fdf0ab11f08)

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

Vtable for QIdentityProxyModel
QIdentityProxyModel::_ZTV19QIdentityProxyModel: 53 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 (0x0x7fdf0ab11f70) 0
    vptr=((& QIdentityProxyModel::_ZTV19QIdentityProxyModel) + 16)
  QAbstractProxyModel (0x0x7fdf0abd0000) 0
      primary-for QIdentityProxyModel (0x0x7fdf0ab11f70)
    QAbstractItemModel (0x0x7fdf0abd0068) 0
        primary-for QAbstractProxyModel (0x0x7fdf0abd0000)
      QObject (0x0x7fdf0abcf060) 0
          primary-for QAbstractItemModel (0x0x7fdf0abd0068)

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

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

Vtable for QItemSelectionModel
QItemSelectionModel::_ZTV19QItemSelectionModel: 20 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 (0x0x7fdf0a8919c0) 0
    vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 16)
  QObject (0x0x7fdf0a88db40) 0
      primary-for QItemSelectionModel (0x0x7fdf0a8919c0)

Class QItemSelection
   size=8 align=8
   base size=8 base align=8
QItemSelection (0x0x7fdf0a891b60) 0
  QList<QItemSelectionRange> (0x0x7fdf0a891bc8) 0
    QListSpecialMethods<QItemSelectionRange> (0x0x7fdf0a8cd6c0) 0 empty

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

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

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

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

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

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

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

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

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

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

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

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

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

Vtable for QLibrary
QLibrary::_ZTV8QLibrary: 14 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 (0x0x7fdf0a5d5c30) 0
    vptr=((& QLibrary::_ZTV8QLibrary) + 16)
  QObject (0x0x7fdf0a5e82a0) 0
      primary-for QLibrary (0x0x7fdf0a5d5c30)

Class QVersionNumber::SegmentStorage
   size=8 align=8
   base size=8 base align=8
QVersionNumber::SegmentStorage (0x0x7fdf0a235180) 0

Class QVersionNumber
   size=8 align=8
   base size=8 base align=8
QVersionNumber (0x0x7fdf0a5e8c60) 0

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

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

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

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

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

Class QLinkedListData
   size=32 align=8
   base size=25 base align=8
QLinkedListData (0x0x7fdf0a095f00) 0

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

Class QLoggingCategory::AtomicBools
   size=4 align=1
   base size=4 base align=1
QLoggingCategory::AtomicBools (0x0x7fdf0a158300) 0

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

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

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

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

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

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

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

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

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

Vtable for QMimeData
QMimeData::_ZTV9QMimeData: 17 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 (0x0x7fdf09d79888) 0
    vptr=((& QMimeData::_ZTV9QMimeData) + 16)
  QObject (0x0x7fdf09d86000) 0
      primary-for QMimeData (0x0x7fdf09d79888)

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

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

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

Vtable for QObjectCleanupHandler
QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14 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 (0x0x7fdf09dd3bc8) 0
    vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 16)
  QObject (0x0x7fdf09de53c0) 0
      primary-for QObjectCleanupHandler (0x0x7fdf09dd3bc8)

Class QOperatingSystemVersion
   size=16 align=4
   base size=16 base align=4
QOperatingSystemVersion (0x0x7fdf09de5540) 0

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

Vtable for QParallelAnimationGroup
QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18 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 (0x0x7fdf09a60478) 0
    vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16)
  QAnimationGroup (0x0x7fdf09a604e0) 0
      primary-for QParallelAnimationGroup (0x0x7fdf09a60478)
    QAbstractAnimation (0x0x7fdf09a60548) 0
        primary-for QAnimationGroup (0x0x7fdf09a604e0)
      QObject (0x0x7fdf09a4ec60) 0
          primary-for QAbstractAnimation (0x0x7fdf09a60548)

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

Vtable for QPauseAnimation
QPauseAnimation::_ZTV15QPauseAnimation: 18 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 (0x0x7fdf09a605b0) 0
    vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16)
  QAbstractAnimation (0x0x7fdf09a60618) 0
      primary-for QPauseAnimation (0x0x7fdf09a605b0)
    QObject (0x0x7fdf09a4eea0) 0
        primary-for QAbstractAnimation (0x0x7fdf09a60618)

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

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

Vtable for QPluginLoader
QPluginLoader::_ZTV13QPluginLoader: 14 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 (0x0x7fdf09ad2958) 0
    vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 16)
  QObject (0x0x7fdf09ac6c60) 0
      primary-for QPluginLoader (0x0x7fdf09ad2958)

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

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

Vtable for QProcess
QProcess::_ZTV8QProcess: 31 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 (0x0x7fdf09b3d5b0) 0
    vptr=((& QProcess::_ZTV8QProcess) + 16)
  QIODevice (0x0x7fdf09b3d618) 0
      primary-for QProcess (0x0x7fdf09b3d5b0)
    QObject (0x0x7fdf09b42420) 0
        primary-for QIODevice (0x0x7fdf09b3d618)

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

Vtable for QVariantAnimation
QVariantAnimation::_ZTV17QVariantAnimation: 20 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 (0x0x7fdf09b3d680) 0
    vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16)
  QAbstractAnimation (0x0x7fdf09b3d6e8) 0
      primary-for QVariantAnimation (0x0x7fdf09b3d680)
    QObject (0x0x7fdf09b42ae0) 0
        primary-for QAbstractAnimation (0x0x7fdf09b3d6e8)

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

Vtable for QPropertyAnimation
QPropertyAnimation::_ZTV18QPropertyAnimation: 20 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 (0x0x7fdf09b3d7b8) 0
    vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16)
  QVariantAnimation (0x0x7fdf09b3d820) 0
      primary-for QPropertyAnimation (0x0x7fdf09b3d7b8)
    QAbstractAnimation (0x0x7fdf09b3d888) 0
        primary-for QVariantAnimation (0x0x7fdf09b3d820)
      QObject (0x0x7fdf09b42d80) 0
          primary-for QAbstractAnimation (0x0x7fdf09b3d888)

Class std::random_device
   size=5000 align=8
   base size=5000 base align=8
std::random_device (0x0x7fdf09810540) 0

Class std::bernoulli_distribution::param_type
   size=8 align=8
   base size=8 base align=8
std::bernoulli_distribution::param_type (0x0x7fdf0990e2a0) 0

Class std::bernoulli_distribution
   size=8 align=8
   base size=8 base align=8
std::bernoulli_distribution (0x0x7fdf0990e240) 0

Class std::seed_seq
   size=24 align=8
   base size=24 base align=8
std::seed_seq (0x0x7fdf096fe000) 0

Class QRandomGenerator::Storage
   size=2504 align=8
   base size=2504 base align=8
QRandomGenerator::Storage (0x0x7fdf0950bc60) 0

Class QRandomGenerator
   size=2512 align=8
   base size=2512 base align=8
QRandomGenerator (0x0x7fdf0950bc00) 0

Class QRandomGenerator64
   size=2512 align=8
   base size=2512 base align=8
QRandomGenerator64 (0x0x7fdf0959c548) 0
  QRandomGenerator (0x0x7fdf095b5780) 0

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

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

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

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

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

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

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

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

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

Vtable for QSaveFile
QSaveFile::_ZTV9QSaveFile: 34 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 (0x0x7fdf09050f08) 0
    vptr=((& QSaveFile::_ZTV9QSaveFile) + 16)
  QFileDevice (0x0x7fdf09050f70) 0
      primary-for QSaveFile (0x0x7fdf09050f08)
    QIODevice (0x0x7fdf090df000) 0
        primary-for QFileDevice (0x0x7fdf09050f70)
      QObject (0x0x7fdf090db180) 0
          primary-for QIODevice (0x0x7fdf090df000)

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

Class QSemaphoreReleaser
   size=16 align=8
   base size=12 base align=8
QSemaphoreReleaser (0x0x7fdf090db960) 0

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

Vtable for QSequentialAnimationGroup
QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18 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 (0x0x7fdf08dfed00) 0
    vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16)
  QAnimationGroup (0x0x7fdf08dfed68) 0
      primary-for QSequentialAnimationGroup (0x0x7fdf08dfed00)
    QAbstractAnimation (0x0x7fdf08dfedd0) 0
        primary-for QAnimationGroup (0x0x7fdf08dfed68)
      QObject (0x0x7fdf091f8ba0) 0
          primary-for QAbstractAnimation (0x0x7fdf08dfedd0)

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

Vtable for QSettings
QSettings::_ZTV9QSettings: 14 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 (0x0x7fdf08dfee38) 0
    vptr=((& QSettings::_ZTV9QSettings) + 16)
  QObject (0x0x7fdf091f8de0) 0
      primary-for QSettings (0x0x7fdf08dfee38)

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

Vtable for QSharedMemory
QSharedMemory::_ZTV13QSharedMemory: 14 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 (0x0x7fdf08dfeea0) 0
    vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 16)
  QObject (0x0x7fdf08e392a0) 0
      primary-for QSharedMemory (0x0x7fdf08dfeea0)

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

Vtable for QSignalMapper
QSignalMapper::_ZTV13QSignalMapper: 14 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 (0x0x7fdf08dfef08) 0
    vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 16)
  QObject (0x0x7fdf08e394e0) 0
      primary-for QSignalMapper (0x0x7fdf08dfef08)

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

Vtable for QSignalTransition
QSignalTransition::_ZTV17QSignalTransition: 16 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 (0x0x7fdf08dfef70) 0
    vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16)
  QAbstractTransition (0x0x7fdf08e5e000) 0
      primary-for QSignalTransition (0x0x7fdf08dfef70)
    QObject (0x0x7fdf08e39720) 0
        primary-for QAbstractTransition (0x0x7fdf08e5e000)

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

Vtable for QSocketNotifier
QSocketNotifier::_ZTV15QSocketNotifier: 14 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 (0x0x7fdf08e5e068) 0
    vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 16)
  QObject (0x0x7fdf08e399c0) 0
      primary-for QSocketNotifier (0x0x7fdf08e5e068)

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

Vtable for QSortFilterProxyModel
QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 56 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 (0x0x7fdf08e5e0d0) 0
    vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16)
  QAbstractProxyModel (0x0x7fdf08e5e138) 0
      primary-for QSortFilterProxyModel (0x0x7fdf08e5e0d0)
    QAbstractItemModel (0x0x7fdf08e5e1a0) 0
        primary-for QAbstractProxyModel (0x0x7fdf08e5e138)
      QObject (0x0x7fdf08e39c00) 0
          primary-for QAbstractItemModel (0x0x7fdf08e5e1a0)

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

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

Vtable for QState
QState::_ZTV6QState: 16 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 (0x0x7fdf08e5e340) 0
    vptr=((& QState::_ZTV6QState) + 16)
  QAbstractState (0x0x7fdf08e5e3a8) 0
      primary-for QState (0x0x7fdf08e5e340)
    QObject (0x0x7fdf08ea6960) 0
        primary-for QAbstractState (0x0x7fdf08e5e3a8)

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

Vtable for QStateMachine::SignalEvent
QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4 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 (0x0x7fdf08e5e548) 0
    vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 16)
  QEvent (0x0x7fdf08ea6ea0) 0
      primary-for QStateMachine::SignalEvent (0x0x7fdf08e5e548)

Vtable for QStateMachine::WrappedEvent
QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4 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 (0x0x7fdf08e5e5b0) 0
    vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 16)
  QEvent (0x0x7fdf08ea6f00) 0
      primary-for QStateMachine::WrappedEvent (0x0x7fdf08e5e5b0)

Vtable for QStateMachine
QStateMachine::_ZTV13QStateMachine: 20 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 (0x0x7fdf08e5e410) 0
    vptr=((& QStateMachine::_ZTV13QStateMachine) + 16)
  QState (0x0x7fdf08e5e478) 0
      primary-for QStateMachine (0x0x7fdf08e5e410)
    QAbstractState (0x0x7fdf08e5e4e0) 0
        primary-for QState (0x0x7fdf08e5e478)
      QObject (0x0x7fdf08ea6de0) 0
          primary-for QAbstractState (0x0x7fdf08e5e4e0)

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

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

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

Vtable for QStringListModel
QStringListModel::_ZTV16QStringListModel: 48 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 (*)(...))QStringListModel::itemData
200   (int (*)(...))QStringListModel::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 (*)(...))QStringListModel::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 (0x0x7fdf08c146e8) 0
    vptr=((& QStringListModel::_ZTV16QStringListModel) + 16)
  QAbstractListModel (0x0x7fdf08c14750) 0
      primary-for QStringListModel (0x0x7fdf08c146e8)
    QAbstractItemModel (0x0x7fdf08c147b8) 0
        primary-for QAbstractListModel (0x0x7fdf08c14750)
      QObject (0x0x7fdf08c23600) 0
          primary-for QAbstractItemModel (0x0x7fdf08c147b8)

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

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

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

Vtable for QTemporaryFile
QTemporaryFile::_ZTV14QTemporaryFile: 34 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 (0x0x7fdf08c14820) 0
    vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16)
  QFile (0x0x7fdf08c14888) 0
      primary-for QTemporaryFile (0x0x7fdf08c14820)
    QFileDevice (0x0x7fdf08c148f0) 0
        primary-for QFile (0x0x7fdf08c14888)
      QIODevice (0x0x7fdf08c14958) 0
          primary-for QFileDevice (0x0x7fdf08c148f0)
        QObject (0x0x7fdf08c23900) 0
            primary-for QIODevice (0x0x7fdf08c14958)

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

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

Vtable for QTextCodec
QTextCodec::_ZTV10QTextCodec: 9 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    0
64    0

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

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

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

Class std::__mutex_base
   size=40 align=8
   base size=40 base align=8
std::__mutex_base (0x0x7fdf08cf5300) 0

Class std::mutex
   size=40 align=8
   base size=40 base align=8
std::mutex (0x0x7fdf08c14b60) 0
  std::__mutex_base (0x0x7fdf08cf5360) 0

Class std::defer_lock_t
   size=1 align=1
   base size=0 base align=1
std::defer_lock_t (0x0x7fdf08cf5540) 0 empty

Class std::try_to_lock_t
   size=1 align=1
   base size=0 base align=1
std::try_to_lock_t (0x0x7fdf08cf55a0) 0 empty

Class std::adopt_lock_t
   size=1 align=1
   base size=0 base align=1
std::adopt_lock_t (0x0x7fdf08cf5600) 0 empty

Class std::__recursive_mutex_base
   size=40 align=8
   base size=40 base align=8
std::__recursive_mutex_base (0x0x7fdf08d31060) 0

Class std::recursive_mutex
   size=40 align=8
   base size=40 base align=8
std::recursive_mutex (0x0x7fdf08c14bc8) 0
  std::__recursive_mutex_base (0x0x7fdf08d310c0) 0

Class std::timed_mutex
   size=40 align=8
   base size=40 base align=8
std::timed_mutex (0x0x7fdf08cfcd20) 0
  std::__mutex_base (0x0x7fdf08d31480) 0
  std::__timed_mutex_impl<std::timed_mutex> (0x0x7fdf08d314e0) 0 empty

Class std::recursive_timed_mutex
   size=40 align=8
   base size=40 base align=8
std::recursive_timed_mutex (0x0x7fdf08d54070) 0
  std::__recursive_mutex_base (0x0x7fdf08d31840) 0
  std::__timed_mutex_impl<std::recursive_timed_mutex> (0x0x7fdf08d318a0) 0 empty

Class std::once_flag
   size=4 align=4
   base size=4 base align=4
std::once_flag (0x0x7fdf08d79000) 0

Vtable for __gnu_cxx::__concurrence_lock_error
__gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_lock_errorE)
16    (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
24    (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
32    (int (*)(...))__gnu_cxx::__concurrence_lock_error::what

Class __gnu_cxx::__concurrence_lock_error
   size=8 align=8
   base size=8 base align=8
__gnu_cxx::__concurrence_lock_error (0x0x7fdf08c14d00) 0 nearly-empty
    vptr=((& __gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE) + 16)
  std::exception (0x0x7fdf08d79540) 0 nearly-empty
      primary-for __gnu_cxx::__concurrence_lock_error (0x0x7fdf08c14d00)

Vtable for __gnu_cxx::__concurrence_unlock_error
__gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN9__gnu_cxx26__concurrence_unlock_errorE)
16    (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
24    (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
32    (int (*)(...))__gnu_cxx::__concurrence_unlock_error::what

Class __gnu_cxx::__concurrence_unlock_error
   size=8 align=8
   base size=8 base align=8
__gnu_cxx::__concurrence_unlock_error (0x0x7fdf08c14d68) 0 nearly-empty
    vptr=((& __gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE) + 16)
  std::exception (0x0x7fdf08d79660) 0 nearly-empty
      primary-for __gnu_cxx::__concurrence_unlock_error (0x0x7fdf08c14d68)

Vtable for __gnu_cxx::__concurrence_broadcast_error
__gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN9__gnu_cxx29__concurrence_broadcast_errorE)
16    (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
24    (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
32    (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::what

Class __gnu_cxx::__concurrence_broadcast_error
   size=8 align=8
   base size=8 base align=8
__gnu_cxx::__concurrence_broadcast_error (0x0x7fdf08c14dd0) 0 nearly-empty
    vptr=((& __gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE) + 16)
  std::exception (0x0x7fdf08d79780) 0 nearly-empty
      primary-for __gnu_cxx::__concurrence_broadcast_error (0x0x7fdf08c14dd0)

Vtable for __gnu_cxx::__concurrence_wait_error
__gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_wait_errorE)
16    (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
24    (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
32    (int (*)(...))__gnu_cxx::__concurrence_wait_error::what

Class __gnu_cxx::__concurrence_wait_error
   size=8 align=8
   base size=8 base align=8
__gnu_cxx::__concurrence_wait_error (0x0x7fdf08c14ea0) 0 nearly-empty
    vptr=((& __gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE) + 16)
  std::exception (0x0x7fdf08d798a0) 0 nearly-empty
      primary-for __gnu_cxx::__concurrence_wait_error (0x0x7fdf08c14ea0)

Class __gnu_cxx::__mutex
   size=40 align=8
   base size=40 base align=8
__gnu_cxx::__mutex (0x0x7fdf08da5900) 0

Class __gnu_cxx::__recursive_mutex
   size=40 align=8
   base size=40 base align=8
__gnu_cxx::__recursive_mutex (0x0x7fdf08da5c00) 0

Class __gnu_cxx::__scoped_lock
   size=8 align=8
   base size=8 base align=8
__gnu_cxx::__scoped_lock (0x0x7fdf08da5f00) 0

Class __gnu_cxx::__cond
   size=48 align=8
   base size=48 base align=8
__gnu_cxx::__cond (0x0x7fdf08dc92a0) 0

Vtable for std::bad_weak_ptr
std::bad_weak_ptr::_ZTVSt12bad_weak_ptr: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12bad_weak_ptr)
16    (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
24    (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
32    (int (*)(...))std::bad_weak_ptr::what

Class std::bad_weak_ptr
   size=8 align=8
   base size=8 base align=8
std::bad_weak_ptr (0x0x7fdf08c14f08) 0 nearly-empty
    vptr=((& std::bad_weak_ptr::_ZTVSt12bad_weak_ptr) + 16)
  std::exception (0x0x7fdf08a44480) 0 nearly-empty
      primary-for std::bad_weak_ptr (0x0x7fdf08c14f08)

Class std::_Sp_make_shared_tag
   size=1 align=1
   base size=0 base align=1
std::_Sp_make_shared_tag (0x0x7fdf08ab3420) 0 empty

Class std::__sp_array_delete
   size=1 align=1
   base size=0 base align=1
std::__sp_array_delete (0x0x7fdf08ab3840) 0 empty

Class std::_Sp_locker
   size=2 align=1
   base size=2 base align=1
std::_Sp_locker (0x0x7fdf08bf86c0) 0

Vtable for std::thread::_State
std::thread::_State::_ZTVNSt6thread6_StateE: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt6thread6_StateE)
16    0
24    0
32    (int (*)(...))__cxa_pure_virtual

Class std::thread::_State
   size=8 align=8
   base size=8 base align=8
std::thread::_State (0x0x7fdf08825b40) 0 nearly-empty
    vptr=((& std::thread::_State::_ZTVNSt6thread6_StateE) + 16)

Class std::thread::id
   size=8 align=8
   base size=8 base align=8
std::thread::id (0x0x7fdf08825ba0) 0

Class std::thread
   size=8 align=8
   base size=8 base align=8
std::thread (0x0x7fdf08825ae0) 0

Class std::condition_variable
   size=48 align=8
   base size=48 base align=8
std::condition_variable (0x0x7fdf086bbf60) 0

Class std::__at_thread_exit_elt
   size=16 align=8
   base size=16 base align=8
std::__at_thread_exit_elt (0x0x7fdf086f4360) 0

Class std::_V2::condition_variable_any
   size=64 align=8
   base size=64 base align=8
std::_V2::condition_variable_any (0x0x7fdf086f43c0) 0

Class std::__atomic_futex_unsigned_base
   size=1 align=1
   base size=0 base align=1
std::__atomic_futex_unsigned_base (0x0x7fdf0846b6c0) 0 empty

Vtable for std::future_error
std::future_error::_ZTVSt12future_error: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12future_error)
16    (int (*)(...))std::future_error::~future_error
24    (int (*)(...))std::future_error::~future_error
32    (int (*)(...))std::future_error::what

Class std::future_error
   size=32 align=8
   base size=32 base align=8
std::future_error (0x0x7fdf084667b8) 0
    vptr=((& std::future_error::_ZTVSt12future_error) + 16)
  std::logic_error (0x0x7fdf08466820) 0
      primary-for std::future_error (0x0x7fdf084667b8)
    std::exception (0x0x7fdf0846bde0) 0 nearly-empty
        primary-for std::logic_error (0x0x7fdf08466820)

Class std::__future_base::_Result_base::_Deleter
   size=1 align=1
   base size=0 base align=1
std::__future_base::_Result_base::_Deleter (0x0x7fdf0849c540) 0 empty

Vtable for std::__future_base::_Result_base
std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt13__future_base12_Result_baseE)
16    (int (*)(...))__cxa_pure_virtual
24    0
32    0

Class std::__future_base::_Result_base
   size=16 align=8
   base size=16 base align=8
std::__future_base::_Result_base (0x0x7fdf0849c4e0) 0
    vptr=((& std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE) + 16)

Class std::__future_base::_State_baseV2::__exception_ptr_tag
   size=1 align=1
   base size=0 base align=1
std::__future_base::_State_baseV2::__exception_ptr_tag (0x0x7fdf08260c60) 0 empty

Class std::__future_base::_State_baseV2::_Make_ready
   size=32 align=8
   base size=32 base align=8
std::__future_base::_State_baseV2::_Make_ready (0x0x7fdf08295068) 0
  std::__at_thread_exit_elt (0x0x7fdf08260d20) 0

Vtable for std::__future_base::_State_baseV2
std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E: 6 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt13__future_base13_State_baseV2E)
16    (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
24    (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
32    (int (*)(...))std::__future_base::_State_baseV2::_M_complete_async
40    (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future

Class std::__future_base::_State_baseV2
   size=32 align=8
   base size=28 base align=8
std::__future_base::_State_baseV2 (0x0x7fdf0849c6c0) 0
    vptr=((& std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E) + 16)

Class std::__future_base
   size=1 align=1
   base size=0 base align=1
std::__future_base (0x0x7fdf0849c480) 0 empty

Vtable for std::__future_base::_Async_state_commonV2
std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E: 6 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt13__future_base21_Async_state_commonV2E)
16    (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
24    (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
32    (int (*)(...))std::__future_base::_Async_state_commonV2::_M_complete_async
40    (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future

Class std::__future_base::_Async_state_commonV2
   size=48 align=8
   base size=44 base align=8
std::__future_base::_Async_state_commonV2 (0x0x7fdf07df2d68) 0
    vptr=((& std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E) + 16)
  std::__future_base::_State_baseV2 (0x0x7fdf07a1bd20) 0
      primary-for std::__future_base::_Async_state_commonV2 (0x0x7fdf07df2d68)

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

Vtable for QThread
QThread::_ZTV7QThread: 15 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 (0x0x7fdf07a5c0d0) 0
    vptr=((& QThread::_ZTV7QThread) + 16)
  QObject (0x0x7fdf07a545a0) 0
      primary-for QThread (0x0x7fdf07a5c0d0)

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

Vtable for QThreadPool
QThreadPool::_ZTV11QThreadPool: 14 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 (0x0x7fdf07a5c138) 0
    vptr=((& QThreadPool::_ZTV11QThreadPool) + 16)
  QObject (0x0x7fdf07a54960) 0
      primary-for QThreadPool (0x0x7fdf07a5c138)

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

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

Vtable for QTimeLine
QTimeLine::_ZTV9QTimeLine: 15 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 (0x0x7fdf07a5c1a0) 0
    vptr=((& QTimeLine::_ZTV9QTimeLine) + 16)
  QObject (0x0x7fdf07a9c240) 0
      primary-for QTimeLine (0x0x7fdf07a5c1a0)

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

Vtable for QTimer
QTimer::_ZTV6QTimer: 14 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 (0x0x7fdf07a5c208) 0
    vptr=((& QTimer::_ZTV6QTimer) + 16)
  QObject (0x0x7fdf07a9c480) 0
      primary-for QTimer (0x0x7fdf07a5c208)

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

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

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

Vtable for QTranslator
QTranslator::_ZTV11QTranslator: 16 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 (0x0x7fdf07b928f0) 0
    vptr=((& QTranslator::_ZTV11QTranslator) + 16)
  QObject (0x0x7fdf07b83ea0) 0
      primary-for QTranslator (0x0x7fdf07b928f0)

Class QTransposeProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTransposeProxyModel::QPrivateSignal (0x0x7fdf07bab180) 0 empty

Vtable for QTransposeProxyModel
QTransposeProxyModel::_ZTV20QTransposeProxyModel: 53 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QTransposeProxyModel)
16    (int (*)(...))QTransposeProxyModel::metaObject
24    (int (*)(...))QTransposeProxyModel::qt_metacast
32    (int (*)(...))QTransposeProxyModel::qt_metacall
40    (int (*)(...))QTransposeProxyModel::~QTransposeProxyModel
48    (int (*)(...))QTransposeProxyModel::~QTransposeProxyModel
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 (*)(...))QTransposeProxyModel::index
120   (int (*)(...))QTransposeProxyModel::parent
128   (int (*)(...))QAbstractProxyModel::sibling
136   (int (*)(...))QTransposeProxyModel::rowCount
144   (int (*)(...))QTransposeProxyModel::columnCount
152   (int (*)(...))QAbstractProxyModel::hasChildren
160   (int (*)(...))QAbstractProxyModel::data
168   (int (*)(...))QAbstractProxyModel::setData
176   (int (*)(...))QTransposeProxyModel::headerData
184   (int (*)(...))QTransposeProxyModel::setHeaderData
192   (int (*)(...))QTransposeProxyModel::itemData
200   (int (*)(...))QTransposeProxyModel::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 (*)(...))QTransposeProxyModel::insertRows
264   (int (*)(...))QTransposeProxyModel::insertColumns
272   (int (*)(...))QTransposeProxyModel::removeRows
280   (int (*)(...))QTransposeProxyModel::removeColumns
288   (int (*)(...))QTransposeProxyModel::moveRows
296   (int (*)(...))QTransposeProxyModel::moveColumns
304   (int (*)(...))QAbstractProxyModel::fetchMore
312   (int (*)(...))QAbstractProxyModel::canFetchMore
320   (int (*)(...))QAbstractProxyModel::flags
328   (int (*)(...))QTransposeProxyModel::sort
336   (int (*)(...))QAbstractProxyModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QTransposeProxyModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractProxyModel::submit
376   (int (*)(...))QAbstractProxyModel::revert
384   (int (*)(...))QTransposeProxyModel::setSourceModel
392   (int (*)(...))QTransposeProxyModel::mapToSource
400   (int (*)(...))QTransposeProxyModel::mapFromSource
408   (int (*)(...))QAbstractProxyModel::mapSelectionToSource
416   (int (*)(...))QAbstractProxyModel::mapSelectionFromSource

Class QTransposeProxyModel
   size=16 align=8
   base size=16 base align=8
QTransposeProxyModel (0x0x7fdf07b92958) 0
    vptr=((& QTransposeProxyModel::_ZTV20QTransposeProxyModel) + 16)
  QAbstractProxyModel (0x0x7fdf07b929c0) 0
      primary-for QTransposeProxyModel (0x0x7fdf07b92958)
    QAbstractItemModel (0x0x7fdf07b92a28) 0
        primary-for QAbstractProxyModel (0x0x7fdf07b929c0)
      QObject (0x0x7fdf07bab120) 0
          primary-for QAbstractItemModel (0x0x7fdf07b92a28)

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

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

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

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

Class QXmlStreamAttributes
   size=8 align=8
   base size=8 base align=8
QXmlStreamAttributes (0x0x7fdf079520d0) 0
  QVector<QXmlStreamAttribute> (0x0x7fdf07938960) 0

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

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

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

Vtable for QXmlStreamEntityResolver
QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6 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 (0x0x7fdf0767dcc0) 0 nearly-empty
    vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 16)

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

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

Class QRgba64
   size=8 align=8
   base size=8 base align=8
QRgba64 (0x0x7fdf0770c240) 0

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

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

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

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

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

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

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

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

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

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

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

Class QMouseEvent
   size=104 align=8
   base size=100 base align=8
QMouseEvent (0x0x7fdf07267410) 0
    vptr=((& QMouseEvent::_ZTV11QMouseEvent) + 16)
  QInputEvent (0x0x7fdf07267478) 0
      primary-for QMouseEvent (0x0x7fdf07267410)
    QEvent (0x0x7fdf072a0de0) 0
        primary-for QInputEvent (0x0x7fdf07267478)

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

Class QHoverEvent
   size=64 align=8
   base size=64 base align=8
QHoverEvent (0x0x7fdf072674e0) 0
    vptr=((& QHoverEvent::_ZTV11QHoverEvent) + 16)
  QInputEvent (0x0x7fdf07267548) 0
      primary-for QHoverEvent (0x0x7fdf072674e0)
    QEvent (0x0x7fdf072ee300) 0
        primary-for QInputEvent (0x0x7fdf07267548)

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

Class QWheelEvent
   size=96 align=8
   base size=96 base align=8
QWheelEvent (0x0x7fdf072675b0) 0
    vptr=((& QWheelEvent::_ZTV11QWheelEvent) + 16)
  QInputEvent (0x0x7fdf07267618) 0
      primary-for QWheelEvent (0x0x7fdf072675b0)
    QEvent (0x0x7fdf072ee4e0) 0
        primary-for QInputEvent (0x0x7fdf07267618)

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

Class QTabletEvent
   size=128 align=8
   base size=128 base align=8
QTabletEvent (0x0x7fdf07267680) 0
    vptr=((& QTabletEvent::_ZTV12QTabletEvent) + 16)
  QInputEvent (0x0x7fdf072676e8) 0
      primary-for QTabletEvent (0x0x7fdf07267680)
    QEvent (0x0x7fdf072eeb40) 0
        primary-for QInputEvent (0x0x7fdf072676e8)

Vtable for QNativeGestureEvent
QNativeGestureEvent::_ZTV19QNativeGestureEvent: 4 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QNativeGestureEvent)
16    (int (*)(...))QNativeGestureEvent::~QNativeGestureEvent
24    (int (*)(...))QNativeGestureEvent::~QNativeGestureEvent

Class QNativeGestureEvent
   size=112 align=8
   base size=112 base align=8
QNativeGestureEvent (0x0x7fdf07267750) 0
    vptr=((& QNativeGestureEvent::_ZTV19QNativeGestureEvent) + 16)
  QInputEvent (0x0x7fdf072677b8) 0
      primary-for QNativeGestureEvent (0x0x7fdf07267750)
    QEvent (0x0x7fdf0732f480) 0
        primary-for QInputEvent (0x0x7fdf072677b8)

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

Class QKeyEvent
   size=64 align=8
   base size=59 base align=8
QKeyEvent (0x0x7fdf07267820) 0
    vptr=((& QKeyEvent::_ZTV9QKeyEvent) + 16)
  QInputEvent (0x0x7fdf07267888) 0
      primary-for QKeyEvent (0x0x7fdf07267820)
    QEvent (0x0x7fdf0732f780) 0
        primary-for QInputEvent (0x0x7fdf07267888)

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

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

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

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

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

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

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

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

Vtable for QPlatformSurfaceEvent
QPlatformSurfaceEvent::_ZTV21QPlatformSurfaceEvent: 4 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI21QPlatformSurfaceEvent)
16    (int (*)(...))QPlatformSurfaceEvent::~QPlatformSurfaceEvent
24    (int (*)(...))QPlatformSurfaceEvent::~QPlatformSurfaceEvent

Class QPlatformSurfaceEvent
   size=24 align=8
   base size=24 base align=8
QPlatformSurfaceEvent (0x0x7fdf07267a90) 0
    vptr=((& QPlatformSurfaceEvent::_ZTV21QPlatformSurfaceEvent) + 16)
  QEvent (0x0x7fdf0732fea0) 0
      primary-for QPlatformSurfaceEvent (0x0x7fdf07267a90)

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

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

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

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

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

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

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

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

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

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

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

Class QContextMenuEvent
   size=56 align=8
   base size=49 base align=8
QContextMenuEvent (0x0x7fdf07267d00) 0
    vptr=((& QContextMenuEvent::_ZTV17QContextMenuEvent) + 16)
  QInputEvent (0x0x7fdf07267d68) 0
      primary-for QContextMenuEvent (0x0x7fdf07267d00)
    QEvent (0x0x7fdf07373240) 0
        primary-for QInputEvent (0x0x7fdf07267d68)

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

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

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

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

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

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

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

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

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

Class QDragMoveEvent
   size=88 align=8
   base size=88 base align=8
QDragMoveEvent (0x0x7fdf0707a138) 0
    vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 16)
  QDropEvent (0x0x7fdf0707a1a0) 0
      primary-for QDragMoveEvent (0x0x7fdf0707a138)
    QEvent (0x0x7fdf0706fa20) 0
        primary-for QDropEvent (0x0x7fdf0707a1a0)

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

Class QDragEnterEvent
   size=88 align=8
   base size=88 base align=8
QDragEnterEvent (0x0x7fdf0707a208) 0
    vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 16)
  QDragMoveEvent (0x0x7fdf0707a270) 0
      primary-for QDragEnterEvent (0x0x7fdf0707a208)
    QDropEvent (0x0x7fdf0707a2d8) 0
        primary-for QDragMoveEvent (0x0x7fdf0707a270)
      QEvent (0x0x7fdf0706fc60) 0
          primary-for QDropEvent (0x0x7fdf0707a2d8)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Class QPointingDeviceUniqueId
   size=8 align=8
   base size=8 base align=8
QPointingDeviceUniqueId (0x0x7fdf0709f780) 0

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

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

Class QTouchEvent
   size=72 align=8
   base size=72 base align=8
QTouchEvent (0x0x7fdf070fcea0) 0
    vptr=((& QTouchEvent::_ZTV11QTouchEvent) + 16)
  QInputEvent (0x0x7fdf070fcf08) 0
      primary-for QTouchEvent (0x0x7fdf070fcea0)
    QEvent (0x0x7fdf070ffae0) 0
        primary-for QInputEvent (0x0x7fdf070fcf08)

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

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

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

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

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

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

Vtable for QApplicationStateChangeEvent
QApplicationStateChangeEvent::_ZTV28QApplicationStateChangeEvent: 4 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI28QApplicationStateChangeEvent)
16    (int (*)(...))QApplicationStateChangeEvent::~QApplicationStateChangeEvent
24    (int (*)(...))QApplicationStateChangeEvent::~QApplicationStateChangeEvent

Class QApplicationStateChangeEvent
   size=24 align=8
   base size=24 base align=8
QApplicationStateChangeEvent (0x0x7fdf06e10d00) 0
    vptr=((& QApplicationStateChangeEvent::_ZTV28QApplicationStateChangeEvent) + 16)
  QEvent (0x0x7fdf06e3e240) 0
      primary-for QApplicationStateChangeEvent (0x0x7fdf06e10d00)

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

Class QPolygon
   size=8 align=8
   base size=8 base align=8
QPolygon (0x0x7fdf06edc958) 0
  QVector<QPoint> (0x0x7fdf06ee1720) 0

Class QPolygonF
   size=8 align=8
   base size=8 base align=8
QPolygonF (0x0x7fdf06f6fc98) 0
  QVector<QPointF> (0x0x7fdf06f7e7e0) 0

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

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

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

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

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

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

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

Class QPixelFormat
   size=8 align=8
   base size=8 base align=8
QPixelFormat (0x0x7fdf06a7df60) 0

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

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

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

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

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

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

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

Class QLinearGradient
   size=64 align=8
   base size=64 base align=8
QLinearGradient (0x0x7fdf069aa6e8) 0
  QGradient (0x0x7fdf069b5a20) 0

Class QRadialGradient
   size=64 align=8
   base size=64 base align=8
QRadialGradient (0x0x7fdf069aa750) 0
  QGradient (0x0x7fdf069b5b40) 0

Class QConicalGradient
   size=64 align=8
   base size=64 base align=8
QConicalGradient (0x0x7fdf069aa7b8) 0
  QGradient (0x0x7fdf069b5c60) 0

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

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

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

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

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

Class QTextCharFormat
   size=16 align=8
   base size=12 base align=8
QTextCharFormat (0x0x7fdf06404888) 0
  QTextFormat (0x0x7fdf06431360) 0

Class QTextBlockFormat
   size=16 align=8
   base size=12 base align=8
QTextBlockFormat (0x0x7fdf064a3c98) 0
  QTextFormat (0x0x7fdf064a5d20) 0

Class QTextListFormat
   size=16 align=8
   base size=12 base align=8
QTextListFormat (0x0x7fdf06517208) 0
  QTextFormat (0x0x7fdf0650ba20) 0

Class QTextImageFormat
   size=16 align=8
   base size=12 base align=8
QTextImageFormat (0x0x7fdf06559618) 0
  QTextCharFormat (0x0x7fdf06559680) 0
    QTextFormat (0x0x7fdf065661e0) 0

Class QTextFrameFormat
   size=16 align=8
   base size=12 base align=8
QTextFrameFormat (0x0x7fdf0619bbc8) 0
  QTextFormat (0x0x7fdf061a5840) 0

Class QTextTableFormat
   size=16 align=8
   base size=12 base align=8
QTextTableFormat (0x0x7fdf06204138) 0
  QTextFrameFormat (0x0x7fdf062041a0) 0
    QTextFormat (0x0x7fdf06206480) 0

Class QTextTableCellFormat
   size=16 align=8
   base size=12 base align=8
QTextTableCellFormat (0x0x7fdf062556e8) 0
  QTextCharFormat (0x0x7fdf06255750) 0
    QTextFormat (0x0x7fdf0624cd20) 0

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

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

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

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

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

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

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

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

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

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

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

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

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

Class QPalette::Data
   size=4 align=4
   base size=4 base align=4
QPalette::Data (0x0x7fdf060d3d20) 0

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

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

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

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

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

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

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

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

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

Vtable for QAccessible::ActivationObserver
QAccessible::ActivationObserver::_ZTVN11QAccessible18ActivationObserverE: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN11QAccessible18ActivationObserverE)
16    0
24    0
32    (int (*)(...))__cxa_pure_virtual

Class QAccessible::ActivationObserver
   size=8 align=8
   base size=8 base align=8
QAccessible::ActivationObserver (0x0x7fdf05ef6060) 0 nearly-empty
    vptr=((& QAccessible::ActivationObserver::_ZTVN11QAccessible18ActivationObserverE) + 16)

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

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

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

Vtable for QAccessibleTextInterface
QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI24QAccessibleTextInterface)
16    0
24    0
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual
72    (int (*)(...))__cxa_pure_virtual
80    (int (*)(...))__cxa_pure_virtual
88    (int (*)(...))__cxa_pure_virtual
96    (int (*)(...))QAccessibleTextInterface::textBeforeOffset
104   (int (*)(...))QAccessibleTextInterface::textAfterOffset
112   (int (*)(...))QAccessibleTextInterface::textAtOffset
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

Class QAccessibleTextInterface
   size=8 align=8
   base size=8 base align=8
QAccessibleTextInterface (0x0x7fdf05ef6f60) 0 nearly-empty
    vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 16)

Vtable for QAccessibleEditableTextInterface
QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
16    0
24    0
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual

Class QAccessibleEditableTextInterface
   size=8 align=8
   base size=8 base align=8
QAccessibleEditableTextInterface (0x0x7fdf05f55000) 0 nearly-empty
    vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 16)

Vtable for QAccessibleValueInterface
QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI25QAccessibleValueInterface)
16    0
24    0
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual

Class QAccessibleValueInterface
   size=8 align=8
   base size=8 base align=8
QAccessibleValueInterface (0x0x7fdf05f55060) 0 nearly-empty
    vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 16)

Vtable for QAccessibleTableCellInterface
QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 12 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
16    0
24    0
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual
72    (int (*)(...))__cxa_pure_virtual
80    (int (*)(...))__cxa_pure_virtual
88    (int (*)(...))__cxa_pure_virtual

Class QAccessibleTableCellInterface
   size=8 align=8
   base size=8 base align=8
QAccessibleTableCellInterface (0x0x7fdf05f550c0) 0 nearly-empty
    vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 16)

Vtable for QAccessibleTableInterface
QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 24 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI25QAccessibleTableInterface)
16    0
24    0
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual
72    (int (*)(...))__cxa_pure_virtual
80    (int (*)(...))__cxa_pure_virtual
88    (int (*)(...))__cxa_pure_virtual
96    (int (*)(...))__cxa_pure_virtual
104   (int (*)(...))__cxa_pure_virtual
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))__cxa_pure_virtual
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))__cxa_pure_virtual
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))__cxa_pure_virtual
176   (int (*)(...))__cxa_pure_virtual
184   (int (*)(...))__cxa_pure_virtual

Class QAccessibleTableInterface
   size=8 align=8
   base size=8 base align=8
QAccessibleTableInterface (0x0x7fdf05f55120) 0 nearly-empty
    vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 16)

Vtable for QAccessibleActionInterface
QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI26QAccessibleActionInterface)
16    0
24    0
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))QAccessibleActionInterface::localizedActionName
48    (int (*)(...))QAccessibleActionInterface::localizedActionDescription
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual

Class QAccessibleActionInterface
   size=8 align=8
   base size=8 base align=8
QAccessibleActionInterface (0x0x7fdf05f55180) 0 nearly-empty
    vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 16)

Vtable for QAccessibleImageInterface
QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI25QAccessibleImageInterface)
16    0
24    0
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual

Class QAccessibleImageInterface
   size=8 align=8
   base size=8 base align=8
QAccessibleImageInterface (0x0x7fdf05f552a0) 0 nearly-empty
    vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 16)

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

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

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

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

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

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

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

Class QAccessibleTextSelectionEvent
   size=40 align=8
   base size=40 base align=8
QAccessibleTextSelectionEvent (0x0x7fdf05f12680) 0
    vptr=((& QAccessibleTextSelectionEvent::_ZTV29QAccessibleTextSelectionEvent) + 16)
  QAccessibleTextCursorEvent (0x0x7fdf05f126e8) 0
      primary-for QAccessibleTextSelectionEvent (0x0x7fdf05f12680)
    QAccessibleEvent (0x0x7fdf05bd54e0) 0
        primary-for QAccessibleTextCursorEvent (0x0x7fdf05f126e8)

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

Class QAccessibleTextInsertEvent
   size=48 align=8
   base size=48 base align=8
QAccessibleTextInsertEvent (0x0x7fdf05f12750) 0
    vptr=((& QAccessibleTextInsertEvent::_ZTV26QAccessibleTextInsertEvent) + 16)
  QAccessibleTextCursorEvent (0x0x7fdf05f127b8) 0
      primary-for QAccessibleTextInsertEvent (0x0x7fdf05f12750)
    QAccessibleEvent (0x0x7fdf05bd5960) 0
        primary-for QAccessibleTextCursorEvent (0x0x7fdf05f127b8)

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

Class QAccessibleTextRemoveEvent
   size=48 align=8
   base size=48 base align=8
QAccessibleTextRemoveEvent (0x0x7fdf05f12820) 0
    vptr=((& QAccessibleTextRemoveEvent::_ZTV26QAccessibleTextRemoveEvent) + 16)
  QAccessibleTextCursorEvent (0x0x7fdf05f12888) 0
      primary-for QAccessibleTextRemoveEvent (0x0x7fdf05f12820)
    QAccessibleEvent (0x0x7fdf05bd5d80) 0
        primary-for QAccessibleTextCursorEvent (0x0x7fdf05f12888)

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

Class QAccessibleTextUpdateEvent
   size=56 align=8
   base size=56 base align=8
QAccessibleTextUpdateEvent (0x0x7fdf05f128f0) 0
    vptr=((& QAccessibleTextUpdateEvent::_ZTV26QAccessibleTextUpdateEvent) + 16)
  QAccessibleTextCursorEvent (0x0x7fdf05f12958) 0
      primary-for QAccessibleTextUpdateEvent (0x0x7fdf05f128f0)
    QAccessibleEvent (0x0x7fdf05c041e0) 0
        primary-for QAccessibleTextCursorEvent (0x0x7fdf05f12958)

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

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

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

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

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

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

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

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

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

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

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

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

Class QAccessibleApplication
   size=16 align=8
   base size=16 base align=8
QAccessibleApplication (0x0x7fdf05f12b60) 0
    vptr=((& QAccessibleApplication::_ZTV22QAccessibleApplication) + 16)
  QAccessibleObject (0x0x7fdf05f12bc8) 0
      primary-for QAccessibleApplication (0x0x7fdf05f12b60)
    QAccessibleInterface (0x0x7fdf05c33780) 0 nearly-empty
        primary-for QAccessibleObject (0x0x7fdf05f12bc8)

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

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

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

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

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

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

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

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

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

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

Class QWindow
   size=40 align=8
   base size=40 base align=8
QWindow (0x0x7fdf05a3bc40) 0
    vptr=((& QWindow::_ZTV7QWindow) + 16)
  QObject (0x0x7fdf05a4c120) 0
      primary-for QWindow (0x0x7fdf05a3bc40)
  QSurface (0x0x7fdf05a4c180) 16
      vptr=((& QWindow::_ZTV7QWindow) + 312)

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

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

Class QBitmap
   size=32 align=8
   base size=32 base align=8
QBitmap (0x0x7fdf05a2ef08) 0
    vptr=((& QBitmap::_ZTV7QBitmap) + 16)
  QPixmap (0x0x7fdf05a2ef70) 0
      primary-for QBitmap (0x0x7fdf05a2ef08)
    QPaintDevice (0x0x7fdf05a4cb40) 0
        primary-for QPixmap (0x0x7fdf05a2ef70)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Class QGuiApplication
   size=16 align=8
   base size=16 base align=8
QGuiApplication (0x0x7fdf057e8f08) 0
    vptr=((& QGuiApplication::_ZTV15QGuiApplication) + 16)
  QCoreApplication (0x0x7fdf057e8f70) 0
      primary-for QGuiApplication (0x0x7fdf057e8f08)
    QObject (0x0x7fdf058d0d80) 0
        primary-for QCoreApplication (0x0x7fdf057e8f70)

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

Class QIconEngine::ScaledPixmapArgument
   size=56 align=8
   base size=56 base align=8
QIconEngine::ScaledPixmapArgument (0x0x7fdf05961720) 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Class QOffscreenSurface::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QOffscreenSurface::QPrivateSignal (0x0x7fdf0554c540) 0 empty

Vtable for QOffscreenSurface
QOffscreenSurface::_ZTV17QOffscreenSurface: 26 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QOffscreenSurface)
16    (int (*)(...))QOffscreenSurface::metaObject
24    (int (*)(...))QOffscreenSurface::qt_metacast
32    (int (*)(...))QOffscreenSurface::qt_metacall
40    (int (*)(...))QOffscreenSurface::~QOffscreenSurface
48    (int (*)(...))QOffscreenSurface::~QOffscreenSurface
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 (*)(...))QOffscreenSurface::surfaceType
120   (int (*)(...))QOffscreenSurface::format
128   (int (*)(...))QOffscreenSurface::size
136   (int (*)(...))QOffscreenSurface::surfaceHandle
144   (int (*)(...))-16
152   (int (*)(...))(& _ZTI17QOffscreenSurface)
160   (int (*)(...))QOffscreenSurface::_ZThn16_N17QOffscreenSurfaceD1Ev
168   (int (*)(...))QOffscreenSurface::_ZThn16_N17QOffscreenSurfaceD0Ev
176   (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface6formatEv
184   (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface13surfaceHandleEv
192   (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface11surfaceTypeEv
200   (int (*)(...))QOffscreenSurface::_ZThn16_NK17QOffscreenSurface4sizeEv

Class QOffscreenSurface
   size=40 align=8
   base size=40 base align=8
QOffscreenSurface (0x0x7fdf0544ba80) 0
    vptr=((& QOffscreenSurface::_ZTV17QOffscreenSurface) + 16)
  QObject (0x0x7fdf0554c480) 0
      primary-for QOffscreenSurface (0x0x7fdf0544ba80)
  QSurface (0x0x7fdf0554c4e0) 16
      vptr=((& QOffscreenSurface::_ZTV17QOffscreenSurface) + 160)

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

Class QOpenGLVersionStatus
   size=12 align=4
   base size=12 base align=4
QOpenGLVersionStatus (0x0x7fdf04dc9000) 0

Class QOpenGLVersionFunctionsBackend
   size=16 align=8
   base size=12 base align=8
QOpenGLVersionFunctionsBackend (0x0x7fdf04dfcba0) 0

Class QOpenGLVersionFunctionsStorage
   size=8 align=8
   base size=8 base align=8
QOpenGLVersionFunctionsStorage (0x0x7fdf04dfcd80) 0

Class QAbstractOpenGLFunctionsPrivate
   size=16 align=8
   base size=9 base align=8
QAbstractOpenGLFunctionsPrivate (0x0x7fdf04dfcde0) 0

Vtable for QAbstractOpenGLFunctions
QAbstractOpenGLFunctions::_ZTV24QAbstractOpenGLFunctions: 5 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI24QAbstractOpenGLFunctions)
16    (int (*)(...))QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions
24    (int (*)(...))QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions
32    (int (*)(...))QAbstractOpenGLFunctions::initializeOpenGLFunctions

Class QAbstractOpenGLFunctions
   size=16 align=8
   base size=16 base align=8
QAbstractOpenGLFunctions (0x0x7fdf04e28000) 0
    vptr=((& QAbstractOpenGLFunctions::_ZTV24QAbstractOpenGLFunctions) + 16)

Class QOpenGLFunctions_1_0_CoreBackend::Functions
   size=384 align=8
   base size=384 base align=8
QOpenGLFunctions_1_0_CoreBackend::Functions (0x0x7fdf04e281e0) 0

Class QOpenGLFunctions_1_0_CoreBackend
   size=400 align=8
   base size=400 base align=8
QOpenGLFunctions_1_0_CoreBackend (0x0x7fdf04dfebc8) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04e28180) 0

Class QOpenGLFunctions_1_1_CoreBackend::Functions
   size=128 align=8
   base size=128 base align=8
QOpenGLFunctions_1_1_CoreBackend::Functions (0x0x7fdf04e284e0) 0

Class QOpenGLFunctions_1_1_CoreBackend
   size=144 align=8
   base size=144 base align=8
QOpenGLFunctions_1_1_CoreBackend (0x0x7fdf04dfec30) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04e28480) 0

Class QOpenGLFunctions_1_2_CoreBackend::Functions
   size=48 align=8
   base size=48 base align=8
QOpenGLFunctions_1_2_CoreBackend::Functions (0x0x7fdf04e287e0) 0

Class QOpenGLFunctions_1_2_CoreBackend
   size=64 align=8
   base size=64 base align=8
QOpenGLFunctions_1_2_CoreBackend (0x0x7fdf04dfec98) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04e28780) 0

Class QOpenGLFunctions_1_3_CoreBackend::Functions
   size=72 align=8
   base size=72 base align=8
QOpenGLFunctions_1_3_CoreBackend::Functions (0x0x7fdf04e28ae0) 0

Class QOpenGLFunctions_1_3_CoreBackend
   size=88 align=8
   base size=88 base align=8
QOpenGLFunctions_1_3_CoreBackend (0x0x7fdf04dfed00) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04e28a80) 0

Class QOpenGLFunctions_1_4_CoreBackend::Functions
   size=56 align=8
   base size=56 base align=8
QOpenGLFunctions_1_4_CoreBackend::Functions (0x0x7fdf04e28e40) 0

Class QOpenGLFunctions_1_4_CoreBackend
   size=72 align=8
   base size=72 base align=8
QOpenGLFunctions_1_4_CoreBackend (0x0x7fdf04dfed68) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04e28de0) 0

Class QOpenGLFunctions_1_5_CoreBackend::Functions
   size=152 align=8
   base size=152 base align=8
QOpenGLFunctions_1_5_CoreBackend::Functions (0x0x7fdf04e63180) 0

Class QOpenGLFunctions_1_5_CoreBackend
   size=168 align=8
   base size=168 base align=8
QOpenGLFunctions_1_5_CoreBackend (0x0x7fdf04dfedd0) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04e63120) 0

Class QOpenGLFunctions_2_0_CoreBackend::Functions
   size=744 align=8
   base size=744 base align=8
QOpenGLFunctions_2_0_CoreBackend::Functions (0x0x7fdf04e63480) 0

Class QOpenGLFunctions_2_0_CoreBackend
   size=760 align=8
   base size=760 base align=8
QOpenGLFunctions_2_0_CoreBackend (0x0x7fdf04dfee38) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04e63420) 0

Class QOpenGLFunctions_2_1_CoreBackend::Functions
   size=48 align=8
   base size=48 base align=8
QOpenGLFunctions_2_1_CoreBackend::Functions (0x0x7fdf04e63780) 0

Class QOpenGLFunctions_2_1_CoreBackend
   size=64 align=8
   base size=64 base align=8
QOpenGLFunctions_2_1_CoreBackend (0x0x7fdf04dfeea0) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04e63720) 0

Class QOpenGLFunctions_3_0_CoreBackend::Functions
   size=672 align=8
   base size=672 base align=8
QOpenGLFunctions_3_0_CoreBackend::Functions (0x0x7fdf04e63a80) 0

Class QOpenGLFunctions_3_0_CoreBackend
   size=688 align=8
   base size=688 base align=8
QOpenGLFunctions_3_0_CoreBackend (0x0x7fdf04dfef08) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04e63a20) 0

Class QOpenGLFunctions_3_1_CoreBackend::Functions
   size=96 align=8
   base size=96 base align=8
QOpenGLFunctions_3_1_CoreBackend::Functions (0x0x7fdf04e63d80) 0

Class QOpenGLFunctions_3_1_CoreBackend
   size=112 align=8
   base size=112 base align=8
QOpenGLFunctions_3_1_CoreBackend (0x0x7fdf04dfef70) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04e63d20) 0

Class QOpenGLFunctions_3_2_CoreBackend::Functions
   size=152 align=8
   base size=152 base align=8
QOpenGLFunctions_3_2_CoreBackend::Functions (0x0x7fdf04eb30c0) 0

Class QOpenGLFunctions_3_2_CoreBackend
   size=168 align=8
   base size=168 base align=8
QOpenGLFunctions_3_2_CoreBackend (0x0x7fdf04eb4000) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04eb3060) 0

Class QOpenGLFunctions_3_3_CoreBackend::Functions
   size=464 align=8
   base size=464 base align=8
QOpenGLFunctions_3_3_CoreBackend::Functions (0x0x7fdf04eb33c0) 0

Class QOpenGLFunctions_3_3_CoreBackend
   size=480 align=8
   base size=480 base align=8
QOpenGLFunctions_3_3_CoreBackend (0x0x7fdf04eb4068) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04eb3360) 0

Class QOpenGLFunctions_4_0_CoreBackend::Functions
   size=368 align=8
   base size=368 base align=8
QOpenGLFunctions_4_0_CoreBackend::Functions (0x0x7fdf04eb36c0) 0

Class QOpenGLFunctions_4_0_CoreBackend
   size=384 align=8
   base size=384 base align=8
QOpenGLFunctions_4_0_CoreBackend (0x0x7fdf04eb40d0) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04eb3660) 0

Class QOpenGLFunctions_4_1_CoreBackend::Functions
   size=704 align=8
   base size=704 base align=8
QOpenGLFunctions_4_1_CoreBackend::Functions (0x0x7fdf04eb39c0) 0

Class QOpenGLFunctions_4_1_CoreBackend
   size=720 align=8
   base size=720 base align=8
QOpenGLFunctions_4_1_CoreBackend (0x0x7fdf04eb4138) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04eb3960) 0

Class QOpenGLFunctions_4_2_CoreBackend::Functions
   size=96 align=8
   base size=96 base align=8
QOpenGLFunctions_4_2_CoreBackend::Functions (0x0x7fdf04eb3cc0) 0

Class QOpenGLFunctions_4_2_CoreBackend
   size=112 align=8
   base size=112 base align=8
QOpenGLFunctions_4_2_CoreBackend (0x0x7fdf04eb41a0) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04eb3c60) 0

Class QOpenGLFunctions_4_3_CoreBackend::Functions
   size=344 align=8
   base size=344 base align=8
QOpenGLFunctions_4_3_CoreBackend::Functions (0x0x7fdf04f0a000) 0

Class QOpenGLFunctions_4_3_CoreBackend
   size=360 align=8
   base size=360 base align=8
QOpenGLFunctions_4_3_CoreBackend (0x0x7fdf04eb4208) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04eb3f60) 0

Class QOpenGLFunctions_4_4_CoreBackend::Functions
   size=72 align=8
   base size=72 base align=8
QOpenGLFunctions_4_4_CoreBackend::Functions (0x0x7fdf04f0a300) 0

Class QOpenGLFunctions_4_4_CoreBackend
   size=88 align=8
   base size=88 base align=8
QOpenGLFunctions_4_4_CoreBackend (0x0x7fdf04eb4270) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04f0a2a0) 0

Class QOpenGLFunctions_4_5_CoreBackend::Functions
   size=848 align=8
   base size=848 base align=8
QOpenGLFunctions_4_5_CoreBackend::Functions (0x0x7fdf04f0a660) 0

Class QOpenGLFunctions_4_5_CoreBackend
   size=864 align=8
   base size=864 base align=8
QOpenGLFunctions_4_5_CoreBackend (0x0x7fdf04eb42d8) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04f0a600) 0

Class QOpenGLFunctions_1_0_DeprecatedBackend::Functions
   size=2064 align=8
   base size=2064 base align=8
QOpenGLFunctions_1_0_DeprecatedBackend::Functions (0x0x7fdf04f0a960) 0

Class QOpenGLFunctions_1_0_DeprecatedBackend
   size=2080 align=8
   base size=2080 base align=8
QOpenGLFunctions_1_0_DeprecatedBackend (0x0x7fdf04eb4340) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04f0a900) 0

Class QOpenGLFunctions_1_1_DeprecatedBackend::Functions
   size=136 align=8
   base size=136 base align=8
QOpenGLFunctions_1_1_DeprecatedBackend::Functions (0x0x7fdf04f0ac60) 0

Class QOpenGLFunctions_1_1_DeprecatedBackend
   size=152 align=8
   base size=152 base align=8
QOpenGLFunctions_1_1_DeprecatedBackend (0x0x7fdf04eb43a8) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04f0ac00) 0

Class QOpenGLFunctions_1_2_DeprecatedBackend::Functions
   size=256 align=8
   base size=256 base align=8
QOpenGLFunctions_1_2_DeprecatedBackend::Functions (0x0x7fdf04f0af60) 0

Class QOpenGLFunctions_1_2_DeprecatedBackend
   size=272 align=8
   base size=272 base align=8
QOpenGLFunctions_1_2_DeprecatedBackend (0x0x7fdf04eb4410) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04f0af00) 0

Class QOpenGLFunctions_1_3_DeprecatedBackend::Functions
   size=296 align=8
   base size=296 base align=8
QOpenGLFunctions_1_3_DeprecatedBackend::Functions (0x0x7fdf04b9e2a0) 0

Class QOpenGLFunctions_1_3_DeprecatedBackend
   size=312 align=8
   base size=312 base align=8
QOpenGLFunctions_1_3_DeprecatedBackend (0x0x7fdf04eb4478) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04b9e240) 0

Class QOpenGLFunctions_1_4_DeprecatedBackend::Functions
   size=304 align=8
   base size=304 base align=8
QOpenGLFunctions_1_4_DeprecatedBackend::Functions (0x0x7fdf04b9e5a0) 0

Class QOpenGLFunctions_1_4_DeprecatedBackend
   size=320 align=8
   base size=320 base align=8
QOpenGLFunctions_1_4_DeprecatedBackend (0x0x7fdf04eb44e0) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04b9e540) 0

Class QOpenGLFunctions_2_0_DeprecatedBackend::Functions
   size=288 align=8
   base size=288 base align=8
QOpenGLFunctions_2_0_DeprecatedBackend::Functions (0x0x7fdf04b9e8a0) 0

Class QOpenGLFunctions_2_0_DeprecatedBackend
   size=304 align=8
   base size=304 base align=8
QOpenGLFunctions_2_0_DeprecatedBackend (0x0x7fdf04eb4548) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04b9e840) 0

Class QOpenGLFunctions_3_0_DeprecatedBackend::Functions
   size=160 align=8
   base size=160 base align=8
QOpenGLFunctions_3_0_DeprecatedBackend::Functions (0x0x7fdf04b9eba0) 0

Class QOpenGLFunctions_3_0_DeprecatedBackend
   size=176 align=8
   base size=176 base align=8
QOpenGLFunctions_3_0_DeprecatedBackend (0x0x7fdf04eb45b0) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04b9eb40) 0

Class QOpenGLFunctions_3_3_DeprecatedBackend::Functions
   size=240 align=8
   base size=240 base align=8
QOpenGLFunctions_3_3_DeprecatedBackend::Functions (0x0x7fdf04b9eea0) 0

Class QOpenGLFunctions_3_3_DeprecatedBackend
   size=256 align=8
   base size=256 base align=8
QOpenGLFunctions_3_3_DeprecatedBackend (0x0x7fdf04eb4618) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04b9ee40) 0

Class QOpenGLFunctions_4_5_DeprecatedBackend::Functions
   size=96 align=8
   base size=96 base align=8
QOpenGLFunctions_4_5_DeprecatedBackend::Functions (0x0x7fdf04bdf1e0) 0

Class QOpenGLFunctions_4_5_DeprecatedBackend
   size=112 align=8
   base size=112 base align=8
QOpenGLFunctions_4_5_DeprecatedBackend (0x0x7fdf04eb4680) 0
  QOpenGLVersionFunctionsBackend (0x0x7fdf04bdf180) 0

Class QOpenGLVersionProfile
   size=8 align=8
   base size=8 base align=8
QOpenGLVersionProfile (0x0x7fdf04bdf480) 0

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

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

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

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

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

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

Class QOpenGLDebugMessage
   size=8 align=8
   base size=8 base align=8
QOpenGLDebugMessage (0x0x7fdf04c1a420) 0

Class QOpenGLDebugLogger::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QOpenGLDebugLogger::QPrivateSignal (0x0x7fdf04cd1ba0) 0 empty

Vtable for QOpenGLDebugLogger
QOpenGLDebugLogger::_ZTV18QOpenGLDebugLogger: 14 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QOpenGLDebugLogger)
16    (int (*)(...))QOpenGLDebugLogger::metaObject
24    (int (*)(...))QOpenGLDebugLogger::qt_metacast
32    (int (*)(...))QOpenGLDebugLogger::qt_metacall
40    (int (*)(...))QOpenGLDebugLogger::~QOpenGLDebugLogger
48    (int (*)(...))QOpenGLDebugLogger::~QOpenGLDebugLogger
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 QOpenGLDebugLogger
   size=16 align=8
   base size=16 base align=8
QOpenGLDebugLogger (0x0x7fdf04c81b60) 0
    vptr=((& QOpenGLDebugLogger::_ZTV18QOpenGLDebugLogger) + 16)
  QObject (0x0x7fdf04cd1b40) 0
      primary-for QOpenGLDebugLogger (0x0x7fdf04c81b60)

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

Class QOpenGLFunctionsPrivate::Functions
   size=1152 align=8
   base size=1152 base align=8
QOpenGLFunctionsPrivate::Functions (0x0x7fdf04d2a9c0) 0

Class QOpenGLFunctionsPrivate
   size=1152 align=8
   base size=1152 base align=8
QOpenGLFunctionsPrivate (0x0x7fdf04d2a960) 0

Class QOpenGLExtraFunctions
   size=8 align=8
   base size=8 base align=8
QOpenGLExtraFunctions (0x0x7fdf04c81f08) 0
  QOpenGLFunctions (0x0x7fdf04a75780) 0

Class QOpenGLExtraFunctionsPrivate::Functions
   size=1728 align=8
   base size=1728 base align=8
QOpenGLExtraFunctionsPrivate::Functions (0x0x7fdf04a75ae0) 0

Class QOpenGLExtraFunctionsPrivate
   size=2880 align=8
   base size=2880 base align=8
QOpenGLExtraFunctionsPrivate (0x0x7fdf04c81f70) 0
  QOpenGLFunctionsPrivate (0x0x7fdf04a75a80) 0

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

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

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

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

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

Class QOpenGLPixelTransferOptions
   size=8 align=8
   base size=8 base align=8
QOpenGLPixelTransferOptions (0x0x7fdf04853ae0) 0

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

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

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

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

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

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

Class QOpenGLTexture
   size=8 align=8
   base size=8 base align=8
QOpenGLTexture (0x0x7fdf04923420) 0

Class QOpenGLTextureBlitter
   size=8 align=8
   base size=8 base align=8
QOpenGLTextureBlitter (0x0x7fdf045d9900) 0

Class QOpenGLTimerQuery::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QOpenGLTimerQuery::QPrivateSignal (0x0x7fdf045d9b40) 0 empty

Vtable for QOpenGLTimerQuery
QOpenGLTimerQuery::_ZTV17QOpenGLTimerQuery: 14 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QOpenGLTimerQuery)
16    (int (*)(...))QOpenGLTimerQuery::metaObject
24    (int (*)(...))QOpenGLTimerQuery::qt_metacast
32    (int (*)(...))QOpenGLTimerQuery::qt_metacall
40    (int (*)(...))QOpenGLTimerQuery::~QOpenGLTimerQuery
48    (int (*)(...))QOpenGLTimerQuery::~QOpenGLTimerQuery
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 QOpenGLTimerQuery
   size=16 align=8
   base size=16 base align=8
QOpenGLTimerQuery (0x0x7fdf045e20d0) 0
    vptr=((& QOpenGLTimerQuery::_ZTV17QOpenGLTimerQuery) + 16)
  QObject (0x0x7fdf045d9ae0) 0
      primary-for QOpenGLTimerQuery (0x0x7fdf045e20d0)

Class QOpenGLTimeMonitor::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QOpenGLTimeMonitor::QPrivateSignal (0x0x7fdf045d9d80) 0 empty

Vtable for QOpenGLTimeMonitor
QOpenGLTimeMonitor::_ZTV18QOpenGLTimeMonitor: 14 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QOpenGLTimeMonitor)
16    (int (*)(...))QOpenGLTimeMonitor::metaObject
24    (int (*)(...))QOpenGLTimeMonitor::qt_metacast
32    (int (*)(...))QOpenGLTimeMonitor::qt_metacall
40    (int (*)(...))QOpenGLTimeMonitor::~QOpenGLTimeMonitor
48    (int (*)(...))QOpenGLTimeMonitor::~QOpenGLTimeMonitor
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 QOpenGLTimeMonitor
   size=16 align=8
   base size=16 base align=8
QOpenGLTimeMonitor (0x0x7fdf045e2138) 0
    vptr=((& QOpenGLTimeMonitor::_ZTV18QOpenGLTimeMonitor) + 16)
  QObject (0x0x7fdf045d9d20) 0
      primary-for QOpenGLTimeMonitor (0x0x7fdf045e2138)

Class QOpenGLVertexArrayObject::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QOpenGLVertexArrayObject::QPrivateSignal (0x0x7fdf0463a000) 0 empty

Class QOpenGLVertexArrayObject::Binder
   size=8 align=8
   base size=8 base align=8
QOpenGLVertexArrayObject::Binder (0x0x7fdf0463a060) 0

Vtable for QOpenGLVertexArrayObject
QOpenGLVertexArrayObject::_ZTV24QOpenGLVertexArrayObject: 14 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI24QOpenGLVertexArrayObject)
16    (int (*)(...))QOpenGLVertexArrayObject::metaObject
24    (int (*)(...))QOpenGLVertexArrayObject::qt_metacast
32    (int (*)(...))QOpenGLVertexArrayObject::qt_metacall
40    (int (*)(...))QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject
48    (int (*)(...))QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject
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 QOpenGLVertexArrayObject
   size=16 align=8
   base size=16 base align=8
QOpenGLVertexArrayObject (0x0x7fdf045e21a0) 0
    vptr=((& QOpenGLVertexArrayObject::_ZTV24QOpenGLVertexArrayObject) + 16)
  QObject (0x0x7fdf045d9f60) 0
      primary-for QOpenGLVertexArrayObject (0x0x7fdf045e21a0)

Class QPaintDeviceWindow::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPaintDeviceWindow::QPrivateSignal (0x0x7fdf0463a720) 0 empty

Vtable for QPaintDeviceWindow
QPaintDeviceWindow::_ZTV18QPaintDeviceWindow: 58 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QPaintDeviceWindow)
16    (int (*)(...))QPaintDeviceWindow::metaObject
24    (int (*)(...))QPaintDeviceWindow::qt_metacast
32    (int (*)(...))QPaintDeviceWindow::qt_metacall
40    (int (*)(...))QPaintDeviceWindow::~QPaintDeviceWindow
48    (int (*)(...))QPaintDeviceWindow::~QPaintDeviceWindow
56    (int (*)(...))QPaintDeviceWindow::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QWindow::surfaceType
120   (int (*)(...))QWindow::format
128   (int (*)(...))QWindow::size
136   (int (*)(...))QWindow::accessibleRoot
144   (int (*)(...))QWindow::focusObject
152   (int (*)(...))QPaintDeviceWindow::exposeEvent
160   (int (*)(...))QWindow::resizeEvent
168   (int (*)(...))QWindow::moveEvent
176   (int (*)(...))QWindow::focusInEvent
184   (int (*)(...))QWindow::focusOutEvent
192   (int (*)(...))QWindow::showEvent
200   (int (*)(...))QWindow::hideEvent
208   (int (*)(...))QWindow::keyPressEvent
216   (int (*)(...))QWindow::keyReleaseEvent
224   (int (*)(...))QWindow::mousePressEvent
232   (int (*)(...))QWindow::mouseReleaseEvent
240   (int (*)(...))QWindow::mouseDoubleClickEvent
248   (int (*)(...))QWindow::mouseMoveEvent
256   (int (*)(...))QWindow::wheelEvent
264   (int (*)(...))QWindow::touchEvent
272   (int (*)(...))QWindow::tabletEvent
280   (int (*)(...))QWindow::nativeEvent
288   (int (*)(...))QWindow::surfaceHandle
296   (int (*)(...))QPaintDeviceWindow::paintEvent
304   (int (*)(...))QPaintDeviceWindow::metric
312   (int (*)(...))QPaintDeviceWindow::paintEngine
320   (int (*)(...))-16
328   (int (*)(...))(& _ZTI18QPaintDeviceWindow)
336   (int (*)(...))QPaintDeviceWindow::_ZThn16_N18QPaintDeviceWindowD1Ev
344   (int (*)(...))QPaintDeviceWindow::_ZThn16_N18QPaintDeviceWindowD0Ev
352   (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
360   (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
368   (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
376   (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
384   (int (*)(...))-40
392   (int (*)(...))(& _ZTI18QPaintDeviceWindow)
400   (int (*)(...))QPaintDeviceWindow::_ZThn40_N18QPaintDeviceWindowD1Ev
408   (int (*)(...))QPaintDeviceWindow::_ZThn40_N18QPaintDeviceWindowD0Ev
416   (int (*)(...))QPaintDevice::devType
424   (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
432   (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow6metricEN12QPaintDevice17PaintDeviceMetricE
440   (int (*)(...))QPaintDevice::initPainter
448   (int (*)(...))QPaintDevice::redirected
456   (int (*)(...))QPaintDevice::sharedPainter

Class QPaintDeviceWindow
   size=64 align=8
   base size=64 base align=8
QPaintDeviceWindow (0x0x7fdf0464b0e0) 0
    vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 16)
  QWindow (0x0x7fdf0464b150) 0
      primary-for QPaintDeviceWindow (0x0x7fdf0464b0e0)
    QObject (0x0x7fdf0463a600) 0
        primary-for QWindow (0x0x7fdf0464b150)
    QSurface (0x0x7fdf0463a660) 16
        vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 336)
  QPaintDevice (0x0x7fdf0463a6c0) 40
      vptr=((& QPaintDeviceWindow::_ZTV18QPaintDeviceWindow) + 400)

Class QOpenGLWindow::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QOpenGLWindow::QPrivateSignal (0x0x7fdf0463aa20) 0 empty

Vtable for QOpenGLWindow
QOpenGLWindow::_ZTV13QOpenGLWindow: 64 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QOpenGLWindow)
16    (int (*)(...))QOpenGLWindow::metaObject
24    (int (*)(...))QOpenGLWindow::qt_metacast
32    (int (*)(...))QOpenGLWindow::qt_metacall
40    (int (*)(...))QOpenGLWindow::~QOpenGLWindow
48    (int (*)(...))QOpenGLWindow::~QOpenGLWindow
56    (int (*)(...))QPaintDeviceWindow::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QWindow::surfaceType
120   (int (*)(...))QWindow::format
128   (int (*)(...))QWindow::size
136   (int (*)(...))QWindow::accessibleRoot
144   (int (*)(...))QWindow::focusObject
152   (int (*)(...))QPaintDeviceWindow::exposeEvent
160   (int (*)(...))QOpenGLWindow::resizeEvent
168   (int (*)(...))QWindow::moveEvent
176   (int (*)(...))QWindow::focusInEvent
184   (int (*)(...))QWindow::focusOutEvent
192   (int (*)(...))QWindow::showEvent
200   (int (*)(...))QWindow::hideEvent
208   (int (*)(...))QWindow::keyPressEvent
216   (int (*)(...))QWindow::keyReleaseEvent
224   (int (*)(...))QWindow::mousePressEvent
232   (int (*)(...))QWindow::mouseReleaseEvent
240   (int (*)(...))QWindow::mouseDoubleClickEvent
248   (int (*)(...))QWindow::mouseMoveEvent
256   (int (*)(...))QWindow::wheelEvent
264   (int (*)(...))QWindow::touchEvent
272   (int (*)(...))QWindow::tabletEvent
280   (int (*)(...))QWindow::nativeEvent
288   (int (*)(...))QWindow::surfaceHandle
296   (int (*)(...))QOpenGLWindow::paintEvent
304   (int (*)(...))QOpenGLWindow::metric
312   (int (*)(...))QPaintDeviceWindow::paintEngine
320   (int (*)(...))QOpenGLWindow::initializeGL
328   (int (*)(...))QOpenGLWindow::resizeGL
336   (int (*)(...))QOpenGLWindow::paintGL
344   (int (*)(...))QOpenGLWindow::paintUnderGL
352   (int (*)(...))QOpenGLWindow::paintOverGL
360   (int (*)(...))QOpenGLWindow::redirected
368   (int (*)(...))-16
376   (int (*)(...))(& _ZTI13QOpenGLWindow)
384   (int (*)(...))QOpenGLWindow::_ZThn16_N13QOpenGLWindowD1Ev
392   (int (*)(...))QOpenGLWindow::_ZThn16_N13QOpenGLWindowD0Ev
400   (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
408   (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
416   (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
424   (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
432   (int (*)(...))-40
440   (int (*)(...))(& _ZTI13QOpenGLWindow)
448   (int (*)(...))QOpenGLWindow::_ZThn40_N13QOpenGLWindowD1Ev
456   (int (*)(...))QOpenGLWindow::_ZThn40_N13QOpenGLWindowD0Ev
464   (int (*)(...))QPaintDevice::devType
472   (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
480   (int (*)(...))QOpenGLWindow::_ZThn40_NK13QOpenGLWindow6metricEN12QPaintDevice17PaintDeviceMetricE
488   (int (*)(...))QPaintDevice::initPainter
496   (int (*)(...))QOpenGLWindow::_ZThn40_NK13QOpenGLWindow10redirectedEP6QPoint
504   (int (*)(...))QPaintDevice::sharedPainter

Class QOpenGLWindow
   size=64 align=8
   base size=64 base align=8
QOpenGLWindow (0x0x7fdf045e2270) 0
    vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 16)
  QPaintDeviceWindow (0x0x7fdf0464b310) 0
      primary-for QOpenGLWindow (0x0x7fdf045e2270)
    QWindow (0x0x7fdf0464b380) 0
        primary-for QPaintDeviceWindow (0x0x7fdf0464b310)
      QObject (0x0x7fdf0463a900) 0
          primary-for QWindow (0x0x7fdf0464b380)
      QSurface (0x0x7fdf0463a960) 16
          vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 384)
    QPaintDevice (0x0x7fdf0463a9c0) 40
        vptr=((& QOpenGLWindow::_ZTV13QOpenGLWindow) + 448)

Class QPageSize
   size=8 align=8
   base size=8 base align=8
QPageSize (0x0x7fdf0463ac00) 0

Class QPageLayout
   size=8 align=8
   base size=8 base align=8
QPageLayout (0x0x7fdf046e3660) 0

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

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

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

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

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

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

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

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

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

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

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

Class QPdfWriter
   size=48 align=8
   base size=48 base align=8
QPdfWriter (0x0x7fdf042843f0) 0
    vptr=((& QPdfWriter::_ZTV10QPdfWriter) + 16)
  QObject (0x0x7fdf04299420) 0
      primary-for QPdfWriter (0x0x7fdf042843f0)
  QPagedPaintDevice (0x0x7fdf041e25b0) 16
      vptr=((& QPdfWriter::_ZTV10QPdfWriter) + 176)
    QPaintDevice (0x0x7fdf04299480) 16
        primary-for QPagedPaintDevice (0x0x7fdf041e25b0)

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

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

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

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

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

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

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

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

Class QRasterWindow::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QRasterWindow::QPrivateSignal (0x0x7fdf03fdd480) 0 empty

Vtable for QRasterWindow
QRasterWindow::_ZTV13QRasterWindow: 59 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QRasterWindow)
16    (int (*)(...))QRasterWindow::metaObject
24    (int (*)(...))QRasterWindow::qt_metacast
32    (int (*)(...))QRasterWindow::qt_metacall
40    (int (*)(...))QRasterWindow::~QRasterWindow
48    (int (*)(...))QRasterWindow::~QRasterWindow
56    (int (*)(...))QPaintDeviceWindow::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QWindow::surfaceType
120   (int (*)(...))QWindow::format
128   (int (*)(...))QWindow::size
136   (int (*)(...))QWindow::accessibleRoot
144   (int (*)(...))QWindow::focusObject
152   (int (*)(...))QPaintDeviceWindow::exposeEvent
160   (int (*)(...))QWindow::resizeEvent
168   (int (*)(...))QWindow::moveEvent
176   (int (*)(...))QWindow::focusInEvent
184   (int (*)(...))QWindow::focusOutEvent
192   (int (*)(...))QWindow::showEvent
200   (int (*)(...))QWindow::hideEvent
208   (int (*)(...))QWindow::keyPressEvent
216   (int (*)(...))QWindow::keyReleaseEvent
224   (int (*)(...))QWindow::mousePressEvent
232   (int (*)(...))QWindow::mouseReleaseEvent
240   (int (*)(...))QWindow::mouseDoubleClickEvent
248   (int (*)(...))QWindow::mouseMoveEvent
256   (int (*)(...))QWindow::wheelEvent
264   (int (*)(...))QWindow::touchEvent
272   (int (*)(...))QWindow::tabletEvent
280   (int (*)(...))QWindow::nativeEvent
288   (int (*)(...))QWindow::surfaceHandle
296   (int (*)(...))QPaintDeviceWindow::paintEvent
304   (int (*)(...))QRasterWindow::metric
312   (int (*)(...))QPaintDeviceWindow::paintEngine
320   (int (*)(...))QRasterWindow::redirected
328   (int (*)(...))-16
336   (int (*)(...))(& _ZTI13QRasterWindow)
344   (int (*)(...))QRasterWindow::_ZThn16_N13QRasterWindowD1Ev
352   (int (*)(...))QRasterWindow::_ZThn16_N13QRasterWindowD0Ev
360   (int (*)(...))QWindow::_ZThn16_NK7QWindow6formatEv
368   (int (*)(...))QWindow::_ZThn16_NK7QWindow13surfaceHandleEv
376   (int (*)(...))QWindow::_ZThn16_NK7QWindow11surfaceTypeEv
384   (int (*)(...))QWindow::_ZThn16_NK7QWindow4sizeEv
392   (int (*)(...))-40
400   (int (*)(...))(& _ZTI13QRasterWindow)
408   (int (*)(...))QRasterWindow::_ZThn40_N13QRasterWindowD1Ev
416   (int (*)(...))QRasterWindow::_ZThn40_N13QRasterWindowD0Ev
424   (int (*)(...))QPaintDevice::devType
432   (int (*)(...))QPaintDeviceWindow::_ZThn40_NK18QPaintDeviceWindow11paintEngineEv
440   (int (*)(...))QRasterWindow::_ZThn40_NK13QRasterWindow6metricEN12QPaintDevice17PaintDeviceMetricE
448   (int (*)(...))QPaintDevice::initPainter
456   (int (*)(...))QRasterWindow::_ZThn40_NK13QRasterWindow10redirectedEP6QPoint
464   (int (*)(...))QPaintDevice::sharedPainter

Class QRasterWindow
   size=64 align=8
   base size=64 base align=8
QRasterWindow (0x0x7fdf03fd9410) 0
    vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 16)
  QPaintDeviceWindow (0x0x7fdf03fde230) 0
      primary-for QRasterWindow (0x0x7fdf03fd9410)
    QWindow (0x0x7fdf03fde2a0) 0
        primary-for QPaintDeviceWindow (0x0x7fdf03fde230)
      QObject (0x0x7fdf03fdd360) 0
          primary-for QWindow (0x0x7fdf03fde2a0)
      QSurface (0x0x7fdf03fdd3c0) 16
          vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 344)
    QPaintDevice (0x0x7fdf03fdd420) 40
        vptr=((& QRasterWindow::_ZTV13QRasterWindow) + 408)

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

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

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

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

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

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

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

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

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

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

Class QStandardItemModel
   size=16 align=8
   base size=16 base align=8
QStandardItemModel (0x0x7fdf03fd9af8) 0
    vptr=((& QStandardItemModel::_ZTV18QStandardItemModel) + 16)
  QAbstractItemModel (0x0x7fdf03fd9b60) 0
      primary-for QStandardItemModel (0x0x7fdf03fd9af8)
    QObject (0x0x7fdf040b3240) 0
        primary-for QAbstractItemModel (0x0x7fdf03fd9b60)

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

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

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

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

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

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

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

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

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

Class QTextBlockGroup
   size=16 align=8
   base size=16 base align=8
QTextBlockGroup (0x0x7fdf0414bf70) 0
    vptr=((& QTextBlockGroup::_ZTV15QTextBlockGroup) + 16)
  QTextObject (0x0x7fdf03d8a000) 0
      primary-for QTextBlockGroup (0x0x7fdf0414bf70)
    QObject (0x0x7fdf04155e40) 0
        primary-for QTextObject (0x0x7fdf03d8a000)

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

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

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

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

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

Class QTextFrame
   size=16 align=8
   base size=16 base align=8
QTextFrame (0x0x7fdf03d8a068) 0
    vptr=((& QTextFrame::_ZTV10QTextFrame) + 16)
  QTextObject (0x0x7fdf03d8a0d0) 0
      primary-for QTextFrame (0x0x7fdf03d8a068)
    QObject (0x0x7fdf03d99120) 0
        primary-for QTextObject (0x0x7fdf03d8a0d0)

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

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

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

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

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

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

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

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

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

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

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

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

Class QTextList
   size=16 align=8
   base size=16 base align=8
QTextList (0x0x7fdf03ef03a8) 0
    vptr=((& QTextList::_ZTV9QTextList) + 16)
  QTextBlockGroup (0x0x7fdf03ef0410) 0
      primary-for QTextList (0x0x7fdf03ef03a8)
    QTextObject (0x0x7fdf03ef0478) 0
        primary-for QTextBlockGroup (0x0x7fdf03ef0410)
      QObject (0x0x7fdf03ef33c0) 0
          primary-for QTextObject (0x0x7fdf03ef0478)

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

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

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

Class QTextTable
   size=16 align=8
   base size=16 base align=8
QTextTable (0x0x7fdf03ef04e0) 0
    vptr=((& QTextTable::_ZTV10QTextTable) + 16)
  QTextFrame (0x0x7fdf03ef0548) 0
      primary-for QTextTable (0x0x7fdf03ef04e0)
    QTextObject (0x0x7fdf03ef05b0) 0
        primary-for QTextFrame (0x0x7fdf03ef0548)
      QObject (0x0x7fdf03f34240) 0
          primary-for QTextObject (0x0x7fdf03ef05b0)

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

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

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

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

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

Class QIntValidator
   size=24 align=8
   base size=24 base align=8
QIntValidator (0x0x7fdf03ef0680) 0
    vptr=((& QIntValidator::_ZTV13QIntValidator) + 16)
  QValidator (0x0x7fdf03ef06e8) 0
      primary-for QIntValidator (0x0x7fdf03ef0680)
    QObject (0x0x7fdf03f34a20) 0
        primary-for QValidator (0x0x7fdf03ef06e8)

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

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

Class QDoubleValidator
   size=40 align=8
   base size=36 base align=8
QDoubleValidator (0x0x7fdf03ef0750) 0
    vptr=((& QDoubleValidator::_ZTV16QDoubleValidator) + 16)
  QValidator (0x0x7fdf03ef07b8) 0
      primary-for QDoubleValidator (0x0x7fdf03ef0750)
    QObject (0x0x7fdf03f34c60) 0
        primary-for QValidator (0x0x7fdf03ef07b8)

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

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

Class QRegExpValidator
   size=24 align=8
   base size=24 base align=8
QRegExpValidator (0x0x7fdf03ef0820) 0
    vptr=((& QRegExpValidator::_ZTV16QRegExpValidator) + 16)
  QValidator (0x0x7fdf03ef0888) 0
      primary-for QRegExpValidator (0x0x7fdf03ef0820)
    QObject (0x0x7fdf03f7b120) 0
        primary-for QValidator (0x0x7fdf03ef0888)

Class QRegularExpressionValidator::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QRegularExpressionValidator::QPrivateSignal (0x0x7fdf03f7b360) 0 empty

Vtable for QRegularExpressionValidator
QRegularExpressionValidator::_ZTV27QRegularExpressionValidator: 16 entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI27QRegularExpressionValidator)
16    (int (*)(...))QRegularExpressionValidator::metaObject
24    (int (*)(...))QRegularExpressionValidator::qt_metacast
32    (int (*)(...))QRegularExpressionValidator::qt_metacall
40    (int (*)(...))QRegularExpressionValidator::~QRegularExpressionValidator
48    (int (*)(...))QRegularExpressionValidator::~QRegularExpressionValidator
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 (*)(...))QRegularExpressionValidator::validate
120   (int (*)(...))QValidator::fixup

Class QRegularExpressionValidator
   size=16 align=8
   base size=16 base align=8
QRegularExpressionValidator (0x0x7fdf03ef08f0) 0
    vptr=((& QRegularExpressionValidator::_ZTV27QRegularExpressionValidator) + 16)
  QValidator (0x0x7fdf03ef0958) 0
      primary-for QRegularExpressionValidator (0x0x7fdf03ef08f0)
    QObject (0x0x7fdf03f7b300) 0
        primary-for QValidator (0x0x7fdf03ef0958)

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03bbf7e0) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03bbfb40) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03bbfd20) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03bf00c0) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03bf02a0) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03bf0600) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03bf07e0) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03bf0b40) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03bf0d20) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = char; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03c270c0) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03c272a0) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03c27600) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03c277e0) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03c27b40) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03c27d20) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = char; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03c600c0) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03c8a5a0) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03c8a900) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03c8aa80) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long int; _Ret = long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03c8ade0) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03c8af60) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long unsigned int; _Ret = long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03cbf300) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03cbf480) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long int; _Ret = long long int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03cbf7e0) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03cbf960) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long long unsigned int; _Ret = long long unsigned int; _CharT = wchar_t; _Base = {int}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03cbfcc0) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03cbfe40) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = float; _Ret = float; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03cec1e0) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03cec360) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = double; _Ret = double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03cec6c0) 0 empty

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno
   size=4 align=4
   base size=4 base align=4
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Save_errno (0x0x7fdf03cec840) 0

Class __gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__stoa(_TRet (*)(const _CharT*, _CharT**, _Base ...), const char*, const _CharT*, std::size_t*, _Base ...) [with _TRet = long double; _Ret = long double; _CharT = wchar_t; _Base = {}; std::size_t = long unsigned int]::_Range_chk (0x0x7fdf03cecba0) 0 empty

