summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQt by Nokia <qt-info@nokia.com>2011-04-27 12:05:43 +0200
committeraxis <qt-info@nokia.com>2011-04-27 12:05:43 +0200
commit60941c2741053dc8afbe197393d9998ef15a350f (patch)
treeba3532929224e3c2ee92b5cb79e55c5502f52355
downloadqtmultimedia-60941c2741053dc8afbe197393d9998ef15a350f.tar.gz
Initial import from the monolithic Qt.
This is the beginning of revision history for this module. If you want to look at revision history older than this, please refer to the Qt Git wiki for how to use Git history grafting. At the time of writing, this wiki is located here: http://qt.gitorious.org/qt/pages/GitIntroductionWithQt If you have already performed the grafting and you don't see any history beyond this commit, try running "git log" with the "--follow" argument. Branched from the monolithic repo, Qt master branch, at commit 896db169ea224deb96c59ce8af800d019de63f12
-rw-r--r--demos/demos.pro2
-rw-r--r--demos/spectrum/3rdparty/fftreal/Array.h97
-rw-r--r--demos/spectrum/3rdparty/fftreal/Array.hpp98
-rw-r--r--demos/spectrum/3rdparty/fftreal/DynArray.h100
-rw-r--r--demos/spectrum/3rdparty/fftreal/DynArray.hpp143
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTReal.dsp273
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTReal.dsw29
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTReal.h142
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTReal.hpp916
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealFixLen.h130
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealFixLen.hpp322
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealFixLenParam.h93
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealPassDirect.h96
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealPassDirect.hpp204
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealPassInverse.h101
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealPassInverse.hpp229
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealSelect.h77
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealSelect.hpp62
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealUseTrigo.h101
-rw-r--r--demos/spectrum/3rdparty/fftreal/FFTRealUseTrigo.hpp91
-rw-r--r--demos/spectrum/3rdparty/fftreal/OscSinCos.h106
-rw-r--r--demos/spectrum/3rdparty/fftreal/OscSinCos.hpp122
-rw-r--r--demos/spectrum/3rdparty/fftreal/TestAccuracy.h105
-rw-r--r--demos/spectrum/3rdparty/fftreal/TestAccuracy.hpp472
-rw-r--r--demos/spectrum/3rdparty/fftreal/TestHelperFixLen.h93
-rw-r--r--demos/spectrum/3rdparty/fftreal/TestHelperFixLen.hpp93
-rw-r--r--demos/spectrum/3rdparty/fftreal/TestHelperNormal.h94
-rw-r--r--demos/spectrum/3rdparty/fftreal/TestHelperNormal.hpp99
-rw-r--r--demos/spectrum/3rdparty/fftreal/TestSpeed.h95
-rw-r--r--demos/spectrum/3rdparty/fftreal/TestSpeed.hpp223
-rw-r--r--demos/spectrum/3rdparty/fftreal/TestWhiteNoiseGen.h95
-rw-r--r--demos/spectrum/3rdparty/fftreal/TestWhiteNoiseGen.hpp91
-rw-r--r--demos/spectrum/3rdparty/fftreal/bwins/fftrealu.def5
-rw-r--r--demos/spectrum/3rdparty/fftreal/def.h60
-rw-r--r--demos/spectrum/3rdparty/fftreal/eabi/fftrealu.def7
-rw-r--r--demos/spectrum/3rdparty/fftreal/fftreal.pas661
-rw-r--r--demos/spectrum/3rdparty/fftreal/fftreal.pro52
-rw-r--r--demos/spectrum/3rdparty/fftreal/fftreal_wrapper.cpp54
-rw-r--r--demos/spectrum/3rdparty/fftreal/fftreal_wrapper.h63
-rw-r--r--demos/spectrum/3rdparty/fftreal/license.txt459
-rw-r--r--demos/spectrum/3rdparty/fftreal/readme.txt242
-rw-r--r--demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.cpp285
-rw-r--r--demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.h124
-rw-r--r--demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.hpp150
-rw-r--r--demos/spectrum/3rdparty/fftreal/stopwatch/Int64.h71
-rw-r--r--demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.cpp101
-rw-r--r--demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.h110
-rw-r--r--demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.hpp83
-rw-r--r--demos/spectrum/3rdparty/fftreal/stopwatch/def.h65
-rw-r--r--demos/spectrum/3rdparty/fftreal/stopwatch/fnc.h67
-rw-r--r--demos/spectrum/3rdparty/fftreal/stopwatch/fnc.hpp85
-rw-r--r--demos/spectrum/3rdparty/fftreal/test.cpp267
-rw-r--r--demos/spectrum/3rdparty/fftreal/test_fnc.h53
-rw-r--r--demos/spectrum/3rdparty/fftreal/test_fnc.hpp56
-rw-r--r--demos/spectrum/3rdparty/fftreal/test_settings.h45
-rw-r--r--demos/spectrum/3rdparty/fftreal/testapp.dpr150
-rw-r--r--demos/spectrum/README.txt103
-rw-r--r--demos/spectrum/TODO.txt34
-rw-r--r--demos/spectrum/app/.gitignore2
-rw-r--r--demos/spectrum/app/app.pro118
-rw-r--r--demos/spectrum/app/engine.cpp766
-rw-r--r--demos/spectrum/app/engine.h315
-rw-r--r--demos/spectrum/app/frequencyspectrum.cpp89
-rw-r--r--demos/spectrum/app/frequencyspectrum.h98
-rw-r--r--demos/spectrum/app/images/record.pngbin0 -> 670 bytes
-rw-r--r--demos/spectrum/app/images/settings.pngbin0 -> 3649 bytes
-rw-r--r--demos/spectrum/app/levelmeter.cpp142
-rw-r--r--demos/spectrum/app/levelmeter.h116
-rw-r--r--demos/spectrum/app/main.cpp57
-rw-r--r--demos/spectrum/app/mainwidget.cpp453
-rw-r--r--demos/spectrum/app/mainwidget.h144
-rw-r--r--demos/spectrum/app/progressbar.cpp140
-rw-r--r--demos/spectrum/app/progressbar.h74
-rw-r--r--demos/spectrum/app/settingsdialog.cpp148
-rw-r--r--demos/spectrum/app/settingsdialog.h87
-rw-r--r--demos/spectrum/app/spectrograph.cpp241
-rw-r--r--demos/spectrum/app/spectrograph.h99
-rw-r--r--demos/spectrum/app/spectrum.h144
-rw-r--r--demos/spectrum/app/spectrum.qrc7
-rw-r--r--demos/spectrum/app/spectrumanalyser.cpp281
-rw-r--r--demos/spectrum/app/spectrumanalyser.h194
-rw-r--r--demos/spectrum/app/tonegenerator.cpp91
-rw-r--r--demos/spectrum/app/tonegenerator.h56
-rw-r--r--demos/spectrum/app/tonegeneratordialog.cpp147
-rw-r--r--demos/spectrum/app/tonegeneratordialog.h81
-rw-r--r--demos/spectrum/app/utils.cpp139
-rw-r--r--demos/spectrum/app/utils.h112
-rw-r--r--demos/spectrum/app/waveform.cpp436
-rw-r--r--demos/spectrum/app/waveform.h203
-rw-r--r--demos/spectrum/app/wavfile.cpp151
-rw-r--r--demos/spectrum/app/wavfile.h68
-rw-r--r--demos/spectrum/spectrum.pri49
-rw-r--r--demos/spectrum/spectrum.pro28
-rw-r--r--examples/examples.pro2
-rw-r--r--examples/multimedia/README34
-rw-r--r--examples/multimedia/audiodevices/audiodevices.cpp314
-rw-r--r--examples/multimedia/audiodevices/audiodevices.h83
-rw-r--r--examples/multimedia/audiodevices/audiodevices.pro17
-rw-r--r--examples/multimedia/audiodevices/audiodevicesbase.ui399
-rw-r--r--examples/multimedia/audiodevices/main.cpp58
-rw-r--r--examples/multimedia/audioinput/audioinput.cpp379
-rw-r--r--examples/multimedia/audioinput/audioinput.h139
-rw-r--r--examples/multimedia/audioinput/audioinput.pro17
-rw-r--r--examples/multimedia/audioinput/main.cpp54
-rw-r--r--examples/multimedia/audiooutput/audiooutput.cpp314
-rw-r--r--examples/multimedia/audiooutput/audiooutput.h122
-rw-r--r--examples/multimedia/audiooutput/audiooutput.pro16
-rw-r--r--examples/multimedia/audiooutput/main.cpp55
-rw-r--r--examples/multimedia/multimedia.pro18
-rw-r--r--examples/multimedia/videographicsitem/main.cpp54
-rw-r--r--examples/multimedia/videographicsitem/videographicsitem.pro21
-rw-r--r--examples/multimedia/videographicsitem/videoitem.cpp143
-rw-r--r--examples/multimedia/videographicsitem/videoitem.h78
-rw-r--r--examples/multimedia/videographicsitem/videoplayer.cpp221
-rw-r--r--examples/multimedia/videographicsitem/videoplayer.h85
-rw-r--r--examples/multimedia/videowidget/main.cpp53
-rw-r--r--examples/multimedia/videowidget/videoplayer.cpp194
-rw-r--r--examples/multimedia/videowidget/videoplayer.h78
-rw-r--r--examples/multimedia/videowidget/videowidget.cpp113
-rw-r--r--examples/multimedia/videowidget/videowidget.h75
-rw-r--r--examples/multimedia/videowidget/videowidget.pro25
-rw-r--r--examples/multimedia/videowidget/videowidgetsurface.cpp174
-rw-r--r--examples/multimedia/videowidget/videowidgetsurface.h80
-rw-r--r--qtmultimedia.pro22
-rw-r--r--src/multimedia/audio/audio.pri73
-rw-r--r--src/multimedia/audio/qaudio.cpp104
-rw-r--r--src/multimedia/audio/qaudio.h71
-rw-r--r--src/multimedia/audio/qaudio_mac.cpp145
-rw-r--r--src/multimedia/audio/qaudio_mac_p.h144
-rw-r--r--src/multimedia/audio/qaudio_symbian_p.cpp644
-rw-r--r--src/multimedia/audio/qaudio_symbian_p.h200
-rw-r--r--src/multimedia/audio/qaudiodevicefactory.cpp269
-rw-r--r--src/multimedia/audio/qaudiodevicefactory_p.h97
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo.cpp460
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo.h114
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp544
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_alsa_p.h124
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp363
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_mac_p.h97
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_symbian_p.cpp240
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_symbian_p.h121
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp447
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_win32_p.h112
-rw-r--r--src/multimedia/audio/qaudioengine.cpp343
-rw-r--r--src/multimedia/audio/qaudioengine.h131
-rw-r--r--src/multimedia/audio/qaudioengineplugin.cpp54
-rw-r--r--src/multimedia/audio/qaudioengineplugin.h93
-rw-r--r--src/multimedia/audio/qaudioformat.cpp407
-rw-r--r--src/multimedia/audio/qaudioformat.h107
-rw-r--r--src/multimedia/audio/qaudioinput.cpp441
-rw-r--r--src/multimedia/audio/qaudioinput.h111
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.cpp746
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.h159
-rw-r--r--src/multimedia/audio/qaudioinput_mac_p.cpp957
-rw-r--r--src/multimedia/audio/qaudioinput_mac_p.h169
-rw-r--r--src/multimedia/audio/qaudioinput_symbian_p.cpp560
-rw-r--r--src/multimedia/audio/qaudioinput_symbian_p.h174
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.cpp633
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.h160
-rw-r--r--src/multimedia/audio/qaudiooutput.cpp430
-rw-r--r--src/multimedia/audio/qaudiooutput.h111
-rw-r--r--src/multimedia/audio/qaudiooutput_alsa_p.cpp791
-rw-r--r--src/multimedia/audio/qaudiooutput_alsa_p.h166
-rw-r--r--src/multimedia/audio/qaudiooutput_mac_p.cpp703
-rw-r--r--src/multimedia/audio/qaudiooutput_mac_p.h169
-rw-r--r--src/multimedia/audio/qaudiooutput_symbian_p.cpp643
-rw-r--r--src/multimedia/audio/qaudiooutput_symbian_p.h198
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.cpp703
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.h157
-rw-r--r--src/multimedia/multimedia.pro16
-rw-r--r--src/multimedia/video/qabstractvideobuffer.cpp201
-rw-r--r--src/multimedia/video/qabstractvideobuffer.h107
-rw-r--r--src/multimedia/video/qabstractvideobuffer_p.h76
-rw-r--r--src/multimedia/video/qabstractvideosurface.cpp283
-rw-r--r--src/multimedia/video/qabstractvideosurface.h110
-rw-r--r--src/multimedia/video/qabstractvideosurface_p.h78
-rw-r--r--src/multimedia/video/qimagevideobuffer.cpp106
-rw-r--r--src/multimedia/video/qimagevideobuffer_p.h79
-rw-r--r--src/multimedia/video/qmemoryvideobuffer.cpp129
-rw-r--r--src/multimedia/video/qmemoryvideobuffer_p.h83
-rw-r--r--src/multimedia/video/qvideoframe.cpp742
-rw-r--r--src/multimedia/video/qvideoframe.h169
-rw-r--r--src/multimedia/video/qvideosurfaceformat.cpp704
-rw-r--r--src/multimedia/video/qvideosurfaceformat.h147
-rw-r--r--src/multimedia/video/video.pri21
-rw-r--r--src/src.pro2
-rw-r--r--tests/README18
-rw-r--r--tests/auto/auto.pro11
-rw-r--r--tests/auto/bic/.gitignore2
-rw-r--r--tests/auto/bic/data/QtMultimedia.4.6.0.linux-gcc-amd64.txt17011
-rw-r--r--tests/auto/bic/data/QtMultimedia.4.6.0.linux-gcc-ia32.txt17065
-rw-r--r--tests/auto/bic/data/QtMultimedia.4.7.0.linux-gcc-ia32.txt17075
-rw-r--r--tests/auto/qabstractvideobuffer/qabstractvideobuffer.pro5
-rw-r--r--tests/auto/qabstractvideobuffer/tst_qabstractvideobuffer.cpp132
-rw-r--r--tests/auto/qabstractvideosurface/qabstractvideosurface.pro5
-rw-r--r--tests/auto/qabstractvideosurface/tst_qabstractvideosurface.cpp310
-rw-r--r--tests/auto/qaudiodeviceinfo/qaudiodeviceinfo.pro7
-rw-r--r--tests/auto/qaudiodeviceinfo/tst_qaudiodeviceinfo.cpp194
-rw-r--r--tests/auto/qaudioformat/qaudioformat.pro7
-rw-r--r--tests/auto/qaudioformat/tst_qaudioformat.cpp183
-rw-r--r--tests/auto/qaudioinput/qaudioinput.pro15
-rw-r--r--tests/auto/qaudioinput/tst_qaudioinput.cpp222
-rw-r--r--tests/auto/qaudiooutput/4.wavbin0 -> 5538 bytes
-rw-r--r--tests/auto/qaudiooutput/qaudiooutput.pro16
-rw-r--r--tests/auto/qaudiooutput/tst_qaudiooutput.cpp263
-rw-r--r--tests/auto/qvideoframe/qvideoframe.pro5
-rw-r--r--tests/auto/qvideoframe/tst_qvideoframe.cpp791
-rw-r--r--tests/auto/qvideosurfaceformat/qvideosurfaceformat.pro5
-rw-r--r--tests/auto/qvideosurfaceformat/tst_qvideosurfaceformat.cpp736
-rw-r--r--tests/global/.gitignore2
-rw-r--r--tests/tests.pro2
211 files changed, 87979 insertions, 0 deletions
diff --git a/demos/demos.pro b/demos/demos.pro
new file mode 100644
index 000000000..4cbc676e3
--- /dev/null
+++ b/demos/demos.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS += spectrum
diff --git a/demos/spectrum/3rdparty/fftreal/Array.h b/demos/spectrum/3rdparty/fftreal/Array.h
new file mode 100644
index 000000000..a08e3cf2d
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/Array.h
@@ -0,0 +1,97 @@
+/*****************************************************************************
+
+ Array.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (Array_HEADER_INCLUDED)
+#define Array_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class T, long LEN>
+class Array
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef T DataType;
+
+ Array ();
+
+ inline const DataType &
+ operator [] (long pos) const;
+ inline DataType &
+ operator [] (long pos);
+
+ static inline long
+ size ();
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ DataType _data_arr [LEN];
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ Array (const Array &other);
+ Array & operator = (const Array &other);
+ bool operator == (const Array &other);
+ bool operator != (const Array &other);
+
+}; // class Array
+
+
+
+#include "Array.hpp"
+
+
+
+#endif // Array_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/Array.hpp b/demos/spectrum/3rdparty/fftreal/Array.hpp
new file mode 100644
index 000000000..8300077e4
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/Array.hpp
@@ -0,0 +1,98 @@
+/*****************************************************************************
+
+ Array.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (Array_CURRENT_CODEHEADER)
+ #error Recursive inclusion of Array code header.
+#endif
+#define Array_CURRENT_CODEHEADER
+
+#if ! defined (Array_CODEHEADER_INCLUDED)
+#define Array_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include <cassert>
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class T, long LEN>
+Array <T, LEN>::Array ()
+{
+ // Nothing
+}
+
+
+
+template <class T, long LEN>
+const typename Array <T, LEN>::DataType & Array <T, LEN>::operator [] (long pos) const
+{
+ assert (pos >= 0);
+ assert (pos < LEN);
+
+ return (_data_arr [pos]);
+}
+
+
+
+template <class T, long LEN>
+typename Array <T, LEN>::DataType & Array <T, LEN>::operator [] (long pos)
+{
+ assert (pos >= 0);
+ assert (pos < LEN);
+
+ return (_data_arr [pos]);
+}
+
+
+
+template <class T, long LEN>
+long Array <T, LEN>::size ()
+{
+ return (LEN);
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#endif // Array_CODEHEADER_INCLUDED
+
+#undef Array_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/DynArray.h b/demos/spectrum/3rdparty/fftreal/DynArray.h
new file mode 100644
index 000000000..8041a0c15
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/DynArray.h
@@ -0,0 +1,100 @@
+/*****************************************************************************
+
+ DynArray.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (DynArray_HEADER_INCLUDED)
+#define DynArray_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class T>
+class DynArray
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef T DataType;
+
+ DynArray ();
+ explicit DynArray (long size);
+ ~DynArray ();
+
+ inline long size () const;
+ inline void resize (long size);
+
+ inline const DataType &
+ operator [] (long pos) const;
+ inline DataType &
+ operator [] (long pos);
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ DataType * _data_ptr;
+ long _len;
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ DynArray (const DynArray &other);
+ DynArray & operator = (const DynArray &other);
+ bool operator == (const DynArray &other);
+ bool operator != (const DynArray &other);
+
+}; // class DynArray
+
+
+
+#include "DynArray.hpp"
+
+
+
+#endif // DynArray_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/DynArray.hpp b/demos/spectrum/3rdparty/fftreal/DynArray.hpp
new file mode 100644
index 000000000..e62b10f88
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/DynArray.hpp
@@ -0,0 +1,143 @@
+/*****************************************************************************
+
+ DynArray.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (DynArray_CURRENT_CODEHEADER)
+ #error Recursive inclusion of DynArray code header.
+#endif
+#define DynArray_CURRENT_CODEHEADER
+
+#if ! defined (DynArray_CODEHEADER_INCLUDED)
+#define DynArray_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include <cassert>
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class T>
+DynArray <T>::DynArray ()
+: _data_ptr (0)
+, _len (0)
+{
+ // Nothing
+}
+
+
+
+template <class T>
+DynArray <T>::DynArray (long size)
+: _data_ptr (0)
+, _len (0)
+{
+ assert (size >= 0);
+ if (size > 0)
+ {
+ _data_ptr = new DataType [size];
+ _len = size;
+ }
+}
+
+
+
+template <class T>
+DynArray <T>::~DynArray ()
+{
+ delete [] _data_ptr;
+ _data_ptr = 0;
+ _len = 0;
+}
+
+
+
+template <class T>
+long DynArray <T>::size () const
+{
+ return (_len);
+}
+
+
+
+template <class T>
+void DynArray <T>::resize (long size)
+{
+ assert (size >= 0);
+ if (size > 0)
+ {
+ DataType * old_data_ptr = _data_ptr;
+ DataType * tmp_data_ptr = new DataType [size];
+
+ _data_ptr = tmp_data_ptr;
+ _len = size;
+
+ delete [] old_data_ptr;
+ }
+}
+
+
+
+template <class T>
+const typename DynArray <T>::DataType & DynArray <T>::operator [] (long pos) const
+{
+ assert (pos >= 0);
+ assert (pos < _len);
+
+ return (_data_ptr [pos]);
+}
+
+
+
+template <class T>
+typename DynArray <T>::DataType & DynArray <T>::operator [] (long pos)
+{
+ assert (pos >= 0);
+ assert (pos < _len);
+
+ return (_data_ptr [pos]);
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#endif // DynArray_CODEHEADER_INCLUDED
+
+#undef DynArray_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTReal.dsp b/demos/spectrum/3rdparty/fftreal/FFTReal.dsp
new file mode 100644
index 000000000..fe970db08
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTReal.dsp
@@ -0,0 +1,273 @@
+# Microsoft Developer Studio Project File - Name="FFTReal" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=FFTReal - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "FFTReal.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "FFTReal.mak" CFG="FFTReal - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "FFTReal - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "FFTReal - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "FFTReal - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GR /GX /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x40c /d "NDEBUG"
+# ADD RSC /l 0x40c /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "FFTReal - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /G6 /MTd /W3 /Gm /GR /GX /Zi /Od /Gf /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
+# ADD BASE RSC /l 0x40c /d "_DEBUG"
+# ADD RSC /l 0x40c /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "FFTReal - Win32 Release"
+# Name "FFTReal - Win32 Debug"
+# Begin Group "Library"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\Array.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Array.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\def.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\DynArray.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\DynArray.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTReal.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTReal.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealFixLen.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealFixLen.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealFixLenParam.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealPassDirect.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealPassDirect.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealPassInverse.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealPassInverse.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealSelect.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealSelect.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealUseTrigo.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\FFTRealUseTrigo.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\OscSinCos.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\OscSinCos.hpp
+# End Source File
+# End Group
+# Begin Group "Test"
+
+# PROP Default_Filter ""
+# Begin Group "stopwatch"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\stopwatch\ClockCycleCounter.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\stopwatch\ClockCycleCounter.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\stopwatch\ClockCycleCounter.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\stopwatch\def.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\stopwatch\fnc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\stopwatch\fnc.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\stopwatch\Int64.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\stopwatch\StopWatch.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\stopwatch\StopWatch.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\stopwatch\StopWatch.hpp
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\test.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\test_fnc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\test_fnc.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\test_settings.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestAccuracy.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestAccuracy.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestHelperFixLen.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestHelperFixLen.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestHelperNormal.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestHelperNormal.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestSpeed.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestSpeed.hpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestWhiteNoiseGen.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\TestWhiteNoiseGen.hpp
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/demos/spectrum/3rdparty/fftreal/FFTReal.dsw b/demos/spectrum/3rdparty/fftreal/FFTReal.dsw
new file mode 100644
index 000000000..076b0aeb8
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTReal.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "FFTReal"=.\FFTReal.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/demos/spectrum/3rdparty/fftreal/FFTReal.h b/demos/spectrum/3rdparty/fftreal/FFTReal.h
new file mode 100644
index 000000000..9fb272503
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTReal.h
@@ -0,0 +1,142 @@
+/*****************************************************************************
+
+ FFTReal.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (FFTReal_HEADER_INCLUDED)
+#define FFTReal_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "def.h"
+#include "DynArray.h"
+#include "OscSinCos.h"
+
+
+
+template <class DT>
+class FFTReal
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ enum { MAX_BIT_DEPTH = 30 }; // So length can be represented as long int
+
+ typedef DT DataType;
+
+ explicit FFTReal (long length);
+ virtual ~FFTReal () {}
+
+ long get_length () const;
+ void do_fft (DataType f [], const DataType x []) const;
+ void do_ifft (const DataType f [], DataType x []) const;
+ void rescale (DataType x []) const;
+ DataType * use_buffer () const;
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ // Over this bit depth, we use direct calculation for sin/cos
+ enum { TRIGO_BD_LIMIT = 12 };
+
+ typedef OscSinCos <DataType> OscType;
+
+ void init_br_lut ();
+ void init_trigo_lut ();
+ void init_trigo_osc ();
+
+ FORCEINLINE const long *
+ get_br_ptr () const;
+ FORCEINLINE const DataType *
+ get_trigo_ptr (int level) const;
+ FORCEINLINE long
+ get_trigo_level_index (int level) const;
+
+ inline void compute_fft_general (DataType f [], const DataType x []) const;
+ inline void compute_direct_pass_1_2 (DataType df [], const DataType x []) const;
+ inline void compute_direct_pass_3 (DataType df [], const DataType sf []) const;
+ inline void compute_direct_pass_n (DataType df [], const DataType sf [], int pass) const;
+ inline void compute_direct_pass_n_lut (DataType df [], const DataType sf [], int pass) const;
+ inline void compute_direct_pass_n_osc (DataType df [], const DataType sf [], int pass) const;
+
+ inline void compute_ifft_general (const DataType f [], DataType x []) const;
+ inline void compute_inverse_pass_n (DataType df [], const DataType sf [], int pass) const;
+ inline void compute_inverse_pass_n_osc (DataType df [], const DataType sf [], int pass) const;
+ inline void compute_inverse_pass_n_lut (DataType df [], const DataType sf [], int pass) const;
+ inline void compute_inverse_pass_3 (DataType df [], const DataType sf []) const;
+ inline void compute_inverse_pass_1_2 (DataType x [], const DataType sf []) const;
+
+ const long _length;
+ const int _nbr_bits;
+ DynArray <long>
+ _br_lut;
+ DynArray <DataType>
+ _trigo_lut;
+ mutable DynArray <DataType>
+ _buffer;
+ mutable DynArray <OscType>
+ _trigo_osc;
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ FFTReal ();
+ FFTReal (const FFTReal &other);
+ FFTReal & operator = (const FFTReal &other);
+ bool operator == (const FFTReal &other);
+ bool operator != (const FFTReal &other);
+
+}; // class FFTReal
+
+
+
+#include "FFTReal.hpp"
+
+
+
+#endif // FFTReal_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTReal.hpp b/demos/spectrum/3rdparty/fftreal/FFTReal.hpp
new file mode 100644
index 000000000..335d771dc
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTReal.hpp
@@ -0,0 +1,916 @@
+/*****************************************************************************
+
+ FFTReal.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (FFTReal_CURRENT_CODEHEADER)
+ #error Recursive inclusion of FFTReal code header.
+#endif
+#define FFTReal_CURRENT_CODEHEADER
+
+#if ! defined (FFTReal_CODEHEADER_INCLUDED)
+#define FFTReal_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include <cassert>
+#include <cmath>
+
+
+
+static inline bool FFTReal_is_pow2 (long x)
+{
+ assert (x > 0);
+
+ return ((x & -x) == x);
+}
+
+
+
+static inline int FFTReal_get_next_pow2 (long x)
+{
+ --x;
+
+ int p = 0;
+ while ((x & ~0xFFFFL) != 0)
+ {
+ p += 16;
+ x >>= 16;
+ }
+ while ((x & ~0xFL) != 0)
+ {
+ p += 4;
+ x >>= 4;
+ }
+ while (x > 0)
+ {
+ ++p;
+ x >>= 1;
+ }
+
+ return (p);
+}
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*
+==============================================================================
+Name: ctor
+Input parameters:
+ - length: length of the array on which we want to do a FFT. Range: power of
+ 2 only, > 0.
+Throws: std::bad_alloc
+==============================================================================
+*/
+
+template <class DT>
+FFTReal <DT>::FFTReal (long length)
+: _length (length)
+, _nbr_bits (FFTReal_get_next_pow2 (length))
+, _br_lut ()
+, _trigo_lut ()
+, _buffer (length)
+, _trigo_osc ()
+{
+ assert (FFTReal_is_pow2 (length));
+ assert (_nbr_bits <= MAX_BIT_DEPTH);
+
+ init_br_lut ();
+ init_trigo_lut ();
+ init_trigo_osc ();
+}
+
+
+
+/*
+==============================================================================
+Name: get_length
+Description:
+ Returns the number of points processed by this FFT object.
+Returns: The number of points, power of 2, > 0.
+Throws: Nothing
+==============================================================================
+*/
+
+template <class DT>
+long FFTReal <DT>::get_length () const
+{
+ return (_length);
+}
+
+
+
+/*
+==============================================================================
+Name: do_fft
+Description:
+ Compute the FFT of the array.
+Input parameters:
+ - x: pointer on the source array (time).
+Output parameters:
+ - f: pointer on the destination array (frequencies).
+ f [0...length(x)/2] = real values,
+ f [length(x)/2+1...length(x)-1] = negative imaginary values of
+ coefficents 1...length(x)/2-1.
+Throws: Nothing
+==============================================================================
+*/
+
+template <class DT>
+void FFTReal <DT>::do_fft (DataType f [], const DataType x []) const
+{
+ assert (f != 0);
+ assert (f != use_buffer ());
+ assert (x != 0);
+ assert (x != use_buffer ());
+ assert (x != f);
+
+ // General case
+ if (_nbr_bits > 2)
+ {
+ compute_fft_general (f, x);
+ }
+
+ // 4-point FFT
+ else if (_nbr_bits == 2)
+ {
+ f [1] = x [0] - x [2];
+ f [3] = x [1] - x [3];
+
+ const DataType b_0 = x [0] + x [2];
+ const DataType b_2 = x [1] + x [3];
+
+ f [0] = b_0 + b_2;
+ f [2] = b_0 - b_2;
+ }
+
+ // 2-point FFT
+ else if (_nbr_bits == 1)
+ {
+ f [0] = x [0] + x [1];
+ f [1] = x [0] - x [1];
+ }
+
+ // 1-point FFT
+ else
+ {
+ f [0] = x [0];
+ }
+}
+
+
+
+/*
+==============================================================================
+Name: do_ifft
+Description:
+ Compute the inverse FFT of the array. Note that data must be post-scaled:
+ IFFT (FFT (x)) = x * length (x).
+Input parameters:
+ - f: pointer on the source array (frequencies).
+ f [0...length(x)/2] = real values
+ f [length(x)/2+1...length(x)-1] = negative imaginary values of
+ coefficents 1...length(x)/2-1.
+Output parameters:
+ - x: pointer on the destination array (time).
+Throws: Nothing
+==============================================================================
+*/
+
+template <class DT>
+void FFTReal <DT>::do_ifft (const DataType f [], DataType x []) const
+{
+ assert (f != 0);
+ assert (f != use_buffer ());
+ assert (x != 0);
+ assert (x != use_buffer ());
+ assert (x != f);
+
+ // General case
+ if (_nbr_bits > 2)
+ {
+ compute_ifft_general (f, x);
+ }
+
+ // 4-point IFFT
+ else if (_nbr_bits == 2)
+ {
+ const DataType b_0 = f [0] + f [2];
+ const DataType b_2 = f [0] - f [2];
+
+ x [0] = b_0 + f [1] * 2;
+ x [2] = b_0 - f [1] * 2;
+ x [1] = b_2 + f [3] * 2;
+ x [3] = b_2 - f [3] * 2;
+ }
+
+ // 2-point IFFT
+ else if (_nbr_bits == 1)
+ {
+ x [0] = f [0] + f [1];
+ x [1] = f [0] - f [1];
+ }
+
+ // 1-point IFFT
+ else
+ {
+ x [0] = f [0];
+ }
+}
+
+
+
+/*
+==============================================================================
+Name: rescale
+Description:
+ Scale an array by divide each element by its length. This function should
+ be called after FFT + IFFT.
+Input parameters:
+ - x: pointer on array to rescale (time or frequency).
+Throws: Nothing
+==============================================================================
+*/
+
+template <class DT>
+void FFTReal <DT>::rescale (DataType x []) const
+{
+ const DataType mul = DataType (1.0 / _length);
+
+ if (_length < 4)
+ {
+ long i = _length - 1;
+ do
+ {
+ x [i] *= mul;
+ --i;
+ }
+ while (i >= 0);
+ }
+
+ else
+ {
+ assert ((_length & 3) == 0);
+
+ // Could be optimized with SIMD instruction sets (needs alignment check)
+ long i = _length - 4;
+ do
+ {
+ x [i + 0] *= mul;
+ x [i + 1] *= mul;
+ x [i + 2] *= mul;
+ x [i + 3] *= mul;
+ i -= 4;
+ }
+ while (i >= 0);
+ }
+}
+
+
+
+/*
+==============================================================================
+Name: use_buffer
+Description:
+ Access the internal buffer, whose length is the FFT one.
+ Buffer content will be erased at each do_fft() / do_ifft() call!
+ This buffer cannot be used as:
+ - source for FFT or IFFT done with this object
+ - destination for FFT or IFFT done with this object
+Returns:
+ Buffer start address
+Throws: Nothing
+==============================================================================
+*/
+
+template <class DT>
+typename FFTReal <DT>::DataType * FFTReal <DT>::use_buffer () const
+{
+ return (&_buffer [0]);
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class DT>
+void FFTReal <DT>::init_br_lut ()
+{
+ const long length = 1L << _nbr_bits;
+ _br_lut.resize (length);
+
+ _br_lut [0] = 0;
+ long br_index = 0;
+ for (long cnt = 1; cnt < length; ++cnt)
+ {
+ // ++br_index (bit reversed)
+ long bit = length >> 1;
+ while (((br_index ^= bit) & bit) == 0)
+ {
+ bit >>= 1;
+ }
+
+ _br_lut [cnt] = br_index;
+ }
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::init_trigo_lut ()
+{
+ using namespace std;
+
+ if (_nbr_bits > 3)
+ {
+ const long total_len = (1L << (_nbr_bits - 1)) - 4;
+ _trigo_lut.resize (total_len);
+
+ for (int level = 3; level < _nbr_bits; ++level)
+ {
+ const long level_len = 1L << (level - 1);
+ DataType * const level_ptr =
+ &_trigo_lut [get_trigo_level_index (level)];
+ const double mul = PI / (level_len << 1);
+
+ for (long i = 0; i < level_len; ++ i)
+ {
+ level_ptr [i] = static_cast <DataType> (cos (i * mul));
+ }
+ }
+ }
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::init_trigo_osc ()
+{
+ const int nbr_osc = _nbr_bits - TRIGO_BD_LIMIT;
+ if (nbr_osc > 0)
+ {
+ _trigo_osc.resize (nbr_osc);
+
+ for (int osc_cnt = 0; osc_cnt < nbr_osc; ++osc_cnt)
+ {
+ OscType & osc = _trigo_osc [osc_cnt];
+
+ const long len = 1L << (TRIGO_BD_LIMIT + osc_cnt);
+ const double mul = (0.5 * PI) / len;
+ osc.set_step (mul);
+ }
+ }
+}
+
+
+
+template <class DT>
+const long * FFTReal <DT>::get_br_ptr () const
+{
+ return (&_br_lut [0]);
+}
+
+
+
+template <class DT>
+const typename FFTReal <DT>::DataType * FFTReal <DT>::get_trigo_ptr (int level) const
+{
+ assert (level >= 3);
+
+ return (&_trigo_lut [get_trigo_level_index (level)]);
+}
+
+
+
+template <class DT>
+long FFTReal <DT>::get_trigo_level_index (int level) const
+{
+ assert (level >= 3);
+
+ return ((1L << (level - 1)) - 4);
+}
+
+
+
+// Transform in several passes
+template <class DT>
+void FFTReal <DT>::compute_fft_general (DataType f [], const DataType x []) const
+{
+ assert (f != 0);
+ assert (f != use_buffer ());
+ assert (x != 0);
+ assert (x != use_buffer ());
+ assert (x != f);
+
+ DataType * sf;
+ DataType * df;
+
+ if ((_nbr_bits & 1) != 0)
+ {
+ df = use_buffer ();
+ sf = f;
+ }
+ else
+ {
+ df = f;
+ sf = use_buffer ();
+ }
+
+ compute_direct_pass_1_2 (df, x);
+ compute_direct_pass_3 (sf, df);
+
+ for (int pass = 3; pass < _nbr_bits; ++ pass)
+ {
+ compute_direct_pass_n (df, sf, pass);
+
+ DataType * const temp_ptr = df;
+ df = sf;
+ sf = temp_ptr;
+ }
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::compute_direct_pass_1_2 (DataType df [], const DataType x []) const
+{
+ assert (df != 0);
+ assert (x != 0);
+ assert (df != x);
+
+ const long * const bit_rev_lut_ptr = get_br_ptr ();
+ long coef_index = 0;
+ do
+ {
+ const long rev_index_0 = bit_rev_lut_ptr [coef_index];
+ const long rev_index_1 = bit_rev_lut_ptr [coef_index + 1];
+ const long rev_index_2 = bit_rev_lut_ptr [coef_index + 2];
+ const long rev_index_3 = bit_rev_lut_ptr [coef_index + 3];
+
+ DataType * const df2 = df + coef_index;
+ df2 [1] = x [rev_index_0] - x [rev_index_1];
+ df2 [3] = x [rev_index_2] - x [rev_index_3];
+
+ const DataType sf_0 = x [rev_index_0] + x [rev_index_1];
+ const DataType sf_2 = x [rev_index_2] + x [rev_index_3];
+
+ df2 [0] = sf_0 + sf_2;
+ df2 [2] = sf_0 - sf_2;
+
+ coef_index += 4;
+ }
+ while (coef_index < _length);
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::compute_direct_pass_3 (DataType df [], const DataType sf []) const
+{
+ assert (df != 0);
+ assert (sf != 0);
+ assert (df != sf);
+
+ const DataType sqrt2_2 = DataType (SQRT2 * 0.5);
+ long coef_index = 0;
+ do
+ {
+ DataType v;
+
+ df [coef_index] = sf [coef_index] + sf [coef_index + 4];
+ df [coef_index + 4] = sf [coef_index] - sf [coef_index + 4];
+ df [coef_index + 2] = sf [coef_index + 2];
+ df [coef_index + 6] = sf [coef_index + 6];
+
+ v = (sf [coef_index + 5] - sf [coef_index + 7]) * sqrt2_2;
+ df [coef_index + 1] = sf [coef_index + 1] + v;
+ df [coef_index + 3] = sf [coef_index + 1] - v;
+
+ v = (sf [coef_index + 5] + sf [coef_index + 7]) * sqrt2_2;
+ df [coef_index + 5] = v + sf [coef_index + 3];
+ df [coef_index + 7] = v - sf [coef_index + 3];
+
+ coef_index += 8;
+ }
+ while (coef_index < _length);
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::compute_direct_pass_n (DataType df [], const DataType sf [], int pass) const
+{
+ assert (df != 0);
+ assert (sf != 0);
+ assert (df != sf);
+ assert (pass >= 3);
+ assert (pass < _nbr_bits);
+
+ if (pass <= TRIGO_BD_LIMIT)
+ {
+ compute_direct_pass_n_lut (df, sf, pass);
+ }
+ else
+ {
+ compute_direct_pass_n_osc (df, sf, pass);
+ }
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::compute_direct_pass_n_lut (DataType df [], const DataType sf [], int pass) const
+{
+ assert (df != 0);
+ assert (sf != 0);
+ assert (df != sf);
+ assert (pass >= 3);
+ assert (pass < _nbr_bits);
+
+ const long nbr_coef = 1 << pass;
+ const long h_nbr_coef = nbr_coef >> 1;
+ const long d_nbr_coef = nbr_coef << 1;
+ long coef_index = 0;
+ const DataType * const cos_ptr = get_trigo_ptr (pass);
+ do
+ {
+ const DataType * const sf1r = sf + coef_index;
+ const DataType * const sf2r = sf1r + nbr_coef;
+ DataType * const dfr = df + coef_index;
+ DataType * const dfi = dfr + nbr_coef;
+
+ // Extreme coefficients are always real
+ dfr [0] = sf1r [0] + sf2r [0];
+ dfi [0] = sf1r [0] - sf2r [0]; // dfr [nbr_coef] =
+ dfr [h_nbr_coef] = sf1r [h_nbr_coef];
+ dfi [h_nbr_coef] = sf2r [h_nbr_coef];
+
+ // Others are conjugate complex numbers
+ const DataType * const sf1i = sf1r + h_nbr_coef;
+ const DataType * const sf2i = sf1i + nbr_coef;
+ for (long i = 1; i < h_nbr_coef; ++ i)
+ {
+ const DataType c = cos_ptr [i]; // cos (i*PI/nbr_coef);
+ const DataType s = cos_ptr [h_nbr_coef - i]; // sin (i*PI/nbr_coef);
+ DataType v;
+
+ v = sf2r [i] * c - sf2i [i] * s;
+ dfr [i] = sf1r [i] + v;
+ dfi [-i] = sf1r [i] - v; // dfr [nbr_coef - i] =
+
+ v = sf2r [i] * s + sf2i [i] * c;
+ dfi [i] = v + sf1i [i];
+ dfi [nbr_coef - i] = v - sf1i [i];
+ }
+
+ coef_index += d_nbr_coef;
+ }
+ while (coef_index < _length);
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::compute_direct_pass_n_osc (DataType df [], const DataType sf [], int pass) const
+{
+ assert (df != 0);
+ assert (sf != 0);
+ assert (df != sf);
+ assert (pass > TRIGO_BD_LIMIT);
+ assert (pass < _nbr_bits);
+
+ const long nbr_coef = 1 << pass;
+ const long h_nbr_coef = nbr_coef >> 1;
+ const long d_nbr_coef = nbr_coef << 1;
+ long coef_index = 0;
+ OscType & osc = _trigo_osc [pass - (TRIGO_BD_LIMIT + 1)];
+ do
+ {
+ const DataType * const sf1r = sf + coef_index;
+ const DataType * const sf2r = sf1r + nbr_coef;
+ DataType * const dfr = df + coef_index;
+ DataType * const dfi = dfr + nbr_coef;
+
+ osc.clear_buffers ();
+
+ // Extreme coefficients are always real
+ dfr [0] = sf1r [0] + sf2r [0];
+ dfi [0] = sf1r [0] - sf2r [0]; // dfr [nbr_coef] =
+ dfr [h_nbr_coef] = sf1r [h_nbr_coef];
+ dfi [h_nbr_coef] = sf2r [h_nbr_coef];
+
+ // Others are conjugate complex numbers
+ const DataType * const sf1i = sf1r + h_nbr_coef;
+ const DataType * const sf2i = sf1i + nbr_coef;
+ for (long i = 1; i < h_nbr_coef; ++ i)
+ {
+ osc.step ();
+ const DataType c = osc.get_cos ();
+ const DataType s = osc.get_sin ();
+ DataType v;
+
+ v = sf2r [i] * c - sf2i [i] * s;
+ dfr [i] = sf1r [i] + v;
+ dfi [-i] = sf1r [i] - v; // dfr [nbr_coef - i] =
+
+ v = sf2r [i] * s + sf2i [i] * c;
+ dfi [i] = v + sf1i [i];
+ dfi [nbr_coef - i] = v - sf1i [i];
+ }
+
+ coef_index += d_nbr_coef;
+ }
+ while (coef_index < _length);
+}
+
+
+
+// Transform in several pass
+template <class DT>
+void FFTReal <DT>::compute_ifft_general (const DataType f [], DataType x []) const
+{
+ assert (f != 0);
+ assert (f != use_buffer ());
+ assert (x != 0);
+ assert (x != use_buffer ());
+ assert (x != f);
+
+ DataType * sf = const_cast <DataType *> (f);
+ DataType * df;
+ DataType * df_temp;
+
+ if (_nbr_bits & 1)
+ {
+ df = use_buffer ();
+ df_temp = x;
+ }
+ else
+ {
+ df = x;
+ df_temp = use_buffer ();
+ }
+
+ for (int pass = _nbr_bits - 1; pass >= 3; -- pass)
+ {
+ compute_inverse_pass_n (df, sf, pass);
+
+ if (pass < _nbr_bits - 1)
+ {
+ DataType * const temp_ptr = df;
+ df = sf;
+ sf = temp_ptr;
+ }
+ else
+ {
+ sf = df;
+ df = df_temp;
+ }
+ }
+
+ compute_inverse_pass_3 (df, sf);
+ compute_inverse_pass_1_2 (x, df);
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::compute_inverse_pass_n (DataType df [], const DataType sf [], int pass) const
+{
+ assert (df != 0);
+ assert (sf != 0);
+ assert (df != sf);
+ assert (pass >= 3);
+ assert (pass < _nbr_bits);
+
+ if (pass <= TRIGO_BD_LIMIT)
+ {
+ compute_inverse_pass_n_lut (df, sf, pass);
+ }
+ else
+ {
+ compute_inverse_pass_n_osc (df, sf, pass);
+ }
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::compute_inverse_pass_n_lut (DataType df [], const DataType sf [], int pass) const
+{
+ assert (df != 0);
+ assert (sf != 0);
+ assert (df != sf);
+ assert (pass >= 3);
+ assert (pass < _nbr_bits);
+
+ const long nbr_coef = 1 << pass;
+ const long h_nbr_coef = nbr_coef >> 1;
+ const long d_nbr_coef = nbr_coef << 1;
+ long coef_index = 0;
+ const DataType * const cos_ptr = get_trigo_ptr (pass);
+ do
+ {
+ const DataType * const sfr = sf + coef_index;
+ const DataType * const sfi = sfr + nbr_coef;
+ DataType * const df1r = df + coef_index;
+ DataType * const df2r = df1r + nbr_coef;
+
+ // Extreme coefficients are always real
+ df1r [0] = sfr [0] + sfi [0]; // + sfr [nbr_coef]
+ df2r [0] = sfr [0] - sfi [0]; // - sfr [nbr_coef]
+ df1r [h_nbr_coef] = sfr [h_nbr_coef] * 2;
+ df2r [h_nbr_coef] = sfi [h_nbr_coef] * 2;
+
+ // Others are conjugate complex numbers
+ DataType * const df1i = df1r + h_nbr_coef;
+ DataType * const df2i = df1i + nbr_coef;
+ for (long i = 1; i < h_nbr_coef; ++ i)
+ {
+ df1r [i] = sfr [i] + sfi [-i]; // + sfr [nbr_coef - i]
+ df1i [i] = sfi [i] - sfi [nbr_coef - i];
+
+ const DataType c = cos_ptr [i]; // cos (i*PI/nbr_coef);
+ const DataType s = cos_ptr [h_nbr_coef - i]; // sin (i*PI/nbr_coef);
+ const DataType vr = sfr [i] - sfi [-i]; // - sfr [nbr_coef - i]
+ const DataType vi = sfi [i] + sfi [nbr_coef - i];
+
+ df2r [i] = vr * c + vi * s;
+ df2i [i] = vi * c - vr * s;
+ }
+
+ coef_index += d_nbr_coef;
+ }
+ while (coef_index < _length);
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::compute_inverse_pass_n_osc (DataType df [], const DataType sf [], int pass) const
+{
+ assert (df != 0);
+ assert (sf != 0);
+ assert (df != sf);
+ assert (pass > TRIGO_BD_LIMIT);
+ assert (pass < _nbr_bits);
+
+ const long nbr_coef = 1 << pass;
+ const long h_nbr_coef = nbr_coef >> 1;
+ const long d_nbr_coef = nbr_coef << 1;
+ long coef_index = 0;
+ OscType & osc = _trigo_osc [pass - (TRIGO_BD_LIMIT + 1)];
+ do
+ {
+ const DataType * const sfr = sf + coef_index;
+ const DataType * const sfi = sfr + nbr_coef;
+ DataType * const df1r = df + coef_index;
+ DataType * const df2r = df1r + nbr_coef;
+
+ osc.clear_buffers ();
+
+ // Extreme coefficients are always real
+ df1r [0] = sfr [0] + sfi [0]; // + sfr [nbr_coef]
+ df2r [0] = sfr [0] - sfi [0]; // - sfr [nbr_coef]
+ df1r [h_nbr_coef] = sfr [h_nbr_coef] * 2;
+ df2r [h_nbr_coef] = sfi [h_nbr_coef] * 2;
+
+ // Others are conjugate complex numbers
+ DataType * const df1i = df1r + h_nbr_coef;
+ DataType * const df2i = df1i + nbr_coef;
+ for (long i = 1; i < h_nbr_coef; ++ i)
+ {
+ df1r [i] = sfr [i] + sfi [-i]; // + sfr [nbr_coef - i]
+ df1i [i] = sfi [i] - sfi [nbr_coef - i];
+
+ osc.step ();
+ const DataType c = osc.get_cos ();
+ const DataType s = osc.get_sin ();
+ const DataType vr = sfr [i] - sfi [-i]; // - sfr [nbr_coef - i]
+ const DataType vi = sfi [i] + sfi [nbr_coef - i];
+
+ df2r [i] = vr * c + vi * s;
+ df2i [i] = vi * c - vr * s;
+ }
+
+ coef_index += d_nbr_coef;
+ }
+ while (coef_index < _length);
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::compute_inverse_pass_3 (DataType df [], const DataType sf []) const
+{
+ assert (df != 0);
+ assert (sf != 0);
+ assert (df != sf);
+
+ const DataType sqrt2_2 = DataType (SQRT2 * 0.5);
+ long coef_index = 0;
+ do
+ {
+ df [coef_index] = sf [coef_index] + sf [coef_index + 4];
+ df [coef_index + 4] = sf [coef_index] - sf [coef_index + 4];
+ df [coef_index + 2] = sf [coef_index + 2] * 2;
+ df [coef_index + 6] = sf [coef_index + 6] * 2;
+
+ df [coef_index + 1] = sf [coef_index + 1] + sf [coef_index + 3];
+ df [coef_index + 3] = sf [coef_index + 5] - sf [coef_index + 7];
+
+ const DataType vr = sf [coef_index + 1] - sf [coef_index + 3];
+ const DataType vi = sf [coef_index + 5] + sf [coef_index + 7];
+
+ df [coef_index + 5] = (vr + vi) * sqrt2_2;
+ df [coef_index + 7] = (vi - vr) * sqrt2_2;
+
+ coef_index += 8;
+ }
+ while (coef_index < _length);
+}
+
+
+
+template <class DT>
+void FFTReal <DT>::compute_inverse_pass_1_2 (DataType x [], const DataType sf []) const
+{
+ assert (x != 0);
+ assert (sf != 0);
+ assert (x != sf);
+
+ const long * bit_rev_lut_ptr = get_br_ptr ();
+ const DataType * sf2 = sf;
+ long coef_index = 0;
+ do
+ {
+ {
+ const DataType b_0 = sf2 [0] + sf2 [2];
+ const DataType b_2 = sf2 [0] - sf2 [2];
+ const DataType b_1 = sf2 [1] * 2;
+ const DataType b_3 = sf2 [3] * 2;
+
+ x [bit_rev_lut_ptr [0]] = b_0 + b_1;
+ x [bit_rev_lut_ptr [1]] = b_0 - b_1;
+ x [bit_rev_lut_ptr [2]] = b_2 + b_3;
+ x [bit_rev_lut_ptr [3]] = b_2 - b_3;
+ }
+ {
+ const DataType b_0 = sf2 [4] + sf2 [6];
+ const DataType b_2 = sf2 [4] - sf2 [6];
+ const DataType b_1 = sf2 [5] * 2;
+ const DataType b_3 = sf2 [7] * 2;
+
+ x [bit_rev_lut_ptr [4]] = b_0 + b_1;
+ x [bit_rev_lut_ptr [5]] = b_0 - b_1;
+ x [bit_rev_lut_ptr [6]] = b_2 + b_3;
+ x [bit_rev_lut_ptr [7]] = b_2 - b_3;
+ }
+
+ sf2 += 8;
+ coef_index += 8;
+ bit_rev_lut_ptr += 8;
+ }
+ while (coef_index < _length);
+}
+
+
+
+#endif // FFTReal_CODEHEADER_INCLUDED
+
+#undef FFTReal_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealFixLen.h b/demos/spectrum/3rdparty/fftreal/FFTRealFixLen.h
new file mode 100644
index 000000000..0b8026688
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealFixLen.h
@@ -0,0 +1,130 @@
+/*****************************************************************************
+
+ FFTRealFixLen.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (FFTRealFixLen_HEADER_INCLUDED)
+#define FFTRealFixLen_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "Array.h"
+#include "DynArray.h"
+#include "FFTRealFixLenParam.h"
+#include "OscSinCos.h"
+
+
+
+template <int LL2>
+class FFTRealFixLen
+{
+ typedef int CompileTimeCheck1 [(LL2 >= 0) ? 1 : -1];
+ typedef int CompileTimeCheck2 [(LL2 <= 30) ? 1 : -1];
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef FFTRealFixLenParam::DataType DataType;
+ typedef OscSinCos <DataType> OscType;
+
+ enum { FFT_LEN_L2 = LL2 };
+ enum { FFT_LEN = 1 << FFT_LEN_L2 };
+
+ FFTRealFixLen ();
+
+ inline long get_length () const;
+ void do_fft (DataType f [], const DataType x []);
+ void do_ifft (const DataType f [], DataType x []);
+ void rescale (DataType x []) const;
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ enum { TRIGO_BD_LIMIT = FFTRealFixLenParam::TRIGO_BD_LIMIT };
+
+ enum { BR_ARR_SIZE_L2 = ((FFT_LEN_L2 - 3) < 0) ? 0 : (FFT_LEN_L2 - 2) };
+ enum { BR_ARR_SIZE = 1 << BR_ARR_SIZE_L2 };
+
+ enum { TRIGO_BD = ((FFT_LEN_L2 - TRIGO_BD_LIMIT) < 0)
+ ? (int)FFT_LEN_L2
+ : (int)TRIGO_BD_LIMIT };
+ enum { TRIGO_TABLE_ARR_SIZE_L2 = (LL2 < 4) ? 0 : (TRIGO_BD - 2) };
+ enum { TRIGO_TABLE_ARR_SIZE = 1 << TRIGO_TABLE_ARR_SIZE_L2 };
+
+ enum { NBR_TRIGO_OSC = FFT_LEN_L2 - TRIGO_BD };
+ enum { TRIGO_OSC_ARR_SIZE = (NBR_TRIGO_OSC > 0) ? NBR_TRIGO_OSC : 1 };
+
+ void build_br_lut ();
+ void build_trigo_lut ();
+ void build_trigo_osc ();
+
+ DynArray <DataType>
+ _buffer;
+ DynArray <long>
+ _br_data;
+ DynArray <DataType>
+ _trigo_data;
+ Array <OscType, TRIGO_OSC_ARR_SIZE>
+ _trigo_osc;
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ FFTRealFixLen (const FFTRealFixLen &other);
+ FFTRealFixLen& operator = (const FFTRealFixLen &other);
+ bool operator == (const FFTRealFixLen &other);
+ bool operator != (const FFTRealFixLen &other);
+
+}; // class FFTRealFixLen
+
+
+
+#include "FFTRealFixLen.hpp"
+
+
+
+#endif // FFTRealFixLen_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealFixLen.hpp b/demos/spectrum/3rdparty/fftreal/FFTRealFixLen.hpp
new file mode 100644
index 000000000..6defb0095
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealFixLen.hpp
@@ -0,0 +1,322 @@
+/*****************************************************************************
+
+ FFTRealFixLen.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (FFTRealFixLen_CURRENT_CODEHEADER)
+ #error Recursive inclusion of FFTRealFixLen code header.
+#endif
+#define FFTRealFixLen_CURRENT_CODEHEADER
+
+#if ! defined (FFTRealFixLen_CODEHEADER_INCLUDED)
+#define FFTRealFixLen_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "def.h"
+#include "FFTRealPassDirect.h"
+#include "FFTRealPassInverse.h"
+#include "FFTRealSelect.h"
+
+#include <cassert>
+#include <cmath>
+
+namespace std { }
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <int LL2>
+FFTRealFixLen <LL2>::FFTRealFixLen ()
+: _buffer (FFT_LEN)
+, _br_data (BR_ARR_SIZE)
+, _trigo_data (TRIGO_TABLE_ARR_SIZE)
+, _trigo_osc ()
+{
+ build_br_lut ();
+ build_trigo_lut ();
+ build_trigo_osc ();
+}
+
+
+
+template <int LL2>
+long FFTRealFixLen <LL2>::get_length () const
+{
+ return (FFT_LEN);
+}
+
+
+
+// General case
+template <int LL2>
+void FFTRealFixLen <LL2>::do_fft (DataType f [], const DataType x [])
+{
+ assert (f != 0);
+ assert (x != 0);
+ assert (x != f);
+ assert (FFT_LEN_L2 >= 3);
+
+ // Do the transform in several passes
+ const DataType * cos_ptr = &_trigo_data [0];
+ const long * br_ptr = &_br_data [0];
+
+ FFTRealPassDirect <FFT_LEN_L2 - 1>::process (
+ FFT_LEN,
+ f,
+ &_buffer [0],
+ x,
+ cos_ptr,
+ TRIGO_TABLE_ARR_SIZE,
+ br_ptr,
+ &_trigo_osc [0]
+ );
+}
+
+// 4-point FFT
+template <>
+void FFTRealFixLen <2>::do_fft (DataType f [], const DataType x [])
+{
+ assert (f != 0);
+ assert (x != 0);
+ assert (x != f);
+
+ f [1] = x [0] - x [2];
+ f [3] = x [1] - x [3];
+
+ const DataType b_0 = x [0] + x [2];
+ const DataType b_2 = x [1] + x [3];
+
+ f [0] = b_0 + b_2;
+ f [2] = b_0 - b_2;
+}
+
+// 2-point FFT
+template <>
+void FFTRealFixLen <1>::do_fft (DataType f [], const DataType x [])
+{
+ assert (f != 0);
+ assert (x != 0);
+ assert (x != f);
+
+ f [0] = x [0] + x [1];
+ f [1] = x [0] - x [1];
+}
+
+// 1-point FFT
+template <>
+void FFTRealFixLen <0>::do_fft (DataType f [], const DataType x [])
+{
+ assert (f != 0);
+ assert (x != 0);
+
+ f [0] = x [0];
+}
+
+
+
+// General case
+template <int LL2>
+void FFTRealFixLen <LL2>::do_ifft (const DataType f [], DataType x [])
+{
+ assert (f != 0);
+ assert (x != 0);
+ assert (x != f);
+ assert (FFT_LEN_L2 >= 3);
+
+ // Do the transform in several passes
+ DataType * s_ptr =
+ FFTRealSelect <FFT_LEN_L2 & 1>::sel_bin (&_buffer [0], x);
+ DataType * d_ptr =
+ FFTRealSelect <FFT_LEN_L2 & 1>::sel_bin (x, &_buffer [0]);
+ const DataType * cos_ptr = &_trigo_data [0];
+ const long * br_ptr = &_br_data [0];
+
+ FFTRealPassInverse <FFT_LEN_L2 - 1>::process (
+ FFT_LEN,
+ d_ptr,
+ s_ptr,
+ f,
+ cos_ptr,
+ TRIGO_TABLE_ARR_SIZE,
+ br_ptr,
+ &_trigo_osc [0]
+ );
+}
+
+// 4-point IFFT
+template <>
+void FFTRealFixLen <2>::do_ifft (const DataType f [], DataType x [])
+{
+ assert (f != 0);
+ assert (x != 0);
+ assert (x != f);
+
+ const DataType b_0 = f [0] + f [2];
+ const DataType b_2 = f [0] - f [2];
+
+ x [0] = b_0 + f [1] * 2;
+ x [2] = b_0 - f [1] * 2;
+ x [1] = b_2 + f [3] * 2;
+ x [3] = b_2 - f [3] * 2;
+}
+
+// 2-point IFFT
+template <>
+void FFTRealFixLen <1>::do_ifft (const DataType f [], DataType x [])
+{
+ assert (f != 0);
+ assert (x != 0);
+ assert (x != f);
+
+ x [0] = f [0] + f [1];
+ x [1] = f [0] - f [1];
+}
+
+// 1-point IFFT
+template <>
+void FFTRealFixLen <0>::do_ifft (const DataType f [], DataType x [])
+{
+ assert (f != 0);
+ assert (x != 0);
+ assert (x != f);
+
+ x [0] = f [0];
+}
+
+
+
+
+template <int LL2>
+void FFTRealFixLen <LL2>::rescale (DataType x []) const
+{
+ assert (x != 0);
+
+ const DataType mul = DataType (1.0 / FFT_LEN);
+
+ if (FFT_LEN < 4)
+ {
+ long i = FFT_LEN - 1;
+ do
+ {
+ x [i] *= mul;
+ --i;
+ }
+ while (i >= 0);
+ }
+
+ else
+ {
+ assert ((FFT_LEN & 3) == 0);
+
+ // Could be optimized with SIMD instruction sets (needs alignment check)
+ long i = FFT_LEN - 4;
+ do
+ {
+ x [i + 0] *= mul;
+ x [i + 1] *= mul;
+ x [i + 2] *= mul;
+ x [i + 3] *= mul;
+ i -= 4;
+ }
+ while (i >= 0);
+ }
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <int LL2>
+void FFTRealFixLen <LL2>::build_br_lut ()
+{
+ _br_data [0] = 0;
+ for (long cnt = 1; cnt < BR_ARR_SIZE; ++cnt)
+ {
+ long index = cnt << 2;
+ long br_index = 0;
+
+ int bit_cnt = FFT_LEN_L2;
+ do
+ {
+ br_index <<= 1;
+ br_index += (index & 1);
+ index >>= 1;
+
+ -- bit_cnt;
+ }
+ while (bit_cnt > 0);
+
+ _br_data [cnt] = br_index;
+ }
+}
+
+
+
+template <int LL2>
+void FFTRealFixLen <LL2>::build_trigo_lut ()
+{
+ const double mul = (0.5 * PI) / TRIGO_TABLE_ARR_SIZE;
+ for (long i = 0; i < TRIGO_TABLE_ARR_SIZE; ++ i)
+ {
+ using namespace std;
+
+ _trigo_data [i] = DataType (cos (i * mul));
+ }
+}
+
+
+
+template <int LL2>
+void FFTRealFixLen <LL2>::build_trigo_osc ()
+{
+ for (int i = 0; i < NBR_TRIGO_OSC; ++i)
+ {
+ OscType & osc = _trigo_osc [i];
+
+ const long len = static_cast <long> (TRIGO_TABLE_ARR_SIZE) << (i + 1);
+ const double mul = (0.5 * PI) / len;
+ osc.set_step (mul);
+ }
+}
+
+
+
+#endif // FFTRealFixLen_CODEHEADER_INCLUDED
+
+#undef FFTRealFixLen_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealFixLenParam.h b/demos/spectrum/3rdparty/fftreal/FFTRealFixLenParam.h
new file mode 100644
index 000000000..163c08323
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealFixLenParam.h
@@ -0,0 +1,93 @@
+/*****************************************************************************
+
+ FFTRealFixLenParam.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (FFTRealFixLenParam_HEADER_INCLUDED)
+#define FFTRealFixLenParam_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+class FFTRealFixLenParam
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ // Over this bit depth, we use direct calculation for sin/cos
+ enum { TRIGO_BD_LIMIT = 12 };
+
+ typedef float DataType;
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+#if 0 // To avoid GCC warning:
+ // All member functions in class 'FFTRealFixLenParam' are private
+ FFTRealFixLenParam ();
+ ~FFTRealFixLenParam ();
+ FFTRealFixLenParam (const FFTRealFixLenParam &other);
+ FFTRealFixLenParam &
+ operator = (const FFTRealFixLenParam &other);
+ bool operator == (const FFTRealFixLenParam &other);
+ bool operator != (const FFTRealFixLenParam &other);
+#endif
+
+}; // class FFTRealFixLenParam
+
+
+
+//#include "FFTRealFixLenParam.hpp"
+
+
+
+#endif // FFTRealFixLenParam_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealPassDirect.h b/demos/spectrum/3rdparty/fftreal/FFTRealPassDirect.h
new file mode 100644
index 000000000..7d19c02e4
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealPassDirect.h
@@ -0,0 +1,96 @@
+/*****************************************************************************
+
+ FFTRealPassDirect.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (FFTRealPassDirect_HEADER_INCLUDED)
+#define FFTRealPassDirect_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "def.h"
+#include "FFTRealFixLenParam.h"
+#include "OscSinCos.h"
+
+
+
+template <int PASS>
+class FFTRealPassDirect
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef FFTRealFixLenParam::DataType DataType;
+ typedef OscSinCos <DataType> OscType;
+
+ FORCEINLINE static void
+ process (long len, DataType dest_ptr [], DataType src_ptr [], const DataType x_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list []);
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ FFTRealPassDirect ();
+ ~FFTRealPassDirect ();
+ FFTRealPassDirect (const FFTRealPassDirect &other);
+ FFTRealPassDirect &
+ operator = (const FFTRealPassDirect &other);
+ bool operator == (const FFTRealPassDirect &other);
+ bool operator != (const FFTRealPassDirect &other);
+
+}; // class FFTRealPassDirect
+
+
+
+#include "FFTRealPassDirect.hpp"
+
+
+
+#endif // FFTRealPassDirect_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealPassDirect.hpp b/demos/spectrum/3rdparty/fftreal/FFTRealPassDirect.hpp
new file mode 100644
index 000000000..db9d568e6
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealPassDirect.hpp
@@ -0,0 +1,204 @@
+/*****************************************************************************
+
+ FFTRealPassDirect.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (FFTRealPassDirect_CURRENT_CODEHEADER)
+ #error Recursive inclusion of FFTRealPassDirect code header.
+#endif
+#define FFTRealPassDirect_CURRENT_CODEHEADER
+
+#if ! defined (FFTRealPassDirect_CODEHEADER_INCLUDED)
+#define FFTRealPassDirect_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "FFTRealUseTrigo.h"
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <>
+void FFTRealPassDirect <1>::process (long len, DataType dest_ptr [], DataType src_ptr [], const DataType x_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list [])
+{
+ // First and second pass at once
+ const long qlen = len >> 2;
+
+ long coef_index = 0;
+ do
+ {
+ // To do: unroll the loop (2x).
+ const long ri_0 = br_ptr [coef_index >> 2];
+ const long ri_1 = ri_0 + 2 * qlen; // bit_rev_lut_ptr [coef_index + 1];
+ const long ri_2 = ri_0 + 1 * qlen; // bit_rev_lut_ptr [coef_index + 2];
+ const long ri_3 = ri_0 + 3 * qlen; // bit_rev_lut_ptr [coef_index + 3];
+
+ DataType * const df2 = dest_ptr + coef_index;
+ df2 [1] = x_ptr [ri_0] - x_ptr [ri_1];
+ df2 [3] = x_ptr [ri_2] - x_ptr [ri_3];
+
+ const DataType sf_0 = x_ptr [ri_0] + x_ptr [ri_1];
+ const DataType sf_2 = x_ptr [ri_2] + x_ptr [ri_3];
+
+ df2 [0] = sf_0 + sf_2;
+ df2 [2] = sf_0 - sf_2;
+
+ coef_index += 4;
+ }
+ while (coef_index < len);
+}
+
+template <>
+void FFTRealPassDirect <2>::process (long len, DataType dest_ptr [], DataType src_ptr [], const DataType x_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list [])
+{
+ // Executes "previous" passes first. Inverts source and destination buffers
+ FFTRealPassDirect <1>::process (
+ len,
+ src_ptr,
+ dest_ptr,
+ x_ptr,
+ cos_ptr,
+ cos_len,
+ br_ptr,
+ osc_list
+ );
+
+ // Third pass
+ const DataType sqrt2_2 = DataType (SQRT2 * 0.5);
+
+ long coef_index = 0;
+ do
+ {
+ dest_ptr [coef_index ] = src_ptr [coef_index] + src_ptr [coef_index + 4];
+ dest_ptr [coef_index + 4] = src_ptr [coef_index] - src_ptr [coef_index + 4];
+ dest_ptr [coef_index + 2] = src_ptr [coef_index + 2];
+ dest_ptr [coef_index + 6] = src_ptr [coef_index + 6];
+
+ DataType v;
+
+ v = (src_ptr [coef_index + 5] - src_ptr [coef_index + 7]) * sqrt2_2;
+ dest_ptr [coef_index + 1] = src_ptr [coef_index + 1] + v;
+ dest_ptr [coef_index + 3] = src_ptr [coef_index + 1] - v;
+
+ v = (src_ptr [coef_index + 5] + src_ptr [coef_index + 7]) * sqrt2_2;
+ dest_ptr [coef_index + 5] = v + src_ptr [coef_index + 3];
+ dest_ptr [coef_index + 7] = v - src_ptr [coef_index + 3];
+
+ coef_index += 8;
+ }
+ while (coef_index < len);
+}
+
+template <int PASS>
+void FFTRealPassDirect <PASS>::process (long len, DataType dest_ptr [], DataType src_ptr [], const DataType x_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list [])
+{
+ // Executes "previous" passes first. Inverts source and destination buffers
+ FFTRealPassDirect <PASS - 1>::process (
+ len,
+ src_ptr,
+ dest_ptr,
+ x_ptr,
+ cos_ptr,
+ cos_len,
+ br_ptr,
+ osc_list
+ );
+
+ const long dist = 1L << (PASS - 1);
+ const long c1_r = 0;
+ const long c1_i = dist;
+ const long c2_r = dist * 2;
+ const long c2_i = dist * 3;
+ const long cend = dist * 4;
+ const long table_step = cos_len >> (PASS - 1);
+
+ enum { TRIGO_OSC = PASS - FFTRealFixLenParam::TRIGO_BD_LIMIT };
+ enum { TRIGO_DIRECT = (TRIGO_OSC >= 0) ? 1 : 0 };
+
+ long coef_index = 0;
+ do
+ {
+ const DataType * const sf = src_ptr + coef_index;
+ DataType * const df = dest_ptr + coef_index;
+
+ // Extreme coefficients are always real
+ df [c1_r] = sf [c1_r] + sf [c2_r];
+ df [c2_r] = sf [c1_r] - sf [c2_r];
+ df [c1_i] = sf [c1_i];
+ df [c2_i] = sf [c2_i];
+
+ FFTRealUseTrigo <TRIGO_DIRECT>::prepare (osc_list [TRIGO_OSC]);
+
+ // Others are conjugate complex numbers
+ for (long i = 1; i < dist; ++ i)
+ {
+ DataType c;
+ DataType s;
+ FFTRealUseTrigo <TRIGO_DIRECT>::iterate (
+ osc_list [TRIGO_OSC],
+ c,
+ s,
+ cos_ptr,
+ i * table_step,
+ (dist - i) * table_step
+ );
+
+ const DataType sf_r_i = sf [c1_r + i];
+ const DataType sf_i_i = sf [c1_i + i];
+
+ const DataType v1 = sf [c2_r + i] * c - sf [c2_i + i] * s;
+ df [c1_r + i] = sf_r_i + v1;
+ df [c2_r - i] = sf_r_i - v1;
+
+ const DataType v2 = sf [c2_r + i] * s + sf [c2_i + i] * c;
+ df [c2_r + i] = v2 + sf_i_i;
+ df [cend - i] = v2 - sf_i_i;
+ }
+
+ coef_index += cend;
+ }
+ while (coef_index < len);
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#endif // FFTRealPassDirect_CODEHEADER_INCLUDED
+
+#undef FFTRealPassDirect_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealPassInverse.h b/demos/spectrum/3rdparty/fftreal/FFTRealPassInverse.h
new file mode 100644
index 000000000..2de895273
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealPassInverse.h
@@ -0,0 +1,101 @@
+/*****************************************************************************
+
+ FFTRealPassInverse.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (FFTRealPassInverse_HEADER_INCLUDED)
+#define FFTRealPassInverse_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "def.h"
+#include "FFTRealFixLenParam.h"
+#include "OscSinCos.h"
+
+
+
+
+template <int PASS>
+class FFTRealPassInverse
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef FFTRealFixLenParam::DataType DataType;
+ typedef OscSinCos <DataType> OscType;
+
+ FORCEINLINE static void
+ process (long len, DataType dest_ptr [], DataType src_ptr [], const DataType f_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list []);
+ FORCEINLINE static void
+ process_rec (long len, DataType dest_ptr [], DataType src_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list []);
+ FORCEINLINE static void
+ process_internal (long len, DataType dest_ptr [], const DataType src_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list []);
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ FFTRealPassInverse ();
+ ~FFTRealPassInverse ();
+ FFTRealPassInverse (const FFTRealPassInverse &other);
+ FFTRealPassInverse &
+ operator = (const FFTRealPassInverse &other);
+ bool operator == (const FFTRealPassInverse &other);
+ bool operator != (const FFTRealPassInverse &other);
+
+}; // class FFTRealPassInverse
+
+
+
+#include "FFTRealPassInverse.hpp"
+
+
+
+#endif // FFTRealPassInverse_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealPassInverse.hpp b/demos/spectrum/3rdparty/fftreal/FFTRealPassInverse.hpp
new file mode 100644
index 000000000..573754696
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealPassInverse.hpp
@@ -0,0 +1,229 @@
+/*****************************************************************************
+
+ FFTRealPassInverse.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (FFTRealPassInverse_CURRENT_CODEHEADER)
+ #error Recursive inclusion of FFTRealPassInverse code header.
+#endif
+#define FFTRealPassInverse_CURRENT_CODEHEADER
+
+#if ! defined (FFTRealPassInverse_CODEHEADER_INCLUDED)
+#define FFTRealPassInverse_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "FFTRealUseTrigo.h"
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <int PASS>
+void FFTRealPassInverse <PASS>::process (long len, DataType dest_ptr [], DataType src_ptr [], const DataType f_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list [])
+{
+ process_internal (
+ len,
+ dest_ptr,
+ f_ptr,
+ cos_ptr,
+ cos_len,
+ br_ptr,
+ osc_list
+ );
+ FFTRealPassInverse <PASS - 1>::process_rec (
+ len,
+ src_ptr,
+ dest_ptr,
+ cos_ptr,
+ cos_len,
+ br_ptr,
+ osc_list
+ );
+}
+
+
+
+template <int PASS>
+void FFTRealPassInverse <PASS>::process_rec (long len, DataType dest_ptr [], DataType src_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list [])
+{
+ process_internal (
+ len,
+ dest_ptr,
+ src_ptr,
+ cos_ptr,
+ cos_len,
+ br_ptr,
+ osc_list
+ );
+ FFTRealPassInverse <PASS - 1>::process_rec (
+ len,
+ src_ptr,
+ dest_ptr,
+ cos_ptr,
+ cos_len,
+ br_ptr,
+ osc_list
+ );
+}
+
+template <>
+void FFTRealPassInverse <0>::process_rec (long len, DataType dest_ptr [], DataType src_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list [])
+{
+ // Stops recursion
+}
+
+
+
+template <int PASS>
+void FFTRealPassInverse <PASS>::process_internal (long len, DataType dest_ptr [], const DataType src_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list [])
+{
+ const long dist = 1L << (PASS - 1);
+ const long c1_r = 0;
+ const long c1_i = dist;
+ const long c2_r = dist * 2;
+ const long c2_i = dist * 3;
+ const long cend = dist * 4;
+ const long table_step = cos_len >> (PASS - 1);
+
+ enum { TRIGO_OSC = PASS - FFTRealFixLenParam::TRIGO_BD_LIMIT };
+ enum { TRIGO_DIRECT = (TRIGO_OSC >= 0) ? 1 : 0 };
+
+ long coef_index = 0;
+ do
+ {
+ const DataType * const sf = src_ptr + coef_index;
+ DataType * const df = dest_ptr + coef_index;
+
+ // Extreme coefficients are always real
+ df [c1_r] = sf [c1_r] + sf [c2_r];
+ df [c2_r] = sf [c1_r] - sf [c2_r];
+ df [c1_i] = sf [c1_i] * 2;
+ df [c2_i] = sf [c2_i] * 2;
+
+ FFTRealUseTrigo <TRIGO_DIRECT>::prepare (osc_list [TRIGO_OSC]);
+
+ // Others are conjugate complex numbers
+ for (long i = 1; i < dist; ++ i)
+ {
+ df [c1_r + i] = sf [c1_r + i] + sf [c2_r - i];
+ df [c1_i + i] = sf [c2_r + i] - sf [cend - i];
+
+ DataType c;
+ DataType s;
+ FFTRealUseTrigo <TRIGO_DIRECT>::iterate (
+ osc_list [TRIGO_OSC],
+ c,
+ s,
+ cos_ptr,
+ i * table_step,
+ (dist - i) * table_step
+ );
+
+ const DataType vr = sf [c1_r + i] - sf [c2_r - i];
+ const DataType vi = sf [c2_r + i] + sf [cend - i];
+
+ df [c2_r + i] = vr * c + vi * s;
+ df [c2_i + i] = vi * c - vr * s;
+ }
+
+ coef_index += cend;
+ }
+ while (coef_index < len);
+}
+
+template <>
+void FFTRealPassInverse <2>::process_internal (long len, DataType dest_ptr [], const DataType src_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list [])
+{
+ // Antepenultimate pass
+ const DataType sqrt2_2 = DataType (SQRT2 * 0.5);
+
+ long coef_index = 0;
+ do
+ {
+ dest_ptr [coef_index ] = src_ptr [coef_index] + src_ptr [coef_index + 4];
+ dest_ptr [coef_index + 4] = src_ptr [coef_index] - src_ptr [coef_index + 4];
+ dest_ptr [coef_index + 2] = src_ptr [coef_index + 2] * 2;
+ dest_ptr [coef_index + 6] = src_ptr [coef_index + 6] * 2;
+
+ dest_ptr [coef_index + 1] = src_ptr [coef_index + 1] + src_ptr [coef_index + 3];
+ dest_ptr [coef_index + 3] = src_ptr [coef_index + 5] - src_ptr [coef_index + 7];
+
+ const DataType vr = src_ptr [coef_index + 1] - src_ptr [coef_index + 3];
+ const DataType vi = src_ptr [coef_index + 5] + src_ptr [coef_index + 7];
+
+ dest_ptr [coef_index + 5] = (vr + vi) * sqrt2_2;
+ dest_ptr [coef_index + 7] = (vi - vr) * sqrt2_2;
+
+ coef_index += 8;
+ }
+ while (coef_index < len);
+}
+
+template <>
+void FFTRealPassInverse <1>::process_internal (long len, DataType dest_ptr [], const DataType src_ptr [], const DataType cos_ptr [], long cos_len, const long br_ptr [], OscType osc_list [])
+{
+ // Penultimate and last pass at once
+ const long qlen = len >> 2;
+
+ long coef_index = 0;
+ do
+ {
+ const long ri_0 = br_ptr [coef_index >> 2];
+
+ const DataType b_0 = src_ptr [coef_index ] + src_ptr [coef_index + 2];
+ const DataType b_2 = src_ptr [coef_index ] - src_ptr [coef_index + 2];
+ const DataType b_1 = src_ptr [coef_index + 1] * 2;
+ const DataType b_3 = src_ptr [coef_index + 3] * 2;
+
+ dest_ptr [ri_0 ] = b_0 + b_1;
+ dest_ptr [ri_0 + 2 * qlen] = b_0 - b_1;
+ dest_ptr [ri_0 + 1 * qlen] = b_2 + b_3;
+ dest_ptr [ri_0 + 3 * qlen] = b_2 - b_3;
+
+ coef_index += 4;
+ }
+ while (coef_index < len);
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#endif // FFTRealPassInverse_CODEHEADER_INCLUDED
+
+#undef FFTRealPassInverse_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealSelect.h b/demos/spectrum/3rdparty/fftreal/FFTRealSelect.h
new file mode 100644
index 000000000..bd722d4d1
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealSelect.h
@@ -0,0 +1,77 @@
+/*****************************************************************************
+
+ FFTRealSelect.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (FFTRealSelect_HEADER_INCLUDED)
+#define FFTRealSelect_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "def.h"
+
+
+
+template <int P>
+class FFTRealSelect
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ FORCEINLINE static float *
+ sel_bin (float *e_ptr, float *o_ptr);
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ FFTRealSelect ();
+ ~FFTRealSelect ();
+ FFTRealSelect (const FFTRealSelect &other);
+ FFTRealSelect& operator = (const FFTRealSelect &other);
+ bool operator == (const FFTRealSelect &other);
+ bool operator != (const FFTRealSelect &other);
+
+}; // class FFTRealSelect
+
+
+
+#include "FFTRealSelect.hpp"
+
+
+
+#endif // FFTRealSelect_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealSelect.hpp b/demos/spectrum/3rdparty/fftreal/FFTRealSelect.hpp
new file mode 100644
index 000000000..9ddf5864c
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealSelect.hpp
@@ -0,0 +1,62 @@
+/*****************************************************************************
+
+ FFTRealSelect.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (FFTRealSelect_CURRENT_CODEHEADER)
+ #error Recursive inclusion of FFTRealSelect code header.
+#endif
+#define FFTRealSelect_CURRENT_CODEHEADER
+
+#if ! defined (FFTRealSelect_CODEHEADER_INCLUDED)
+#define FFTRealSelect_CODEHEADER_INCLUDED
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <int P>
+float * FFTRealSelect <P>::sel_bin (float *e_ptr, float *o_ptr)
+{
+ return (o_ptr);
+}
+
+
+
+template <>
+float * FFTRealSelect <0>::sel_bin (float *e_ptr, float *o_ptr)
+{
+ return (e_ptr);
+}
+
+
+
+#endif // FFTRealSelect_CODEHEADER_INCLUDED
+
+#undef FFTRealSelect_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealUseTrigo.h b/demos/spectrum/3rdparty/fftreal/FFTRealUseTrigo.h
new file mode 100644
index 000000000..c4368ee08
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealUseTrigo.h
@@ -0,0 +1,101 @@
+/*****************************************************************************
+
+ FFTRealUseTrigo.h
+ Copyright (c) 2005 Laurent de Soras
+
+Template parameters:
+ - ALGO: algorithm choice. 0 = table, other = oscillator
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (FFTRealUseTrigo_HEADER_INCLUDED)
+#define FFTRealUseTrigo_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "def.h"
+#include "FFTRealFixLenParam.h"
+#include "OscSinCos.h"
+
+
+
+template <int ALGO>
+class FFTRealUseTrigo
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef FFTRealFixLenParam::DataType DataType;
+ typedef OscSinCos <DataType> OscType;
+
+ FORCEINLINE static void
+ prepare (OscType &osc);
+ FORCEINLINE static void
+ iterate (OscType &osc, DataType &c, DataType &s, const DataType cos_ptr [], long index_c, long index_s);
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ FFTRealUseTrigo ();
+ ~FFTRealUseTrigo ();
+ FFTRealUseTrigo (const FFTRealUseTrigo &other);
+ FFTRealUseTrigo &
+ operator = (const FFTRealUseTrigo &other);
+ bool operator == (const FFTRealUseTrigo &other);
+ bool operator != (const FFTRealUseTrigo &other);
+
+}; // class FFTRealUseTrigo
+
+
+
+#include "FFTRealUseTrigo.hpp"
+
+
+
+#endif // FFTRealUseTrigo_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/FFTRealUseTrigo.hpp b/demos/spectrum/3rdparty/fftreal/FFTRealUseTrigo.hpp
new file mode 100644
index 000000000..aa968b81a
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/FFTRealUseTrigo.hpp
@@ -0,0 +1,91 @@
+/*****************************************************************************
+
+ FFTRealUseTrigo.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (FFTRealUseTrigo_CURRENT_CODEHEADER)
+ #error Recursive inclusion of FFTRealUseTrigo code header.
+#endif
+#define FFTRealUseTrigo_CURRENT_CODEHEADER
+
+#if ! defined (FFTRealUseTrigo_CODEHEADER_INCLUDED)
+#define FFTRealUseTrigo_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "OscSinCos.h"
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <int ALGO>
+void FFTRealUseTrigo <ALGO>::prepare (OscType &osc)
+{
+ osc.clear_buffers ();
+}
+
+template <>
+void FFTRealUseTrigo <0>::prepare (OscType &osc)
+{
+ // Nothing
+}
+
+
+
+template <int ALGO>
+void FFTRealUseTrigo <ALGO>::iterate (OscType &osc, DataType &c, DataType &s, const DataType cos_ptr [], long index_c, long index_s)
+{
+ osc.step ();
+ c = osc.get_cos ();
+ s = osc.get_sin ();
+}
+
+template <>
+void FFTRealUseTrigo <0>::iterate (OscType &osc, DataType &c, DataType &s, const DataType cos_ptr [], long index_c, long index_s)
+{
+ c = cos_ptr [index_c];
+ s = cos_ptr [index_s];
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#endif // FFTRealUseTrigo_CODEHEADER_INCLUDED
+
+#undef FFTRealUseTrigo_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/OscSinCos.h b/demos/spectrum/3rdparty/fftreal/OscSinCos.h
new file mode 100644
index 000000000..775fc14f3
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/OscSinCos.h
@@ -0,0 +1,106 @@
+/*****************************************************************************
+
+ OscSinCos.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (OscSinCos_HEADER_INCLUDED)
+#define OscSinCos_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "def.h"
+
+
+
+template <class T>
+class OscSinCos
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef T DataType;
+
+ OscSinCos ();
+
+ FORCEINLINE void
+ set_step (double angle_rad);
+
+ FORCEINLINE DataType
+ get_cos () const;
+ FORCEINLINE DataType
+ get_sin () const;
+ FORCEINLINE void
+ step ();
+ FORCEINLINE void
+ clear_buffers ();
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ DataType _pos_cos; // Current phase expressed with sin and cos. [-1 ; 1]
+ DataType _pos_sin; // -
+ DataType _step_cos; // Phase increment per step, [-1 ; 1]
+ DataType _step_sin; // -
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ OscSinCos (const OscSinCos &other);
+ OscSinCos & operator = (const OscSinCos &other);
+ bool operator == (const OscSinCos &other);
+ bool operator != (const OscSinCos &other);
+
+}; // class OscSinCos
+
+
+
+#include "OscSinCos.hpp"
+
+
+
+#endif // OscSinCos_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/OscSinCos.hpp b/demos/spectrum/3rdparty/fftreal/OscSinCos.hpp
new file mode 100644
index 000000000..749aef04d
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/OscSinCos.hpp
@@ -0,0 +1,122 @@
+/*****************************************************************************
+
+ OscSinCos.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (OscSinCos_CURRENT_CODEHEADER)
+ #error Recursive inclusion of OscSinCos code header.
+#endif
+#define OscSinCos_CURRENT_CODEHEADER
+
+#if ! defined (OscSinCos_CODEHEADER_INCLUDED)
+#define OscSinCos_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include <cmath>
+
+namespace std { }
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class T>
+OscSinCos <T>::OscSinCos ()
+: _pos_cos (1)
+, _pos_sin (0)
+, _step_cos (1)
+, _step_sin (0)
+{
+ // Nothing
+}
+
+
+
+template <class T>
+void OscSinCos <T>::set_step (double angle_rad)
+{
+ using namespace std;
+
+ _step_cos = static_cast <DataType> (cos (angle_rad));
+ _step_sin = static_cast <DataType> (sin (angle_rad));
+}
+
+
+
+template <class T>
+typename OscSinCos <T>::DataType OscSinCos <T>::get_cos () const
+{
+ return (_pos_cos);
+}
+
+
+
+template <class T>
+typename OscSinCos <T>::DataType OscSinCos <T>::get_sin () const
+{
+ return (_pos_sin);
+}
+
+
+
+template <class T>
+void OscSinCos <T>::step ()
+{
+ const DataType old_cos = _pos_cos;
+ const DataType old_sin = _pos_sin;
+
+ _pos_cos = old_cos * _step_cos - old_sin * _step_sin;
+ _pos_sin = old_cos * _step_sin + old_sin * _step_cos;
+}
+
+
+
+template <class T>
+void OscSinCos <T>::clear_buffers ()
+{
+ _pos_cos = static_cast <DataType> (1);
+ _pos_sin = static_cast <DataType> (0);
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#endif // OscSinCos_CODEHEADER_INCLUDED
+
+#undef OscSinCos_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/TestAccuracy.h b/demos/spectrum/3rdparty/fftreal/TestAccuracy.h
new file mode 100644
index 000000000..4b07a6b60
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/TestAccuracy.h
@@ -0,0 +1,105 @@
+/*****************************************************************************
+
+ TestAccuracy.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (TestAccuracy_HEADER_INCLUDED)
+#define TestAccuracy_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class FO>
+class TestAccuracy
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef typename FO::DataType DataType;
+ typedef long double BigFloat; // To get maximum accuracy during intermediate calculations
+
+ static int perform_test_single_object (FO &fft);
+ static int perform_test_d (FO &fft, const char *class_name_0);
+ static int perform_test_i (FO &fft, const char *class_name_0);
+ static int perform_test_di (FO &fft, const char *class_name_0);
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ enum { NBR_ACC_TESTS = 10 * 1000 * 1000 };
+ enum { MAX_NBR_TESTS = 10000 };
+
+ static void compute_tf (DataType s [], const DataType x [], long length);
+ static void compute_itf (DataType x [], const DataType s [], long length);
+ static int compare_vect_display (const DataType x_ptr [], const DataType y_ptr [], long len, BigFloat &max_err_rel);
+ static BigFloat
+ compute_power (const DataType x_ptr [], long len);
+ static BigFloat
+ compute_power (const DataType x_ptr [], const DataType y_ptr [], long len);
+ static void compare_vect (const DataType x_ptr [], const DataType y_ptr [], BigFloat &power, long &max_err_pos, long len);
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ TestAccuracy ();
+ ~TestAccuracy ();
+ TestAccuracy (const TestAccuracy &other);
+ TestAccuracy & operator = (const TestAccuracy &other);
+ bool operator == (const TestAccuracy &other);
+ bool operator != (const TestAccuracy &other);
+
+}; // class TestAccuracy
+
+
+
+#include "TestAccuracy.hpp"
+
+
+
+#endif // TestAccuracy_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/TestAccuracy.hpp b/demos/spectrum/3rdparty/fftreal/TestAccuracy.hpp
new file mode 100644
index 000000000..5c794f747
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/TestAccuracy.hpp
@@ -0,0 +1,472 @@
+/*****************************************************************************
+
+ TestAccuracy.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (TestAccuracy_CURRENT_CODEHEADER)
+ #error Recursive inclusion of TestAccuracy code header.
+#endif
+#define TestAccuracy_CURRENT_CODEHEADER
+
+#if ! defined (TestAccuracy_CODEHEADER_INCLUDED)
+#define TestAccuracy_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "def.h"
+#include "test_fnc.h"
+#include "TestWhiteNoiseGen.h"
+
+#include <typeinfo>
+#include <vector>
+
+#include <cmath>
+#include <cstdio>
+
+
+
+static const double TestAccuracy_LN10 = 2.3025850929940456840179914546844;
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class FO>
+int TestAccuracy <FO>::perform_test_single_object (FO &fft)
+{
+ assert (&fft != 0);
+
+ using namespace std;
+
+ int ret_val = 0;
+
+ const std::type_info & ti = typeid (fft);
+ const char * class_name_0 = ti.name ();
+
+ if (ret_val == 0)
+ {
+ ret_val = perform_test_d (fft, class_name_0);
+ }
+ if (ret_val == 0)
+ {
+ ret_val = perform_test_i (fft, class_name_0);
+ }
+ if (ret_val == 0)
+ {
+ ret_val = perform_test_di (fft, class_name_0);
+ }
+
+ if (ret_val == 0)
+ {
+ printf ("\n");
+ }
+
+ return (ret_val);
+}
+
+
+
+template <class FO>
+int TestAccuracy <FO>::perform_test_d (FO &fft, const char *class_name_0)
+{
+ assert (&fft != 0);
+ assert (class_name_0 != 0);
+
+ using namespace std;
+
+ int ret_val = 0;
+ const long len = fft.get_length ();
+ const long nbr_tests = limit (
+ NBR_ACC_TESTS / len / len,
+ 1L,
+ static_cast <long> (MAX_NBR_TESTS)
+ );
+
+ printf ("Testing %s::do_fft () [%ld samples]... ", class_name_0, len);
+ fflush (stdout);
+ TestWhiteNoiseGen <DataType> noise;
+ std::vector <DataType> x (len);
+ std::vector <DataType> s1 (len);
+ std::vector <DataType> s2 (len);
+ BigFloat err_avg = 0;
+
+ for (long test = 0; test < nbr_tests && ret_val == 0; ++ test)
+ {
+ noise.generate (&x [0], len);
+ fft.do_fft (&s1 [0], &x [0]);
+ compute_tf (&s2 [0], &x [0], len);
+
+ BigFloat max_err;
+ compare_vect_display (&s1 [0], &s2 [0], len, max_err);
+ err_avg += max_err;
+ }
+ err_avg /= NBR_ACC_TESTS;
+
+ printf ("done.\n");
+ printf (
+ "Average maximum error: %.6f %% (%f dB)\n",
+ static_cast <double> (err_avg * 100),
+ static_cast <double> ((20 / TestAccuracy_LN10) * log (err_avg))
+ );
+
+ return (ret_val);
+}
+
+
+
+template <class FO>
+int TestAccuracy <FO>::perform_test_i (FO &fft, const char *class_name_0)
+{
+ assert (&fft != 0);
+ assert (class_name_0 != 0);
+
+ using namespace std;
+
+ int ret_val = 0;
+ const long len = fft.get_length ();
+ const long nbr_tests = limit (
+ NBR_ACC_TESTS / len / len,
+ 10L,
+ static_cast <long> (MAX_NBR_TESTS)
+ );
+
+ printf ("Testing %s::do_ifft () [%ld samples]... ", class_name_0, len);
+ fflush (stdout);
+ TestWhiteNoiseGen <DataType> noise;
+ std::vector <DataType> s (len);
+ std::vector <DataType> x1 (len);
+ std::vector <DataType> x2 (len);
+ BigFloat err_avg = 0;
+
+ for (long test = 0; test < nbr_tests && ret_val == 0; ++ test)
+ {
+ noise.generate (&s [0], len);
+ fft.do_ifft (&s [0], &x1 [0]);
+ compute_itf (&x2 [0], &s [0], len);
+
+ BigFloat max_err;
+ compare_vect_display (&x1 [0], &x2 [0], len, max_err);
+ err_avg += max_err;
+ }
+ err_avg /= NBR_ACC_TESTS;
+
+ printf ("done.\n");
+ printf (
+ "Average maximum error: %.6f %% (%f dB)\n",
+ static_cast <double> (err_avg * 100),
+ static_cast <double> ((20 / TestAccuracy_LN10) * log (err_avg))
+ );
+
+ return (ret_val);
+}
+
+
+
+template <class FO>
+int TestAccuracy <FO>::perform_test_di (FO &fft, const char *class_name_0)
+{
+ assert (&fft != 0);
+ assert (class_name_0 != 0);
+
+ using namespace std;
+
+ int ret_val = 0;
+ const long len = fft.get_length ();
+ const long nbr_tests = limit (
+ NBR_ACC_TESTS / len / len,
+ 1L,
+ static_cast <long> (MAX_NBR_TESTS)
+ );
+
+ printf (
+ "Testing %s::do_fft () / do_ifft () / rescale () [%ld samples]... ",
+ class_name_0,
+ len
+ );
+ fflush (stdout);
+ TestWhiteNoiseGen <DataType> noise;
+ std::vector <DataType> x (len);
+ std::vector <DataType> s (len);
+ std::vector <DataType> y (len);
+ BigFloat err_avg = 0;
+
+ for (long test = 0; test < nbr_tests && ret_val == 0; ++ test)
+ {
+ noise.generate (&x [0], len);
+ fft.do_fft (&s [0], &x [0]);
+ fft.do_ifft (&s [0], &y [0]);
+ fft.rescale (&y [0]);
+
+ BigFloat max_err;
+ compare_vect_display (&x [0], &y [0], len, max_err);
+ err_avg += max_err;
+ }
+ err_avg /= NBR_ACC_TESTS;
+
+ printf ("done.\n");
+ printf (
+ "Average maximum error: %.6f %% (%f dB)\n",
+ static_cast <double> (err_avg * 100),
+ static_cast <double> ((20 / TestAccuracy_LN10) * log (err_avg))
+ );
+
+ return (ret_val);
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+// Positive transform
+template <class FO>
+void TestAccuracy <FO>::compute_tf (DataType s [], const DataType x [], long length)
+{
+ assert (s != 0);
+ assert (x != 0);
+ assert (length >= 2);
+ assert ((length & 1) == 0);
+
+ const long nbr_bins = length >> 1;
+
+ // DC and Nyquist
+ BigFloat dc = 0;
+ BigFloat ny = 0;
+ for (long pos = 0; pos < length; pos += 2)
+ {
+ const BigFloat even = x [pos ];
+ const BigFloat odd = x [pos + 1];
+ dc += even + odd;
+ ny += even - odd;
+ }
+ s [0 ] = static_cast <DataType> (dc);
+ s [nbr_bins] = static_cast <DataType> (ny);
+
+ // Regular bins
+ for (long bin = 1; bin < nbr_bins; ++ bin)
+ {
+ BigFloat sum_r = 0;
+ BigFloat sum_i = 0;
+
+ const BigFloat m = bin * static_cast <BigFloat> (2 * PI) / length;
+
+ for (long pos = 0; pos < length; ++pos)
+ {
+ using namespace std;
+
+ const BigFloat phase = pos * m;
+ const BigFloat e_r = cos (phase);
+ const BigFloat e_i = sin (phase);
+
+ sum_r += x [pos] * e_r;
+ sum_i += x [pos] * e_i;
+ }
+
+ s [ bin] = static_cast <DataType> (sum_r);
+ s [nbr_bins + bin] = static_cast <DataType> (sum_i);
+ }
+}
+
+
+
+// Negative transform
+template <class FO>
+void TestAccuracy <FO>::compute_itf (DataType x [], const DataType s [], long length)
+{
+ assert (s != 0);
+ assert (x != 0);
+ assert (length >= 2);
+ assert ((length & 1) == 0);
+
+ const long nbr_bins = length >> 1;
+
+ // DC and Nyquist
+ BigFloat dc = s [0 ];
+ BigFloat ny = s [nbr_bins];
+
+ // Regular bins
+ for (long pos = 0; pos < length; ++pos)
+ {
+ BigFloat sum = dc + ny * (1 - 2 * (pos & 1));
+
+ const BigFloat m = pos * static_cast <BigFloat> (-2 * PI) / length;
+
+ for (long bin = 1; bin < nbr_bins; ++ bin)
+ {
+ using namespace std;
+
+ const BigFloat phase = bin * m;
+ const BigFloat e_r = cos (phase);
+ const BigFloat e_i = sin (phase);
+
+ sum += 2 * ( e_r * s [bin ]
+ - e_i * s [bin + nbr_bins]);
+ }
+
+ x [pos] = static_cast <DataType> (sum);
+ }
+}
+
+
+
+template <class FO>
+int TestAccuracy <FO>::compare_vect_display (const DataType x_ptr [], const DataType y_ptr [], long len, BigFloat &max_err_rel)
+{
+ assert (x_ptr != 0);
+ assert (y_ptr != 0);
+ assert (len > 0);
+ assert (&max_err_rel != 0);
+
+ using namespace std;
+
+ int ret_val = 0;
+
+ BigFloat power = compute_power (&x_ptr [0], &y_ptr [0], len);
+ BigFloat power_dif;
+ long max_err_pos;
+ compare_vect (&x_ptr [0], &y_ptr [0], power_dif, max_err_pos, len);
+
+ if (power == 0)
+ {
+ power = power_dif;
+ }
+ const BigFloat power_err_rel = power_dif / power;
+
+ BigFloat max_err = 0;
+ max_err_rel = 0;
+ if (max_err_pos >= 0)
+ {
+ max_err = y_ptr [max_err_pos] - x_ptr [max_err_pos];
+ max_err_rel = 2 * fabs (max_err) / ( fabs (y_ptr [max_err_pos])
+ + fabs (x_ptr [max_err_pos]));
+ }
+
+ if (power_err_rel > 0.001)
+ {
+ printf ("Power error : %f (%.6f %%)\n",
+ static_cast <double> (power_err_rel),
+ static_cast <double> (power_err_rel * 100)
+ );
+ if (max_err_pos >= 0)
+ {
+ printf (
+ "Maximum error: %f - %f = %f (%f)\n",
+ static_cast <double> (y_ptr [max_err_pos]),
+ static_cast <double> (x_ptr [max_err_pos]),
+ static_cast <double> (max_err),
+ static_cast <double> (max_err_pos)
+ );
+ }
+ }
+
+ return (ret_val);
+}
+
+
+
+template <class FO>
+typename TestAccuracy <FO>::BigFloat TestAccuracy <FO>::compute_power (const DataType x_ptr [], long len)
+{
+ assert (x_ptr != 0);
+ assert (len > 0);
+
+ BigFloat power = 0;
+ for (long pos = 0; pos < len; ++pos)
+ {
+ const BigFloat val = x_ptr [pos];
+
+ power += val * val;
+ }
+
+ using namespace std;
+
+ power = sqrt (power) / len;
+
+ return (power);
+}
+
+
+
+template <class FO>
+typename TestAccuracy <FO>::BigFloat TestAccuracy <FO>::compute_power (const DataType x_ptr [], const DataType y_ptr [], long len)
+{
+ assert (x_ptr != 0);
+ assert (y_ptr != 0);
+ assert (len > 0);
+
+ return ((compute_power (x_ptr, len) + compute_power (y_ptr, len)) * 0.5);
+}
+
+
+
+template <class FO>
+void TestAccuracy <FO>::compare_vect (const DataType x_ptr [], const DataType y_ptr [], BigFloat &power, long &max_err_pos, long len)
+{
+ assert (x_ptr != 0);
+ assert (y_ptr != 0);
+ assert (len > 0);
+ assert (&power != 0);
+ assert (&max_err_pos != 0);
+
+ power = 0;
+ BigFloat max_dif2 = 0;
+ max_err_pos = -1;
+
+ for (long pos = 0; pos < len; ++pos)
+ {
+ const BigFloat x = x_ptr [pos];
+ const BigFloat y = y_ptr [pos];
+ const BigFloat dif = y - x;
+ const BigFloat dif2 = dif * dif;
+
+ power += dif2;
+ if (dif2 > max_dif2)
+ {
+ max_err_pos = pos;
+ max_dif2 = dif2;
+ }
+ }
+
+ using namespace std;
+
+ power = sqrt (power) / len;
+}
+
+
+
+#endif // TestAccuracy_CODEHEADER_INCLUDED
+
+#undef TestAccuracy_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/TestHelperFixLen.h b/demos/spectrum/3rdparty/fftreal/TestHelperFixLen.h
new file mode 100644
index 000000000..ecff96d33
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/TestHelperFixLen.h
@@ -0,0 +1,93 @@
+/*****************************************************************************
+
+ TestHelperFixLen.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (TestHelperFixLen_HEADER_INCLUDED)
+#define TestHelperFixLen_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "FFTRealFixLen.h"
+
+
+
+template <int L>
+class TestHelperFixLen
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef FFTRealFixLen <L> FftType;
+
+ static void perform_test_accuracy (int &ret_val);
+ static void perform_test_speed (int &ret_val);
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ TestHelperFixLen ();
+ ~TestHelperFixLen ();
+ TestHelperFixLen (const TestHelperFixLen &other);
+ TestHelperFixLen &
+ operator = (const TestHelperFixLen &other);
+ bool operator == (const TestHelperFixLen &other);
+ bool operator != (const TestHelperFixLen &other);
+
+}; // class TestHelperFixLen
+
+
+
+#include "TestHelperFixLen.hpp"
+
+
+
+#endif // TestHelperFixLen_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/TestHelperFixLen.hpp b/demos/spectrum/3rdparty/fftreal/TestHelperFixLen.hpp
new file mode 100644
index 000000000..25048b919
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/TestHelperFixLen.hpp
@@ -0,0 +1,93 @@
+/*****************************************************************************
+
+ TestHelperFixLen.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (TestHelperFixLen_CURRENT_CODEHEADER)
+ #error Recursive inclusion of TestHelperFixLen code header.
+#endif
+#define TestHelperFixLen_CURRENT_CODEHEADER
+
+#if ! defined (TestHelperFixLen_CODEHEADER_INCLUDED)
+#define TestHelperFixLen_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "test_settings.h"
+
+#include "TestAccuracy.h"
+#if defined (test_settings_SPEED_TEST_ENABLED)
+ #include "TestSpeed.h"
+#endif
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <int L>
+void TestHelperFixLen <L>::perform_test_accuracy (int &ret_val)
+{
+ if (ret_val == 0)
+ {
+ FftType fft;
+ ret_val = TestAccuracy <FftType>::perform_test_single_object (fft);
+ }
+}
+
+
+
+template <int L>
+void TestHelperFixLen <L>::perform_test_speed (int &ret_val)
+{
+#if defined (test_settings_SPEED_TEST_ENABLED)
+
+ if (ret_val == 0)
+ {
+ FftType fft;
+ ret_val = TestSpeed <FftType>::perform_test_single_object (fft);
+ }
+
+#endif
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#endif // TestHelperFixLen_CODEHEADER_INCLUDED
+
+#undef TestHelperFixLen_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/TestHelperNormal.h b/demos/spectrum/3rdparty/fftreal/TestHelperNormal.h
new file mode 100644
index 000000000..a7bff5c2e
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/TestHelperNormal.h
@@ -0,0 +1,94 @@
+/*****************************************************************************
+
+ TestHelperNormal.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (TestHelperNormal_HEADER_INCLUDED)
+#define TestHelperNormal_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "FFTReal.h"
+
+
+
+template <class DT>
+class TestHelperNormal
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef DT DataType;
+ typedef FFTReal <DataType> FftType;
+
+ static void perform_test_accuracy (int &ret_val);
+ static void perform_test_speed (int &ret_val);
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ TestHelperNormal ();
+ ~TestHelperNormal ();
+ TestHelperNormal (const TestHelperNormal &other);
+ TestHelperNormal &
+ operator = (const TestHelperNormal &other);
+ bool operator == (const TestHelperNormal &other);
+ bool operator != (const TestHelperNormal &other);
+
+}; // class TestHelperNormal
+
+
+
+#include "TestHelperNormal.hpp"
+
+
+
+#endif // TestHelperNormal_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/TestHelperNormal.hpp b/demos/spectrum/3rdparty/fftreal/TestHelperNormal.hpp
new file mode 100644
index 000000000..e037696ae
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/TestHelperNormal.hpp
@@ -0,0 +1,99 @@
+/*****************************************************************************
+
+ TestHelperNormal.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (TestHelperNormal_CURRENT_CODEHEADER)
+ #error Recursive inclusion of TestHelperNormal code header.
+#endif
+#define TestHelperNormal_CURRENT_CODEHEADER
+
+#if ! defined (TestHelperNormal_CODEHEADER_INCLUDED)
+#define TestHelperNormal_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "test_settings.h"
+
+#include "TestAccuracy.h"
+#if defined (test_settings_SPEED_TEST_ENABLED)
+ #include "TestSpeed.h"
+#endif
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class DT>
+void TestHelperNormal <DT>::perform_test_accuracy (int &ret_val)
+{
+ const int len_arr [] = { 1, 2, 3, 4, 7, 8, 10, 12 };
+ const int nbr_len = sizeof (len_arr) / sizeof (len_arr [0]);
+ for (int k = 0; k < nbr_len && ret_val == 0; ++k)
+ {
+ const long len = 1L << (len_arr [k]);
+ FftType fft (len);
+ ret_val = TestAccuracy <FftType>::perform_test_single_object (fft);
+ }
+}
+
+
+
+template <class DT>
+void TestHelperNormal <DT>::perform_test_speed (int &ret_val)
+{
+#if defined (test_settings_SPEED_TEST_ENABLED)
+
+ const int len_arr [] = { 1, 2, 3, 4, 7, 8, 10, 12, 14, 16, 18, 20, 22 };
+ const int nbr_len = sizeof (len_arr) / sizeof (len_arr [0]);
+ for (int k = 0; k < nbr_len && ret_val == 0; ++k)
+ {
+ const long len = 1L << (len_arr [k]);
+ FftType fft (len);
+ ret_val = TestSpeed <FftType>::perform_test_single_object (fft);
+ }
+
+#endif
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#endif // TestHelperNormal_CODEHEADER_INCLUDED
+
+#undef TestHelperNormal_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/TestSpeed.h b/demos/spectrum/3rdparty/fftreal/TestSpeed.h
new file mode 100644
index 000000000..229578182
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/TestSpeed.h
@@ -0,0 +1,95 @@
+/*****************************************************************************
+
+ TestSpeed.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (TestSpeed_HEADER_INCLUDED)
+#define TestSpeed_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class FO>
+class TestSpeed
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef typename FO::DataType DataType;
+
+ static int perform_test_single_object (FO &fft);
+ static int perform_test_d (FO &fft, const char *class_name_0);
+ static int perform_test_i (FO &fft, const char *class_name_0);
+ static int perform_test_di (FO &fft, const char *class_name_0);
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ enum { NBR_SPD_TESTS = 10 * 1000 * 1000 };
+ enum { MAX_NBR_TESTS = 10000 };
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ TestSpeed ();
+ ~TestSpeed ();
+ TestSpeed (const TestSpeed &other);
+ TestSpeed & operator = (const TestSpeed &other);
+ bool operator == (const TestSpeed &other);
+ bool operator != (const TestSpeed &other);
+
+}; // class TestSpeed
+
+
+
+#include "TestSpeed.hpp"
+
+
+
+#endif // TestSpeed_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/TestSpeed.hpp b/demos/spectrum/3rdparty/fftreal/TestSpeed.hpp
new file mode 100644
index 000000000..e716b2a76
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/TestSpeed.hpp
@@ -0,0 +1,223 @@
+/*****************************************************************************
+
+ TestSpeed.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (TestSpeed_CURRENT_CODEHEADER)
+ #error Recursive inclusion of TestSpeed code header.
+#endif
+#define TestSpeed_CURRENT_CODEHEADER
+
+#if ! defined (TestSpeed_CODEHEADER_INCLUDED)
+#define TestSpeed_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "test_fnc.h"
+#include "stopwatch/StopWatch.h"
+#include "TestWhiteNoiseGen.h"
+
+#include <typeinfo>
+
+#include <cstdio>
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class FO>
+int TestSpeed <FO>::perform_test_single_object (FO &fft)
+{
+ assert (&fft != 0);
+
+ int ret_val = 0;
+
+ const std::type_info & ti = typeid (fft);
+ const char * class_name_0 = ti.name ();
+
+ if (ret_val == 0)
+ {
+ perform_test_d (fft, class_name_0);
+ }
+ if (ret_val == 0)
+ {
+ perform_test_i (fft, class_name_0);
+ }
+ if (ret_val == 0)
+ {
+ perform_test_di (fft, class_name_0);
+ }
+
+ if (ret_val == 0)
+ {
+ printf ("\n");
+ }
+
+ return (ret_val);
+}
+
+
+
+template <class FO>
+int TestSpeed <FO>::perform_test_d (FO &fft, const char *class_name_0)
+{
+ assert (&fft != 0);
+ assert (class_name_0 != 0);
+
+ const long len = fft.get_length ();
+ const long nbr_tests = limit (
+ static_cast <long> (NBR_SPD_TESTS / len / len),
+ 1L,
+ static_cast <long> (MAX_NBR_TESTS)
+ );
+
+ TestWhiteNoiseGen <DataType> noise;
+ std::vector <DataType> x (len, 0);
+ std::vector <DataType> s (len);
+ noise.generate (&x [0], len);
+
+ printf (
+ "%s::do_fft () speed test [%ld samples]... ",
+ class_name_0,
+ len
+ );
+ fflush (stdout);
+
+ stopwatch::StopWatch chrono;
+ chrono.start ();
+ for (long test = 0; test < nbr_tests; ++ test)
+ {
+ fft.do_fft (&s [0], &x [0]);
+ chrono.stop_lap ();
+ }
+
+ printf ("%.1f clocks/sample\n", chrono.get_time_best_lap (len));
+
+ return (0);
+}
+
+
+
+template <class FO>
+int TestSpeed <FO>::perform_test_i (FO &fft, const char *class_name_0)
+{
+ assert (&fft != 0);
+ assert (class_name_0 != 0);
+
+ const long len = fft.get_length ();
+ const long nbr_tests = limit (
+ static_cast <long> (NBR_SPD_TESTS / len / len),
+ 1L,
+ static_cast <long> (MAX_NBR_TESTS)
+ );
+
+ TestWhiteNoiseGen <DataType> noise;
+ std::vector <DataType> x (len);
+ std::vector <DataType> s (len, 0);
+ noise.generate (&s [0], len);
+
+ printf (
+ "%s::do_ifft () speed test [%ld samples]... ",
+ class_name_0,
+ len
+ );
+ fflush (stdout);
+
+ stopwatch::StopWatch chrono;
+ chrono.start ();
+ for (long test = 0; test < nbr_tests; ++ test)
+ {
+ fft.do_ifft (&s [0], &x [0]);
+ chrono.stop_lap ();
+ }
+
+ printf ("%.1f clocks/sample\n", chrono.get_time_best_lap (len));
+
+ return (0);
+}
+
+
+
+template <class FO>
+int TestSpeed <FO>::perform_test_di (FO &fft, const char *class_name_0)
+{
+ assert (&fft != 0);
+ assert (class_name_0 != 0);
+
+ const long len = fft.get_length ();
+ const long nbr_tests = limit (
+ static_cast <long> (NBR_SPD_TESTS / len / len),
+ 1L,
+ static_cast <long> (MAX_NBR_TESTS)
+ );
+
+ TestWhiteNoiseGen <DataType> noise;
+ std::vector <DataType> x (len, 0);
+ std::vector <DataType> s (len);
+ std::vector <DataType> y (len);
+ noise.generate (&x [0], len);
+
+ printf (
+ "%s::do_fft () / do_ifft () / rescale () speed test [%ld samples]... ",
+ class_name_0,
+ len
+ );
+ fflush (stdout);
+
+ stopwatch::StopWatch chrono;
+
+ chrono.start ();
+ for (long test = 0; test < nbr_tests; ++ test)
+ {
+ fft.do_fft (&s [0], &x [0]);
+ fft.do_ifft (&s [0], &y [0]);
+ fft.rescale (&y [0]);
+ chrono.stop_lap ();
+ }
+
+ printf ("%.1f clocks/sample\n", chrono.get_time_best_lap (len));
+
+ return (0);
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#endif // TestSpeed_CODEHEADER_INCLUDED
+
+#undef TestSpeed_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/TestWhiteNoiseGen.h b/demos/spectrum/3rdparty/fftreal/TestWhiteNoiseGen.h
new file mode 100644
index 000000000..d815f8e31
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/TestWhiteNoiseGen.h
@@ -0,0 +1,95 @@
+/*****************************************************************************
+
+ TestWhiteNoiseGen.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (TestWhiteNoiseGen_HEADER_INCLUDED)
+#define TestWhiteNoiseGen_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class DT>
+class TestWhiteNoiseGen
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ typedef DT DataType;
+
+ TestWhiteNoiseGen ();
+ virtual ~TestWhiteNoiseGen () {}
+
+ void generate (DataType data_ptr [], long len);
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ typedef unsigned long StateType;
+
+ StateType _rand_state;
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ TestWhiteNoiseGen (const TestWhiteNoiseGen &other);
+ TestWhiteNoiseGen &
+ operator = (const TestWhiteNoiseGen &other);
+ bool operator == (const TestWhiteNoiseGen &other);
+ bool operator != (const TestWhiteNoiseGen &other);
+
+}; // class TestWhiteNoiseGen
+
+
+
+#include "TestWhiteNoiseGen.hpp"
+
+
+
+#endif // TestWhiteNoiseGen_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/TestWhiteNoiseGen.hpp b/demos/spectrum/3rdparty/fftreal/TestWhiteNoiseGen.hpp
new file mode 100644
index 000000000..13b7eb3e0
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/TestWhiteNoiseGen.hpp
@@ -0,0 +1,91 @@
+/*****************************************************************************
+
+ TestWhiteNoiseGen.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (TestWhiteNoiseGen_CURRENT_CODEHEADER)
+ #error Recursive inclusion of TestWhiteNoiseGen code header.
+#endif
+#define TestWhiteNoiseGen_CURRENT_CODEHEADER
+
+#if ! defined (TestWhiteNoiseGen_CODEHEADER_INCLUDED)
+#define TestWhiteNoiseGen_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class DT>
+TestWhiteNoiseGen <DT>::TestWhiteNoiseGen ()
+: _rand_state (0)
+{
+ _rand_state = reinterpret_cast <StateType> (this);
+}
+
+
+
+template <class DT>
+void TestWhiteNoiseGen <DT>::generate (DataType data_ptr [], long len)
+{
+ assert (data_ptr != 0);
+ assert (len > 0);
+
+ const DataType one = static_cast <DataType> (1);
+ const DataType mul = one / static_cast <DataType> (0x80000000UL);
+
+ long pos = 0;
+ do
+ {
+ const DataType x = static_cast <DataType> (_rand_state & 0xFFFFFFFFUL);
+ data_ptr [pos] = x * mul - one;
+
+ _rand_state = _rand_state * 1234567UL + 890123UL;
+
+ ++ pos;
+ }
+ while (pos < len);
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#endif // TestWhiteNoiseGen_CODEHEADER_INCLUDED
+
+#undef TestWhiteNoiseGen_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/bwins/fftrealu.def b/demos/spectrum/3rdparty/fftreal/bwins/fftrealu.def
new file mode 100644
index 000000000..7a7939773
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/bwins/fftrealu.def
@@ -0,0 +1,5 @@
+EXPORTS
+ ??0FFTRealWrapper@@QAE@XZ @ 1 NONAME ; FFTRealWrapper::FFTRealWrapper(void)
+ ??1FFTRealWrapper@@QAE@XZ @ 2 NONAME ; FFTRealWrapper::~FFTRealWrapper(void)
+ ?calculateFFT@FFTRealWrapper@@QAEXQAMQBM@Z @ 3 NONAME ; void FFTRealWrapper::calculateFFT(float * const, float const * const)
+
diff --git a/demos/spectrum/3rdparty/fftreal/def.h b/demos/spectrum/3rdparty/fftreal/def.h
new file mode 100644
index 000000000..99c545f53
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/def.h
@@ -0,0 +1,60 @@
+/*****************************************************************************
+
+ def.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (def_HEADER_INCLUDED)
+#define def_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+
+const double PI = 3.1415926535897932384626433832795;
+const double SQRT2 = 1.41421356237309514547462185873883;
+
+#if defined (_MSC_VER)
+
+ #define FORCEINLINE __forceinline
+
+#else
+
+ #define FORCEINLINE inline
+
+#endif
+
+
+
+#endif // def_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/eabi/fftrealu.def b/demos/spectrum/3rdparty/fftreal/eabi/fftrealu.def
new file mode 100644
index 000000000..f95a44140
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/eabi/fftrealu.def
@@ -0,0 +1,7 @@
+EXPORTS
+ _ZN14FFTRealWrapper12calculateFFTEPfPKf @ 1 NONAME
+ _ZN14FFTRealWrapperC1Ev @ 2 NONAME
+ _ZN14FFTRealWrapperC2Ev @ 3 NONAME
+ _ZN14FFTRealWrapperD1Ev @ 4 NONAME
+ _ZN14FFTRealWrapperD2Ev @ 5 NONAME
+
diff --git a/demos/spectrum/3rdparty/fftreal/fftreal.pas b/demos/spectrum/3rdparty/fftreal/fftreal.pas
new file mode 100644
index 000000000..ea6375450
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/fftreal.pas
@@ -0,0 +1,661 @@
+(*****************************************************************************
+
+ DIGITAL SIGNAL PROCESSING TOOLS
+ Version 1.03, 2001/06/15
+ (c) 1999 - Laurent de Soras
+
+ FFTReal.h
+ Fourier transformation of real number arrays.
+ Portable ISO C++
+
+------------------------------------------------------------------------------
+
+ LEGAL
+
+ Source code may be freely used for any purpose, including commercial
+ applications. Programs must display in their "About" dialog-box (or
+ documentation) a text telling they use these routines by Laurent de Soras.
+ Modified source code can be distributed, but modifications must be clearly
+ indicated.
+
+ CONTACT
+
+ Laurent de Soras
+ 92 avenue Albert 1er
+ 92500 Rueil-Malmaison
+ France
+
+ ldesoras@club-internet.fr
+
+------------------------------------------------------------------------------
+
+ Translation to ObjectPascal by :
+ Frederic Vanmol
+ frederic@axiworld.be
+
+*****************************************************************************)
+
+
+unit
+ FFTReal;
+
+interface
+
+uses
+ Windows;
+
+(* Change this typedef to use a different floating point type in your FFTs
+ (i.e. float, double or long double). *)
+type
+ pflt_t = ^flt_t;
+ flt_t = single;
+
+ pflt_array = ^flt_array;
+ flt_array = array[0..0] of flt_t;
+
+ plongarray = ^longarray;
+ longarray = array[0..0] of longint;
+
+const
+ sizeof_flt : longint = SizeOf(flt_t);
+
+
+
+type
+ // Bit reversed look-up table nested class
+ TBitReversedLUT = class
+ private
+ _ptr : plongint;
+ public
+ constructor Create(const nbr_bits: integer);
+ destructor Destroy; override;
+ function get_ptr: plongint;
+ end;
+
+ // Trigonometric look-up table nested class
+ TTrigoLUT = class
+ private
+ _ptr : pflt_t;
+ public
+ constructor Create(const nbr_bits: integer);
+ destructor Destroy; override;
+ function get_ptr(const level: integer): pflt_t;
+ end;
+
+ TFFTReal = class
+ private
+ _bit_rev_lut : TBitReversedLUT;
+ _trigo_lut : TTrigoLUT;
+ _sqrt2_2 : flt_t;
+ _length : longint;
+ _nbr_bits : integer;
+ _buffer_ptr : pflt_t;
+ public
+ constructor Create(const length: longint);
+ destructor Destroy; override;
+
+ procedure do_fft(f: pflt_array; const x: pflt_array);
+ procedure do_ifft(const f: pflt_array; x: pflt_array);
+ procedure rescale(x: pflt_array);
+ end;
+
+
+
+
+
+
+
+implementation
+
+uses
+ Math;
+
+{ TBitReversedLUT }
+
+constructor TBitReversedLUT.Create(const nbr_bits: integer);
+var
+ length : longint;
+ cnt : longint;
+ br_index : longint;
+ bit : longint;
+begin
+ inherited Create;
+
+ length := 1 shl nbr_bits;
+ GetMem(_ptr, length*SizeOf(longint));
+
+ br_index := 0;
+ plongarray(_ptr)^[0] := 0;
+ for cnt := 1 to length-1 do
+ begin
+ // ++br_index (bit reversed)
+ bit := length shr 1;
+ br_index := br_index xor bit;
+ while br_index and bit = 0 do
+ begin
+ bit := bit shr 1;
+ br_index := br_index xor bit;
+ end;
+
+ plongarray(_ptr)^[cnt] := br_index;
+ end;
+end;
+
+destructor TBitReversedLUT.Destroy;
+begin
+ FreeMem(_ptr);
+ _ptr := nil;
+ inherited;
+end;
+
+function TBitReversedLUT.get_ptr: plongint;
+begin
+ Result := _ptr;
+end;
+
+{ TTrigLUT }
+
+constructor TTrigoLUT.Create(const nbr_bits: integer);
+var
+ total_len : longint;
+ PI : double;
+ level : integer;
+ level_len : longint;
+ level_ptr : pflt_array;
+ mul : double;
+ i : longint;
+begin
+ inherited Create;
+
+ _ptr := nil;
+
+ if (nbr_bits > 3) then
+ begin
+ total_len := (1 shl (nbr_bits - 1)) - 4;
+ GetMem(_ptr, total_len * sizeof_flt);
+
+ PI := ArcTan(1) * 4;
+ for level := 3 to nbr_bits-1 do
+ begin
+ level_len := 1 shl (level - 1);
+ level_ptr := pointer(get_ptr(level));
+ mul := PI / (level_len shl 1);
+
+ for i := 0 to level_len-1 do
+ level_ptr^[i] := cos(i * mul);
+ end;
+ end;
+end;
+
+destructor TTrigoLUT.Destroy;
+begin
+ FreeMem(_ptr);
+ _ptr := nil;
+ inherited;
+end;
+
+function TTrigoLUT.get_ptr(const level: integer): pflt_t;
+var
+ tempp : pflt_t;
+begin
+ tempp := _ptr;
+ inc(tempp, (1 shl (level-1)) - 4);
+ Result := tempp;
+end;
+
+{ TFFTReal }
+
+constructor TFFTReal.Create(const length: longint);
+begin
+ inherited Create;
+
+ _length := length;
+ _nbr_bits := Floor(Ln(length) / Ln(2) + 0.5);
+ _bit_rev_lut := TBitReversedLUT.Create(Floor(Ln(length) / Ln(2) + 0.5));
+ _trigo_lut := TTrigoLUT.Create(Floor(Ln(length) / Ln(2) + 0.05));
+ _sqrt2_2 := Sqrt(2) * 0.5;
+
+ _buffer_ptr := nil;
+ if _nbr_bits > 2 then
+ GetMem(_buffer_ptr, _length * sizeof_flt);
+end;
+
+destructor TFFTReal.Destroy;
+begin
+ if _buffer_ptr <> nil then
+ begin
+ FreeMem(_buffer_ptr);
+ _buffer_ptr := nil;
+ end;
+
+ _bit_rev_lut.Free;
+ _bit_rev_lut := nil;
+ _trigo_lut.Free;
+ _trigo_lut := nil;
+
+ inherited;
+end;
+
+(*==========================================================================*/
+/* Name: do_fft */
+/* Description: Compute the FFT of the array. */
+/* Input parameters: */
+/* - x: pointer on the source array (time). */
+/* Output parameters: */
+/* - f: pointer on the destination array (frequencies). */
+/* f [0...length(x)/2] = real values, */
+/* f [length(x)/2+1...length(x)-1] = imaginary values of */
+/* coefficents 1...length(x)/2-1. */
+/*==========================================================================*)
+procedure TFFTReal.do_fft(f: pflt_array; const x: pflt_array);
+var
+ sf, df : pflt_array;
+ pass : integer;
+ nbr_coef : longint;
+ h_nbr_coef : longint;
+ d_nbr_coef : longint;
+ coef_index : longint;
+ bit_rev_lut_ptr : plongarray;
+ rev_index_0 : longint;
+ rev_index_1 : longint;
+ rev_index_2 : longint;
+ rev_index_3 : longint;
+ df2 : pflt_array;
+ n1, n2, n3 : integer;
+ sf_0, sf_2 : flt_t;
+ sqrt2_2 : flt_t;
+ v : flt_t;
+ cos_ptr : pflt_array;
+ i : longint;
+ sf1r, sf2r : pflt_array;
+ dfr, dfi : pflt_array;
+ sf1i, sf2i : pflt_array;
+ c, s : flt_t;
+ temp_ptr : pflt_array;
+ b_0, b_2 : flt_t;
+begin
+ n1 := 1;
+ n2 := 2;
+ n3 := 3;
+
+ (*______________________________________________
+ *
+ * General case
+ *______________________________________________
+ *)
+
+ if _nbr_bits > 2 then
+ begin
+ if _nbr_bits and 1 <> 0 then
+ begin
+ df := pointer(_buffer_ptr);
+ sf := f;
+ end
+ else
+ begin
+ df := f;
+ sf := pointer(_buffer_ptr);
+ end;
+
+ //
+ // Do the transformation in several passes
+ //
+
+ // First and second pass at once
+ bit_rev_lut_ptr := pointer(_bit_rev_lut.get_ptr);
+ coef_index := 0;
+
+ repeat
+ rev_index_0 := bit_rev_lut_ptr^[coef_index];
+ rev_index_1 := bit_rev_lut_ptr^[coef_index + 1];
+ rev_index_2 := bit_rev_lut_ptr^[coef_index + 2];
+ rev_index_3 := bit_rev_lut_ptr^[coef_index + 3];
+
+ df2 := pointer(longint(df) + (coef_index*sizeof_flt));
+ df2^[n1] := x^[rev_index_0] - x^[rev_index_1];
+ df2^[n3] := x^[rev_index_2] - x^[rev_index_3];
+
+ sf_0 := x^[rev_index_0] + x^[rev_index_1];
+ sf_2 := x^[rev_index_2] + x^[rev_index_3];
+
+ df2^[0] := sf_0 + sf_2;
+ df2^[n2] := sf_0 - sf_2;
+
+ inc(coef_index, 4);
+ until (coef_index >= _length);
+
+
+ // Third pass
+ coef_index := 0;
+ sqrt2_2 := _sqrt2_2;
+
+ repeat
+ sf^[coef_index] := df^[coef_index] + df^[coef_index + 4];
+ sf^[coef_index + 4] := df^[coef_index] - df^[coef_index + 4];
+ sf^[coef_index + 2] := df^[coef_index + 2];
+ sf^[coef_index + 6] := df^[coef_index + 6];
+
+ v := (df [coef_index + 5] - df^[coef_index + 7]) * sqrt2_2;
+ sf^[coef_index + 1] := df^[coef_index + 1] + v;
+ sf^[coef_index + 3] := df^[coef_index + 1] - v;
+
+ v := (df^[coef_index + 5] + df^[coef_index + 7]) * sqrt2_2;
+ sf [coef_index + 5] := v + df^[coef_index + 3];
+ sf [coef_index + 7] := v - df^[coef_index + 3];
+
+ inc(coef_index, 8);
+ until (coef_index >= _length);
+
+
+ // Next pass
+ for pass := 3 to _nbr_bits-1 do
+ begin
+ coef_index := 0;
+ nbr_coef := 1 shl pass;
+ h_nbr_coef := nbr_coef shr 1;
+ d_nbr_coef := nbr_coef shl 1;
+
+ cos_ptr := pointer(_trigo_lut.get_ptr(pass));
+ repeat
+ sf1r := pointer(longint(sf) + (coef_index * sizeof_flt));
+ sf2r := pointer(longint(sf1r) + (nbr_coef * sizeof_flt));
+ dfr := pointer(longint(df) + (coef_index * sizeof_flt));
+ dfi := pointer(longint(dfr) + (nbr_coef * sizeof_flt));
+
+ // Extreme coefficients are always real
+ dfr^[0] := sf1r^[0] + sf2r^[0];
+ dfi^[0] := sf1r^[0] - sf2r^[0]; // dfr [nbr_coef] =
+ dfr^[h_nbr_coef] := sf1r^[h_nbr_coef];
+ dfi^[h_nbr_coef] := sf2r^[h_nbr_coef];
+
+ // Others are conjugate complex numbers
+ sf1i := pointer(longint(sf1r) + (h_nbr_coef * sizeof_flt));
+ sf2i := pointer(longint(sf1i) + (nbr_coef * sizeof_flt));
+
+ for i := 1 to h_nbr_coef-1 do
+ begin
+ c := cos_ptr^[i]; // cos (i*PI/nbr_coef);
+ s := cos_ptr^[h_nbr_coef - i]; // sin (i*PI/nbr_coef);
+
+ v := sf2r^[i] * c - sf2i^[i] * s;
+ dfr^[i] := sf1r^[i] + v;
+ dfi^[-i] := sf1r^[i] - v; // dfr [nbr_coef - i] =
+
+ v := sf2r^[i] * s + sf2i^[i] * c;
+ dfi^[i] := v + sf1i^[i];
+ dfi^[nbr_coef - i] := v - sf1i^[i];
+ end;
+
+ inc(coef_index, d_nbr_coef);
+ until (coef_index >= _length);
+
+ // Prepare to the next pass
+ temp_ptr := df;
+ df := sf;
+ sf := temp_ptr;
+ end;
+ end
+
+ (*______________________________________________
+ *
+ * Special cases
+ *______________________________________________
+ *)
+
+ // 4-point FFT
+ else if _nbr_bits = 2 then
+ begin
+ f^[n1] := x^[0] - x^[n2];
+ f^[n3] := x^[n1] - x^[n3];
+
+ b_0 := x^[0] + x^[n2];
+ b_2 := x^[n1] + x^[n3];
+
+ f^[0] := b_0 + b_2;
+ f^[n2] := b_0 - b_2;
+ end
+
+ // 2-point FFT
+ else if _nbr_bits = 1 then
+ begin
+ f^[0] := x^[0] + x^[n1];
+ f^[n1] := x^[0] - x^[n1];
+ end
+
+ // 1-point FFT
+ else
+ f^[0] := x^[0];
+end;
+
+
+(*==========================================================================*/
+/* Name: do_ifft */
+/* Description: Compute the inverse FFT of the array. Notice that */
+/* IFFT (FFT (x)) = x * length (x). Data must be */
+/* post-scaled. */
+/* Input parameters: */
+/* - f: pointer on the source array (frequencies). */
+/* f [0...length(x)/2] = real values, */
+/* f [length(x)/2+1...length(x)-1] = imaginary values of */
+/* coefficents 1...length(x)/2-1. */
+/* Output parameters: */
+/* - x: pointer on the destination array (time). */
+/*==========================================================================*)
+procedure TFFTReal.do_ifft(const f: pflt_array; x: pflt_array);
+var
+ n1, n2, n3 : integer;
+ n4, n5, n6, n7 : integer;
+ sf, df, df_temp : pflt_array;
+ pass : integer;
+ nbr_coef : longint;
+ h_nbr_coef : longint;
+ d_nbr_coef : longint;
+ coef_index : longint;
+ cos_ptr : pflt_array;
+ i : longint;
+ sfr, sfi : pflt_array;
+ df1r, df2r : pflt_array;
+ df1i, df2i : pflt_array;
+ c, s, vr, vi : flt_t;
+ temp_ptr : pflt_array;
+ sqrt2_2 : flt_t;
+ bit_rev_lut_ptr : plongarray;
+ sf2 : pflt_array;
+ b_0, b_1, b_2, b_3 : flt_t;
+begin
+ n1 := 1;
+ n2 := 2;
+ n3 := 3;
+ n4 := 4;
+ n5 := 5;
+ n6 := 6;
+ n7 := 7;
+
+ (*______________________________________________
+ *
+ * General case
+ *______________________________________________
+ *)
+
+ if _nbr_bits > 2 then
+ begin
+ sf := f;
+
+ if _nbr_bits and 1 <> 0 then
+ begin
+ df := pointer(_buffer_ptr);
+ df_temp := x;
+ end
+ else
+ begin
+ df := x;
+ df_temp := pointer(_buffer_ptr);
+ end;
+
+ // Do the transformation in several pass
+
+ // First pass
+ for pass := _nbr_bits-1 downto 3 do
+ begin
+ coef_index := 0;
+ nbr_coef := 1 shl pass;
+ h_nbr_coef := nbr_coef shr 1;
+ d_nbr_coef := nbr_coef shl 1;
+
+ cos_ptr := pointer(_trigo_lut.get_ptr(pass));
+
+ repeat
+ sfr := pointer(longint(sf) + (coef_index*sizeof_flt));
+ sfi := pointer(longint(sfr) + (nbr_coef*sizeof_flt));
+ df1r := pointer(longint(df) + (coef_index*sizeof_flt));
+ df2r := pointer(longint(df1r) + (nbr_coef*sizeof_flt));
+
+ // Extreme coefficients are always real
+ df1r^[0] := sfr^[0] + sfi^[0]; // + sfr [nbr_coef]
+ df2r^[0] := sfr^[0] - sfi^[0]; // - sfr [nbr_coef]
+ df1r^[h_nbr_coef] := sfr^[h_nbr_coef] * 2;
+ df2r^[h_nbr_coef] := sfi^[h_nbr_coef] * 2;
+
+ // Others are conjugate complex numbers
+ df1i := pointer(longint(df1r) + (h_nbr_coef*sizeof_flt));
+ df2i := pointer(longint(df1i) + (nbr_coef*sizeof_flt));
+
+ for i := 1 to h_nbr_coef-1 do
+ begin
+ df1r^[i] := sfr^[i] + sfi^[-i]; // + sfr [nbr_coef - i]
+ df1i^[i] := sfi^[i] - sfi^[nbr_coef - i];
+
+ c := cos_ptr^[i]; // cos (i*PI/nbr_coef);
+ s := cos_ptr^[h_nbr_coef - i]; // sin (i*PI/nbr_coef);
+ vr := sfr^[i] - sfi^[-i]; // - sfr [nbr_coef - i]
+ vi := sfi^[i] + sfi^[nbr_coef - i];
+
+ df2r^[i] := vr * c + vi * s;
+ df2i^[i] := vi * c - vr * s;
+ end;
+
+ inc(coef_index, d_nbr_coef);
+ until (coef_index >= _length);
+
+
+ // Prepare to the next pass
+ if (pass < _nbr_bits - 1) then
+ begin
+ temp_ptr := df;
+ df := sf;
+ sf := temp_ptr;
+ end
+ else
+ begin
+ sf := df;
+ df := df_temp;
+ end
+ end;
+
+ // Antepenultimate pass
+ sqrt2_2 := _sqrt2_2;
+ coef_index := 0;
+
+ repeat
+ df^[coef_index] := sf^[coef_index] + sf^[coef_index + 4];
+ df^[coef_index + 4] := sf^[coef_index] - sf^[coef_index + 4];
+ df^[coef_index + 2] := sf^[coef_index + 2] * 2;
+ df^[coef_index + 6] := sf^[coef_index + 6] * 2;
+
+ df^[coef_index + 1] := sf^[coef_index + 1] + sf^[coef_index + 3];
+ df^[coef_index + 3] := sf^[coef_index + 5] - sf^[coef_index + 7];
+
+ vr := sf^[coef_index + 1] - sf^[coef_index + 3];
+ vi := sf^[coef_index + 5] + sf^[coef_index + 7];
+
+ df^[coef_index + 5] := (vr + vi) * sqrt2_2;
+ df^[coef_index + 7] := (vi - vr) * sqrt2_2;
+
+ inc(coef_index, 8);
+ until (coef_index >= _length);
+
+
+ // Penultimate and last pass at once
+ coef_index := 0;
+ bit_rev_lut_ptr := pointer(_bit_rev_lut.get_ptr);
+ sf2 := df;
+
+ repeat
+ b_0 := sf2^[0] + sf2^[n2];
+ b_2 := sf2^[0] - sf2^[n2];
+ b_1 := sf2^[n1] * 2;
+ b_3 := sf2^[n3] * 2;
+
+ x^[bit_rev_lut_ptr^[0]] := b_0 + b_1;
+ x^[bit_rev_lut_ptr^[n1]] := b_0 - b_1;
+ x^[bit_rev_lut_ptr^[n2]] := b_2 + b_3;
+ x^[bit_rev_lut_ptr^[n3]] := b_2 - b_3;
+
+ b_0 := sf2^[n4] + sf2^[n6];
+ b_2 := sf2^[n4] - sf2^[n6];
+ b_1 := sf2^[n5] * 2;
+ b_3 := sf2^[n7] * 2;
+
+ x^[bit_rev_lut_ptr^[n4]] := b_0 + b_1;
+ x^[bit_rev_lut_ptr^[n5]] := b_0 - b_1;
+ x^[bit_rev_lut_ptr^[n6]] := b_2 + b_3;
+ x^[bit_rev_lut_ptr^[n7]] := b_2 - b_3;
+
+ inc(sf2, 8);
+ inc(coef_index, 8);
+ inc(bit_rev_lut_ptr, 8);
+ until (coef_index >= _length);
+ end
+
+ (*______________________________________________
+ *
+ * Special cases
+ *______________________________________________
+ *)
+
+ // 4-point IFFT
+ else if _nbr_bits = 2 then
+ begin
+ b_0 := f^[0] + f [n2];
+ b_2 := f^[0] - f [n2];
+
+ x^[0] := b_0 + f [n1] * 2;
+ x^[n2] := b_0 - f [n1] * 2;
+ x^[n1] := b_2 + f [n3] * 2;
+ x^[n3] := b_2 - f [n3] * 2;
+ end
+
+ // 2-point IFFT
+ else if _nbr_bits = 1 then
+ begin
+ x^[0] := f^[0] + f^[n1];
+ x^[n1] := f^[0] - f^[n1];
+ end
+
+ // 1-point IFFT
+ else
+ x^[0] := f^[0];
+end;
+
+(*==========================================================================*/
+/* Name: rescale */
+/* Description: Scale an array by divide each element by its length. */
+/* This function should be called after FFT + IFFT. */
+/* Input/Output parameters: */
+/* - x: pointer on array to rescale (time or frequency). */
+/*==========================================================================*)
+procedure TFFTReal.rescale(x: pflt_array);
+var
+ mul : flt_t;
+ i : longint;
+begin
+ mul := 1.0 / _length;
+ i := _length - 1;
+
+ repeat
+ x^[i] := x^[i] * mul;
+ dec(i);
+ until (i < 0);
+end;
+
+end.
diff --git a/demos/spectrum/3rdparty/fftreal/fftreal.pro b/demos/spectrum/3rdparty/fftreal/fftreal.pro
new file mode 100644
index 000000000..aa61b3a6f
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/fftreal.pro
@@ -0,0 +1,52 @@
+include(../../spectrum.pri)
+
+static: error(This library cannot be built for static linkage)
+
+TEMPLATE = lib
+TARGET = fftreal
+
+# FFTReal
+HEADERS += Array.h \
+ Array.hpp \
+ DynArray.h \
+ DynArray.hpp \
+ FFTRealFixLen.h \
+ FFTRealFixLen.hpp \
+ FFTRealFixLenParam.h \
+ FFTRealPassDirect.h \
+ FFTRealPassDirect.hpp \
+ FFTRealPassInverse.h \
+ FFTRealPassInverse.hpp \
+ FFTRealSelect.h \
+ FFTRealSelect.hpp \
+ FFTRealUseTrigo.h \
+ FFTRealUseTrigo.hpp \
+ OscSinCos.h \
+ OscSinCos.hpp \
+ def.h
+
+# Wrapper used to export the required instantiation of the FFTRealFixLen template
+HEADERS += fftreal_wrapper.h
+SOURCES += fftreal_wrapper.cpp
+
+DEFINES += FFTREAL_LIBRARY
+
+symbian {
+ # Provide unique ID for the generated binary, required by Symbian OS
+ TARGET.UID3 = 0xA000E403
+ TARGET.CAPABILITY = UserEnvironment
+}
+
+macx {
+ CONFIG += lib_bundle
+} else {
+ !symbian: DESTDIR = ../..$${spectrum_build_dir}
+}
+
+# Install
+
+sources.files = $$SOURCES $$HEADERS fftreal.pro readme.txt license.txt
+sources.files += bwins/fftreal.def eabi/fftreal.def
+sources.path = $$[QT_INSTALL_DEMOS]/qtmultimedia/spectrum/3rdparty/fftreal
+INSTALLS += sources
+
diff --git a/demos/spectrum/3rdparty/fftreal/fftreal_wrapper.cpp b/demos/spectrum/3rdparty/fftreal/fftreal_wrapper.cpp
new file mode 100644
index 000000000..2e66bc06d
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/fftreal_wrapper.cpp
@@ -0,0 +1,54 @@
+/***************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** This program is free software: you can redistribute it and/or modify
+** it under the terms of the GNU Lesser General Public License as
+** published by the Free Software Foundation, either version 2.1. This
+** program is distributed in the hope that it will be useful, but WITHOUT
+** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+** for more details. You should have received a copy of the GNU General
+** Public License along with this program. If not, see
+** <http://www.gnu.org/licenses/>.
+**
+***************************************************************************/
+
+#include "fftreal_wrapper.h"
+
+// FFTReal code generates quite a lot of 'unused parameter' compiler warnings,
+// which we suppress here in order to get a clean build output.
+#if defined Q_CC_MSVC
+# pragma warning(disable:4100)
+#elif defined Q_CC_GNU
+# pragma GCC diagnostic ignored "-Wunused-parameter"
+#elif defined Q_CC_MWERKS
+# pragma warning off (10182)
+#endif
+
+#include "FFTRealFixLen.h"
+
+class FFTRealWrapperPrivate {
+public:
+ FFTRealFixLen<FFTLengthPowerOfTwo> m_fft;
+};
+
+
+FFTRealWrapper::FFTRealWrapper()
+ : m_private(new FFTRealWrapperPrivate)
+{
+
+}
+
+FFTRealWrapper::~FFTRealWrapper()
+{
+ delete m_private;
+}
+
+void FFTRealWrapper::calculateFFT(DataType in[], const DataType out[])
+{
+ m_private->m_fft.do_fft(in, out);
+}
diff --git a/demos/spectrum/3rdparty/fftreal/fftreal_wrapper.h b/demos/spectrum/3rdparty/fftreal/fftreal_wrapper.h
new file mode 100644
index 000000000..39a1d576e
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/fftreal_wrapper.h
@@ -0,0 +1,63 @@
+/***************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** This program is free software: you can redistribute it and/or modify
+** it under the terms of the GNU Lesser General Public License as
+** published by the Free Software Foundation, either version 2.1. This
+** program is distributed in the hope that it will be useful, but WITHOUT
+** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+** for more details. You should have received a copy of the GNU General
+** Public License along with this program. If not, see
+** <http://www.gnu.org/licenses/>.
+**
+***************************************************************************/
+
+#ifndef FFTREAL_WRAPPER_H
+#define FFTREAL_WRAPPER_H
+
+#include <QtCore/QtGlobal>
+
+#if defined(FFTREAL_LIBRARY)
+# define FFTREAL_EXPORT Q_DECL_EXPORT
+#else
+# define FFTREAL_EXPORT Q_DECL_IMPORT
+#endif
+
+class FFTRealWrapperPrivate;
+
+// Each pass of the FFT processes 2^X samples, where X is the
+// number below.
+static const int FFTLengthPowerOfTwo = 12;
+
+/**
+ * Wrapper around the FFTRealFixLen template provided by the FFTReal
+ * library
+ *
+ * This class instantiates a single instance of FFTRealFixLen, using
+ * FFTLengthPowerOfTwo as the template parameter. It then exposes
+ * FFTRealFixLen<FFTLengthPowerOfTwo>::do_fft via the calculateFFT
+ * function, thereby allowing an application to dynamically link
+ * against the FFTReal implementation.
+ *
+ * See http://ldesoras.free.fr/prod.html
+ */
+class FFTREAL_EXPORT FFTRealWrapper
+{
+public:
+ FFTRealWrapper();
+ ~FFTRealWrapper();
+
+ typedef float DataType;
+ void calculateFFT(DataType in[], const DataType out[]);
+
+private:
+ FFTRealWrapperPrivate* m_private;
+};
+
+#endif // FFTREAL_WRAPPER_H
+
diff --git a/demos/spectrum/3rdparty/fftreal/license.txt b/demos/spectrum/3rdparty/fftreal/license.txt
new file mode 100644
index 000000000..918fe68ea
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/license.txt
@@ -0,0 +1,459 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/demos/spectrum/3rdparty/fftreal/readme.txt b/demos/spectrum/3rdparty/fftreal/readme.txt
new file mode 100644
index 000000000..0c5ce162f
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/readme.txt
@@ -0,0 +1,242 @@
+==============================================================================
+
+ FFTReal
+ Version 2.00, 2005/10/18
+
+ Fourier transformation (FFT, IFFT) library specialised for real data
+ Portable ISO C++
+
+ (c) Laurent de Soras <laurent.de.soras@club-internet.fr>
+ Object Pascal port (c) Frederic Vanmol <frederic@fruityloops.com>
+
+==============================================================================
+
+
+
+1. Legal
+--------
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Check the file license.txt to get full information about the license.
+
+
+
+2. Content
+----------
+
+FFTReal is a library to compute Discrete Fourier Transforms (DFT) with the
+FFT algorithm (Fast Fourier Transform) on arrays of real numbers. It can
+also compute the inverse transform.
+
+You should find in this package a lot of files ; some of them are of interest:
+- readme.txt: you are reading it
+- FFTReal.h: FFT, length fixed at run-time
+- FFTRealFixLen.h: FFT, length fixed at compile-time
+- FFTReal.pas: Pascal implementation (working but not up-to-date)
+- stopwatch directory
+
+
+
+3. Using FFTReal
+----------------
+
+Important - if you were using older versions of FFTReal (up to 1.03), some
+things have changed. FFTReal is now a template. Therefore use FFTReal<float>
+or FFTReal<double> in your code depending on the application datatype. The
+flt_t typedef has been removed.
+
+You have two ways to use FFTReal. In the first way, the FFT has its length
+fixed at run-time, when the object is instanciated. It means that you have
+not to know the length when you write the code. This is the usual way of
+proceeding.
+
+
+3.1 FFTReal - Length fixed at run-time
+--------------------------------------
+
+Just instanciate one time a FFTReal object. Specify the data type you want
+as template parameter (only floating point: float, double, long double or
+custom type). The constructor precompute a lot of things, so it may be a bit
+long. The parameter is the number of points used for the next FFTs. It must
+be a power of 2:
+
+ #include "FFTReal.h"
+ ...
+ long len = 1024;
+ ...
+ FFTReal <float> fft_object (len); // 1024-point FFT object constructed.
+
+Then you can use this object to compute as many FFTs and IFFTs as you want.
+They will be computed very quickly because a lot of work has been done in the
+object construction.
+
+ float x [1024];
+ float f [1024];
+
+ ...
+ fft_object.do_fft (f, x); // x (real) --FFT---> f (complex)
+ ...
+ fft_object.do_ifft (f, x); // f (complex) --IFFT--> x (real)
+ fft_object.rescale (x); // Post-scaling should be done after FFT+IFFT
+ ...
+
+x [] and f [] are floating point number arrays. x [] is the real number
+sequence which we want to compute the FFT. f [] is the result, in the
+"frequency" domain. f has the same number of elements as x [], but f []
+elements are complex numbers. The routine uses some FFT properties to
+optimize memory and to reduce calculations: the transformaton of a real
+number sequence is a conjugate complex number sequence: F [k] = F [-k]*.
+
+
+3.2 FFTRealFixLen - Length fixed at compile-time
+------------------------------------------------
+
+This class is significantly faster than the previous one, giving a speed
+gain between 50 and 100 %. The template parameter is the base-2 logarithm of
+the FFT length. The datatype is float; it can be changed by modifying the
+DataType typedef in FFTRealFixLenParam.h. As FFTReal class, it supports
+only floating-point types or equivalent.
+
+To instanciate the object, just proceed as below:
+
+ #include "FFTRealFixLen.h"
+ ...
+ FFTRealFixLen <10> fft_object; // 1024-point (2^10) FFT object constructed.
+
+Use is similar as the one of FFTReal.
+
+
+3.3 Data organisation
+---------------------
+
+Mathematically speaking, the formulas below show what does FFTReal:
+
+do_fft() : f(k) = sum (p = 0, N-1, x(p) * exp (+j*2*pi*k*p/N))
+do_ifft(): x(k) = sum (p = 0, N-1, f(p) * exp (-j*2*pi*k*p/N))
+
+Where j is the square root of -1. The formulas differ only by the sign of
+the exponential. When the sign is positive, the transform is called positive.
+Common formulas for Fourier transform are negative for the direct tranform and
+positive for the inverse one.
+
+However in these formulas, f is an array of complex numbers and doesn't
+correspound exactly to the f[] array taken as function parameter. The
+following table shows how the f[] sequence is mapped onto the usable FFT
+coefficients (called bins):
+
+ FFTReal output | Positive FFT equiv. | Negative FFT equiv.
+ ---------------+-----------------------+-----------------------
+ f [0] | Real (bin 0) | Real (bin 0)
+ f [...] | Real (bin ...) | Real (bin ...)
+ f [length/2] | Real (bin length/2) | Real (bin length/2)
+ f [length/2+1] | Imag (bin 1) | -Imag (bin 1)
+ f [...] | Imag (bin ...) | -Imag (bin ...)
+ f [length-1] | Imag (bin length/2-1) | -Imag (bin length/2-1)
+
+And FFT bins are distributed in f [] as above:
+
+ | | Positive FFT | Negative FFT
+ Bin | Real part | imaginary part | imaginary part
+ ------------+----------------+-----------------+---------------
+ 0 | f [0] | 0 | 0
+ 1 | f [1] | f [length/2+1] | -f [length/2+1]
+ ... | f [...], | f [...] | -f [...]
+ length/2-1 | f [length/2-1] | f [length-1] | -f [length-1]
+ length/2 | f [length/2] | 0 | 0
+ length/2+1 | f [length/2-1] | -f [length-1] | f [length-1]
+ ... | f [...] | -f [...] | f [...]
+ length-1 | f [1] | -f [length/2+1] | f [length/2+1]
+
+f [] coefficients have the same layout for FFT and IFFT functions. You may
+notice that scaling must be done if you want to retrieve x after FFT and IFFT.
+Actually, IFFT (FFT (x)) = x * length(x). This is a not a problem because
+most of the applications don't care about absolute values. Thus, the operation
+requires less calculation. If you want to use the FFT and IFFT to transform a
+signal, you have to apply post- (or pre-) processing yourself. Multiplying
+or dividing floating point numbers by a power of 2 doesn't generate extra
+computation noise.
+
+
+
+4. Compilation and testing
+--------------------------
+
+Drop the following files into your project or makefile:
+
+Array.*
+def.h
+DynArray.*
+FFTReal*.cpp
+FFTReal*.h*
+OscSinCos.*
+
+Other files are for testing purpose only, do not include them if you just need
+to use the library ; they are not needed to use FFTReal in your own programs.
+
+FFTReal may be compiled in two versions: release and debug. Debug version
+has checks that could slow down the code. Define NDEBUG to set the Release
+mode. For example, the command line to compile the test bench on GCC would
+look like:
+
+Debug mode:
+g++ -Wall -o fftreal_debug.exe *.cpp stopwatch/*.cpp
+
+Release mode:
+g++ -Wall -o fftreal_release.exe -DNDEBUG -O3 *.cpp stopwatch/*.cpp
+
+It may be tricky to compile the test bench because the speed tests use the
+stopwatch sub-library, which is not that cross-platform. If you encounter
+any problem that you cannot easily fix while compiling it, edit the file
+test_settings.h and un-define the speed test macro. Remove the stopwatch
+directory from your source file list, too.
+
+If it's not done by default, you should activate the exception handling
+of your compiler to get the class memory-leak-safe. Thus, when a memory
+allocation fails (in the constructor), an exception is thrown and the entire
+object is safely destructed. It reduces the permanent error checking overhead
+in the client code. Also, the test bench requires Run-Time Type Information
+(RTTI) to be enabled in order to display the names of the tested classes -
+sometimes mangled, depending on the compiler.
+
+The test bench may take a long time to compile, especially in Release mode,
+because a lot of recursive templates are instanciated.
+
+
+
+5. History
+----------
+
+v2.00 (2005.10.18)
+- Turned FFTReal class into template (data type as parameter)
+- Added FFTRealFixLen
+- Trigonometric tables are size-limited in order to preserve cache memory;
+over a given size, sin/cos functions are computed on the fly.
+- Better test bench for accuracy and speed
+
+v1.03 (2001.06.15)
+- Thanks to Frederic Vanmol for the Pascal port (works with Delphi).
+- Documentation improvement
+
+v1.02 (2001.03.25)
+- sqrt() is now precomputed when the object FFTReal is constructed, resulting
+in speed impovement for small size FFT.
+
+v1.01 (2000)
+- Small modifications, I don't remember what.
+
+v1.00 (1999.08.14)
+- First version released
+
diff --git a/demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.cpp b/demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.cpp
new file mode 100644
index 000000000..fe1d4245f
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.cpp
@@ -0,0 +1,285 @@
+/*****************************************************************************
+
+ ClockCycleCounter.cpp
+ Copyright (c) 2003 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (_MSC_VER)
+ #pragma warning (1 : 4130) // "'operator' : logical operation on address of string constant"
+ #pragma warning (1 : 4223) // "nonstandard extension used : non-lvalue array converted to pointer"
+ #pragma warning (1 : 4705) // "statement has no effect"
+ #pragma warning (1 : 4706) // "assignment within conditional expression"
+ #pragma warning (4 : 4786) // "identifier was truncated to '255' characters in the debug information"
+ #pragma warning (4 : 4800) // "forcing value to bool 'true' or 'false' (performance warning)"
+ #pragma warning (4 : 4355) // "'this' : used in base member initializer list"
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "ClockCycleCounter.h"
+
+#include <cassert>
+
+
+
+namespace stopwatch
+{
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*
+==============================================================================
+Name: ctor
+Description:
+ The first object constructed initialise global data. This first
+ construction may be a bit slow.
+Throws: Nothing
+==============================================================================
+*/
+
+ClockCycleCounter::ClockCycleCounter ()
+: _start_time (0)
+, _state (0)
+, _best_score (-1)
+{
+ if (! _init_flag)
+ {
+ // Should be executed in this order
+ compute_clk_mul ();
+ compute_measure_time_total ();
+ compute_measure_time_lap ();
+
+ // Restores object state
+ _start_time = 0;
+ _state = 0;
+ _best_score = -1;
+
+ _init_flag = true;
+ }
+}
+
+
+
+/*
+==============================================================================
+Name: get_time_total
+Description:
+ Gives the time elapsed between the latest stop_lap() and start() calls.
+Returns:
+ The duration, in clock cycles.
+Throws: Nothing
+==============================================================================
+*/
+
+Int64 ClockCycleCounter::get_time_total () const
+{
+ const Int64 duration = _state - _start_time;
+ assert (duration >= 0);
+
+ const Int64 t = max (
+ duration - _measure_time_total,
+ static_cast <Int64> (0)
+ );
+
+ return (t * _clk_mul);
+}
+
+
+
+/*
+==============================================================================
+Name: get_time_best_lap
+Description:
+ Gives the smallest time between two consecutive stop_lap() or between
+ the stop_lap() and start(). The value is reset by a call to start().
+ Call this function only after a stop_lap().
+ The time is amputed from the duration of the stop_lap() call itself.
+Returns:
+ The smallest duration, in clock cycles.
+Throws: Nothing
+==============================================================================
+*/
+
+Int64 ClockCycleCounter::get_time_best_lap () const
+{
+ assert (_best_score >= 0);
+
+ const Int64 t1 = max (
+ _best_score - _measure_time_lap,
+ static_cast <Int64> (0)
+ );
+ const Int64 t = min (t1, get_time_total ());
+
+ return (t * _clk_mul);
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+#if defined (__MACOS__)
+
+static inline double stopwatch_ClockCycleCounter_get_time_s ()
+{
+ const Nanoseconds ns = AbsoluteToNanoseconds (UpTime ());
+
+ return (ns.hi * 4294967296e-9 + ns.lo * 1e-9);
+}
+
+#endif // __MACOS__
+
+
+
+/*
+==============================================================================
+Name: compute_clk_mul
+Description:
+ This function, only for PowerPC/MacOS computers, computes the multiplier
+ required to deduce clock cycles from the internal counter.
+Throws: Nothing
+==============================================================================
+*/
+
+void ClockCycleCounter::compute_clk_mul ()
+{
+ assert (! _init_flag);
+
+#if defined (__MACOS__)
+
+ long clk_speed_mhz = CurrentProcessorSpeed ();
+ const Int64 clk_speed =
+ static_cast <Int64> (clk_speed_mhz) * (1000L*1000L);
+
+ const double start_time_s = stopwatch_ClockCycleCounter_get_time_s ();
+ start ();
+
+ const double duration = 0.01; // Seconds
+ while (stopwatch_ClockCycleCounter_get_time_s () - start_time_s < duration)
+ {
+ continue;
+ }
+
+ const double stop_time_s = stopwatch_ClockCycleCounter_get_time_s ();
+ stop ();
+
+ const double diff_time_s = stop_time_s - start_time_s;
+ const double nbr_cycles = diff_time_s * static_cast <double> (clk_speed);
+
+ const Int64 diff_time_c = _state - _start_time;
+ const double clk_mul = nbr_cycles / static_cast <double> (diff_time_c);
+
+ _clk_mul = round_int (clk_mul);
+
+#endif // __MACOS__
+}
+
+
+
+void ClockCycleCounter::compute_measure_time_total ()
+{
+ start ();
+ spend_time ();
+
+ Int64 best_result = 0x7FFFFFFFL; // Should be enough
+ long nbr_tests = 100;
+ for (long cnt = 0; cnt < nbr_tests; ++cnt)
+ {
+ start ();
+ stop_lap ();
+ const Int64 duration = _state - _start_time;
+ best_result = min (best_result, duration);
+ }
+
+ _measure_time_total = best_result;
+}
+
+
+
+/*
+==============================================================================
+Name: compute_measure_time_lap
+Description:
+ Computes the duration of one stop_lap() call and store it. It will be used
+ later to get the real duration of the measured operation (by substracting
+ the measurement duration).
+Throws: Nothing
+==============================================================================
+*/
+
+void ClockCycleCounter::compute_measure_time_lap ()
+{
+ start ();
+ spend_time ();
+
+ long nbr_tests = 10;
+ for (long cnt = 0; cnt < nbr_tests; ++cnt)
+ {
+ stop_lap ();
+ stop_lap ();
+ stop_lap ();
+ stop_lap ();
+ }
+
+ _measure_time_lap = _best_score;
+}
+
+
+
+void ClockCycleCounter::spend_time ()
+{
+ const Int64 nbr_clocks = 500; // Number of clock cycles to spend
+
+ const Int64 start = read_clock_counter ();
+ Int64 current;
+
+ do
+ {
+ current = read_clock_counter ();
+ }
+ while ((current - start) * _clk_mul < nbr_clocks);
+}
+
+
+
+Int64 ClockCycleCounter::_measure_time_total = 0;
+Int64 ClockCycleCounter::_measure_time_lap = 0;
+int ClockCycleCounter::_clk_mul = 1;
+bool ClockCycleCounter::_init_flag = false;
+
+
+} // namespace stopwatch
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.h b/demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.h
new file mode 100644
index 000000000..ba7a99a46
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.h
@@ -0,0 +1,124 @@
+/*****************************************************************************
+
+ ClockCycleCounter.h
+ Copyright (c) 2003 Laurent de Soras
+
+Instrumentation class, for accurate time interval measurement. You may have
+to modify the implementation to adapt it to your system and/or compiler.
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (stopwatch_ClockCycleCounter_HEADER_INCLUDED)
+#define stopwatch_ClockCycleCounter_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "def.h"
+#include "Int64.h"
+
+
+
+namespace stopwatch
+{
+
+
+
+class ClockCycleCounter
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ ClockCycleCounter ();
+
+ stopwatch_FORCEINLINE void
+ start ();
+ stopwatch_FORCEINLINE void
+ stop_lap ();
+ Int64 get_time_total () const;
+ Int64 get_time_best_lap () const;
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ void compute_clk_mul ();
+ void compute_measure_time_total ();
+ void compute_measure_time_lap ();
+
+ static void spend_time ();
+ static stopwatch_FORCEINLINE Int64
+ read_clock_counter ();
+
+ Int64 _start_time;
+ Int64 _state;
+ Int64 _best_score;
+
+ static Int64 _measure_time_total;
+ static Int64 _measure_time_lap;
+ static int _clk_mul;
+ static bool _init_flag;
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ ClockCycleCounter (const ClockCycleCounter &other);
+ ClockCycleCounter &
+ operator = (const ClockCycleCounter &other);
+ bool operator == (const ClockCycleCounter &other);
+ bool operator != (const ClockCycleCounter &other);
+
+}; // class ClockCycleCounter
+
+
+
+} // namespace stopwatch
+
+
+
+#include "ClockCycleCounter.hpp"
+
+
+
+#endif // stopwatch_ClockCycleCounter_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.hpp b/demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.hpp
new file mode 100644
index 000000000..fbd511e25
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.hpp
@@ -0,0 +1,150 @@
+/*****************************************************************************
+
+ ClockCycleCounter.hpp
+ Copyright (c) 2003 Laurent de Soras
+
+Please complete the definitions according to your compiler/architecture.
+It's not a big deal if it's not possible to get the clock count...
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (stopwatch_ClockCycleCounter_CURRENT_CODEHEADER)
+ #error Recursive inclusion of ClockCycleCounter code header.
+#endif
+#define stopwatch_ClockCycleCounter_CURRENT_CODEHEADER
+
+#if ! defined (stopwatch_ClockCycleCounter_CODEHEADER_INCLUDED)
+#define stopwatch_ClockCycleCounter_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "fnc.h"
+
+#include <climits>
+
+
+
+namespace stopwatch
+{
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*
+==============================================================================
+Name: start
+Description:
+ Starts the counter.
+Throws: Nothing
+==============================================================================
+*/
+
+void ClockCycleCounter::start ()
+{
+ _best_score = (static_cast <Int64> (1) << (sizeof (Int64) * CHAR_BIT - 2));
+ const Int64 start_clock = read_clock_counter ();
+ _start_time = start_clock;
+ _state = start_clock - _best_score;
+}
+
+
+
+/*
+==============================================================================
+Name: stop_lap
+Description:
+ Captures the current time and updates the smallest duration between two
+ consecutive calls to stop_lap() or the latest start().
+ start() must have been called at least once before calling this function.
+Throws: Nothing
+==============================================================================
+*/
+
+void ClockCycleCounter::stop_lap ()
+{
+ const Int64 end_clock = read_clock_counter ();
+ _best_score = min (end_clock - _state, _best_score);
+ _state = end_clock;
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+Int64 ClockCycleCounter::read_clock_counter ()
+{
+ register Int64 clock_cnt;
+
+#if defined (_MSC_VER)
+
+ __asm
+ {
+ lea edi, clock_cnt
+ rdtsc
+ mov [edi ], eax
+ mov [edi + 4], edx
+ }
+
+#elif defined (__GNUC__) && defined (__i386__)
+
+ __asm__ __volatile__ ("rdtsc" : "=A" (clock_cnt));
+
+#elif (__MWERKS__) && defined (__POWERPC__)
+
+ asm
+ {
+ loop:
+ mftbu clock_cnt@hiword
+ mftb clock_cnt@loword
+ mftbu r5
+ cmpw clock_cnt@hiword,r5
+ bne loop
+ }
+
+#endif
+
+ return (clock_cnt);
+}
+
+
+
+} // namespace stopwatch
+
+
+
+#endif // stopwatch_ClockCycleCounter_CODEHEADER_INCLUDED
+
+#undef stopwatch_ClockCycleCounter_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/stopwatch/Int64.h b/demos/spectrum/3rdparty/fftreal/stopwatch/Int64.h
new file mode 100644
index 000000000..1e786e255
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/stopwatch/Int64.h
@@ -0,0 +1,71 @@
+/*****************************************************************************
+
+ Int64.h
+ Copyright (c) 2003 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (stopwatch_Int64_HEADER_INCLUDED)
+#define stopwatch_Int64_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+namespace stopwatch
+{
+
+
+#if defined (_MSC_VER)
+
+ typedef __int64 Int64;
+
+#elif defined (__MWERKS__) || defined (__GNUC__)
+
+ typedef long long Int64;
+
+#elif defined (__BEOS__)
+
+ typedef int64 Int64;
+
+#else
+
+ #error No 64-bit integer type defined for this compiler !
+
+#endif
+
+
+} // namespace stopwatch
+
+
+
+#endif // stopwatch_Int64_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.cpp b/demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.cpp
new file mode 100644
index 000000000..7795d86d6
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.cpp
@@ -0,0 +1,101 @@
+/*****************************************************************************
+
+ StopWatch.cpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (_MSC_VER)
+ #pragma warning (1 : 4130) // "'operator' : logical operation on address of string constant"
+ #pragma warning (1 : 4223) // "nonstandard extension used : non-lvalue array converted to pointer"
+ #pragma warning (1 : 4705) // "statement has no effect"
+ #pragma warning (1 : 4706) // "assignment within conditional expression"
+ #pragma warning (4 : 4786) // "identifier was truncated to '255' characters in the debug information"
+ #pragma warning (4 : 4800) // "forcing value to bool 'true' or 'false' (performance warning)"
+ #pragma warning (4 : 4355) // "'this' : used in base member initializer list"
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "StopWatch.h"
+
+#include <cassert>
+
+
+
+namespace stopwatch
+{
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+StopWatch::StopWatch ()
+: _ccc ()
+, _nbr_laps (0)
+{
+ // Nothing
+}
+
+
+
+double StopWatch::get_time_total (Int64 nbr_op) const
+{
+ assert (_nbr_laps > 0);
+ assert (nbr_op > 0);
+
+ return (
+ static_cast <double> (_ccc.get_time_total ())
+ / (static_cast <double> (nbr_op) * static_cast <double> (_nbr_laps))
+ );
+}
+
+
+
+double StopWatch::get_time_best_lap (Int64 nbr_op) const
+{
+ assert (nbr_op > 0);
+
+ return (
+ static_cast <double> (_ccc.get_time_best_lap ())
+ / static_cast <double> (nbr_op)
+ );
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+} // namespace stopwatch
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.h b/demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.h
new file mode 100644
index 000000000..9cc47e5f2
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.h
@@ -0,0 +1,110 @@
+/*****************************************************************************
+
+ StopWatch.h
+ Copyright (c) 2005 Laurent de Soras
+
+Utility class based on ClockCycleCounter to measure the unit time of a
+repeated operation.
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (stopwatch_StopWatch_HEADER_INCLUDED)
+#define stopwatch_StopWatch_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "ClockCycleCounter.h"
+
+
+
+namespace stopwatch
+{
+
+
+
+class StopWatch
+{
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+public:
+
+ StopWatch ();
+
+ stopwatch_FORCEINLINE void
+ start ();
+ stopwatch_FORCEINLINE void
+ stop_lap ();
+
+ double get_time_total (Int64 nbr_op) const;
+ double get_time_best_lap (Int64 nbr_op) const;
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+protected:
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ ClockCycleCounter
+ _ccc;
+ Int64 _nbr_laps;
+
+
+
+/*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+private:
+
+ StopWatch (const StopWatch &other);
+ StopWatch & operator = (const StopWatch &other);
+ bool operator == (const StopWatch &other);
+ bool operator != (const StopWatch &other);
+
+}; // class StopWatch
+
+
+
+} // namespace stopwatch
+
+
+
+#include "StopWatch.hpp"
+
+
+
+#endif // stopwatch_StopWatch_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.hpp b/demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.hpp
new file mode 100644
index 000000000..74482a7a7
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/stopwatch/StopWatch.hpp
@@ -0,0 +1,83 @@
+/*****************************************************************************
+
+ StopWatch.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (stopwatch_StopWatch_CURRENT_CODEHEADER)
+ #error Recursive inclusion of StopWatch code header.
+#endif
+#define stopwatch_StopWatch_CURRENT_CODEHEADER
+
+#if ! defined (stopwatch_StopWatch_CODEHEADER_INCLUDED)
+#define stopwatch_StopWatch_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+namespace stopwatch
+{
+
+
+
+/*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+void StopWatch::start ()
+{
+ _nbr_laps = 0;
+ _ccc.start ();
+}
+
+
+
+void StopWatch::stop_lap ()
+{
+ _ccc.stop_lap ();
+ ++ _nbr_laps;
+}
+
+
+
+/*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+/*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+} // namespace stopwatch
+
+
+
+#endif // stopwatch_StopWatch_CODEHEADER_INCLUDED
+
+#undef stopwatch_StopWatch_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/stopwatch/def.h b/demos/spectrum/3rdparty/fftreal/stopwatch/def.h
new file mode 100644
index 000000000..81ee6aaa3
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/stopwatch/def.h
@@ -0,0 +1,65 @@
+/*****************************************************************************
+
+ def.h
+ Copyright (c) 2003 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (stopwatch_def_HEADER_INCLUDED)
+#define stopwatch_def_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+namespace stopwatch
+{
+
+
+
+#if defined (_MSC_VER)
+
+ #define stopwatch_FORCEINLINE __forceinline
+
+#else
+
+ #define stopwatch_FORCEINLINE inline
+
+#endif
+
+
+
+} // namespace stopwatch
+
+
+
+#endif // stopwatch_def_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/stopwatch/fnc.h b/demos/spectrum/3rdparty/fftreal/stopwatch/fnc.h
new file mode 100644
index 000000000..055453543
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/stopwatch/fnc.h
@@ -0,0 +1,67 @@
+/*****************************************************************************
+
+ fnc.h
+ Copyright (c) 2003 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (stopwatch_fnc_HEADER_INCLUDED)
+#define stopwatch_fnc_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+namespace stopwatch
+{
+
+
+
+template <typename T>
+inline T min (T a, T b);
+
+template <typename T>
+inline T max (T a, T b);
+
+inline int round_int (double x);
+
+
+
+} // namespace rsp
+
+
+
+#include "fnc.hpp"
+
+
+
+#endif // stopwatch_fnc_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/stopwatch/fnc.hpp b/demos/spectrum/3rdparty/fftreal/stopwatch/fnc.hpp
new file mode 100644
index 000000000..0ab5949ef
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/stopwatch/fnc.hpp
@@ -0,0 +1,85 @@
+/*****************************************************************************
+
+ fnc.hpp
+ Copyright (c) 2003 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (stopwatch_fnc_CURRENT_CODEHEADER)
+ #error Recursive inclusion of fnc code header.
+#endif
+#define stopwatch_fnc_CURRENT_CODEHEADER
+
+#if ! defined (stopwatch_fnc_CODEHEADER_INCLUDED)
+#define stopwatch_fnc_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include <cassert>
+#include <cmath>
+
+namespace std {}
+
+
+
+namespace stopwatch
+{
+
+
+
+template <typename T>
+inline T min (T a, T b)
+{
+ return ((a < b) ? a : b);
+}
+
+
+
+template <typename T>
+inline T max (T a, T b)
+{
+ return ((b < a) ? a : b);
+}
+
+
+
+int round_int (double x)
+{
+ using namespace std;
+
+ return (static_cast <int> (floor (x + 0.5)));
+}
+
+
+
+} // namespace stopwatch
+
+
+
+#endif // stopwatch_fnc_CODEHEADER_INCLUDED
+
+#undef stopwatch_fnc_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/test.cpp b/demos/spectrum/3rdparty/fftreal/test.cpp
new file mode 100644
index 000000000..7b6ed2cab
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/test.cpp
@@ -0,0 +1,267 @@
+/*****************************************************************************
+
+ test.cpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (_MSC_VER)
+ #pragma warning (4 : 4786) // "identifier was truncated to '255' characters in the debug information"
+ #pragma warning (4 : 4800) // "forcing value to bool 'true' or 'false' (performance warning)"
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+#include "test_settings.h"
+#include "TestHelperFixLen.h"
+#include "TestHelperNormal.h"
+
+#if defined (_MSC_VER)
+#include <crtdbg.h>
+#include <new.h>
+#endif // _MSC_VER
+
+#include <new>
+
+#include <cassert>
+#include <cstdio>
+
+
+
+#define TEST_
+
+
+/*\\\ FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+static int TEST_perform_test_accuracy_all ();
+static int TEST_perform_test_speed_all ();
+
+static void TEST_prog_init ();
+static void TEST_prog_end ();
+
+
+
+int main (int argc, char *argv [])
+{
+ using namespace std;
+
+ int ret_val = 0;
+
+ TEST_prog_init ();
+
+ try
+ {
+ if (ret_val == 0)
+ {
+ ret_val = TEST_perform_test_accuracy_all ();
+ }
+
+ if (ret_val == 0)
+ {
+ ret_val = TEST_perform_test_speed_all ();
+ }
+ }
+
+ catch (std::exception &e)
+ {
+ printf ("\n*** main(): Exception (std::exception) : %s\n", e.what ());
+ ret_val = -1;
+ }
+
+ catch (...)
+ {
+ printf ("\n*** main(): Undefined exception\n");
+ ret_val = -1;
+ }
+
+ TEST_prog_end ();
+
+ return (ret_val);
+}
+
+
+
+int TEST_perform_test_accuracy_all ()
+{
+ int ret_val = 0;
+
+ TestHelperNormal <float >::perform_test_accuracy (ret_val);
+ TestHelperNormal <double>::perform_test_accuracy (ret_val);
+
+ TestHelperFixLen < 1>::perform_test_accuracy (ret_val);
+ TestHelperFixLen < 2>::perform_test_accuracy (ret_val);
+ TestHelperFixLen < 3>::perform_test_accuracy (ret_val);
+ TestHelperFixLen < 4>::perform_test_accuracy (ret_val);
+ TestHelperFixLen < 7>::perform_test_accuracy (ret_val);
+ TestHelperFixLen < 8>::perform_test_accuracy (ret_val);
+ TestHelperFixLen <10>::perform_test_accuracy (ret_val);
+ TestHelperFixLen <12>::perform_test_accuracy (ret_val);
+ TestHelperFixLen <13>::perform_test_accuracy (ret_val);
+
+ return (ret_val);
+}
+
+
+
+int TEST_perform_test_speed_all ()
+{
+ int ret_val = 0;
+
+#if defined (test_settings_SPEED_TEST_ENABLED)
+
+ TestHelperNormal <float >::perform_test_speed (ret_val);
+ TestHelperNormal <double>::perform_test_speed (ret_val);
+
+ TestHelperFixLen < 1>::perform_test_speed (ret_val);
+ TestHelperFixLen < 2>::perform_test_speed (ret_val);
+ TestHelperFixLen < 3>::perform_test_speed (ret_val);
+ TestHelperFixLen < 4>::perform_test_speed (ret_val);
+ TestHelperFixLen < 7>::perform_test_speed (ret_val);
+ TestHelperFixLen < 8>::perform_test_speed (ret_val);
+ TestHelperFixLen <10>::perform_test_speed (ret_val);
+ TestHelperFixLen <12>::perform_test_speed (ret_val);
+ TestHelperFixLen <14>::perform_test_speed (ret_val);
+ TestHelperFixLen <16>::perform_test_speed (ret_val);
+ TestHelperFixLen <20>::perform_test_speed (ret_val);
+
+#endif
+
+ return (ret_val);
+}
+
+
+
+#if defined (_MSC_VER)
+static int __cdecl TEST_new_handler_cb (size_t dummy)
+{
+ throw std::bad_alloc ();
+ return (0);
+}
+#endif // _MSC_VER
+
+
+
+#if defined (_MSC_VER) && ! defined (NDEBUG)
+static int __cdecl TEST_debug_alloc_hook_cb (int alloc_type, void *user_data_ptr, size_t size, int block_type, long request_nbr, const unsigned char *filename_0, int line_nbr)
+{
+ if (block_type != _CRT_BLOCK) // Ignore CRT blocks to prevent infinite recursion
+ {
+ switch (alloc_type)
+ {
+ case _HOOK_ALLOC:
+ case _HOOK_REALLOC:
+ case _HOOK_FREE:
+
+ // Put some debug code here
+
+ break;
+
+ default:
+ assert (false); // Undefined allocation type
+ break;
+ }
+ }
+
+ return (1);
+}
+#endif
+
+
+
+#if defined (_MSC_VER) && ! defined (NDEBUG)
+static int __cdecl TEST_debug_report_hook_cb (int report_type, char *user_msg_0, int *ret_val_ptr)
+{
+ *ret_val_ptr = 0; // 1 to override the CRT default reporting mode
+
+ switch (report_type)
+ {
+ case _CRT_WARN:
+ case _CRT_ERROR:
+ case _CRT_ASSERT:
+
+// Put some debug code here
+
+ break;
+ }
+
+ return (*ret_val_ptr);
+}
+#endif
+
+
+
+static void TEST_prog_init ()
+{
+#if defined (_MSC_VER)
+ ::_set_new_handler (::TEST_new_handler_cb);
+#endif // _MSC_VER
+
+#if defined (_MSC_VER) && ! defined (NDEBUG)
+ {
+ const int mode = (1 * _CRTDBG_MODE_DEBUG)
+ | (1 * _CRTDBG_MODE_WNDW);
+ ::_CrtSetReportMode (_CRT_WARN, mode);
+ ::_CrtSetReportMode (_CRT_ERROR, mode);
+ ::_CrtSetReportMode (_CRT_ASSERT, mode);
+
+ const int old_flags = ::_CrtSetDbgFlag (_CRTDBG_REPORT_FLAG);
+ ::_CrtSetDbgFlag ( old_flags
+ | (1 * _CRTDBG_LEAK_CHECK_DF)
+ | (1 * _CRTDBG_CHECK_ALWAYS_DF));
+ ::_CrtSetBreakAlloc (-1); // Specify here a memory bloc number
+ ::_CrtSetAllocHook (TEST_debug_alloc_hook_cb);
+ ::_CrtSetReportHook (TEST_debug_report_hook_cb);
+
+ // Speed up I/O but breaks C stdio compatibility
+// std::cout.sync_with_stdio (false);
+// std::cin.sync_with_stdio (false);
+// std::cerr.sync_with_stdio (false);
+// std::clog.sync_with_stdio (false);
+ }
+#endif // _MSC_VER, NDEBUG
+}
+
+
+
+static void TEST_prog_end ()
+{
+#if defined (_MSC_VER) && ! defined (NDEBUG)
+ {
+ const int mode = (1 * _CRTDBG_MODE_DEBUG)
+ | (0 * _CRTDBG_MODE_WNDW);
+ ::_CrtSetReportMode (_CRT_WARN, mode);
+ ::_CrtSetReportMode (_CRT_ERROR, mode);
+ ::_CrtSetReportMode (_CRT_ASSERT, mode);
+
+ ::_CrtMemState mem_state;
+ ::_CrtMemCheckpoint (&mem_state);
+ ::_CrtMemDumpStatistics (&mem_state);
+ }
+#endif // _MSC_VER, NDEBUG
+}
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/test_fnc.h b/demos/spectrum/3rdparty/fftreal/test_fnc.h
new file mode 100644
index 000000000..262215664
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/test_fnc.h
@@ -0,0 +1,53 @@
+/*****************************************************************************
+
+ test_fnc.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (test_fnc_HEADER_INCLUDED)
+#define test_fnc_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class T>
+inline T limit (const T &x, const T &inf, const T &sup);
+
+
+
+#include "test_fnc.hpp"
+
+
+
+#endif // test_fnc_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/test_fnc.hpp b/demos/spectrum/3rdparty/fftreal/test_fnc.hpp
new file mode 100644
index 000000000..4b5f9f59e
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/test_fnc.hpp
@@ -0,0 +1,56 @@
+/*****************************************************************************
+
+ test_fnc.hpp
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if defined (test_fnc_CURRENT_CODEHEADER)
+ #error Recursive inclusion of test_fnc code header.
+#endif
+#define test_fnc_CURRENT_CODEHEADER
+
+#if ! defined (test_fnc_CODEHEADER_INCLUDED)
+#define test_fnc_CODEHEADER_INCLUDED
+
+
+
+/*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
+
+
+
+template <class T>
+T limit (const T &x, const T &inf, const T &sup)
+{
+ assert (! (sup < inf));
+
+ return ((x < inf) ? inf : ((sup < x) ? sup : x));
+}
+
+
+
+#endif // test_fnc_CODEHEADER_INCLUDED
+
+#undef test_fnc_CURRENT_CODEHEADER
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/test_settings.h b/demos/spectrum/3rdparty/fftreal/test_settings.h
new file mode 100644
index 000000000..b893afc8d
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/test_settings.h
@@ -0,0 +1,45 @@
+/*****************************************************************************
+
+ test_settings.h
+ Copyright (c) 2005 Laurent de Soras
+
+--- Legal stuff ---
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*Tab=3***********************************************************************/
+
+
+
+#if ! defined (test_settings_HEADER_INCLUDED)
+#define test_settings_HEADER_INCLUDED
+
+#if defined (_MSC_VER)
+ #pragma once
+ #pragma warning (4 : 4250) // "Inherits via dominance."
+#endif
+
+
+
+// #undef this label to avoid speed test compilation.
+#define test_settings_SPEED_TEST_ENABLED
+
+
+
+#endif // test_settings_HEADER_INCLUDED
+
+
+
+/*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
diff --git a/demos/spectrum/3rdparty/fftreal/testapp.dpr b/demos/spectrum/3rdparty/fftreal/testapp.dpr
new file mode 100644
index 000000000..54f2eb99a
--- /dev/null
+++ b/demos/spectrum/3rdparty/fftreal/testapp.dpr
@@ -0,0 +1,150 @@
+program testapp;
+{$APPTYPE CONSOLE}
+uses
+ SysUtils,
+ fftreal in 'fftreal.pas',
+ Math,
+ Windows;
+
+var
+ nbr_points : longint;
+ x, f : pflt_array;
+ fft : TFFTReal;
+ i : longint;
+ PI : double;
+ areal, img : double;
+ f_abs : double;
+ buffer_size : longint;
+ nbr_tests : longint;
+ time0, time1, time2 : int64;
+ timereso : int64;
+ offset : longint;
+ t0, t1 : double;
+ nbr_s_chn : longint;
+ tempp1, tempp2 : pflt_array;
+
+begin
+ (*______________________________________________
+ *
+ * Exactness test
+ *______________________________________________
+ *)
+
+ WriteLn('Accuracy test:');
+ WriteLn;
+
+ nbr_points := 16; // Power of 2
+ GetMem(x, nbr_points * sizeof_flt);
+ GetMem(f, nbr_points * sizeof_flt);
+ fft := TFFTReal.Create(nbr_points); // FFT object initialized here
+
+ // Test signal
+ PI := ArcTan(1) * 4;
+ for i := 0 to nbr_points-1 do
+ begin
+ x^[i] := -1 + sin (3*2*PI*i/nbr_points)
+ + cos (5*2*PI*i/nbr_points) * 2
+ - sin (7*2*PI*i/nbr_points) * 3
+ + cos (8*2*PI*i/nbr_points) * 5;
+ end;
+
+ // Compute FFT and IFFT
+ fft.do_fft(f, x);
+ fft.do_ifft(f, x);
+ fft.rescale(x);
+
+ // Display the result
+ WriteLn('FFT:');
+ for i := 0 to nbr_points div 2 do
+ begin
+ areal := f^[i];
+ if (i > 0) and (i < nbr_points div 2) then
+ img := f^[i + nbr_points div 2]
+ else
+ img := 0;
+
+ f_abs := Sqrt(areal * areal + img * img);
+ WriteLn(Format('%5d: %12.6f %12.6f (%12.6f)', [i, areal, img, f_abs]));
+ end;
+
+ WriteLn;
+ WriteLn('IFFT:');
+ for i := 0 to nbr_points-1 do
+ WriteLn(Format('%5d: %f', [i, x^[i]]));
+
+ WriteLn;
+
+ FreeMem(x);
+ FreeMem(f);
+ fft.Free;
+
+
+ (*______________________________________________
+ *
+ * Speed test
+ *______________________________________________
+ *)
+
+ WriteLn('Speed test:');
+ WriteLn('Please wait...');
+ WriteLn;
+
+ nbr_points := 1024; // Power of 2
+ buffer_size := 256*nbr_points; // Number of flt_t (float or double)
+ nbr_tests := 10000;
+
+ assert(nbr_points <= buffer_size);
+ GetMem(x, buffer_size * sizeof_flt);
+ GetMem(f, buffer_size * sizeof_flt);
+ fft := TFFTReal.Create(nbr_points); // FFT object initialized here
+
+ // Test signal: noise
+ for i := 0 to nbr_points-1 do
+ x^[i] := Random($7fff) - ($7fff shr 1);
+
+ // timing
+ QueryPerformanceFrequency(timereso);
+ QueryPerformanceCounter(time0);
+
+ for i := 0 to nbr_tests-1 do
+ begin
+ offset := (i * nbr_points) and (buffer_size - 1);
+ tempp1 := f;
+ inc(tempp1, offset);
+ tempp2 := x;
+ inc(tempp2, offset);
+ fft.do_fft(tempp1, tempp2);
+ end;
+
+ QueryPerformanceCounter(time1);
+
+ for i := 0 to nbr_tests-1 do
+ begin
+ offset := (i * nbr_points) and (buffer_size - 1);
+ tempp1 := f;
+ inc(tempp1, offset);
+ tempp2 := x;
+ inc(tempp2, offset);
+ fft.do_ifft(tempp1, tempp2);
+ fft.rescale(x);
+ end;
+
+ QueryPerformanceCounter(time2);
+
+ t0 := ((time1-time0) / timereso) / nbr_tests;
+ t1 := ((time2-time1) / timereso) / nbr_tests;
+
+ WriteLn(Format('%d-points FFT : %.0f us.', [nbr_points, t0 * 1000000]));
+ WriteLn(Format('%d-points IFFT + scaling: %.0f us.', [nbr_points, t1 * 1000000]));
+
+ nbr_s_chn := Floor(nbr_points / ((t0 + t1) * 44100 * 2));
+ WriteLn(Format('Peak performance: FFT+IFFT on %d mono channels at 44.1 KHz (with overlapping)', [nbr_s_chn]));
+ WriteLn;
+
+ FreeMem(x);
+ FreeMem(f);
+ fft.Free;
+
+ WriteLn('Press [Return] key to terminate...');
+ ReadLn;
+end.
diff --git a/demos/spectrum/README.txt b/demos/spectrum/README.txt
new file mode 100644
index 000000000..c39d4a709
--- /dev/null
+++ b/demos/spectrum/README.txt
@@ -0,0 +1,103 @@
+Spectrum analyser demo app
+==========================
+
+Introduction
+------------
+
+This application is a demo which uses the QtMultimedia APIs to capture and play back PCM audio. While either recording or playback is ongoing, the application performs real-time level and frequency spectrum analysis, displaying the results in its main window.
+
+
+Acknowledgments
+---------------
+
+The application uses the FFTReal v2.00 library by Laurent de Soras to perform frequency analysis of the audio signal. For further information, see the project home page:
+ http://ldesoras.free.fr/prod.html
+
+
+Quick start
+-----------
+
+Play generated tone
+1. Select 'Play generated tone' from the mode menu
+2. Ensure that the 'Frequency sweep' box is checked
+3. Press 'OK'
+4. Press the play button
+You should hear a rising tone, and see progressively higher frequencies indicated by the spectrograph.
+
+Record and playback
+1. Select 'Record and play back audio' from the mode menu
+2. Press the record button, and speak into the microphone
+3. Wait until the buffer is full (shown as a full blue bar in the top widget)
+4. Press play, and wait until playback of the buffer is complete
+
+Play file
+1. Select 'Play file' from the mode menu
+2. Select a WAV file
+3. Press the play button
+You should hear the first few seconds of the file being played. The waveform, spectrograph and level meter should be updated as the file is played.
+
+
+Things to play with
+-------------------
+
+Try repeating the 'Play generated tone' sequence using different window functions. These can be selected from the settings dialog - launch it by pressing the spanner icon. The window function is applied to the audio signal before performing the frequency analysis; different windows should have a visible effect on the resulting frequency spectrum.
+
+Try clicking on one of the spectrograph bars while the tone is being played. The frequency range for that bar will be displayed at the top of the application window.
+
+
+Troubleshooting
+---------------
+
+If either recording or playback do not work, you may need to select a different input / output audio device. This can be done in the settings dialog - launch it by pressing the spanner icon.
+
+If that doesn't work, there may be a problem either in the application or in Qt. Report a bug in the usual way.
+
+
+Application interface
+---------------------
+
+The main window of the application contains the following widgets, starting at the top:
+
+Message box
+This shows various messages during execution, such as the current audio format.
+
+Progress bar / waveform display
+- While recording or playback is ongoing, the audio waveform is displayed, sliding from right to left.
+- Superimposed on the waveform, the amount of data currently in the buffer is showed as a blue bar. When recording, this blue bar fills up from left to right; when playing, the bar gets consumed from left to right.
+- A green window shows which part of the buffer has most recently been analysed. This window should be close to the 'leading edge' of recording or playback, i.e. the most recently recorded / played data, although it will lag slightly depending on the performance of the machine on which the application is running.
+
+Frequency spectrograph (on the left)
+The spectrograph shows 10 bars, each representing a frequency range. The frequency range of each bar is displayed in the message box when the bar is clicked. The height of the bar shows the maximum amplitude of freqencies within its range.
+
+Level meter (on the right)
+The current peak audio level is shown as a pink bar; the current RMS level is shown as a red bar. The 'high water mark' during a recent period is shown as a thin red line.
+
+Button panel
+- The mode menu allows switching between the three operation modes - 'Play generated tone', 'Record and play back' and 'Play file'.
+- The record button starts or resumes audio capture from the current input device.
+- The pause button suspends either capture or recording.
+- The play button starts or resumes audio playback to the current output device.
+- The settings button launches the settings dialog.
+
+
+Hacking
+-------
+
+If you want to hack the application, here are some pointers to get started.
+
+The spectrum.pri file contains several macros which you can enable by uncommenting:
+- LOG_FOO Enable logging from class Foo via qDebug()
+- DUMP_FOO Dump data from class Foo to the file system
+ e.g. DUMP_SPECTRUMANALYSER writes files containing the raw FFT input and output.
+ Be aware that this can generate a *lot* of data and may slow the app down considerably.
+- DISABLE_FOO Disable specified functionality
+
+If you don't like the combination of the waveform and progress bar in a single widget, separate them by commenting out SUPERIMPOSE_PROGRESS_ON_WAVEFORM.
+
+The spectrum.h file defines a number of parameters which can be played with. These control things such as the number of audio samples analysed per FFT calculation, the range and number of bands displayed by the spectrograph, and so on.
+
+The part of the application which interacts with QtMultimedia is in the Engine class.
+
+Some ideas for enhancements to the app are listed in TODO.txt. Feel free to start work on any of them :)
+
+
diff --git a/demos/spectrum/TODO.txt b/demos/spectrum/TODO.txt
new file mode 100644
index 000000000..dc3d8f3af
--- /dev/null
+++ b/demos/spectrum/TODO.txt
@@ -0,0 +1,34 @@
+TODO list for spectrum analyser
+===============================
+
+Bug fixes
+---------
+
+
+New features
+------------
+
+* Wrap user-visible strings in tr()
+
+* Allow user to set frequency range
+There should be some constraints on this, e.g.
+ - Maximum frequency must not be greater than Nyquist frequency
+ - Range is divisible by number of bars?
+
+* Add more visualizers other than bar spectrogram
+e.g. Funky OpenGL visualizers, particle effects etc
+
+
+Non-functional stuff
+--------------------
+
+* Improve robustness of QComboBox -> enum mapping
+At the moment, SettingsDialog relies on casting the combobox item index directly to the enumerated type. This is clearly a bit fragile...
+
+* For functions which take or return qint64 values, make a clear distinction between duration (microseconds) and length (bytes).
+A sensible convention would be that the default is bytes - i.e. microseconds must be indicated by adding a Us suffix, where not already obvious from the function name.
+
+
+
+
+
diff --git a/demos/spectrum/app/.gitignore b/demos/spectrum/app/.gitignore
new file mode 100644
index 000000000..82cf2a28f
--- /dev/null
+++ b/demos/spectrum/app/.gitignore
@@ -0,0 +1,2 @@
+spectrum
+spectrum.exe
diff --git a/demos/spectrum/app/app.pro b/demos/spectrum/app/app.pro
new file mode 100644
index 000000000..044bd7500
--- /dev/null
+++ b/demos/spectrum/app/app.pro
@@ -0,0 +1,118 @@
+include(../spectrum.pri)
+
+static: error(This application cannot be statically linked to the fftreal library)
+
+TEMPLATE = app
+
+TARGET = spectrum
+
+QT += multimedia
+
+SOURCES += main.cpp \
+ engine.cpp \
+ frequencyspectrum.cpp \
+ levelmeter.cpp \
+ mainwidget.cpp \
+ progressbar.cpp \
+ settingsdialog.cpp \
+ spectrograph.cpp \
+ spectrumanalyser.cpp \
+ tonegenerator.cpp \
+ tonegeneratordialog.cpp \
+ utils.cpp \
+ waveform.cpp \
+ wavfile.cpp
+
+HEADERS += engine.h \
+ frequencyspectrum.h \
+ levelmeter.h \
+ mainwidget.h \
+ progressbar.h \
+ settingsdialog.h \
+ spectrograph.h \
+ spectrum.h \
+ spectrumanalyser.h \
+ tonegenerator.h \
+ tonegeneratordialog.h \
+ utils.h \
+ waveform.h \
+ wavfile.h
+
+fftreal_dir = ../3rdparty/fftreal
+
+INCLUDEPATH += $${fftreal_dir}
+
+RESOURCES = spectrum.qrc
+
+symbian {
+ # Platform security capability required to record audio on Symbian
+ TARGET.CAPABILITY = UserEnvironment
+
+ # Provide unique ID for the generated binary, required by Symbian OS
+ TARGET.UID3 = 0xA000E402
+}
+
+
+# Dynamic linkage against FFTReal DLL
+!contains(DEFINES, DISABLE_FFT) {
+ symbian {
+ # Must explicitly add the .dll suffix to ensure dynamic linkage
+ LIBS += -lfftreal.dll
+ QMAKE_LIBDIR += $${fftreal_dir}
+ } else {
+ macx {
+ # Link to fftreal framework
+ LIBS += -F$${fftreal_dir}
+ LIBS += -framework fftreal
+ } else {
+ LIBS += -L..$${spectrum_build_dir}
+ LIBS += -lfftreal
+ }
+ }
+}
+
+# Install
+
+sources.files = $$SOURCES $$HEADERS $$RESOURCES app.pro
+sources.path = $$[QT_INSTALL_DEMOS]/qtmultimedia/spectrum/app
+images.files += images/record.png images/settings.png
+images.path = $$[QT_INSTALL_DEMOS]/qtmultimedia/spectrum/app/images
+INSTALLS += sources images
+
+# Deployment
+
+symbian {
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
+ !contains(DEFINES, DISABLE_FFT) {
+ # Include FFTReal DLL in the SIS file
+ fftreal.files = ../fftreal.dll
+ fftreal.path = !:/sys/bin
+ DEPLOYMENT += fftreal
+ }
+} else {
+ DESTDIR = ..$${spectrum_build_dir}
+ macx {
+ !contains(DEFINES, DISABLE_FFT) {
+ # Relocate fftreal.framework into spectrum.app bundle
+ framework_dir = ../spectrum.app/Contents/Frameworks
+ framework_name = fftreal.framework/Versions/1/fftreal
+ QMAKE_POST_LINK = \
+ mkdir -p $${framework_dir} &&\
+ rm -rf $${framework_dir}/fftreal.framework &&\
+ cp -R $${fftreal_dir}/fftreal.framework $${framework_dir} &&\
+ install_name_tool -id @executable_path/../Frameworks/$${framework_name} \
+ $${framework_dir}/$${framework_name} &&\
+ install_name_tool -change $${framework_name} \
+ @executable_path/../Frameworks/$${framework_name} \
+ ../spectrum.app/Contents/MacOS/spectrum
+ }
+ } else {
+ linux-g++*: {
+ # Provide relative path from application to fftreal library
+ QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN
+ }
+ }
+}
+
+
diff --git a/demos/spectrum/app/engine.cpp b/demos/spectrum/app/engine.cpp
new file mode 100644
index 000000000..8376f29f1
--- /dev/null
+++ b/demos/spectrum/app/engine.cpp
@@ -0,0 +1,766 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "engine.h"
+#include "tonegenerator.h"
+#include "utils.h"
+
+#include <math.h>
+
+#include <QCoreApplication>
+#include <QMetaObject>
+#include <QSet>
+#include <QtMultimedia/QAudioInput>
+#include <QtMultimedia/QAudioOutput>
+#include <QDebug>
+#include <QThread>
+#include <QFile>
+
+//-----------------------------------------------------------------------------
+// Constants
+//-----------------------------------------------------------------------------
+
+const qint64 BufferDurationUs = 10 * 1000000;
+const int NotifyIntervalMs = 100;
+
+// Size of the level calculation window in microseconds
+const int LevelWindowUs = 0.1 * 1000000;
+
+
+//-----------------------------------------------------------------------------
+// Helper functions
+//-----------------------------------------------------------------------------
+
+QDebug& operator<<(QDebug &debug, const QAudioFormat &format)
+{
+ debug << format.frequency() << "Hz"
+ << format.channels() << "channels";
+ return debug;
+}
+
+//-----------------------------------------------------------------------------
+// Constructor and destructor
+//-----------------------------------------------------------------------------
+
+Engine::Engine(QObject *parent)
+ : QObject(parent)
+ , m_mode(QAudio::AudioInput)
+ , m_state(QAudio::StoppedState)
+ , m_generateTone(false)
+ , m_file(0)
+ , m_analysisFile(0)
+ , m_availableAudioInputDevices
+ (QAudioDeviceInfo::availableDevices(QAudio::AudioInput))
+ , m_audioInputDevice(QAudioDeviceInfo::defaultInputDevice())
+ , m_audioInput(0)
+ , m_audioInputIODevice(0)
+ , m_recordPosition(0)
+ , m_availableAudioOutputDevices
+ (QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
+ , m_audioOutputDevice(QAudioDeviceInfo::defaultOutputDevice())
+ , m_audioOutput(0)
+ , m_playPosition(0)
+ , m_bufferPosition(0)
+ , m_bufferLength(0)
+ , m_dataLength(0)
+ , m_levelBufferLength(0)
+ , m_rmsLevel(0.0)
+ , m_peakLevel(0.0)
+ , m_spectrumBufferLength(0)
+ , m_spectrumAnalyser()
+ , m_spectrumPosition(0)
+ , m_count(0)
+{
+ qRegisterMetaType<FrequencySpectrum>("FrequencySpectrum");
+ qRegisterMetaType<WindowFunction>("WindowFunction");
+ CHECKED_CONNECT(&m_spectrumAnalyser,
+ SIGNAL(spectrumChanged(FrequencySpectrum)),
+ this,
+ SLOT(spectrumChanged(FrequencySpectrum)));
+
+ initialize();
+
+#ifdef DUMP_DATA
+ createOutputDir();
+#endif
+
+#ifdef DUMP_SPECTRUM
+ m_spectrumAnalyser.setOutputPath(outputPath());
+#endif
+}
+
+Engine::~Engine()
+{
+
+}
+
+//-----------------------------------------------------------------------------
+// Public functions
+//-----------------------------------------------------------------------------
+
+bool Engine::loadFile(const QString &fileName)
+{
+ reset();
+ bool result = false;
+ Q_ASSERT(!m_generateTone);
+ Q_ASSERT(!m_file);
+ Q_ASSERT(!fileName.isEmpty());
+ m_file = new WavFile(this);
+ if (m_file->open(fileName)) {
+ if (isPCMS16LE(m_file->fileFormat())) {
+ result = initialize();
+ } else {
+ emit errorMessage(tr("Audio format not supported"),
+ formatToString(m_file->fileFormat()));
+ }
+ } else {
+ emit errorMessage(tr("Could not open file"), fileName);
+ }
+ if (result) {
+ m_analysisFile = new WavFile(this);
+ m_analysisFile->open(fileName);
+ }
+ return result;
+}
+
+bool Engine::generateTone(const Tone &tone)
+{
+ reset();
+ Q_ASSERT(!m_generateTone);
+ Q_ASSERT(!m_file);
+ m_generateTone = true;
+ m_tone = tone;
+ ENGINE_DEBUG << "Engine::generateTone"
+ << "startFreq" << m_tone.startFreq
+ << "endFreq" << m_tone.endFreq
+ << "amp" << m_tone.amplitude;
+ return initialize();
+}
+
+bool Engine::generateSweptTone(qreal amplitude)
+{
+ Q_ASSERT(!m_generateTone);
+ Q_ASSERT(!m_file);
+ m_generateTone = true;
+ m_tone.startFreq = 1;
+ m_tone.endFreq = 0;
+ m_tone.amplitude = amplitude;
+ ENGINE_DEBUG << "Engine::generateSweptTone"
+ << "startFreq" << m_tone.startFreq
+ << "amp" << m_tone.amplitude;
+ return initialize();
+}
+
+bool Engine::initializeRecord()
+{
+ reset();
+ ENGINE_DEBUG << "Engine::initializeRecord";
+ Q_ASSERT(!m_generateTone);
+ Q_ASSERT(!m_file);
+ m_generateTone = false;
+ m_tone = SweptTone();
+ return initialize();
+}
+
+qint64 Engine::bufferLength() const
+{
+ return m_file ? m_file->size() : m_bufferLength;
+}
+
+void Engine::setWindowFunction(WindowFunction type)
+{
+ m_spectrumAnalyser.setWindowFunction(type);
+}
+
+
+//-----------------------------------------------------------------------------
+// Public slots
+//-----------------------------------------------------------------------------
+
+void Engine::startRecording()
+{
+ if (m_audioInput) {
+ if (QAudio::AudioInput == m_mode &&
+ QAudio::SuspendedState == m_state) {
+ m_audioInput->resume();
+ } else {
+ m_spectrumAnalyser.cancelCalculation();
+ spectrumChanged(0, 0, FrequencySpectrum());
+
+ m_buffer.fill(0);
+ setRecordPosition(0, true);
+ stopPlayback();
+ m_mode = QAudio::AudioInput;
+ CHECKED_CONNECT(m_audioInput, SIGNAL(stateChanged(QAudio::State)),
+ this, SLOT(audioStateChanged(QAudio::State)));
+ CHECKED_CONNECT(m_audioInput, SIGNAL(notify()),
+ this, SLOT(audioNotify()));
+ m_count = 0;
+ m_dataLength = 0;
+ emit dataLengthChanged(0);
+ m_audioInputIODevice = m_audioInput->start();
+ CHECKED_CONNECT(m_audioInputIODevice, SIGNAL(readyRead()),
+ this, SLOT(audioDataReady()));
+ }
+ }
+}
+
+void Engine::startPlayback()
+{
+ if (m_audioOutput) {
+ if (QAudio::AudioOutput == m_mode &&
+ QAudio::SuspendedState == m_state) {
+#ifdef Q_OS_WIN
+ // The Windows backend seems to internally go back into ActiveState
+ // while still returning SuspendedState, so to ensure that it doesn't
+ // ignore the resume() call, we first re-suspend
+ m_audioOutput->suspend();
+#endif
+ m_audioOutput->resume();
+ } else {
+ m_spectrumAnalyser.cancelCalculation();
+ spectrumChanged(0, 0, FrequencySpectrum());
+ setPlayPosition(0, true);
+ stopRecording();
+ m_mode = QAudio::AudioOutput;
+ CHECKED_CONNECT(m_audioOutput, SIGNAL(stateChanged(QAudio::State)),
+ this, SLOT(audioStateChanged(QAudio::State)));
+ CHECKED_CONNECT(m_audioOutput, SIGNAL(notify()),
+ this, SLOT(audioNotify()));
+ m_count = 0;
+ if (m_file) {
+ m_file->seek(0);
+ m_bufferPosition = 0;
+ m_dataLength = 0;
+ m_audioOutput->start(m_file);
+ } else {
+ m_audioOutputIODevice.close();
+ m_audioOutputIODevice.setBuffer(&m_buffer);
+ m_audioOutputIODevice.open(QIODevice::ReadOnly);
+ m_audioOutput->start(&m_audioOutputIODevice);
+ }
+ }
+ }
+}
+
+void Engine::suspend()
+{
+ if (QAudio::ActiveState == m_state ||
+ QAudio::IdleState == m_state) {
+ switch (m_mode) {
+ case QAudio::AudioInput:
+ m_audioInput->suspend();
+ break;
+ case QAudio::AudioOutput:
+ m_audioOutput->suspend();
+ break;
+ }
+ }
+}
+
+void Engine::setAudioInputDevice(const QAudioDeviceInfo &device)
+{
+ if (device.deviceName() != m_audioInputDevice.deviceName()) {
+ m_audioInputDevice = device;
+ initialize();
+ }
+}
+
+void Engine::setAudioOutputDevice(const QAudioDeviceInfo &device)
+{
+ if (device.deviceName() != m_audioOutputDevice.deviceName()) {
+ m_audioOutputDevice = device;
+ initialize();
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// Private slots
+//-----------------------------------------------------------------------------
+
+void Engine::audioNotify()
+{
+ switch (m_mode) {
+ case QAudio::AudioInput: {
+ const qint64 recordPosition = qMin(m_bufferLength, audioLength(m_format, m_audioInput->processedUSecs()));
+ setRecordPosition(recordPosition);
+ const qint64 levelPosition = m_dataLength - m_levelBufferLength;
+ if (levelPosition >= 0)
+ calculateLevel(levelPosition, m_levelBufferLength);
+ if (m_dataLength >= m_spectrumBufferLength) {
+ const qint64 spectrumPosition = m_dataLength - m_spectrumBufferLength;
+ calculateSpectrum(spectrumPosition);
+ }
+ emit bufferChanged(0, m_dataLength, m_buffer);
+ }
+ break;
+ case QAudio::AudioOutput: {
+ const qint64 playPosition = audioLength(m_format, m_audioOutput->processedUSecs());
+ setPlayPosition(qMin(bufferLength(), playPosition));
+ const qint64 levelPosition = playPosition - m_levelBufferLength;
+ const qint64 spectrumPosition = playPosition - m_spectrumBufferLength;
+ if (m_file) {
+ if (levelPosition > m_bufferPosition ||
+ spectrumPosition > m_bufferPosition ||
+ qMax(m_levelBufferLength, m_spectrumBufferLength) > m_dataLength) {
+ m_bufferPosition = 0;
+ m_dataLength = 0;
+ // Data needs to be read into m_buffer in order to be analysed
+ const qint64 readPos = qMax(qint64(0), qMin(levelPosition, spectrumPosition));
+ const qint64 readEnd = qMin(m_analysisFile->size(), qMax(levelPosition + m_levelBufferLength, spectrumPosition + m_spectrumBufferLength));
+ const qint64 readLen = readEnd - readPos + audioLength(m_format, WaveformWindowDuration);
+ qDebug() << "Engine::audioNotify [1]"
+ << "analysisFileSize" << m_analysisFile->size()
+ << "readPos" << readPos
+ << "readLen" << readLen;
+ if (m_analysisFile->seek(readPos + m_analysisFile->headerLength())) {
+ m_buffer.resize(readLen);
+ m_bufferPosition = readPos;
+ m_dataLength = m_analysisFile->read(m_buffer.data(), readLen);
+ qDebug() << "Engine::audioNotify [2]" << "bufferPosition" << m_bufferPosition << "dataLength" << m_dataLength;
+ } else {
+ qDebug() << "Engine::audioNotify [2]" << "file seek error";
+ }
+ emit bufferChanged(m_bufferPosition, m_dataLength, m_buffer);
+ }
+ } else {
+ if (playPosition >= m_dataLength)
+ stopPlayback();
+ }
+ if (levelPosition >= 0 && levelPosition + m_levelBufferLength < m_bufferPosition + m_dataLength)
+ calculateLevel(levelPosition, m_levelBufferLength);
+ if (spectrumPosition >= 0 && spectrumPosition + m_spectrumBufferLength < m_bufferPosition + m_dataLength)
+ calculateSpectrum(spectrumPosition);
+ }
+ break;
+ }
+}
+
+void Engine::audioStateChanged(QAudio::State state)
+{
+ ENGINE_DEBUG << "Engine::audioStateChanged from" << m_state
+ << "to" << state;
+
+ if (QAudio::IdleState == state && m_file && m_file->pos() == m_file->size()) {
+ stopPlayback();
+ } else {
+ if (QAudio::StoppedState == state) {
+ // Check error
+ QAudio::Error error = QAudio::NoError;
+ switch (m_mode) {
+ case QAudio::AudioInput:
+ error = m_audioInput->error();
+ break;
+ case QAudio::AudioOutput:
+ error = m_audioOutput->error();
+ break;
+ }
+ if (QAudio::NoError != error) {
+ reset();
+ return;
+ }
+ }
+ setState(state);
+ }
+}
+
+void Engine::audioDataReady()
+{
+ Q_ASSERT(0 == m_bufferPosition);
+ const qint64 bytesReady = m_audioInput->bytesReady();
+ const qint64 bytesSpace = m_buffer.size() - m_dataLength;
+ const qint64 bytesToRead = qMin(bytesReady, bytesSpace);
+
+ const qint64 bytesRead = m_audioInputIODevice->read(
+ m_buffer.data() + m_dataLength,
+ bytesToRead);
+
+ if (bytesRead) {
+ m_dataLength += bytesRead;
+ emit dataLengthChanged(dataLength());
+ }
+
+ if (m_buffer.size() == m_dataLength)
+ stopRecording();
+}
+
+void Engine::spectrumChanged(const FrequencySpectrum &spectrum)
+{
+ ENGINE_DEBUG << "Engine::spectrumChanged" << "pos" << m_spectrumPosition;
+ emit spectrumChanged(m_spectrumPosition, m_spectrumBufferLength, spectrum);
+}
+
+
+//-----------------------------------------------------------------------------
+// Private functions
+//-----------------------------------------------------------------------------
+
+void Engine::resetAudioDevices()
+{
+ delete m_audioInput;
+ m_audioInput = 0;
+ m_audioInputIODevice = 0;
+ setRecordPosition(0);
+ delete m_audioOutput;
+ m_audioOutput = 0;
+ setPlayPosition(0);
+ m_spectrumPosition = 0;
+ setLevel(0.0, 0.0, 0);
+}
+
+void Engine::reset()
+{
+ stopRecording();
+ stopPlayback();
+ setState(QAudio::AudioInput, QAudio::StoppedState);
+ setFormat(QAudioFormat());
+ m_generateTone = false;
+ delete m_file;
+ m_file = 0;
+ delete m_analysisFile;
+ m_analysisFile = 0;
+ m_buffer.clear();
+ m_bufferPosition = 0;
+ m_bufferLength = 0;
+ m_dataLength = 0;
+ emit dataLengthChanged(0);
+ resetAudioDevices();
+}
+
+bool Engine::initialize()
+{
+ bool result = false;
+
+ QAudioFormat format = m_format;
+
+ if (selectFormat()) {
+ if (m_format != format) {
+ resetAudioDevices();
+ if (m_file) {
+ emit bufferLengthChanged(bufferLength());
+ emit dataLengthChanged(dataLength());
+ emit bufferChanged(0, 0, m_buffer);
+ setRecordPosition(bufferLength());
+ result = true;
+ } else {
+ m_bufferLength = audioLength(m_format, BufferDurationUs);
+ m_buffer.resize(m_bufferLength);
+ m_buffer.fill(0);
+ emit bufferLengthChanged(bufferLength());
+ if (m_generateTone) {
+ if (0 == m_tone.endFreq) {
+ const qreal nyquist = nyquistFrequency(m_format);
+ m_tone.endFreq = qMin(qreal(SpectrumHighFreq), nyquist);
+ }
+ // Call function defined in utils.h, at global scope
+ ::generateTone(m_tone, m_format, m_buffer);
+ m_dataLength = m_bufferLength;
+ emit dataLengthChanged(dataLength());
+ emit bufferChanged(0, m_dataLength, m_buffer);
+ setRecordPosition(m_bufferLength);
+ result = true;
+ } else {
+ emit bufferChanged(0, 0, m_buffer);
+ m_audioInput = new QAudioInput(m_audioInputDevice, m_format, this);
+ m_audioInput->setNotifyInterval(NotifyIntervalMs);
+ result = true;
+ }
+ }
+ m_audioOutput = new QAudioOutput(m_audioOutputDevice, m_format, this);
+ m_audioOutput->setNotifyInterval(NotifyIntervalMs);
+ }
+ } else {
+ if (m_file)
+ emit errorMessage(tr("Audio format not supported"),
+ formatToString(m_format));
+ else if (m_generateTone)
+ emit errorMessage(tr("No suitable format found"), "");
+ else
+ emit errorMessage(tr("No common input / output format found"), "");
+ }
+
+ ENGINE_DEBUG << "Engine::initialize" << "m_bufferLength" << m_bufferLength;
+ ENGINE_DEBUG << "Engine::initialize" << "m_dataLength" << m_dataLength;
+ ENGINE_DEBUG << "Engine::initialize" << "format" << m_format;
+
+ return result;
+}
+
+bool Engine::selectFormat()
+{
+ bool foundSupportedFormat = false;
+
+ if (m_file || QAudioFormat() != m_format) {
+ QAudioFormat format = m_format;
+ if (m_file)
+ // Header is read from the WAV file; just need to check whether
+ // it is supported by the audio output device
+ format = m_file->fileFormat();
+ if (m_audioOutputDevice.isFormatSupported(format)) {
+ setFormat(format);
+ foundSupportedFormat = true;
+ }
+ } else {
+
+ QList<int> frequenciesList;
+ #ifdef Q_OS_WIN
+ // The Windows audio backend does not correctly report format support
+ // (see QTBUG-9100). Furthermore, although the audio subsystem captures
+ // at 11025Hz, the resulting audio is corrupted.
+ frequenciesList += 8000;
+ #endif
+
+ if (!m_generateTone)
+ frequenciesList += m_audioInputDevice.supportedFrequencies();
+
+ frequenciesList += m_audioOutputDevice.supportedFrequencies();
+ frequenciesList = frequenciesList.toSet().toList(); // remove duplicates
+ qSort(frequenciesList);
+ ENGINE_DEBUG << "Engine::initialize frequenciesList" << frequenciesList;
+
+ QList<int> channelsList;
+ channelsList += m_audioInputDevice.supportedChannels();
+ channelsList += m_audioOutputDevice.supportedChannels();
+ channelsList = channelsList.toSet().toList();
+ qSort(channelsList);
+ ENGINE_DEBUG << "Engine::initialize channelsList" << channelsList;
+
+ QAudioFormat format;
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setCodec("audio/pcm");
+ format.setSampleSize(16);
+ format.setSampleType(QAudioFormat::SignedInt);
+ int frequency, channels;
+ foreach (frequency, frequenciesList) {
+ if (foundSupportedFormat)
+ break;
+ format.setFrequency(frequency);
+ foreach (channels, channelsList) {
+ format.setChannels(channels);
+ const bool inputSupport = m_generateTone ||
+ m_audioInputDevice.isFormatSupported(format);
+ const bool outputSupport = m_audioOutputDevice.isFormatSupported(format);
+ ENGINE_DEBUG << "Engine::initialize checking " << format
+ << "input" << inputSupport
+ << "output" << outputSupport;
+ if (inputSupport && outputSupport) {
+ foundSupportedFormat = true;
+ break;
+ }
+ }
+ }
+
+ if (!foundSupportedFormat)
+ format = QAudioFormat();
+
+ setFormat(format);
+ }
+
+ return foundSupportedFormat;
+}
+
+void Engine::stopRecording()
+{
+ if (m_audioInput) {
+ m_audioInput->stop();
+ QCoreApplication::instance()->processEvents();
+ m_audioInput->disconnect();
+ }
+ m_audioInputIODevice = 0;
+
+#ifdef DUMP_AUDIO
+ dumpData();
+#endif
+}
+
+void Engine::stopPlayback()
+{
+ if (m_audioOutput) {
+ m_audioOutput->stop();
+ QCoreApplication::instance()->processEvents();
+ m_audioOutput->disconnect();
+ setPlayPosition(0);
+ }
+}
+
+void Engine::setState(QAudio::State state)
+{
+ const bool changed = (m_state != state);
+ m_state = state;
+ if (changed)
+ emit stateChanged(m_mode, m_state);
+}
+
+void Engine::setState(QAudio::Mode mode, QAudio::State state)
+{
+ const bool changed = (m_mode != mode || m_state != state);
+ m_mode = mode;
+ m_state = state;
+ if (changed)
+ emit stateChanged(m_mode, m_state);
+}
+
+void Engine::setRecordPosition(qint64 position, bool forceEmit)
+{
+ const bool changed = (m_recordPosition != position);
+ m_recordPosition = position;
+ if (changed || forceEmit)
+ emit recordPositionChanged(m_recordPosition);
+}
+
+void Engine::setPlayPosition(qint64 position, bool forceEmit)
+{
+ const bool changed = (m_playPosition != position);
+ m_playPosition = position;
+ if (changed || forceEmit)
+ emit playPositionChanged(m_playPosition);
+}
+
+void Engine::calculateLevel(qint64 position, qint64 length)
+{
+#ifdef DISABLE_LEVEL
+ Q_UNUSED(position)
+ Q_UNUSED(length)
+#else
+ Q_ASSERT(position + length <= m_bufferPosition + m_dataLength);
+
+ qreal peakLevel = 0.0;
+
+ qreal sum = 0.0;
+ const char *ptr = m_buffer.constData() + position - m_bufferPosition;
+ const char *const end = ptr + length;
+ while (ptr < end) {
+ const qint16 value = *reinterpret_cast<const qint16*>(ptr);
+ const qreal fracValue = pcmToReal(value);
+ peakLevel = qMax(peakLevel, fracValue);
+ sum += fracValue * fracValue;
+ ptr += 2;
+ }
+ const int numSamples = length / 2;
+ qreal rmsLevel = sqrt(sum / numSamples);
+
+ rmsLevel = qMax(qreal(0.0), rmsLevel);
+ rmsLevel = qMin(qreal(1.0), rmsLevel);
+ setLevel(rmsLevel, peakLevel, numSamples);
+
+ ENGINE_DEBUG << "Engine::calculateLevel" << "pos" << position << "len" << length
+ << "rms" << rmsLevel << "peak" << peakLevel;
+#endif
+}
+
+void Engine::calculateSpectrum(qint64 position)
+{
+#ifdef DISABLE_SPECTRUM
+ Q_UNUSED(position)
+#else
+ Q_ASSERT(position + m_spectrumBufferLength <= m_bufferPosition + m_dataLength);
+ Q_ASSERT(0 == m_spectrumBufferLength % 2); // constraint of FFT algorithm
+
+ // QThread::currentThread is marked 'for internal use only', but
+ // we're only using it for debug output here, so it's probably OK :)
+ ENGINE_DEBUG << "Engine::calculateSpectrum" << QThread::currentThread()
+ << "count" << m_count << "pos" << position << "len" << m_spectrumBufferLength
+ << "spectrumAnalyser.isReady" << m_spectrumAnalyser.isReady();
+
+ if(m_spectrumAnalyser.isReady()) {
+ m_spectrumBuffer = QByteArray::fromRawData(m_buffer.constData() + position - m_bufferPosition,
+ m_spectrumBufferLength);
+ m_spectrumPosition = position;
+ m_spectrumAnalyser.calculate(m_spectrumBuffer, m_format);
+ }
+#endif
+}
+
+void Engine::setFormat(const QAudioFormat &format)
+{
+ const bool changed = (format != m_format);
+ m_format = format;
+ m_levelBufferLength = audioLength(m_format, LevelWindowUs);
+ m_spectrumBufferLength = SpectrumLengthSamples *
+ (m_format.sampleSize() / 8) * m_format.channels();
+ if (changed)
+ emit formatChanged(m_format);
+}
+
+void Engine::setLevel(qreal rmsLevel, qreal peakLevel, int numSamples)
+{
+ m_rmsLevel = rmsLevel;
+ m_peakLevel = peakLevel;
+ emit levelChanged(m_rmsLevel, m_peakLevel, numSamples);
+}
+
+#ifdef DUMP_DATA
+void Engine::createOutputDir()
+{
+ m_outputDir.setPath("output");
+
+ // Ensure output directory exists and is empty
+ if (m_outputDir.exists()) {
+ const QStringList files = m_outputDir.entryList(QDir::Files);
+ QString file;
+ foreach (file, files)
+ m_outputDir.remove(file);
+ } else {
+ QDir::current().mkdir("output");
+ }
+}
+#endif // DUMP_DATA
+
+#ifdef DUMP_AUDIO
+void Engine::dumpData()
+{
+ const QString txtFileName = m_outputDir.filePath("data.txt");
+ QFile txtFile(txtFileName);
+ txtFile.open(QFile::WriteOnly | QFile::Text);
+ QTextStream stream(&txtFile);
+ const qint16 *ptr = reinterpret_cast<const qint16*>(m_buffer.constData());
+ const int numSamples = m_dataLength / (2 * m_format.channels());
+ for (int i=0; i<numSamples; ++i) {
+ stream << i << "\t" << *ptr << "\n";
+ ptr += m_format.channels();
+ }
+
+ const QString pcmFileName = m_outputDir.filePath("data.pcm");
+ QFile pcmFile(pcmFileName);
+ pcmFile.open(QFile::WriteOnly);
+ pcmFile.write(m_buffer.constData(), m_dataLength);
+}
+#endif // DUMP_AUDIO
diff --git a/demos/spectrum/app/engine.h b/demos/spectrum/app/engine.h
new file mode 100644
index 000000000..51c63b370
--- /dev/null
+++ b/demos/spectrum/app/engine.h
@@ -0,0 +1,315 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef ENGINE_H
+#define ENGINE_H
+
+#include "spectrum.h"
+#include "spectrumanalyser.h"
+#include "wavfile.h"
+
+#include <QObject>
+#include <QByteArray>
+#include <QBuffer>
+#include <QVector>
+#include <QtMultimedia/QAudioDeviceInfo>
+#include <QtMultimedia/QAudioFormat>
+
+#ifdef DUMP_CAPTURED_AUDIO
+#define DUMP_DATA
+#endif
+
+#ifdef DUMP_SPECTRUM
+#define DUMP_DATA
+#endif
+
+#ifdef DUMP_DATA
+#include <QDir>
+#endif
+
+class FrequencySpectrum;
+QT_FORWARD_DECLARE_CLASS(QAudioInput)
+QT_FORWARD_DECLARE_CLASS(QAudioOutput)
+QT_FORWARD_DECLARE_CLASS(QFile)
+
+/**
+ * This class interfaces with the QtMultimedia audio classes, and also with
+ * the SpectrumAnalyser class. Its role is to manage the capture and playback
+ * of audio data, meanwhile performing real-time analysis of the audio level
+ * and frequency spectrum.
+ */
+class Engine : public QObject {
+ Q_OBJECT
+public:
+ Engine(QObject *parent = 0);
+ ~Engine();
+
+ const QList<QAudioDeviceInfo>& availableAudioInputDevices() const
+ { return m_availableAudioInputDevices; }
+
+ const QList<QAudioDeviceInfo>& availableAudioOutputDevices() const
+ { return m_availableAudioOutputDevices; }
+
+ QAudio::Mode mode() const { return m_mode; }
+ QAudio::State state() const { return m_state; }
+
+ /**
+ * \return Current audio format
+ * \note May be QAudioFormat() if engine is not initialized
+ */
+ const QAudioFormat& format() const { return m_format; }
+
+ /**
+ * Stop any ongoing recording or playback, and reset to ground state.
+ */
+ void reset();
+
+ /**
+ * Load data from WAV file
+ */
+ bool loadFile(const QString &fileName);
+
+ /**
+ * Generate tone
+ */
+ bool generateTone(const Tone &tone);
+
+ /**
+ * Generate tone
+ */
+ bool generateSweptTone(qreal amplitude);
+
+ /**
+ * Initialize for recording
+ */
+ bool initializeRecord();
+
+ /**
+ * Position of the audio input device.
+ * \return Position in bytes.
+ */
+ qint64 recordPosition() const { return m_recordPosition; }
+
+ /**
+ * RMS level of the most recently processed set of audio samples.
+ * \return Level in range (0.0, 1.0)
+ */
+ qreal rmsLevel() const { return m_rmsLevel; }
+
+ /**
+ * Peak level of the most recently processed set of audio samples.
+ * \return Level in range (0.0, 1.0)
+ */
+ qreal peakLevel() const { return m_peakLevel; }
+
+ /**
+ * Position of the audio output device.
+ * \return Position in bytes.
+ */
+ qint64 playPosition() const { return m_playPosition; }
+
+ /**
+ * Length of the internal engine buffer.
+ * \return Buffer length in bytes.
+ */
+ qint64 bufferLength() const;
+
+ /**
+ * Amount of data held in the buffer.
+ * \return Data length in bytes.
+ */
+ qint64 dataLength() const { return m_dataLength; }
+
+ /**
+ * Set window function applied to audio data before spectral analysis.
+ */
+ void setWindowFunction(WindowFunction type);
+
+public slots:
+ void startRecording();
+ void startPlayback();
+ void suspend();
+ void setAudioInputDevice(const QAudioDeviceInfo &device);
+ void setAudioOutputDevice(const QAudioDeviceInfo &device);
+
+signals:
+ void stateChanged(QAudio::Mode mode, QAudio::State state);
+
+ /**
+ * Informational message for non-modal display
+ */
+ void infoMessage(const QString &message, int durationMs);
+
+ /**
+ * Error message for modal display
+ */
+ void errorMessage(const QString &heading, const QString &detail);
+
+ /**
+ * Format of audio data has changed
+ */
+ void formatChanged(const QAudioFormat &format);
+
+ /**
+ * Length of buffer has changed.
+ * \param duration Duration in microseconds
+ */
+ void bufferLengthChanged(qint64 duration);
+
+ /**
+ * Amount of data in buffer has changed.
+ * \param Length of data in bytes
+ */
+ void dataLengthChanged(qint64 duration);
+
+ /**
+ * Position of the audio input device has changed.
+ * \param position Position in bytes
+ */
+ void recordPositionChanged(qint64 position);
+
+ /**
+ * Position of the audio output device has changed.
+ * \param position Position in bytes
+ */
+ void playPositionChanged(qint64 position);
+
+ /**
+ * Level changed
+ * \param rmsLevel RMS level in range 0.0 - 1.0
+ * \param peakLevel Peak level in range 0.0 - 1.0
+ * \param numSamples Number of audio samples analyzed
+ */
+ void levelChanged(qreal rmsLevel, qreal peakLevel, int numSamples);
+
+ /**
+ * Spectrum has changed.
+ * \param position Position of start of window in bytes
+ * \param length Length of window in bytes
+ * \param spectrum Resulting frequency spectrum
+ */
+ void spectrumChanged(qint64 position, qint64 length, const FrequencySpectrum &spectrum);
+
+ /**
+ * Buffer containing audio data has changed.
+ * \param position Position of start of buffer in bytes
+ * \param buffer Buffer
+ */
+ void bufferChanged(qint64 position, qint64 length, const QByteArray &buffer);
+
+private slots:
+ void audioNotify();
+ void audioStateChanged(QAudio::State state);
+ void audioDataReady();
+ void spectrumChanged(const FrequencySpectrum &spectrum);
+
+private:
+ void resetAudioDevices();
+ bool initialize();
+ bool selectFormat();
+ void stopRecording();
+ void stopPlayback();
+ void setState(QAudio::State state);
+ void setState(QAudio::Mode mode, QAudio::State state);
+ void setFormat(const QAudioFormat &format);
+ void setRecordPosition(qint64 position, bool forceEmit = false);
+ void setPlayPosition(qint64 position, bool forceEmit = false);
+ void calculateLevel(qint64 position, qint64 length);
+ void calculateSpectrum(qint64 position);
+ void setLevel(qreal rmsLevel, qreal peakLevel, int numSamples);
+
+#ifdef DUMP_DATA
+ void createOutputDir();
+ QString outputPath() const { return m_outputDir.path(); }
+#endif
+
+#ifdef DUMP_CAPTURED_AUDIO
+ void dumpData();
+#endif
+
+private:
+ QAudio::Mode m_mode;
+ QAudio::State m_state;
+
+ bool m_generateTone;
+ SweptTone m_tone;
+
+ WavFile* m_file;
+ // We need a second file handle via which to read data into m_buffer
+ // for analysis
+ WavFile* m_analysisFile;
+
+ QAudioFormat m_format;
+
+ const QList<QAudioDeviceInfo> m_availableAudioInputDevices;
+ QAudioDeviceInfo m_audioInputDevice;
+ QAudioInput* m_audioInput;
+ QIODevice* m_audioInputIODevice;
+ qint64 m_recordPosition;
+
+ const QList<QAudioDeviceInfo> m_availableAudioOutputDevices;
+ QAudioDeviceInfo m_audioOutputDevice;
+ QAudioOutput* m_audioOutput;
+ qint64 m_playPosition;
+ QBuffer m_audioOutputIODevice;
+
+ QByteArray m_buffer;
+ qint64 m_bufferPosition;
+ qint64 m_bufferLength;
+ qint64 m_dataLength;
+
+ int m_levelBufferLength;
+ qreal m_rmsLevel;
+ qreal m_peakLevel;
+
+ int m_spectrumBufferLength;
+ QByteArray m_spectrumBuffer;
+ SpectrumAnalyser m_spectrumAnalyser;
+ qint64 m_spectrumPosition;
+
+ int m_count;
+
+#ifdef DUMP_DATA
+ QDir m_outputDir;
+#endif
+
+};
+
+#endif // ENGINE_H
diff --git a/demos/spectrum/app/frequencyspectrum.cpp b/demos/spectrum/app/frequencyspectrum.cpp
new file mode 100644
index 000000000..b4a48432a
--- /dev/null
+++ b/demos/spectrum/app/frequencyspectrum.cpp
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "frequencyspectrum.h"
+
+FrequencySpectrum::FrequencySpectrum(int numPoints)
+ : m_elements(numPoints)
+{
+
+}
+
+void FrequencySpectrum::reset()
+{
+ iterator i = begin();
+ for ( ; i != end(); ++i)
+ *i = Element();
+}
+
+int FrequencySpectrum::count() const
+{
+ return m_elements.count();
+}
+
+FrequencySpectrum::Element& FrequencySpectrum::operator[](int index)
+{
+ return m_elements[index];
+}
+
+const FrequencySpectrum::Element& FrequencySpectrum::operator[](int index) const
+{
+ return m_elements[index];
+}
+
+FrequencySpectrum::iterator FrequencySpectrum::begin()
+{
+ return m_elements.begin();
+}
+
+FrequencySpectrum::iterator FrequencySpectrum::end()
+{
+ return m_elements.end();
+}
+
+FrequencySpectrum::const_iterator FrequencySpectrum::begin() const
+{
+ return m_elements.begin();
+}
+
+FrequencySpectrum::const_iterator FrequencySpectrum::end() const
+{
+ return m_elements.end();
+}
diff --git a/demos/spectrum/app/frequencyspectrum.h b/demos/spectrum/app/frequencyspectrum.h
new file mode 100644
index 000000000..8b2acf216
--- /dev/null
+++ b/demos/spectrum/app/frequencyspectrum.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef FREQUENCYSPECTRUM_H
+#define FREQUENCYSPECTRUM_H
+
+#include <QtCore/QVector>
+
+/**
+ * Represents a frequency spectrum as a series of elements, each of which
+ * consists of a frequency, an amplitude and a phase.
+ */
+class FrequencySpectrum {
+public:
+ FrequencySpectrum(int numPoints = 0);
+
+ struct Element {
+ Element()
+ : frequency(0.0), amplitude(0.0), phase(0.0), clipped(false)
+ { }
+
+ /**
+ * Frequency in Hertz
+ */
+ qreal frequency;
+
+ /**
+ * Amplitude in range [0.0, 1.0]
+ */
+ qreal amplitude;
+
+ /**
+ * Phase in range [0.0, 2*PI]
+ */
+ qreal phase;
+
+ /**
+ * Indicates whether value has been clipped during spectrum analysis
+ */
+ bool clipped;
+ };
+
+ typedef QVector<Element>::iterator iterator;
+ typedef QVector<Element>::const_iterator const_iterator;
+
+ void reset();
+
+ int count() const;
+ Element& operator[](int index);
+ const Element& operator[](int index) const;
+ iterator begin();
+ iterator end();
+ const_iterator begin() const;
+ const_iterator end() const;
+
+private:
+ QVector<Element> m_elements;
+
+};
+
+#endif // FREQUENCYSPECTRUM_H
diff --git a/demos/spectrum/app/images/record.png b/demos/spectrum/app/images/record.png
new file mode 100644
index 000000000..e7493aad9
--- /dev/null
+++ b/demos/spectrum/app/images/record.png
Binary files differ
diff --git a/demos/spectrum/app/images/settings.png b/demos/spectrum/app/images/settings.png
new file mode 100644
index 000000000..12179dc9a
--- /dev/null
+++ b/demos/spectrum/app/images/settings.png
Binary files differ
diff --git a/demos/spectrum/app/levelmeter.cpp b/demos/spectrum/app/levelmeter.cpp
new file mode 100644
index 000000000..35dd388c4
--- /dev/null
+++ b/demos/spectrum/app/levelmeter.cpp
@@ -0,0 +1,142 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "levelmeter.h"
+
+#include <math.h>
+
+#include <QPainter>
+#include <QTimer>
+#include <QDebug>
+
+
+// Constants
+const int RedrawInterval = 100; // ms
+const qreal PeakDecayRate = 0.001;
+const int PeakHoldLevelDuration = 2000; // ms
+
+
+LevelMeter::LevelMeter(QWidget *parent)
+ : QWidget(parent)
+ , m_rmsLevel(0.0)
+ , m_peakLevel(0.0)
+ , m_decayedPeakLevel(0.0)
+ , m_peakDecayRate(PeakDecayRate)
+ , m_peakHoldLevel(0.0)
+ , m_redrawTimer(new QTimer(this))
+ , m_rmsColor(Qt::red)
+ , m_peakColor(255, 200, 200, 255)
+{
+ setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
+ setMinimumWidth(30);
+
+ connect(m_redrawTimer, SIGNAL(timeout()), this, SLOT(redrawTimerExpired()));
+ m_redrawTimer->start(RedrawInterval);
+}
+
+LevelMeter::~LevelMeter()
+{
+
+}
+
+void LevelMeter::reset()
+{
+ m_rmsLevel = 0.0;
+ m_peakLevel = 0.0;
+ update();
+}
+
+void LevelMeter::levelChanged(qreal rmsLevel, qreal peakLevel, int numSamples)
+{
+ // Smooth the RMS signal
+ const qreal smooth = pow(qreal(0.9), static_cast<qreal>(numSamples) / 256); // TODO: remove this magic number
+ m_rmsLevel = (m_rmsLevel * smooth) + (rmsLevel * (1.0 - smooth));
+
+ if (peakLevel > m_decayedPeakLevel) {
+ m_peakLevel = peakLevel;
+ m_decayedPeakLevel = peakLevel;
+ m_peakLevelChanged.start();
+ }
+
+ if (peakLevel > m_peakHoldLevel) {
+ m_peakHoldLevel = peakLevel;
+ m_peakHoldLevelChanged.start();
+ }
+
+ update();
+}
+
+void LevelMeter::redrawTimerExpired()
+{
+ // Decay the peak signal
+ const int elapsedMs = m_peakLevelChanged.elapsed();
+ const qreal decayAmount = m_peakDecayRate * elapsedMs;
+ if (decayAmount < m_peakLevel)
+ m_decayedPeakLevel = m_peakLevel - decayAmount;
+ else
+ m_decayedPeakLevel = 0.0;
+
+ // Check whether to clear the peak hold level
+ if (m_peakHoldLevelChanged.elapsed() > PeakHoldLevelDuration)
+ m_peakHoldLevel = 0.0;
+
+ update();
+}
+
+void LevelMeter::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+ painter.fillRect(rect(), Qt::black);
+
+ QRect bar = rect();
+
+ bar.setTop(rect().top() + (1.0 - m_peakHoldLevel) * rect().height());
+ bar.setBottom(bar.top() + 5);
+ painter.fillRect(bar, m_rmsColor);
+ bar.setBottom(rect().bottom());
+
+ bar.setTop(rect().top() + (1.0 - m_decayedPeakLevel) * rect().height());
+ painter.fillRect(bar, m_peakColor);
+
+ bar.setTop(rect().top() + (1.0 - m_rmsLevel) * rect().height());
+ painter.fillRect(bar, m_rmsColor);
+}
diff --git a/demos/spectrum/app/levelmeter.h b/demos/spectrum/app/levelmeter.h
new file mode 100644
index 000000000..79aa124e6
--- /dev/null
+++ b/demos/spectrum/app/levelmeter.h
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef LEVELMETER_H
+#define LEVELMETER_H
+
+#include <QTime>
+#include <QWidget>
+
+/**
+ * Widget which displays a vertical audio level meter, indicating the
+ * RMS and peak levels of the window of audio samples most recently analyzed
+ * by the Engine.
+ */
+class LevelMeter : public QWidget {
+ Q_OBJECT
+public:
+ LevelMeter(QWidget *parent = 0);
+ ~LevelMeter();
+
+ void paintEvent(QPaintEvent *event);
+
+public slots:
+ void reset();
+ void levelChanged(qreal rmsLevel, qreal peakLevel, int numSamples);
+
+private slots:
+ void redrawTimerExpired();
+
+private:
+ /**
+ * Height of RMS level bar.
+ * Range 0.0 - 1.0.
+ */
+ qreal m_rmsLevel;
+
+ /**
+ * Most recent peak level.
+ * Range 0.0 - 1.0.
+ */
+ qreal m_peakLevel;
+
+ /**
+ * Height of peak level bar.
+ * This is calculated by decaying m_peakLevel depending on the
+ * elapsed time since m_peakLevelChanged, and the value of m_decayRate.
+ */
+ qreal m_decayedPeakLevel;
+
+ /**
+ * Time at which m_peakLevel was last changed.
+ */
+ QTime m_peakLevelChanged;
+
+ /**
+ * Rate at which peak level bar decays.
+ * Expressed in level units / millisecond.
+ */
+ qreal m_peakDecayRate;
+
+ /**
+ * High watermark of peak level.
+ * Range 0.0 - 1.0.
+ */
+ qreal m_peakHoldLevel;
+
+ /**
+ * Time at which m_peakHoldLevel was last changed.
+ */
+ QTime m_peakHoldLevelChanged;
+
+ QTimer *m_redrawTimer;
+
+ QColor m_rmsColor;
+ QColor m_peakColor;
+
+};
+
+#endif // LEVELMETER_H
diff --git a/demos/spectrum/app/main.cpp b/demos/spectrum/app/main.cpp
new file mode 100644
index 000000000..c4fa6a903
--- /dev/null
+++ b/demos/spectrum/app/main.cpp
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui/QApplication>
+#include "mainwidget.h"
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+ app.setApplicationName("QtMultimedia spectrum analyzer");
+ MainWidget w;
+
+#ifdef Q_OS_SYMBIAN
+ w.showMaximized();
+#else
+ w.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/spectrum/app/mainwidget.cpp b/demos/spectrum/app/mainwidget.cpp
new file mode 100644
index 000000000..2bb35c51f
--- /dev/null
+++ b/demos/spectrum/app/mainwidget.cpp
@@ -0,0 +1,453 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "engine.h"
+#include "levelmeter.h"
+#include "mainwidget.h"
+#include "waveform.h"
+#include "progressbar.h"
+#include "settingsdialog.h"
+#include "spectrograph.h"
+#include "tonegeneratordialog.h"
+#include "utils.h"
+
+#include <QLabel>
+#include <QPushButton>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QStyle>
+#include <QMenu>
+#include <QFileDialog>
+#include <QTimerEvent>
+#include <QMessageBox>
+
+const int NullTimerId = -1;
+
+MainWidget::MainWidget(QWidget *parent)
+ : QWidget(parent)
+ , m_mode(NoMode)
+ , m_engine(new Engine(this))
+#ifndef DISABLE_WAVEFORM
+ , m_waveform(new Waveform(this))
+#endif
+ , m_progressBar(new ProgressBar(this))
+ , m_spectrograph(new Spectrograph(this))
+ , m_levelMeter(new LevelMeter(this))
+ , m_modeButton(new QPushButton(this))
+ , m_recordButton(new QPushButton(this))
+ , m_pauseButton(new QPushButton(this))
+ , m_playButton(new QPushButton(this))
+ , m_settingsButton(new QPushButton(this))
+ , m_infoMessage(new QLabel(tr("Select a mode to begin"), this))
+ , m_infoMessageTimerId(NullTimerId)
+ , m_settingsDialog(new SettingsDialog(
+ m_engine->availableAudioInputDevices(),
+ m_engine->availableAudioOutputDevices(),
+ this))
+ , m_toneGeneratorDialog(new ToneGeneratorDialog(this))
+ , m_modeMenu(new QMenu(this))
+ , m_loadFileAction(0)
+ , m_generateToneAction(0)
+ , m_recordAction(0)
+{
+ m_spectrograph->setParams(SpectrumNumBands, SpectrumLowFreq, SpectrumHighFreq);
+
+ createUi();
+ connectUi();
+}
+
+MainWidget::~MainWidget()
+{
+
+}
+
+
+//-----------------------------------------------------------------------------
+// Public slots
+//-----------------------------------------------------------------------------
+
+void MainWidget::stateChanged(QAudio::Mode mode, QAudio::State state)
+{
+ Q_UNUSED(mode);
+
+ updateButtonStates();
+
+ if (QAudio::ActiveState != state && QAudio::SuspendedState != state) {
+ m_levelMeter->reset();
+ m_spectrograph->reset();
+ }
+}
+
+void MainWidget::formatChanged(const QAudioFormat &format)
+{
+ infoMessage(formatToString(format), NullMessageTimeout);
+
+#ifndef DISABLE_WAVEFORM
+ if (QAudioFormat() != format) {
+ m_waveform->initialize(format, WaveformTileLength,
+ WaveformWindowDuration);
+ }
+#endif
+}
+
+void MainWidget::spectrumChanged(qint64 position, qint64 length,
+ const FrequencySpectrum &spectrum)
+{
+ m_progressBar->windowChanged(position, length);
+ m_spectrograph->spectrumChanged(spectrum);
+}
+
+void MainWidget::infoMessage(const QString &message, int timeoutMs)
+{
+ m_infoMessage->setText(message);
+
+ if (NullTimerId != m_infoMessageTimerId) {
+ killTimer(m_infoMessageTimerId);
+ m_infoMessageTimerId = NullTimerId;
+ }
+
+ if (NullMessageTimeout != timeoutMs)
+ m_infoMessageTimerId = startTimer(timeoutMs);
+}
+
+void MainWidget::errorMessage(const QString &heading, const QString &detail)
+{
+#ifdef Q_OS_SYMBIAN
+ const QString message = heading + "\n" + detail;
+ QMessageBox::warning(this, "", message, QMessageBox::Close);
+#else
+ QMessageBox::warning(this, heading, detail, QMessageBox::Close);
+#endif
+}
+
+void MainWidget::timerEvent(QTimerEvent *event)
+{
+ Q_ASSERT(event->timerId() == m_infoMessageTimerId);
+ Q_UNUSED(event) // suppress warnings in release builds
+ killTimer(m_infoMessageTimerId);
+ m_infoMessageTimerId = NullTimerId;
+ m_infoMessage->setText("");
+}
+
+void MainWidget::audioPositionChanged(qint64 position)
+{
+#ifndef DISABLE_WAVEFORM
+ m_waveform->audioPositionChanged(position);
+#else
+ Q_UNUSED(position)
+#endif
+}
+
+void MainWidget::bufferLengthChanged(qint64 length)
+{
+ m_progressBar->bufferLengthChanged(length);
+}
+
+
+//-----------------------------------------------------------------------------
+// Private slots
+//-----------------------------------------------------------------------------
+
+void MainWidget::showFileDialog()
+{
+ const QString dir;
+ const QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open WAV file"), dir, "*.wav");
+ if (fileNames.count()) {
+ reset();
+ setMode(LoadFileMode);
+ m_engine->loadFile(fileNames.front());
+ updateButtonStates();
+ } else {
+ updateModeMenu();
+ }
+}
+
+void MainWidget::showSettingsDialog()
+{
+ m_settingsDialog->exec();
+ if (m_settingsDialog->result() == QDialog::Accepted) {
+ m_engine->setAudioInputDevice(m_settingsDialog->inputDevice());
+ m_engine->setAudioOutputDevice(m_settingsDialog->outputDevice());
+ m_engine->setWindowFunction(m_settingsDialog->windowFunction());
+ }
+}
+
+void MainWidget::showToneGeneratorDialog()
+{
+ m_toneGeneratorDialog->exec();
+ if (m_toneGeneratorDialog->result() == QDialog::Accepted) {
+ reset();
+ setMode(GenerateToneMode);
+ const qreal amplitude = m_toneGeneratorDialog->amplitude();
+ if (m_toneGeneratorDialog->isFrequencySweepEnabled()) {
+ m_engine->generateSweptTone(amplitude);
+ } else {
+ const qreal frequency = m_toneGeneratorDialog->frequency();
+ const Tone tone(frequency, amplitude);
+ m_engine->generateTone(tone);
+ updateButtonStates();
+ }
+ } else {
+ updateModeMenu();
+ }
+}
+
+void MainWidget::initializeRecord()
+{
+ reset();
+ setMode(RecordMode);
+ if (m_engine->initializeRecord())
+ updateButtonStates();
+}
+
+
+//-----------------------------------------------------------------------------
+// Private functions
+//-----------------------------------------------------------------------------
+
+void MainWidget::createUi()
+{
+ createMenus();
+
+ setWindowTitle(tr("Spectrum Analyser"));
+
+ QVBoxLayout *windowLayout = new QVBoxLayout(this);
+
+ m_infoMessage->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+ m_infoMessage->setAlignment(Qt::AlignHCenter);
+ windowLayout->addWidget(m_infoMessage);
+
+#ifdef SUPERIMPOSE_PROGRESS_ON_WAVEFORM
+ QScopedPointer<QHBoxLayout> waveformLayout(new QHBoxLayout);
+ waveformLayout->addWidget(m_progressBar);
+ m_progressBar->setMinimumHeight(m_waveform->minimumHeight());
+ waveformLayout->setMargin(0);
+ m_waveform->setLayout(waveformLayout.data());
+ waveformLayout.take();
+ windowLayout->addWidget(m_waveform);
+#else
+#ifndef DISABLE_WAVEFORM
+ windowLayout->addWidget(m_waveform);
+#endif // DISABLE_WAVEFORM
+ windowLayout->addWidget(m_progressBar);
+#endif // SUPERIMPOSE_PROGRESS_ON_WAVEFORM
+
+ // Spectrograph and level meter
+
+ QScopedPointer<QHBoxLayout> analysisLayout(new QHBoxLayout);
+ analysisLayout->addWidget(m_spectrograph);
+ analysisLayout->addWidget(m_levelMeter);
+ windowLayout->addLayout(analysisLayout.data());
+ analysisLayout.take();
+
+ // Button panel
+
+ const QSize buttonSize(30, 30);
+
+ m_modeButton->setText(tr("Mode"));
+
+ m_recordIcon = QIcon(":/images/record.png");
+ m_recordButton->setIcon(m_recordIcon);
+ m_recordButton->setEnabled(false);
+ m_recordButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ m_recordButton->setMinimumSize(buttonSize);
+
+ m_pauseIcon = style()->standardIcon(QStyle::SP_MediaPause);
+ m_pauseButton->setIcon(m_pauseIcon);
+ m_pauseButton->setEnabled(false);
+ m_pauseButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ m_pauseButton->setMinimumSize(buttonSize);
+
+ m_playIcon = style()->standardIcon(QStyle::SP_MediaPlay);
+ m_playButton->setIcon(m_playIcon);
+ m_playButton->setEnabled(false);
+ m_playButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ m_playButton->setMinimumSize(buttonSize);
+
+ m_settingsIcon = QIcon(":/images/settings.png");
+ m_settingsButton->setIcon(m_settingsIcon);
+ m_settingsButton->setEnabled(true);
+ m_settingsButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ m_settingsButton->setMinimumSize(buttonSize);
+
+ QScopedPointer<QHBoxLayout> buttonPanelLayout(new QHBoxLayout);
+ buttonPanelLayout->addStretch();
+ buttonPanelLayout->addWidget(m_modeButton);
+ buttonPanelLayout->addWidget(m_recordButton);
+ buttonPanelLayout->addWidget(m_pauseButton);
+ buttonPanelLayout->addWidget(m_playButton);
+ buttonPanelLayout->addWidget(m_settingsButton);
+
+ QWidget *buttonPanel = new QWidget(this);
+ buttonPanel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ buttonPanel->setLayout(buttonPanelLayout.data());
+ buttonPanelLayout.take(); // ownership transferred to buttonPanel
+
+ QScopedPointer<QHBoxLayout> bottomPaneLayout(new QHBoxLayout);
+ bottomPaneLayout->addWidget(buttonPanel);
+ windowLayout->addLayout(bottomPaneLayout.data());
+ bottomPaneLayout.take(); // ownership transferred to windowLayout
+
+ // Apply layout
+
+ setLayout(windowLayout);
+}
+
+void MainWidget::connectUi()
+{
+ CHECKED_CONNECT(m_recordButton, SIGNAL(clicked()),
+ m_engine, SLOT(startRecording()));
+
+ CHECKED_CONNECT(m_pauseButton, SIGNAL(clicked()),
+ m_engine, SLOT(suspend()));
+
+ CHECKED_CONNECT(m_playButton, SIGNAL(clicked()),
+ m_engine, SLOT(startPlayback()));
+
+ CHECKED_CONNECT(m_settingsButton, SIGNAL(clicked()),
+ this, SLOT(showSettingsDialog()));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(stateChanged(QAudio::Mode,QAudio::State)),
+ this, SLOT(stateChanged(QAudio::Mode,QAudio::State)));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(formatChanged(const QAudioFormat &)),
+ this, SLOT(formatChanged(const QAudioFormat &)));
+
+ m_progressBar->bufferLengthChanged(m_engine->bufferLength());
+
+ CHECKED_CONNECT(m_engine, SIGNAL(bufferLengthChanged(qint64)),
+ this, SLOT(bufferLengthChanged(qint64)));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(dataLengthChanged(qint64)),
+ this, SLOT(updateButtonStates()));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(recordPositionChanged(qint64)),
+ m_progressBar, SLOT(recordPositionChanged(qint64)));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(playPositionChanged(qint64)),
+ m_progressBar, SLOT(playPositionChanged(qint64)));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(recordPositionChanged(qint64)),
+ this, SLOT(audioPositionChanged(qint64)));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(playPositionChanged(qint64)),
+ this, SLOT(audioPositionChanged(qint64)));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(levelChanged(qreal, qreal, int)),
+ m_levelMeter, SLOT(levelChanged(qreal, qreal, int)));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(spectrumChanged(qint64, qint64, const FrequencySpectrum &)),
+ this, SLOT(spectrumChanged(qint64, qint64, const FrequencySpectrum &)));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(infoMessage(QString, int)),
+ this, SLOT(infoMessage(QString, int)));
+
+ CHECKED_CONNECT(m_engine, SIGNAL(errorMessage(QString, QString)),
+ this, SLOT(errorMessage(QString, QString)));
+
+ CHECKED_CONNECT(m_spectrograph, SIGNAL(infoMessage(QString, int)),
+ this, SLOT(infoMessage(QString, int)));
+
+#ifndef DISABLE_WAVEFORM
+ CHECKED_CONNECT(m_engine, SIGNAL(bufferChanged(qint64, qint64, const QByteArray &)),
+ m_waveform, SLOT(bufferChanged(qint64, qint64, const QByteArray &)));
+#endif
+}
+
+void MainWidget::createMenus()
+{
+ m_modeButton->setMenu(m_modeMenu);
+
+ m_generateToneAction = m_modeMenu->addAction(tr("Play generated tone"));
+ m_recordAction = m_modeMenu->addAction(tr("Record and play back"));
+ m_loadFileAction = m_modeMenu->addAction(tr("Play file"));
+
+ m_loadFileAction->setCheckable(true);
+ m_generateToneAction->setCheckable(true);
+ m_recordAction->setCheckable(true);
+
+ connect(m_loadFileAction, SIGNAL(triggered(bool)), this, SLOT(showFileDialog()));
+ connect(m_generateToneAction, SIGNAL(triggered(bool)), this, SLOT(showToneGeneratorDialog()));
+ connect(m_recordAction, SIGNAL(triggered(bool)), this, SLOT(initializeRecord()));
+}
+
+void MainWidget::updateButtonStates()
+{
+ const bool recordEnabled = ((QAudio::AudioOutput == m_engine->mode() ||
+ (QAudio::ActiveState != m_engine->state() &&
+ QAudio::IdleState != m_engine->state())) &&
+ RecordMode == m_mode);
+ m_recordButton->setEnabled(recordEnabled);
+
+ const bool pauseEnabled = (QAudio::ActiveState == m_engine->state() ||
+ QAudio::IdleState == m_engine->state());
+ m_pauseButton->setEnabled(pauseEnabled);
+
+ const bool playEnabled = (/*m_engine->dataLength() &&*/
+ (QAudio::AudioOutput != m_engine->mode() ||
+ (QAudio::ActiveState != m_engine->state() &&
+ QAudio::IdleState != m_engine->state())));
+ m_playButton->setEnabled(playEnabled);
+}
+
+void MainWidget::reset()
+{
+#ifndef DISABLE_WAVEFORM
+ m_waveform->reset();
+#endif
+ m_engine->reset();
+ m_levelMeter->reset();
+ m_spectrograph->reset();
+ m_progressBar->reset();
+}
+
+void MainWidget::setMode(Mode mode)
+{
+ m_mode = mode;
+ updateModeMenu();
+}
+
+void MainWidget::updateModeMenu()
+{
+ m_loadFileAction->setChecked(LoadFileMode == m_mode);
+ m_generateToneAction->setChecked(GenerateToneMode == m_mode);
+ m_recordAction->setChecked(RecordMode == m_mode);
+}
+
diff --git a/demos/spectrum/app/mainwidget.h b/demos/spectrum/app/mainwidget.h
new file mode 100644
index 000000000..14c62a2d3
--- /dev/null
+++ b/demos/spectrum/app/mainwidget.h
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef MAINWIDGET_H
+#define MAINWIDGET_H
+
+#include <QWidget>
+#include <QIcon>
+#include <QtMultimedia/qaudio.h>
+
+class Engine;
+class FrequencySpectrum;
+class ProgressBar;
+class Spectrograph;
+class Waveform;
+class LevelMeter;
+class SettingsDialog;
+class ToneGeneratorDialog;
+
+QT_FORWARD_DECLARE_CLASS(QAudioFormat)
+QT_FORWARD_DECLARE_CLASS(QLabel)
+QT_FORWARD_DECLARE_CLASS(QPushButton)
+QT_FORWARD_DECLARE_CLASS(QMenu)
+QT_FORWARD_DECLARE_CLASS(QAction)
+
+/**
+ * Main application widget, responsible for connecting the various UI
+ * elements to the Engine.
+ */
+class MainWidget : public QWidget {
+ Q_OBJECT
+public:
+ MainWidget(QWidget *parent = 0);
+ ~MainWidget();
+
+ // QObject
+ void timerEvent(QTimerEvent *event);
+
+public slots:
+ void stateChanged(QAudio::Mode mode, QAudio::State state);
+ void formatChanged(const QAudioFormat &format);
+ void spectrumChanged(qint64 position, qint64 length,
+ const FrequencySpectrum &spectrum);
+ void infoMessage(const QString &message, int timeoutMs);
+ void errorMessage(const QString &heading, const QString &detail);
+ void audioPositionChanged(qint64 position);
+ void bufferLengthChanged(qint64 length);
+
+private slots:
+ void showFileDialog();
+ void showSettingsDialog();
+ void showToneGeneratorDialog();
+ void initializeRecord();
+ void updateModeMenu();
+ void updateButtonStates();
+
+private:
+ void createUi();
+ void createMenus();
+ void connectUi();
+ void reset();
+
+ enum Mode {
+ NoMode,
+ RecordMode,
+ GenerateToneMode,
+ LoadFileMode
+ };
+
+ void setMode(Mode mode);
+
+private:
+ Mode m_mode;
+
+ Engine* m_engine;
+
+#ifndef DISABLE_WAVEFORM
+ Waveform* m_waveform;
+#endif
+ ProgressBar* m_progressBar;
+ Spectrograph* m_spectrograph;
+ LevelMeter* m_levelMeter;
+
+ QPushButton* m_modeButton;
+ QPushButton* m_recordButton;
+ QIcon m_recordIcon;
+ QPushButton* m_pauseButton;
+ QIcon m_pauseIcon;
+ QPushButton* m_playButton;
+ QIcon m_playIcon;
+ QPushButton* m_settingsButton;
+ QIcon m_settingsIcon;
+
+ QLabel* m_infoMessage;
+ int m_infoMessageTimerId;
+
+ SettingsDialog* m_settingsDialog;
+ ToneGeneratorDialog* m_toneGeneratorDialog;
+
+ QMenu* m_modeMenu;
+ QAction* m_loadFileAction;
+ QAction* m_generateToneAction;
+ QAction* m_recordAction;
+
+};
+
+#endif // MAINWIDGET_H
diff --git a/demos/spectrum/app/progressbar.cpp b/demos/spectrum/app/progressbar.cpp
new file mode 100644
index 000000000..46605101f
--- /dev/null
+++ b/demos/spectrum/app/progressbar.cpp
@@ -0,0 +1,140 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "progressbar.h"
+#include "spectrum.h"
+#include <QPainter>
+
+ProgressBar::ProgressBar(QWidget *parent)
+ : QWidget(parent)
+ , m_bufferLength(0)
+ , m_recordPosition(0)
+ , m_playPosition(0)
+ , m_windowPosition(0)
+ , m_windowLength(0)
+{
+ setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+ setMinimumHeight(30);
+#ifdef SUPERIMPOSE_PROGRESS_ON_WAVEFORM
+ setAutoFillBackground(false);
+#endif
+}
+
+ProgressBar::~ProgressBar()
+{
+
+}
+
+void ProgressBar::reset()
+{
+ m_bufferLength = 0;
+ m_recordPosition = 0;
+ m_playPosition = 0;
+ m_windowPosition = 0;
+ m_windowLength = 0;
+ update();
+}
+
+void ProgressBar::paintEvent(QPaintEvent * /*event*/)
+{
+ QPainter painter(this);
+
+ QColor bufferColor(0, 0, 255);
+ QColor windowColor(0, 255, 0);
+
+#ifdef SUPERIMPOSE_PROGRESS_ON_WAVEFORM
+ bufferColor.setAlphaF(0.5);
+ windowColor.setAlphaF(0.5);
+#else
+ painter.fillRect(rect(), Qt::black);
+#endif
+
+ if (m_bufferLength) {
+ QRect bar = rect();
+ const qreal play = qreal(m_playPosition) / m_bufferLength;
+ bar.setLeft(rect().left() + play * rect().width());
+ const qreal record = qreal(m_recordPosition) / m_bufferLength;
+ bar.setRight(rect().left() + record * rect().width());
+ painter.fillRect(bar, bufferColor);
+
+ QRect window = rect();
+ const qreal windowLeft = qreal(m_windowPosition) / m_bufferLength;
+ window.setLeft(rect().left() + windowLeft * rect().width());
+ const qreal windowWidth = qreal(m_windowLength) / m_bufferLength;
+ window.setWidth(windowWidth * rect().width());
+ painter.fillRect(window, windowColor);
+ }
+}
+
+void ProgressBar::bufferLengthChanged(qint64 bufferSize)
+{
+ m_bufferLength = bufferSize;
+ m_recordPosition = 0;
+ m_playPosition = 0;
+ m_windowPosition = 0;
+ m_windowLength = 0;
+ repaint();
+}
+
+void ProgressBar::recordPositionChanged(qint64 recordPosition)
+{
+ Q_ASSERT(recordPosition >= 0);
+ Q_ASSERT(recordPosition <= m_bufferLength);
+ m_recordPosition = recordPosition;
+ repaint();
+}
+
+void ProgressBar::playPositionChanged(qint64 playPosition)
+{
+ Q_ASSERT(playPosition >= 0);
+ Q_ASSERT(playPosition <= m_bufferLength);
+ m_playPosition = playPosition;
+ repaint();
+}
+
+void ProgressBar::windowChanged(qint64 position, qint64 length)
+{
+ Q_ASSERT(position >= 0);
+ Q_ASSERT(position <= m_bufferLength);
+ Q_ASSERT(position + length <= m_bufferLength);
+ m_windowPosition = position;
+ m_windowLength = length;
+ repaint();
+}
diff --git a/demos/spectrum/app/progressbar.h b/demos/spectrum/app/progressbar.h
new file mode 100644
index 000000000..b12f1c539
--- /dev/null
+++ b/demos/spectrum/app/progressbar.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PROGRESSBAR_H
+#define PROGRESSBAR_H
+
+#include <QWidget>
+
+/**
+ * Widget which displays a the current fill state of the Engine's internal
+ * buffer, and the current play/record position within that buffer.
+ */
+class ProgressBar : public QWidget {
+ Q_OBJECT
+public:
+ ProgressBar(QWidget *parent = 0);
+ ~ProgressBar();
+
+ void reset();
+ void paintEvent(QPaintEvent *event);
+
+public slots:
+ void bufferLengthChanged(qint64 length);
+ void recordPositionChanged(qint64 recordPosition);
+ void playPositionChanged(qint64 playPosition);
+ void windowChanged(qint64 position, qint64 length);
+
+private:
+ qint64 m_bufferLength;
+ qint64 m_recordPosition;
+ qint64 m_playPosition;
+ qint64 m_windowPosition;
+ qint64 m_windowLength;
+
+};
+
+#endif // PROGRESSBAR_H
diff --git a/demos/spectrum/app/settingsdialog.cpp b/demos/spectrum/app/settingsdialog.cpp
new file mode 100644
index 000000000..78c2db944
--- /dev/null
+++ b/demos/spectrum/app/settingsdialog.cpp
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "settingsdialog.h"
+#include <QComboBox>
+#include <QDialogButtonBox>
+#include <QLabel>
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <QCheckBox>
+#include <QSlider>
+#include <QSpinBox>
+
+SettingsDialog::SettingsDialog(
+ const QList<QAudioDeviceInfo> &availableInputDevices,
+ const QList<QAudioDeviceInfo> &availableOutputDevices,
+ QWidget *parent)
+ : QDialog(parent)
+ , m_windowFunction(DefaultWindowFunction)
+ , m_inputDeviceComboBox(new QComboBox(this))
+ , m_outputDeviceComboBox(new QComboBox(this))
+ , m_windowFunctionComboBox(new QComboBox(this))
+{
+ QVBoxLayout *dialogLayout = new QVBoxLayout(this);
+
+ // Populate combo boxes
+
+ QAudioDeviceInfo device;
+ foreach (device, availableInputDevices)
+ m_inputDeviceComboBox->addItem(device.deviceName(),
+ QVariant::fromValue(device));
+ foreach (device, availableOutputDevices)
+ m_outputDeviceComboBox->addItem(device.deviceName(),
+ QVariant::fromValue(device));
+
+ m_windowFunctionComboBox->addItem(tr("None"), QVariant::fromValue(int(NoWindow)));
+ m_windowFunctionComboBox->addItem("Hann", QVariant::fromValue(int(HannWindow)));
+ m_windowFunctionComboBox->setCurrentIndex(m_windowFunction);
+
+ // Initialize default devices
+ if (!availableInputDevices.empty())
+ m_inputDevice = availableInputDevices.front();
+ if (!availableOutputDevices.empty())
+ m_outputDevice = availableOutputDevices.front();
+
+ // Add widgets to layout
+
+ QScopedPointer<QHBoxLayout> inputDeviceLayout(new QHBoxLayout);
+ QLabel *inputDeviceLabel = new QLabel(tr("Input device"), this);
+ inputDeviceLayout->addWidget(inputDeviceLabel);
+ inputDeviceLayout->addWidget(m_inputDeviceComboBox);
+ dialogLayout->addLayout(inputDeviceLayout.data());
+ inputDeviceLayout.take(); // ownership transferred to dialogLayout
+
+ QScopedPointer<QHBoxLayout> outputDeviceLayout(new QHBoxLayout);
+ QLabel *outputDeviceLabel = new QLabel(tr("Output device"), this);
+ outputDeviceLayout->addWidget(outputDeviceLabel);
+ outputDeviceLayout->addWidget(m_outputDeviceComboBox);
+ dialogLayout->addLayout(outputDeviceLayout.data());
+ outputDeviceLayout.take(); // ownership transferred to dialogLayout
+
+ QScopedPointer<QHBoxLayout> windowFunctionLayout(new QHBoxLayout);
+ QLabel *windowFunctionLabel = new QLabel(tr("Window function"), this);
+ windowFunctionLayout->addWidget(windowFunctionLabel);
+ windowFunctionLayout->addWidget(m_windowFunctionComboBox);
+ dialogLayout->addLayout(windowFunctionLayout.data());
+ windowFunctionLayout.take(); // ownership transferred to dialogLayout
+
+ // Connect
+ CHECKED_CONNECT(m_inputDeviceComboBox, SIGNAL(activated(int)),
+ this, SLOT(inputDeviceChanged(int)));
+ CHECKED_CONNECT(m_outputDeviceComboBox, SIGNAL(activated(int)),
+ this, SLOT(outputDeviceChanged(int)));
+ CHECKED_CONNECT(m_windowFunctionComboBox, SIGNAL(activated(int)),
+ this, SLOT(windowFunctionChanged(int)));
+
+ // Add standard buttons to layout
+ QDialogButtonBox *buttonBox = new QDialogButtonBox(this);
+ buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+ dialogLayout->addWidget(buttonBox);
+
+ // Connect standard buttons
+ CHECKED_CONNECT(buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()),
+ this, SLOT(accept()));
+ CHECKED_CONNECT(buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()),
+ this, SLOT(reject()));
+
+ setLayout(dialogLayout);
+}
+
+SettingsDialog::~SettingsDialog()
+{
+
+}
+
+void SettingsDialog::windowFunctionChanged(int index)
+{
+ m_windowFunction = static_cast<WindowFunction>(
+ m_windowFunctionComboBox->itemData(index).value<int>());
+}
+
+void SettingsDialog::inputDeviceChanged(int index)
+{
+ m_inputDevice = m_inputDeviceComboBox->itemData(index).value<QAudioDeviceInfo>();
+}
+
+void SettingsDialog::outputDeviceChanged(int index)
+{
+ m_outputDevice = m_outputDeviceComboBox->itemData(index).value<QAudioDeviceInfo>();
+}
+
diff --git a/demos/spectrum/app/settingsdialog.h b/demos/spectrum/app/settingsdialog.h
new file mode 100644
index 000000000..71d1796b1
--- /dev/null
+++ b/demos/spectrum/app/settingsdialog.h
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SETTINGSDIALOG_H
+#define SETTINGSDIALOG_H
+
+#include "spectrum.h"
+#include <QDialog>
+#include <QtMultimedia/QAudioDeviceInfo>
+
+QT_FORWARD_DECLARE_CLASS(QComboBox)
+QT_FORWARD_DECLARE_CLASS(QCheckBox)
+QT_FORWARD_DECLARE_CLASS(QSlider)
+QT_FORWARD_DECLARE_CLASS(QSpinBox)
+QT_FORWARD_DECLARE_CLASS(QGridLayout)
+
+/**
+ * Dialog used to control settings such as the audio input / output device
+ * and the windowing function.
+ */
+class SettingsDialog : public QDialog {
+ Q_OBJECT
+public:
+ SettingsDialog(const QList<QAudioDeviceInfo> &availableInputDevices,
+ const QList<QAudioDeviceInfo> &availableOutputDevices,
+ QWidget *parent = 0);
+ ~SettingsDialog();
+
+ WindowFunction windowFunction() const { return m_windowFunction; }
+ const QAudioDeviceInfo& inputDevice() const { return m_inputDevice; }
+ const QAudioDeviceInfo& outputDevice() const { return m_outputDevice; }
+
+private slots:
+ void windowFunctionChanged(int index);
+ void inputDeviceChanged(int index);
+ void outputDeviceChanged(int index);
+
+private:
+ WindowFunction m_windowFunction;
+ QAudioDeviceInfo m_inputDevice;
+ QAudioDeviceInfo m_outputDevice;
+
+ QComboBox* m_inputDeviceComboBox;
+ QComboBox* m_outputDeviceComboBox;
+
+ QComboBox* m_windowFunctionComboBox;
+
+};
+
+#endif // SETTINGSDIALOG_H
diff --git a/demos/spectrum/app/spectrograph.cpp b/demos/spectrum/app/spectrograph.cpp
new file mode 100644
index 000000000..fbde2480a
--- /dev/null
+++ b/demos/spectrum/app/spectrograph.cpp
@@ -0,0 +1,241 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "spectrograph.h"
+#include <QPainter>
+#include <QMouseEvent>
+#include <QDebug>
+#include <QTimerEvent>
+
+const int NullTimerId = -1;
+const int NullIndex = -1;
+const int BarSelectionInterval = 2000;
+
+Spectrograph::Spectrograph(QWidget *parent)
+ : QWidget(parent)
+ , m_barSelected(NullIndex)
+ , m_timerId(NullTimerId)
+ , m_lowFreq(0.0)
+ , m_highFreq(0.0)
+{
+ setMinimumHeight(100);
+}
+
+Spectrograph::~Spectrograph()
+{
+
+}
+
+void Spectrograph::setParams(int numBars, qreal lowFreq, qreal highFreq)
+{
+ Q_ASSERT(numBars > 0);
+ Q_ASSERT(highFreq > lowFreq);
+ m_bars.resize(numBars);
+ m_lowFreq = lowFreq;
+ m_highFreq = highFreq;
+ updateBars();
+}
+
+void Spectrograph::timerEvent(QTimerEvent *event)
+{
+ Q_ASSERT(event->timerId() == m_timerId);
+ Q_UNUSED(event) // suppress warnings in release builds
+ killTimer(m_timerId);
+ m_timerId = NullTimerId;
+ m_barSelected = NullIndex;
+ update();
+}
+
+void Spectrograph::paintEvent(QPaintEvent *event)
+{
+ Q_UNUSED(event)
+
+ QPainter painter(this);
+ painter.fillRect(rect(), Qt::black);
+
+ const int numBars = m_bars.count();
+
+ // Highlight region of selected bar
+ if (m_barSelected != NullIndex && numBars) {
+ QRect regionRect = rect();
+ regionRect.setLeft(m_barSelected * rect().width() / numBars);
+ regionRect.setWidth(rect().width() / numBars);
+ QColor regionColor(202, 202, 64);
+ painter.setBrush(Qt::DiagCrossPattern);
+ painter.fillRect(regionRect, regionColor);
+ painter.setBrush(Qt::NoBrush);
+ }
+
+ QColor barColor(51, 204, 102);
+ QColor clipColor(255, 255, 0);
+
+ // Draw the outline
+ const QColor gridColor = barColor.darker();
+ QPen gridPen(gridColor);
+ painter.setPen(gridPen);
+ painter.drawLine(rect().topLeft(), rect().topRight());
+ painter.drawLine(rect().topRight(), rect().bottomRight());
+ painter.drawLine(rect().bottomRight(), rect().bottomLeft());
+ painter.drawLine(rect().bottomLeft(), rect().topLeft());
+
+ QVector<qreal> dashes;
+ dashes << 2 << 2;
+ gridPen.setDashPattern(dashes);
+ painter.setPen(gridPen);
+
+ // Draw vertical lines between bars
+ if (numBars) {
+ const int numHorizontalSections = numBars;
+ QLine line(rect().topLeft(), rect().bottomLeft());
+ for (int i=1; i<numHorizontalSections; ++i) {
+ line.translate(rect().width()/numHorizontalSections, 0);
+ painter.drawLine(line);
+ }
+ }
+
+ // Draw horizontal lines
+ const int numVerticalSections = 10;
+ QLine line(rect().topLeft(), rect().topRight());
+ for (int i=1; i<numVerticalSections; ++i) {
+ line.translate(0, rect().height()/numVerticalSections);
+ painter.drawLine(line);
+ }
+
+ barColor = barColor.lighter();
+ barColor.setAlphaF(0.75);
+ clipColor.setAlphaF(0.75);
+
+ // Draw the bars
+ if (numBars) {
+ // Calculate width of bars and gaps
+ const int widgetWidth = rect().width();
+ const int barPlusGapWidth = widgetWidth / numBars;
+ const int barWidth = 0.8 * barPlusGapWidth;
+ const int gapWidth = barPlusGapWidth - barWidth;
+ const int paddingWidth = widgetWidth - numBars * (barWidth + gapWidth);
+ const int leftPaddingWidth = (paddingWidth + gapWidth) / 2;
+ const int barHeight = rect().height() - 2 * gapWidth;
+
+ for (int i=0; i<numBars; ++i) {
+ const qreal value = m_bars[i].value;
+ Q_ASSERT(value >= 0.0 && value <= 1.0);
+ QRect bar = rect();
+ bar.setLeft(rect().left() + leftPaddingWidth + (i * (gapWidth + barWidth)));
+ bar.setWidth(barWidth);
+ bar.setTop(rect().top() + gapWidth + (1.0 - value) * barHeight);
+ bar.setBottom(rect().bottom() - gapWidth);
+
+ QColor color = barColor;
+ if (m_bars[i].clipped)
+ color = clipColor;
+
+ painter.fillRect(bar, color);
+ }
+ }
+}
+
+void Spectrograph::mousePressEvent(QMouseEvent *event)
+{
+ const QPoint pos = event->pos();
+ const int index = m_bars.count() * (pos.x() - rect().left()) / rect().width();
+ selectBar(index);
+}
+
+void Spectrograph::reset()
+{
+ m_spectrum.reset();
+ spectrumChanged(m_spectrum);
+}
+
+void Spectrograph::spectrumChanged(const FrequencySpectrum &spectrum)
+{
+ m_spectrum = spectrum;
+ updateBars();
+}
+
+int Spectrograph::barIndex(qreal frequency) const
+{
+ Q_ASSERT(frequency >= m_lowFreq && frequency < m_highFreq);
+ const qreal bandWidth = (m_highFreq - m_lowFreq) / m_bars.count();
+ const int index = (frequency - m_lowFreq) / bandWidth;
+ if(index <0 || index >= m_bars.count())
+ Q_ASSERT(false);
+ return index;
+}
+
+QPair<qreal, qreal> Spectrograph::barRange(int index) const
+{
+ Q_ASSERT(index >= 0 && index < m_bars.count());
+ const qreal bandWidth = (m_highFreq - m_lowFreq) / m_bars.count();
+ return QPair<qreal, qreal>(index * bandWidth, (index+1) * bandWidth);
+}
+
+void Spectrograph::updateBars()
+{
+ m_bars.fill(Bar());
+ FrequencySpectrum::const_iterator i = m_spectrum.begin();
+ const FrequencySpectrum::const_iterator end = m_spectrum.end();
+ for ( ; i != end; ++i) {
+ const FrequencySpectrum::Element e = *i;
+ if (e.frequency >= m_lowFreq && e.frequency < m_highFreq) {
+ Bar &bar = m_bars[barIndex(e.frequency)];
+ bar.value = qMax(bar.value, e.amplitude);
+ bar.clipped |= e.clipped;
+ }
+ }
+ update();
+}
+
+void Spectrograph::selectBar(int index) {
+ const QPair<qreal, qreal> frequencyRange = barRange(index);
+ const QString message = QString("%1 - %2 Hz")
+ .arg(frequencyRange.first)
+ .arg(frequencyRange.second);
+ emit infoMessage(message, BarSelectionInterval);
+
+ if (NullTimerId != m_timerId)
+ killTimer(m_timerId);
+ m_timerId = startTimer(BarSelectionInterval);
+
+ m_barSelected = index;
+ update();
+}
+
+
diff --git a/demos/spectrum/app/spectrograph.h b/demos/spectrum/app/spectrograph.h
new file mode 100644
index 000000000..bfcefd84a
--- /dev/null
+++ b/demos/spectrum/app/spectrograph.h
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SPECTROGRAPH_H
+#define SPECTROGRAPH_H
+
+#include <QWidget>
+#include "frequencyspectrum.h"
+
+QT_FORWARD_DECLARE_CLASS(QMouseEvent)
+
+/**
+ * Widget which displays a spectrograph showing the frequency spectrum
+ * of the window of audio samples most recently analyzed by the Engine.
+ */
+class Spectrograph : public QWidget {
+ Q_OBJECT
+public:
+ Spectrograph(QWidget *parent = 0);
+ ~Spectrograph();
+
+ void setParams(int numBars, qreal lowFreq, qreal highFreq);
+
+ // QObject
+ void timerEvent(QTimerEvent *event);
+
+ // QWidget
+ void paintEvent(QPaintEvent *event);
+ void mousePressEvent(QMouseEvent *event);
+
+signals:
+ void infoMessage(const QString &message, int intervalMs);
+
+public slots:
+ void reset();
+ void spectrumChanged(const FrequencySpectrum &spectrum);
+
+private:
+ int barIndex(qreal frequency) const;
+ QPair<qreal, qreal> barRange(int barIndex) const;
+ void updateBars();
+
+ void selectBar(int index);
+
+private:
+ struct Bar {
+ Bar() : value(0.0), clipped(false) { }
+ qreal value;
+ bool clipped;
+ };
+
+ QVector<Bar> m_bars;
+ int m_barSelected;
+ int m_timerId;
+ qreal m_lowFreq;
+ qreal m_highFreq;
+ FrequencySpectrum m_spectrum;
+
+
+};
+
+#endif // SPECTROGRAPH_H
diff --git a/demos/spectrum/app/spectrum.h b/demos/spectrum/app/spectrum.h
new file mode 100644
index 000000000..e51f04773
--- /dev/null
+++ b/demos/spectrum/app/spectrum.h
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SPECTRUM_H
+#define SPECTRUM_H
+
+#include <QtCore/qglobal.h>
+#include "utils.h"
+#include "fftreal_wrapper.h" // For FFTLengthPowerOfTwo
+
+//-----------------------------------------------------------------------------
+// Constants
+//-----------------------------------------------------------------------------
+
+// Number of audio samples used to calculate the frequency spectrum
+const int SpectrumLengthSamples = PowerOfTwo<FFTLengthPowerOfTwo>::Result;
+
+// Number of bands in the frequency spectrum
+const int SpectrumNumBands = 10;
+
+// Lower bound of first band in the spectrum
+const qreal SpectrumLowFreq = 0.0; // Hz
+
+// Upper band of last band in the spectrum
+const qreal SpectrumHighFreq = 1000.0; // Hz
+
+// Waveform window size in microseconds
+const qint64 WaveformWindowDuration = 500 * 1000;
+
+// Length of waveform tiles in bytes
+// Ideally, these would match the QAudio*::bufferSize(), but that isn't
+// available until some time after QAudio*::start() has been called, and we
+// need this value in order to initialize the waveform display.
+// We therefore just choose a sensible value.
+const int WaveformTileLength = 4096;
+
+// Fudge factor used to calculate the spectrum bar heights
+const qreal SpectrumAnalyserMultiplier = 0.15;
+
+// Disable message timeout
+const int NullMessageTimeout = -1;
+
+
+//-----------------------------------------------------------------------------
+// Types and data structures
+//-----------------------------------------------------------------------------
+
+enum WindowFunction {
+ NoWindow,
+ HannWindow
+};
+
+const WindowFunction DefaultWindowFunction = HannWindow;
+
+struct Tone {
+ Tone(qreal freq = 0.0, qreal amp = 0.0)
+ : frequency(freq), amplitude(amp)
+ { }
+
+ // Start and end frequencies for swept tone generation
+ qreal frequency;
+
+ // Amplitude in range [0.0, 1.0]
+ qreal amplitude;
+};
+
+struct SweptTone {
+ SweptTone(qreal start = 0.0, qreal end = 0.0, qreal amp = 0.0)
+ : startFreq(start), endFreq(end), amplitude(amp)
+ { Q_ASSERT(end >= start); }
+
+ SweptTone(const Tone &tone)
+ : startFreq(tone.frequency), endFreq(tone.frequency), amplitude(tone.amplitude)
+ { }
+
+ // Start and end frequencies for swept tone generation
+ qreal startFreq;
+ qreal endFreq;
+
+ // Amplitude in range [0.0, 1.0]
+ qreal amplitude;
+};
+
+
+//-----------------------------------------------------------------------------
+// Macros
+//-----------------------------------------------------------------------------
+
+// Macro which connects a signal to a slot, and which causes application to
+// abort if the connection fails. This is intended to catch programming errors
+// such as mis-typing a signal or slot name. It is necessary to write our own
+// macro to do this - the following idiom
+// Q_ASSERT(connect(source, signal, receiver, slot));
+// will not work because Q_ASSERT compiles to a no-op in release builds.
+
+#define CHECKED_CONNECT(source, signal, receiver, slot) \
+ if(!connect(source, signal, receiver, slot)) \
+ qt_assert_x(Q_FUNC_INFO, "CHECKED_CONNECT failed", __FILE__, __LINE__);
+
+// Handle some dependencies between macros defined in the .pro file
+
+#ifdef DISABLE_WAVEFORM
+#undef SUPERIMPOSE_PROGRESS_ON_WAVEFORM
+#endif
+
+#endif // SPECTRUM_H
+
diff --git a/demos/spectrum/app/spectrum.qrc b/demos/spectrum/app/spectrum.qrc
new file mode 100644
index 000000000..61004791b
--- /dev/null
+++ b/demos/spectrum/app/spectrum.qrc
@@ -0,0 +1,7 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>images/record.png</file>
+ <file>images/settings.png</file>
+</qresource>
+</RCC>
+
diff --git a/demos/spectrum/app/spectrumanalyser.cpp b/demos/spectrum/app/spectrumanalyser.cpp
new file mode 100644
index 000000000..8c3212d34
--- /dev/null
+++ b/demos/spectrum/app/spectrumanalyser.cpp
@@ -0,0 +1,281 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "spectrumanalyser.h"
+#include "utils.h"
+
+#include <QtCore/qmath.h>
+#include <QtCore/qmetatype.h>
+#include <QtMultimedia/QAudioFormat>
+#include <QThread>
+
+#include "fftreal_wrapper.h"
+
+SpectrumAnalyserThread::SpectrumAnalyserThread(QObject *parent)
+ : QObject(parent)
+#ifndef DISABLE_FFT
+ , m_fft(new FFTRealWrapper)
+#endif
+ , m_numSamples(SpectrumLengthSamples)
+ , m_windowFunction(DefaultWindowFunction)
+ , m_window(SpectrumLengthSamples, 0.0)
+ , m_input(SpectrumLengthSamples, 0.0)
+ , m_output(SpectrumLengthSamples, 0.0)
+ , m_spectrum(SpectrumLengthSamples)
+#ifdef SPECTRUM_ANALYSER_SEPARATE_THREAD
+ , m_thread(new QThread(this))
+#endif
+{
+#ifdef SPECTRUM_ANALYSER_SEPARATE_THREAD
+ // moveToThread() cannot be called on a QObject with a parent
+ setParent(0);
+ moveToThread(m_thread);
+ m_thread->start();
+#endif
+ calculateWindow();
+}
+
+SpectrumAnalyserThread::~SpectrumAnalyserThread()
+{
+#ifndef DISABLE_FFT
+ delete m_fft;
+#endif
+}
+
+void SpectrumAnalyserThread::setWindowFunction(WindowFunction type)
+{
+ m_windowFunction = type;
+ calculateWindow();
+}
+
+void SpectrumAnalyserThread::calculateWindow()
+{
+ for (int i=0; i<m_numSamples; ++i) {
+ DataType x = 0.0;
+
+ switch (m_windowFunction) {
+ case NoWindow:
+ x = 1.0;
+ break;
+ case HannWindow:
+ x = 0.5 * (1 - qCos((2 * M_PI * i) / (m_numSamples - 1)));
+ break;
+ default:
+ Q_ASSERT(false);
+ }
+
+ m_window[i] = x;
+ }
+}
+
+void SpectrumAnalyserThread::calculateSpectrum(const QByteArray &buffer,
+ int inputFrequency,
+ int bytesPerSample)
+{
+#ifndef DISABLE_FFT
+ Q_ASSERT(buffer.size() == m_numSamples * bytesPerSample);
+
+ // Initialize data array
+ const char *ptr = buffer.constData();
+ for (int i=0; i<m_numSamples; ++i) {
+ const qint16 pcmSample = *reinterpret_cast<const qint16*>(ptr);
+ // Scale down to range [-1.0, 1.0]
+ const DataType realSample = pcmToReal(pcmSample);
+ const DataType windowedSample = realSample * m_window[i];
+ m_input[i] = windowedSample;
+ ptr += bytesPerSample;
+ }
+
+ // Calculate the FFT
+ m_fft->calculateFFT(m_output.data(), m_input.data());
+
+ // Analyze output to obtain amplitude and phase for each frequency
+ for (int i=2; i<=m_numSamples/2; ++i) {
+ // Calculate frequency of this complex sample
+ m_spectrum[i].frequency = qreal(i * inputFrequency) / (m_numSamples);
+
+ const qreal real = m_output[i];
+ qreal imag = 0.0;
+ if (i>0 && i<m_numSamples/2)
+ imag = m_output[m_numSamples/2 + i];
+
+ const qreal magnitude = sqrt(real*real + imag*imag);
+ qreal amplitude = SpectrumAnalyserMultiplier * log(magnitude);
+
+ // Bound amplitude to [0.0, 1.0]
+ m_spectrum[i].clipped = (amplitude > 1.0);
+ amplitude = qMax(qreal(0.0), amplitude);
+ amplitude = qMin(qreal(1.0), amplitude);
+ m_spectrum[i].amplitude = amplitude;
+ }
+#endif
+
+ emit calculationComplete(m_spectrum);
+}
+
+
+//=============================================================================
+// SpectrumAnalyser
+//=============================================================================
+
+SpectrumAnalyser::SpectrumAnalyser(QObject *parent)
+ : QObject(parent)
+ , m_thread(new SpectrumAnalyserThread(this))
+ , m_state(Idle)
+#ifdef DUMP_SPECTRUMANALYSER
+ , m_count(0)
+#endif
+{
+ CHECKED_CONNECT(m_thread, SIGNAL(calculationComplete(FrequencySpectrum)),
+ this, SLOT(calculationComplete(FrequencySpectrum)));
+}
+
+SpectrumAnalyser::~SpectrumAnalyser()
+{
+
+}
+
+#ifdef DUMP_SPECTRUMANALYSER
+void SpectrumAnalyser::setOutputPath(const QString &outputDir)
+{
+ m_outputDir.setPath(outputDir);
+ m_textFile.setFileName(m_outputDir.filePath("spectrum.txt"));
+ m_textFile.open(QIODevice::WriteOnly | QIODevice::Text);
+ m_textStream.setDevice(&m_textFile);
+}
+#endif
+
+//-----------------------------------------------------------------------------
+// Public functions
+//-----------------------------------------------------------------------------
+
+void SpectrumAnalyser::setWindowFunction(WindowFunction type)
+{
+ const bool b = QMetaObject::invokeMethod(m_thread, "setWindowFunction",
+ Qt::AutoConnection,
+ Q_ARG(WindowFunction, type));
+ Q_ASSERT(b);
+ Q_UNUSED(b) // suppress warnings in release builds
+}
+
+void SpectrumAnalyser::calculate(const QByteArray &buffer,
+ const QAudioFormat &format)
+{
+ // QThread::currentThread is marked 'for internal use only', but
+ // we're only using it for debug output here, so it's probably OK :)
+ SPECTRUMANALYSER_DEBUG << "SpectrumAnalyser::calculate"
+ << QThread::currentThread()
+ << "state" << m_state;
+
+ if (isReady()) {
+ Q_ASSERT(isPCMS16LE(format));
+
+ const int bytesPerSample = format.sampleSize() * format.channels() / 8;
+
+#ifdef DUMP_SPECTRUMANALYSER
+ m_count++;
+ const QString pcmFileName = m_outputDir.filePath(QString("spectrum_%1.pcm").arg(m_count, 4, 10, QChar('0')));
+ QFile pcmFile(pcmFileName);
+ pcmFile.open(QIODevice::WriteOnly);
+ const int bufferLength = m_numSamples * bytesPerSample;
+ pcmFile.write(buffer, bufferLength);
+
+ m_textStream << "TimeDomain " << m_count << "\n";
+ const qint16* input = reinterpret_cast<const qint16*>(buffer);
+ for (int i=0; i<m_numSamples; ++i) {
+ m_textStream << i << "\t" << *input << "\n";
+ input += format.channels();
+ }
+#endif
+
+ m_state = Busy;
+
+ // Invoke SpectrumAnalyserThread::calculateSpectrum using QMetaObject. If
+ // m_thread is in a different thread from the current thread, the
+ // calculation will be done in the child thread.
+ // Once the calculation is finished, a calculationChanged signal will be
+ // emitted by m_thread.
+ const bool b = QMetaObject::invokeMethod(m_thread, "calculateSpectrum",
+ Qt::AutoConnection,
+ Q_ARG(QByteArray, buffer),
+ Q_ARG(int, format.frequency()),
+ Q_ARG(int, bytesPerSample));
+ Q_ASSERT(b);
+ Q_UNUSED(b) // suppress warnings in release builds
+
+#ifdef DUMP_SPECTRUMANALYSER
+ m_textStream << "FrequencySpectrum " << m_count << "\n";
+ FrequencySpectrum::const_iterator x = m_spectrum.begin();
+ for (int i=0; i<m_numSamples; ++i, ++x)
+ m_textStream << i << "\t"
+ << x->frequency << "\t"
+ << x->amplitude<< "\t"
+ << x->phase << "\n";
+#endif
+ }
+}
+
+bool SpectrumAnalyser::isReady() const
+{
+ return (Idle == m_state);
+}
+
+void SpectrumAnalyser::cancelCalculation()
+{
+ if (Busy == m_state)
+ m_state = Cancelled;
+}
+
+
+//-----------------------------------------------------------------------------
+// Private slots
+//-----------------------------------------------------------------------------
+
+void SpectrumAnalyser::calculationComplete(const FrequencySpectrum &spectrum)
+{
+ Q_ASSERT(Idle != m_state);
+ if (Busy == m_state)
+ emit spectrumChanged(spectrum);
+ m_state = Idle;
+}
+
+
+
+
diff --git a/demos/spectrum/app/spectrumanalyser.h b/demos/spectrum/app/spectrumanalyser.h
new file mode 100644
index 000000000..663c21339
--- /dev/null
+++ b/demos/spectrum/app/spectrumanalyser.h
@@ -0,0 +1,194 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SPECTRUMANALYSER_H
+#define SPECTRUMANALYSER_H
+
+#include <QByteArray>
+#include <QObject>
+#include <QVector>
+
+#ifdef DUMP_SPECTRUMANALYSER
+#include <QDir>
+#include <QFile>
+#include <QTextStream>
+#endif
+
+#include "frequencyspectrum.h"
+#include "spectrum.h"
+
+#ifndef DISABLE_FFT
+#include "FFTRealFixLenParam.h"
+#endif
+
+QT_FORWARD_DECLARE_CLASS(QAudioFormat)
+QT_FORWARD_DECLARE_CLASS(QThread)
+
+class FFTRealWrapper;
+
+class SpectrumAnalyserThreadPrivate;
+
+/**
+ * Implementation of the spectrum analysis which can be run in a
+ * separate thread.
+ */
+class SpectrumAnalyserThread : public QObject
+{
+ Q_OBJECT
+public:
+ SpectrumAnalyserThread(QObject *parent);
+ ~SpectrumAnalyserThread();
+
+public slots:
+ void setWindowFunction(WindowFunction type);
+ void calculateSpectrum(const QByteArray &buffer,
+ int inputFrequency,
+ int bytesPerSample);
+
+signals:
+ void calculationComplete(const FrequencySpectrum &spectrum);
+
+private:
+ void calculateWindow();
+
+private:
+#ifndef DISABLE_FFT
+ FFTRealWrapper* m_fft;
+#endif
+
+ const int m_numSamples;
+
+ WindowFunction m_windowFunction;
+
+#ifdef DISABLE_FFT
+ typedef qreal DataType;
+#else
+ typedef FFTRealFixLenParam::DataType DataType;
+#endif
+ QVector<DataType> m_window;
+
+ QVector<DataType> m_input;
+ QVector<DataType> m_output;
+
+ FrequencySpectrum m_spectrum;
+
+#ifdef SPECTRUM_ANALYSER_SEPARATE_THREAD
+ QThread* m_thread;
+#endif
+};
+
+/**
+ * Class which performs frequency spectrum analysis on a window of
+ * audio samples, provided to it by the Engine.
+ */
+class SpectrumAnalyser : public QObject
+{
+ Q_OBJECT
+public:
+ SpectrumAnalyser(QObject *parent = 0);
+ ~SpectrumAnalyser();
+
+#ifdef DUMP_SPECTRUMANALYSER
+ void setOutputPath(const QString &outputPath);
+#endif
+
+public:
+ /*
+ * Set the windowing function which is applied before calculating the FFT
+ */
+ void setWindowFunction(WindowFunction type);
+
+ /*
+ * Calculate a frequency spectrum
+ *
+ * \param buffer Audio data
+ * \param format Format of audio data
+ *
+ * Frequency spectrum is calculated asynchronously. The result is returned
+ * via the spectrumChanged signal.
+ *
+ * An ongoing calculation can be cancelled by calling cancelCalculation().
+ *
+ */
+ void calculate(const QByteArray &buffer, const QAudioFormat &format);
+
+ /*
+ * Check whether the object is ready to perform another calculation
+ */
+ bool isReady() const;
+
+ /*
+ * Cancel an ongoing calculation
+ *
+ * Note that cancelling is asynchronous.
+ */
+ void cancelCalculation();
+
+signals:
+ void spectrumChanged(const FrequencySpectrum &spectrum);
+
+private slots:
+ void calculationComplete(const FrequencySpectrum &spectrum);
+
+private:
+ void calculateWindow();
+
+private:
+
+ SpectrumAnalyserThread* m_thread;
+
+ enum State {
+ Idle,
+ Busy,
+ Cancelled
+ };
+
+ State m_state;
+
+#ifdef DUMP_SPECTRUMANALYSER
+ QDir m_outputDir;
+ int m_count;
+ QFile m_textFile;
+ QTextStream m_textStream;
+#endif
+};
+
+#endif // SPECTRUMANALYSER_H
+
diff --git a/demos/spectrum/app/tonegenerator.cpp b/demos/spectrum/app/tonegenerator.cpp
new file mode 100644
index 000000000..f3cad99d9
--- /dev/null
+++ b/demos/spectrum/app/tonegenerator.cpp
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "spectrum.h"
+#include "utils.h"
+#include <QByteArray>
+#include <QtMultimedia/QAudioFormat>
+#include <QtCore/qmath.h>
+#include <QtCore/qendian.h>
+
+void generateTone(const SweptTone &tone, const QAudioFormat &format, QByteArray &buffer)
+{
+ Q_ASSERT(isPCMS16LE(format));
+
+ const int channelBytes = format.sampleSize() / 8;
+ const int sampleBytes = format.channels() * channelBytes;
+ int length = buffer.size();
+ const int numSamples = buffer.size() / sampleBytes;
+
+ Q_ASSERT(length % sampleBytes == 0);
+ Q_UNUSED(sampleBytes) // suppress warning in release builds
+
+ unsigned char *ptr = reinterpret_cast<unsigned char *>(buffer.data());
+
+ qreal phase = 0.0;
+
+ const qreal d = 2 * M_PI / format.frequency();
+
+ // We can't generate a zero-frequency sine wave
+ const qreal startFreq = tone.startFreq ? tone.startFreq : 1.0;
+
+ // Amount by which phase increases on each sample
+ qreal phaseStep = d * startFreq;
+
+ // Amount by which phaseStep increases on each sample
+ // If this is non-zero, the output is a frequency-swept tone
+ const qreal phaseStepStep = d * (tone.endFreq - startFreq) / numSamples;
+
+ while (length) {
+ const qreal x = tone.amplitude * qSin(phase);
+ const qint16 value = realToPcm(x);
+ for (int i=0; i<format.channels(); ++i) {
+ qToLittleEndian<qint16>(value, ptr);
+ ptr += channelBytes;
+ length -= channelBytes;
+ }
+
+ phase += phaseStep;
+ while (phase > 2 * M_PI)
+ phase -= 2 * M_PI;
+ phaseStep += phaseStepStep;
+ }
+}
+
diff --git a/demos/spectrum/app/tonegenerator.h b/demos/spectrum/app/tonegenerator.h
new file mode 100644
index 000000000..d2aadb24e
--- /dev/null
+++ b/demos/spectrum/app/tonegenerator.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TONEGENERATOR_H
+#define TONEGENERATOR_H
+
+#include <QtCore/qglobal.h>
+#include "spectrum.h"
+
+QT_FORWARD_DECLARE_CLASS(QAudioFormat)
+QT_FORWARD_DECLARE_CLASS(QByteArray)
+
+/**
+ * Generate a sine wave
+ */
+void generateTone(const SweptTone &tone, const QAudioFormat &format, QByteArray &buffer);
+
+#endif // TONEGENERATOR_H
+
diff --git a/demos/spectrum/app/tonegeneratordialog.cpp b/demos/spectrum/app/tonegeneratordialog.cpp
new file mode 100644
index 000000000..5e5cd6328
--- /dev/null
+++ b/demos/spectrum/app/tonegeneratordialog.cpp
@@ -0,0 +1,147 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "tonegeneratordialog.h"
+#include <QComboBox>
+#include <QDialogButtonBox>
+#include <QLabel>
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <QCheckBox>
+#include <QSlider>
+#include <QSpinBox>
+
+const int ToneGeneratorFreqMin = 1;
+const int ToneGeneratorFreqMax = 1000;
+const int ToneGeneratorFreqDefault = 440;
+const int ToneGeneratorAmplitudeDefault = 75;
+
+ToneGeneratorDialog::ToneGeneratorDialog(QWidget *parent)
+ : QDialog(parent)
+ , m_toneGeneratorSweepCheckBox(new QCheckBox(tr("Frequency sweep"), this))
+ , m_frequencySweepEnabled(true)
+ , m_toneGeneratorControl(new QWidget(this))
+ , m_toneGeneratorFrequencyControl(new QWidget(this))
+ , m_frequencySlider(new QSlider(Qt::Horizontal, this))
+ , m_frequencySpinBox(new QSpinBox(this))
+ , m_frequency(ToneGeneratorFreqDefault)
+ , m_amplitudeSlider(new QSlider(Qt::Horizontal, this))
+{
+ QVBoxLayout *dialogLayout = new QVBoxLayout(this);
+
+ m_toneGeneratorSweepCheckBox->setChecked(true);
+
+ // Configure tone generator controls
+ m_frequencySlider->setRange(ToneGeneratorFreqMin, ToneGeneratorFreqMax);
+ m_frequencySlider->setValue(ToneGeneratorFreqDefault);
+ m_frequencySpinBox->setRange(ToneGeneratorFreqMin, ToneGeneratorFreqMax);
+ m_frequencySpinBox->setValue(ToneGeneratorFreqDefault);
+ m_amplitudeSlider->setRange(0, 100);
+ m_amplitudeSlider->setValue(ToneGeneratorAmplitudeDefault);
+
+ // Add widgets to layout
+
+ QScopedPointer<QGridLayout> frequencyControlLayout(new QGridLayout);
+ QLabel *frequencyLabel = new QLabel(tr("Frequency (Hz)"), this);
+ frequencyControlLayout->addWidget(frequencyLabel, 0, 0, 2, 1);
+ frequencyControlLayout->addWidget(m_frequencySlider, 0, 1);
+ frequencyControlLayout->addWidget(m_frequencySpinBox, 1, 1);
+ m_toneGeneratorFrequencyControl->setLayout(frequencyControlLayout.data());
+ frequencyControlLayout.take(); // ownership transferred to m_toneGeneratorFrequencyControl
+ m_toneGeneratorFrequencyControl->setEnabled(false);
+
+ QScopedPointer<QGridLayout> toneGeneratorLayout(new QGridLayout);
+ QLabel *amplitudeLabel = new QLabel(tr("Amplitude"), this);
+ toneGeneratorLayout->addWidget(m_toneGeneratorSweepCheckBox, 0, 1);
+ toneGeneratorLayout->addWidget(m_toneGeneratorFrequencyControl, 1, 0, 1, 2);
+ toneGeneratorLayout->addWidget(amplitudeLabel, 2, 0);
+ toneGeneratorLayout->addWidget(m_amplitudeSlider, 2, 1);
+ m_toneGeneratorControl->setLayout(toneGeneratorLayout.data());
+ m_toneGeneratorControl->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+ dialogLayout->addWidget(m_toneGeneratorControl);
+ toneGeneratorLayout.take(); // ownership transferred
+
+ // Connect
+ CHECKED_CONNECT(m_toneGeneratorSweepCheckBox, SIGNAL(toggled(bool)),
+ this, SLOT(frequencySweepEnabled(bool)));
+ CHECKED_CONNECT(m_frequencySlider, SIGNAL(valueChanged(int)),
+ m_frequencySpinBox, SLOT(setValue(int)));
+ CHECKED_CONNECT(m_frequencySpinBox, SIGNAL(valueChanged(int)),
+ m_frequencySlider, SLOT(setValue(int)));
+
+ // Add standard buttons to layout
+ QDialogButtonBox *buttonBox = new QDialogButtonBox(this);
+ buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+ dialogLayout->addWidget(buttonBox);
+
+ // Connect standard buttons
+ CHECKED_CONNECT(buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()),
+ this, SLOT(accept()));
+ CHECKED_CONNECT(buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()),
+ this, SLOT(reject()));
+
+ setLayout(dialogLayout);
+}
+
+ToneGeneratorDialog::~ToneGeneratorDialog()
+{
+
+}
+
+bool ToneGeneratorDialog::isFrequencySweepEnabled() const
+{
+ return m_toneGeneratorSweepCheckBox->isChecked();
+}
+
+qreal ToneGeneratorDialog::frequency() const
+{
+ return qreal(m_frequencySlider->value());
+}
+
+qreal ToneGeneratorDialog::amplitude() const
+{
+ return qreal(m_amplitudeSlider->value()) / 100.0;
+}
+
+void ToneGeneratorDialog::frequencySweepEnabled(bool enabled)
+{
+ m_frequencySweepEnabled = enabled;
+ m_toneGeneratorFrequencyControl->setEnabled(!enabled);
+}
diff --git a/demos/spectrum/app/tonegeneratordialog.h b/demos/spectrum/app/tonegeneratordialog.h
new file mode 100644
index 000000000..788a0ea74
--- /dev/null
+++ b/demos/spectrum/app/tonegeneratordialog.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TONEGENERATORDIALOG_H
+#define TONEGENERATORDIALOG_H
+
+#include "spectrum.h"
+#include <QDialog>
+#include <QtMultimedia/QAudioDeviceInfo>
+
+QT_FORWARD_DECLARE_CLASS(QCheckBox)
+QT_FORWARD_DECLARE_CLASS(QSlider)
+QT_FORWARD_DECLARE_CLASS(QSpinBox)
+QT_FORWARD_DECLARE_CLASS(QGridLayout)
+
+/**
+ * Dialog which controls the parameters of the tone generator.
+ */
+class ToneGeneratorDialog : public QDialog {
+ Q_OBJECT
+public:
+ ToneGeneratorDialog(QWidget *parent = 0);
+ ~ToneGeneratorDialog();
+
+ bool isFrequencySweepEnabled() const;
+ qreal frequency() const;
+ qreal amplitude() const;
+
+private slots:
+ void frequencySweepEnabled(bool enabled);
+
+private:
+ QCheckBox* m_toneGeneratorSweepCheckBox;
+ bool m_frequencySweepEnabled;
+ QWidget* m_toneGeneratorControl;
+ QWidget* m_toneGeneratorFrequencyControl;
+ QSlider* m_frequencySlider;
+ QSpinBox* m_frequencySpinBox;
+ qreal m_frequency;
+ QSlider* m_amplitudeSlider;
+
+};
+
+#endif // TONEGENERATORDIALOG_H
diff --git a/demos/spectrum/app/utils.cpp b/demos/spectrum/app/utils.cpp
new file mode 100644
index 000000000..d922cb5f7
--- /dev/null
+++ b/demos/spectrum/app/utils.cpp
@@ -0,0 +1,139 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtMultimedia/QAudioFormat>
+#include "utils.h"
+
+qint64 audioDuration(const QAudioFormat &format, qint64 bytes)
+{
+ return (bytes * 1000000) /
+ (format.frequency() * format.channels() * (format.sampleSize() / 8));
+}
+
+qint64 audioLength(const QAudioFormat &format, qint64 microSeconds)
+{
+ qint64 result = (format.frequency() * format.channels() * (format.sampleSize() / 8))
+ * microSeconds / 1000000;
+ result -= result % (format.channelCount() * format.sampleSize());
+ return result;
+}
+
+qreal nyquistFrequency(const QAudioFormat &format)
+{
+ return format.frequency() / 2;
+}
+
+QString formatToString(const QAudioFormat &format)
+{
+ QString result;
+
+ if (QAudioFormat() != format) {
+ if (format.codec() == "audio/pcm") {
+ Q_ASSERT(format.sampleType() == QAudioFormat::SignedInt);
+
+ const QString formatEndian = (format.byteOrder() == QAudioFormat::LittleEndian)
+ ? QString("LE") : QString("BE");
+
+ QString formatType;
+ switch(format.sampleType()) {
+ case QAudioFormat::SignedInt:
+ formatType = "signed";
+ break;
+ case QAudioFormat::UnSignedInt:
+ formatType = "unsigned";
+ break;
+ case QAudioFormat::Float:
+ formatType = "float";
+ break;
+ case QAudioFormat::Unknown:
+ formatType = "unknown";
+ break;
+ }
+
+ QString formatChannels = QString("%1 channels").arg(format.channels());
+ switch (format.channels()) {
+ case 1:
+ formatChannels = "mono";
+ break;
+ case 2:
+ formatChannels = "stereo";
+ break;
+ }
+
+ result = QString("%1 Hz %2 bit %3 %4 %5")
+ .arg(format.frequency())
+ .arg(format.sampleSize())
+ .arg(formatType)
+ .arg(formatEndian)
+ .arg(formatChannels);
+ } else {
+ result = format.codec();
+ }
+ }
+
+ return result;
+}
+
+bool isPCM(const QAudioFormat &format)
+{
+ return (format.codec() == "audio/pcm");
+}
+
+
+bool isPCMS16LE(const QAudioFormat &format)
+{
+ return (isPCM(format) &&
+ format.sampleType() == QAudioFormat::SignedInt &&
+ format.sampleSize() == 16 &&
+ format.byteOrder() == QAudioFormat::LittleEndian);
+}
+
+const qint16 PCMS16MaxValue = 32767;
+const quint16 PCMS16MaxAmplitude = 32768; // because minimum is -32768
+
+qreal pcmToReal(qint16 pcm)
+{
+ return qreal(pcm) / PCMS16MaxAmplitude;
+}
+
+qint16 realToPcm(qreal real)
+{
+ return real * PCMS16MaxValue;
+}
diff --git a/demos/spectrum/app/utils.h b/demos/spectrum/app/utils.h
new file mode 100644
index 000000000..9c85c6102
--- /dev/null
+++ b/demos/spectrum/app/utils.h
@@ -0,0 +1,112 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef UTILS_H
+#define UTILS_H
+
+#include <QtCore/qglobal.h>
+#include <QDebug>
+
+QT_FORWARD_DECLARE_CLASS(QAudioFormat)
+
+//-----------------------------------------------------------------------------
+// Miscellaneous utility functions
+//-----------------------------------------------------------------------------
+
+qint64 audioDuration(const QAudioFormat &format, qint64 bytes);
+qint64 audioLength(const QAudioFormat &format, qint64 microSeconds);
+
+QString formatToString(const QAudioFormat &format);
+
+qreal nyquistFrequency(const QAudioFormat &format);
+
+// Scale PCM value to [-1.0, 1.0]
+qreal pcmToReal(qint16 pcm);
+
+// Scale real value in [-1.0, 1.0] to PCM
+qint16 realToPcm(qreal real);
+
+// Check whether the audio format is PCM
+bool isPCM(const QAudioFormat &format);
+
+// Check whether the audio format is signed, little-endian, 16-bit PCM
+bool isPCMS16LE(const QAudioFormat &format);
+
+// Compile-time calculation of powers of two
+
+template<int N> class PowerOfTwo
+{ public: static const int Result = PowerOfTwo<N-1>::Result * 2; };
+
+template<> class PowerOfTwo<0>
+{ public: static const int Result = 1; };
+
+
+//-----------------------------------------------------------------------------
+// Debug output
+//-----------------------------------------------------------------------------
+
+class NullDebug
+{
+public:
+ template <typename T>
+ NullDebug& operator<<(const T&) { return *this; }
+};
+
+inline NullDebug nullDebug() { return NullDebug(); }
+
+#ifdef LOG_ENGINE
+# define ENGINE_DEBUG qDebug()
+#else
+# define ENGINE_DEBUG nullDebug()
+#endif
+
+#ifdef LOG_SPECTRUMANALYSER
+# define SPECTRUMANALYSER_DEBUG qDebug()
+#else
+# define SPECTRUMANALYSER_DEBUG nullDebug()
+#endif
+
+#ifdef LOG_WAVEFORM
+# define WAVEFORM_DEBUG qDebug()
+#else
+# define WAVEFORM_DEBUG nullDebug()
+#endif
+
+#endif // UTILS_H
diff --git a/demos/spectrum/app/waveform.cpp b/demos/spectrum/app/waveform.cpp
new file mode 100644
index 000000000..b5248811a
--- /dev/null
+++ b/demos/spectrum/app/waveform.cpp
@@ -0,0 +1,436 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "waveform.h"
+#include "utils.h"
+#include <QPainter>
+#include <QResizeEvent>
+#include <QDebug>
+
+//#define PAINT_EVENT_TRACE
+#ifdef PAINT_EVENT_TRACE
+# define WAVEFORM_PAINT_DEBUG qDebug()
+#else
+# define WAVEFORM_PAINT_DEBUG nullDebug()
+#endif
+
+Waveform::Waveform(QWidget *parent)
+ : QWidget(parent)
+ , m_bufferPosition(0)
+ , m_bufferLength(0)
+ , m_audioPosition(0)
+ , m_active(false)
+ , m_tileLength(0)
+ , m_tileArrayStart(0)
+ , m_windowPosition(0)
+ , m_windowLength(0)
+{
+ setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+ setMinimumHeight(50);
+}
+
+Waveform::~Waveform()
+{
+ deletePixmaps();
+}
+
+void Waveform::paintEvent(QPaintEvent * /*event*/)
+{
+ QPainter painter(this);
+
+ painter.fillRect(rect(), Qt::black);
+
+ if (m_active) {
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent"
+ << "windowPosition" << m_windowPosition
+ << "windowLength" << m_windowLength;
+ qint64 pos = m_windowPosition;
+ const qint64 windowEnd = m_windowPosition + m_windowLength;
+ int destLeft = 0;
+ int destRight = 0;
+ while (pos < windowEnd) {
+ const TilePoint point = tilePoint(pos);
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "pos" << pos
+ << "tileIndex" << point.index
+ << "positionOffset" << point.positionOffset
+ << "pixelOffset" << point.pixelOffset;
+
+ if (point.index != NullIndex) {
+ const Tile &tile = m_tiles[point.index];
+ if (tile.painted) {
+ const qint64 sectionLength = qMin((m_tileLength - point.positionOffset),
+ (windowEnd - pos));
+ Q_ASSERT(sectionLength > 0);
+
+ const int sourceRight = tilePixelOffset(point.positionOffset + sectionLength);
+ destRight = windowPixelOffset(pos - m_windowPosition + sectionLength);
+
+ QRect destRect = rect();
+ destRect.setLeft(destLeft);
+ destRect.setRight(destRight);
+
+ QRect sourceRect(QPoint(), m_pixmapSize);
+ sourceRect.setLeft(point.pixelOffset);
+ sourceRect.setRight(sourceRight);
+
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "tileIndex" << point.index
+ << "source" << point.pixelOffset << sourceRight
+ << "dest" << destLeft << destRight;
+
+ painter.drawPixmap(destRect, *tile.pixmap, sourceRect);
+
+ destLeft = destRight;
+
+ if (point.index < m_tiles.count()) {
+ pos = tilePosition(point.index + 1);
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "pos ->" << pos;
+ } else {
+ // Reached end of tile array
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "reached end of tile array";
+ break;
+ }
+ } else {
+ // Passed last tile which is painted
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "tile" << point.index << "not painted";
+ break;
+ }
+ } else {
+ // pos is past end of tile array
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "pos" << pos << "past end of tile array";
+ break;
+ }
+ }
+
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "final pos" << pos << "final x" << destRight;
+ }
+}
+
+void Waveform::resizeEvent(QResizeEvent *event)
+{
+ if (event->size() != event->oldSize())
+ createPixmaps(event->size());
+}
+
+void Waveform::initialize(const QAudioFormat &format, qint64 audioBufferSize, qint64 windowDurationUs)
+{
+ WAVEFORM_DEBUG << "Waveform::initialize"
+ << "audioBufferSize" << audioBufferSize
+ << "windowDurationUs" << windowDurationUs;
+
+ reset();
+
+ m_format = format;
+
+ // Calculate tile size
+ m_tileLength = audioBufferSize;
+
+ // Calculate window size
+ m_windowLength = audioLength(m_format, windowDurationUs);
+
+ // Calculate number of tiles required
+ int nTiles;
+ if (m_tileLength > m_windowLength) {
+ nTiles = 2;
+ } else {
+ nTiles = m_windowLength / m_tileLength + 1;
+ if (m_windowLength % m_tileLength)
+ ++nTiles;
+ }
+
+ WAVEFORM_DEBUG << "Waveform::initialize"
+ << "tileLength" << m_tileLength
+ << "windowLength" << m_windowLength
+ << "nTiles" << nTiles;
+
+ m_pixmaps.fill(0, nTiles);
+ m_tiles.resize(nTiles);
+
+ createPixmaps(rect().size());
+
+ m_active = true;
+}
+
+void Waveform::reset()
+{
+ WAVEFORM_DEBUG << "Waveform::reset";
+
+ m_bufferPosition = 0;
+ m_buffer = QByteArray();
+ m_audioPosition = 0;
+ m_format = QAudioFormat();
+ m_active = false;
+ deletePixmaps();
+ m_tiles.clear();
+ m_tileLength = 0;
+ m_tileArrayStart = 0;
+ m_windowPosition = 0;
+ m_windowLength = 0;
+}
+
+void Waveform::bufferChanged(qint64 position, qint64 length, const QByteArray &buffer)
+{
+ WAVEFORM_DEBUG << "Waveform::bufferChanged"
+ << "audioPosition" << m_audioPosition
+ << "bufferPosition" << position
+ << "bufferLength" << length;
+ m_bufferPosition = position;
+ m_bufferLength = length;
+ m_buffer = buffer;
+ paintTiles();
+}
+
+void Waveform::audioPositionChanged(qint64 position)
+{
+ WAVEFORM_DEBUG << "Waveform::audioPositionChanged"
+ << "audioPosition" << position
+ << "bufferPosition" << m_bufferPosition
+ << "bufferLength" << m_bufferLength;
+
+ if (position >= m_bufferPosition) {
+ if (position + m_windowLength > m_bufferPosition + m_bufferLength)
+ position = qMax(qint64(0), m_bufferPosition + m_bufferLength - m_windowLength);
+ m_audioPosition = position;
+ setWindowPosition(position);
+ }
+}
+
+void Waveform::deletePixmaps()
+{
+ QPixmap *pixmap;
+ foreach (pixmap, m_pixmaps)
+ delete pixmap;
+ m_pixmaps.clear();
+}
+
+void Waveform::createPixmaps(const QSize &widgetSize)
+{
+ m_pixmapSize = widgetSize;
+ m_pixmapSize.setWidth(qreal(widgetSize.width()) * m_tileLength / m_windowLength);
+
+ WAVEFORM_DEBUG << "Waveform::createPixmaps"
+ << "widgetSize" << widgetSize
+ << "pixmapSize" << m_pixmapSize;
+
+ Q_ASSERT(m_tiles.count() == m_pixmaps.count());
+
+ // (Re)create pixmaps
+ for (int i=0; i<m_pixmaps.size(); ++i) {
+ delete m_pixmaps[i];
+ m_pixmaps[i] = 0;
+ m_pixmaps[i] = new QPixmap(m_pixmapSize);
+ }
+
+ // Update tile pixmap pointers, and mark for repainting
+ for (int i=0; i<m_tiles.count(); ++i) {
+ m_tiles[i].pixmap = m_pixmaps[i];
+ m_tiles[i].painted = false;
+ }
+}
+
+void Waveform::setWindowPosition(qint64 position)
+{
+ WAVEFORM_DEBUG << "Waveform::setWindowPosition"
+ << "old" << m_windowPosition << "new" << position
+ << "tileArrayStart" << m_tileArrayStart;
+
+ const qint64 oldPosition = m_windowPosition;
+ m_windowPosition = position;
+
+ if((m_windowPosition >= oldPosition) &&
+ (m_windowPosition - m_tileArrayStart < (m_tiles.count() * m_tileLength))) {
+ // Work out how many tiles need to be shuffled
+ const qint64 offset = m_windowPosition - m_tileArrayStart;
+ const int nTiles = offset / m_tileLength;
+ shuffleTiles(nTiles);
+ } else {
+ resetTiles(m_windowPosition);
+ }
+
+ if(!paintTiles() && m_windowPosition != oldPosition)
+ update();
+}
+
+qint64 Waveform::tilePosition(int index) const
+{
+ return m_tileArrayStart + index * m_tileLength;
+}
+
+Waveform::TilePoint Waveform::tilePoint(qint64 position) const
+{
+ TilePoint result;
+ if (position >= m_tileArrayStart) {
+ const qint64 tileArrayEnd = m_tileArrayStart + m_tiles.count() * m_tileLength;
+ if (position < tileArrayEnd) {
+ const qint64 offsetIntoTileArray = position - m_tileArrayStart;
+ result.index = offsetIntoTileArray / m_tileLength;
+ Q_ASSERT(result.index >= 0 && result.index <= m_tiles.count());
+ result.positionOffset = offsetIntoTileArray % m_tileLength;
+ result.pixelOffset = tilePixelOffset(result.positionOffset);
+ Q_ASSERT(result.pixelOffset >= 0 && result.pixelOffset <= m_pixmapSize.width());
+ }
+ }
+
+ return result;
+}
+
+int Waveform::tilePixelOffset(qint64 positionOffset) const
+{
+ Q_ASSERT(positionOffset >= 0 && positionOffset <= m_tileLength);
+ const int result = (qreal(positionOffset) / m_tileLength) * m_pixmapSize.width();
+ return result;
+}
+
+int Waveform::windowPixelOffset(qint64 positionOffset) const
+{
+ Q_ASSERT(positionOffset >= 0 && positionOffset <= m_windowLength);
+ const int result = (qreal(positionOffset) / m_windowLength) * rect().width();
+ return result;
+}
+
+bool Waveform::paintTiles()
+{
+ WAVEFORM_DEBUG << "Waveform::paintTiles";
+ bool updateRequired = false;
+
+ for (int i=0; i<m_tiles.count(); ++i) {
+ const Tile &tile = m_tiles[i];
+ if (!tile.painted) {
+ const qint64 tileStart = m_tileArrayStart + i * m_tileLength;
+ const qint64 tileEnd = tileStart + m_tileLength;
+ if (m_bufferPosition <= tileStart && m_bufferPosition + m_bufferLength >= tileEnd) {
+ paintTile(i);
+ updateRequired = true;
+ }
+ }
+ }
+
+ if (updateRequired)
+ update();
+
+ return updateRequired;
+}
+
+void Waveform::paintTile(int index)
+{
+ const qint64 tileStart = m_tileArrayStart + index * m_tileLength;
+
+ WAVEFORM_DEBUG << "Waveform::paintTile"
+ << "index" << index
+ << "bufferPosition" << m_bufferPosition
+ << "bufferLength" << m_bufferLength
+ << "start" << tileStart
+ << "end" << tileStart + m_tileLength;
+
+ Q_ASSERT(m_bufferPosition <= tileStart);
+ Q_ASSERT(m_bufferPosition + m_bufferLength >= tileStart + m_tileLength);
+
+ Tile &tile = m_tiles[index];
+ Q_ASSERT(!tile.painted);
+
+ const qint16* base = reinterpret_cast<const qint16*>(m_buffer.constData());
+ const qint16* buffer = base + ((tileStart - m_bufferPosition) / 2);
+ const int numSamples = m_tileLength / (2 * m_format.channels());
+
+ QPainter painter(tile.pixmap);
+
+ painter.fillRect(tile.pixmap->rect(), Qt::black);
+
+ QPen pen(Qt::white);
+ painter.setPen(pen);
+
+ // Calculate initial PCM value
+ qint16 previousPcmValue = 0;
+ if (buffer > base)
+ previousPcmValue = *(buffer - m_format.channels());
+
+ // Calculate initial point
+ const qreal previousRealValue = pcmToReal(previousPcmValue);
+ const int originY = ((previousRealValue + 1.0) / 2) * m_pixmapSize.height();
+ const QPoint origin(0, originY);
+
+ QLine line(origin, origin);
+
+ for (int i=0; i<numSamples; ++i) {
+ const qint16* ptr = buffer + i * m_format.channels();
+
+ const int offset = reinterpret_cast<const char*>(ptr) - m_buffer.constData();
+ Q_ASSERT(offset >= 0);
+ Q_ASSERT(offset < m_bufferLength);
+
+ const qint16 pcmValue = *ptr;
+ const qreal realValue = pcmToReal(pcmValue);
+
+ const int x = tilePixelOffset(i * 2 * m_format.channels());
+ const int y = ((realValue + 1.0) / 2) * m_pixmapSize.height();
+
+ line.setP2(QPoint(x, y));
+ painter.drawLine(line);
+ line.setP1(line.p2());
+ }
+
+ tile.painted = true;
+}
+
+void Waveform::shuffleTiles(int n)
+{
+ WAVEFORM_DEBUG << "Waveform::shuffleTiles" << "n" << n;
+
+ while (n--) {
+ Tile tile = m_tiles.first();
+ tile.painted = false;
+ m_tiles.erase(m_tiles.begin());
+ m_tiles += tile;
+ m_tileArrayStart += m_tileLength;
+ }
+
+ WAVEFORM_DEBUG << "Waveform::shuffleTiles" << "tileArrayStart" << m_tileArrayStart;
+}
+
+void Waveform::resetTiles(qint64 newStartPos)
+{
+ WAVEFORM_DEBUG << "Waveform::resetTiles" << "newStartPos" << newStartPos;
+
+ QVector<Tile>::iterator i = m_tiles.begin();
+ for ( ; i != m_tiles.end(); ++i)
+ i->painted = false;
+
+ m_tileArrayStart = newStartPos;
+}
+
diff --git a/demos/spectrum/app/waveform.h b/demos/spectrum/app/waveform.h
new file mode 100644
index 000000000..a3b706d7c
--- /dev/null
+++ b/demos/spectrum/app/waveform.h
@@ -0,0 +1,203 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef WAVEFORM_H
+#define WAVEFORM_H
+
+#include <QWidget>
+#include <QtMultimedia/QAudioFormat>
+#include <QPixmap>
+#include <QScopedPointer>
+
+QT_FORWARD_DECLARE_CLASS(QByteArray)
+
+/**
+ * Widget which displays a section of the audio waveform.
+ *
+ * The waveform is rendered on a set of QPixmaps which form a group of tiles
+ * whose extent covers the widget. As the audio position is updated, these
+ * tiles are scrolled from left to right; when the left-most tile scrolls
+ * outside the widget, it is moved to the right end of the tile array and
+ * painted with the next section of the waveform.
+ */
+class Waveform : public QWidget {
+ Q_OBJECT
+public:
+ Waveform(QWidget *parent = 0);
+ ~Waveform();
+
+ // QWidget
+ void paintEvent(QPaintEvent *event);
+ void resizeEvent(QResizeEvent *event);
+
+ void initialize(const QAudioFormat &format, qint64 audioBufferSize, qint64 windowDurationUs);
+ void reset();
+
+ void setAutoUpdatePosition(bool enabled);
+
+public slots:
+ void bufferChanged(qint64 position, qint64 length, const QByteArray &buffer);
+ void audioPositionChanged(qint64 position);
+
+private:
+ static const int NullIndex = -1;
+
+ void deletePixmaps();
+
+ /*
+ * (Re)create all pixmaps, repaint and update the display.
+ * Triggers an update();
+ */
+ void createPixmaps(const QSize &newSize);
+
+ /*
+ * Update window position.
+ * Triggers an update().
+ */
+ void setWindowPosition(qint64 position);
+
+ /*
+ * Base position of tile
+ */
+ qint64 tilePosition(int index) const;
+
+ /*
+ * Structure which identifies a point within a given
+ * tile.
+ */
+ struct TilePoint
+ {
+ TilePoint(int idx = 0, qint64 pos = 0, qint64 pix = 0)
+ : index(idx), positionOffset(pos), pixelOffset(pix)
+ { }
+
+ // Index of tile
+ int index;
+
+ // Number of bytes from start of tile
+ qint64 positionOffset;
+
+ // Number of pixels from left of corresponding pixmap
+ int pixelOffset;
+ };
+
+ /*
+ * Convert position in m_buffer into a tile index and an offset in pixels
+ * into the corresponding pixmap.
+ *
+ * \param position Offset into m_buffer, in bytes
+
+ * If position is outside the tile array, index is NullIndex and
+ * offset is zero.
+ */
+ TilePoint tilePoint(qint64 position) const;
+
+ /*
+ * Convert offset in bytes into a tile into an offset in pixels
+ * within that tile.
+ */
+ int tilePixelOffset(qint64 positionOffset) const;
+
+ /*
+ * Convert offset in bytes into the window into an offset in pixels
+ * within the widget rect().
+ */
+ int windowPixelOffset(qint64 positionOffset) const;
+
+ /*
+ * Paint all tiles which can be painted.
+ * \return true iff update() was called
+ */
+ bool paintTiles();
+
+ /*
+ * Paint the specified tile
+ *
+ * \pre Sufficient data is available to completely paint the tile, i.e.
+ * m_dataLength is greater than the upper bound of the tile.
+ */
+ void paintTile(int index);
+
+ /*
+ * Move the first n tiles to the end of the array, and mark them as not
+ * painted.
+ */
+ void shuffleTiles(int n);
+
+ /*
+ * Reset tile array
+ */
+ void resetTiles(qint64 newStartPos);
+
+private:
+ qint64 m_bufferPosition;
+ qint64 m_bufferLength;
+ QByteArray m_buffer;
+
+ qint64 m_audioPosition;
+ QAudioFormat m_format;
+
+ bool m_active;
+
+ QSize m_pixmapSize;
+ QVector<QPixmap*> m_pixmaps;
+
+ struct Tile {
+ // Pointer into parent m_pixmaps array
+ QPixmap* pixmap;
+
+ // Flag indicating whether this tile has been painted
+ bool painted;
+ };
+
+ QVector<Tile> m_tiles;
+
+ // Length of audio data in bytes depicted by each tile
+ qint64 m_tileLength;
+
+ // Position in bytes of the first tile, relative to m_buffer
+ qint64 m_tileArrayStart;
+
+ qint64 m_windowPosition;
+ qint64 m_windowLength;
+
+};
+
+#endif // WAVEFORM_H
diff --git a/demos/spectrum/app/wavfile.cpp b/demos/spectrum/app/wavfile.cpp
new file mode 100644
index 000000000..7c17ba91d
--- /dev/null
+++ b/demos/spectrum/app/wavfile.cpp
@@ -0,0 +1,151 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/qendian.h>
+#include <QVector>
+#include <QDebug>
+#include "utils.h"
+#include "wavfile.h"
+
+struct chunk
+{
+ char id[4];
+ quint32 size;
+};
+
+struct RIFFHeader
+{
+ chunk descriptor; // "RIFF"
+ char type[4]; // "WAVE"
+};
+
+struct WAVEHeader
+{
+ chunk descriptor;
+ quint16 audioFormat;
+ quint16 numChannels;
+ quint32 sampleRate;
+ quint32 byteRate;
+ quint16 blockAlign;
+ quint16 bitsPerSample;
+};
+
+struct DATAHeader
+{
+ chunk descriptor;
+};
+
+struct CombinedHeader
+{
+ RIFFHeader riff;
+ WAVEHeader wave;
+};
+
+WavFile::WavFile(QObject *parent)
+ : QFile(parent)
+ , m_headerLength(0)
+{
+
+}
+
+bool WavFile::open(const QString &fileName)
+{
+ close();
+ setFileName(fileName);
+ return QFile::open(QIODevice::ReadOnly) && readHeader();
+}
+
+const QAudioFormat &WavFile::fileFormat() const
+{
+ return m_fileFormat;
+}
+
+qint64 WavFile::headerLength() const
+{
+return m_headerLength;
+}
+
+bool WavFile::readHeader()
+{
+ seek(0);
+ CombinedHeader header;
+ bool result = read(reinterpret_cast<char *>(&header), sizeof(CombinedHeader)) == sizeof(CombinedHeader);
+ if (result) {
+ if ((memcmp(&header.riff.descriptor.id, "RIFF", 4) == 0
+ || memcmp(&header.riff.descriptor.id, "RIFX", 4) == 0)
+ && memcmp(&header.riff.type, "WAVE", 4) == 0
+ && memcmp(&header.wave.descriptor.id, "fmt ", 4) == 0
+ && (header.wave.audioFormat == 1 || header.wave.audioFormat == 0)) {
+
+ // Read off remaining header information
+ DATAHeader dataHeader;
+
+ if (qFromLittleEndian<quint32>(header.wave.descriptor.size) > sizeof(WAVEHeader)) {
+ // Extended data available
+ quint16 extraFormatBytes;
+ if (peek((char*)&extraFormatBytes, sizeof(quint16)) != sizeof(quint16))
+ return false;
+ const qint64 throwAwayBytes = sizeof(quint16) + qFromLittleEndian<quint16>(extraFormatBytes);
+ if (read(throwAwayBytes).size() != throwAwayBytes)
+ return false;
+ }
+
+ if (read((char*)&dataHeader, sizeof(DATAHeader)) != sizeof(DATAHeader))
+ return false;
+
+ // Establish format
+ if (memcmp(&header.riff.descriptor.id, "RIFF", 4) == 0)
+ m_fileFormat.setByteOrder(QAudioFormat::LittleEndian);
+ else
+ m_fileFormat.setByteOrder(QAudioFormat::BigEndian);
+
+ int bps = qFromLittleEndian<quint16>(header.wave.bitsPerSample);
+ m_fileFormat.setChannels(qFromLittleEndian<quint16>(header.wave.numChannels));
+ m_fileFormat.setCodec("audio/pcm");
+ m_fileFormat.setFrequency(qFromLittleEndian<quint32>(header.wave.sampleRate));
+ m_fileFormat.setSampleSize(qFromLittleEndian<quint16>(header.wave.bitsPerSample));
+ m_fileFormat.setSampleType(bps == 8 ? QAudioFormat::UnSignedInt : QAudioFormat::SignedInt);
+ } else {
+ result = false;
+ }
+ }
+ m_headerLength = pos();
+ return result;
+}
diff --git a/demos/spectrum/app/wavfile.h b/demos/spectrum/app/wavfile.h
new file mode 100644
index 000000000..b974c475d
--- /dev/null
+++ b/demos/spectrum/app/wavfile.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef WAVFILE_H
+#define WAVFILE_H
+
+#include <QtCore/qobject.h>
+#include <QtCore/qfile.h>
+#include <QtMultimedia/qaudioformat.h>
+
+class WavFile : public QFile
+{
+public:
+ WavFile(QObject *parent = 0);
+
+ bool open(const QString &fileName);
+ const QAudioFormat &fileFormat() const;
+ qint64 headerLength() const;
+
+private:
+ bool readHeader();
+
+private:
+ QAudioFormat m_fileFormat;
+ qint64 m_headerLength;
+
+};
+
+#endif
+
diff --git a/demos/spectrum/spectrum.pri b/demos/spectrum/spectrum.pri
new file mode 100644
index 000000000..75c011311
--- /dev/null
+++ b/demos/spectrum/spectrum.pri
@@ -0,0 +1,49 @@
+# The following macros allow certain features and debugging output
+# to be disabled / enabled at compile time.
+
+# Debug output from spectrum calculation
+DEFINES += LOG_SPECTRUMANALYSER
+
+# Debug output from waveform generation
+#DEFINES += LOG_WAVEFORM
+
+# Debug output from engine
+DEFINES += LOG_ENGINE
+
+# Dump input data to spectrum analyer, plus artefact data files
+#DEFINES += DUMP_SPECTRUMANALYSER
+
+# Dump captured audio data
+#DEFINES += DUMP_CAPTURED_AUDIO
+
+# Disable calculation of level
+#DEFINES += DISABLE_LEVEL
+
+# Disable calculation of frequency spectrum
+# If this macro is defined, the FFTReal DLL will not be built
+#DEFINES += DISABLE_FFT
+
+# Disables rendering of the waveform
+#DEFINES += DISABLE_WAVEFORM
+
+# If defined, superimpose the progress bar on the waveform
+DEFINES += SUPERIMPOSE_PROGRESS_ON_WAVEFORM
+
+# Perform spectrum analysis calculation in a separate thread
+DEFINES += SPECTRUM_ANALYSER_SEPARATE_THREAD
+
+# Suppress warnings about strncpy potentially being unsafe, emitted by MSVC
+win32: DEFINES += _CRT_SECURE_NO_WARNINGS
+
+win32 {
+ # spectrum_build_dir is defined with a leading slash so that it can
+ # be used in contexts such as
+ # ..$${spectrum_build_dir}
+ # without the result having a trailing slash where spectrum_build_dir
+ # is undefined.
+ build_pass {
+ CONFIG(release, release|debug): spectrum_build_dir = /release
+ CONFIG(debug, release|debug): spectrum_build_dir = /debug
+ }
+}
+
diff --git a/demos/spectrum/spectrum.pro b/demos/spectrum/spectrum.pro
new file mode 100644
index 000000000..9c68de1db
--- /dev/null
+++ b/demos/spectrum/spectrum.pro
@@ -0,0 +1,28 @@
+include(spectrum.pri)
+
+TEMPLATE = subdirs
+
+# Ensure that library is built before application
+CONFIG += ordered
+
+!contains(DEFINES, DISABLE_FFT) {
+ SUBDIRS += 3rdparty/fftreal
+}
+
+SUBDIRS += app
+
+TARGET = spectrum
+
+symbian {
+ # Create a 'make sis' rule which can be run from the top-level
+
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
+ # UID for the SIS file
+ TARGET.UID3 = 0xA000E402
+}
+
+sources.files = README.txt spectrum.pri spectrum.pro TODO.txt
+sources.path = $$[QT_INSTALL_DEMOS]/qtmultimedia/spectrum
+INSTALLS += sources
+
diff --git a/examples/examples.pro b/examples/examples.pro
new file mode 100644
index 000000000..a05c504b5
--- /dev/null
+++ b/examples/examples.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS += multimedia
diff --git a/examples/multimedia/README b/examples/multimedia/README
new file mode 100644
index 000000000..aa78e369f
--- /dev/null
+++ b/examples/multimedia/README
@@ -0,0 +1,34 @@
+
+The example launcher provided with Qt can be used to explore each of the
+examples in this directory.
+
+Documentation for these examples can be found via the Tutorial and Examples
+link in the main Qt documentation.
+
+
+Finding the Qt Examples and Demos launcher
+==========================================
+
+On Windows:
+
+The launcher can be accessed via the Windows Start menu. Select the menu
+entry entitled "Qt Examples and Demos" entry in the submenu containing
+the Qt tools.
+
+On Mac OS X:
+
+For the binary distribution, the qtdemo executable is installed in the
+/Developer/Applications/Qt directory. For the source distribution, it is
+installed alongside the other Qt tools on the path specified when Qt is
+configured.
+
+On Unix/Linux:
+
+The qtdemo executable is installed alongside the other Qt tools on the path
+specified when Qt is configured.
+
+On all platforms:
+
+The source code for the launcher can be found in the demos/qtdemo directory
+in the Qt package. This example is built at the same time as the Qt libraries,
+tools, examples, and demonstrations.
diff --git a/examples/multimedia/audiodevices/audiodevices.cpp b/examples/multimedia/audiodevices/audiodevices.cpp
new file mode 100644
index 000000000..8af6ce74e
--- /dev/null
+++ b/examples/multimedia/audiodevices/audiodevices.cpp
@@ -0,0 +1,314 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QAudioDeviceInfo>
+
+#include "audiodevices.h"
+
+// Utility functions for converting QAudioFormat fields into text
+
+QString toString(QAudioFormat::SampleType sampleType)
+{
+ QString result("Unknown");
+ switch (sampleType) {
+ case QAudioFormat::SignedInt:
+ result = "SignedInt";
+ break;
+ case QAudioFormat::UnSignedInt:
+ result = "UnSignedInt";
+ break;
+ case QAudioFormat::Float:
+ result = "Float";
+ break;
+ case QAudioFormat::Unknown:
+ break;
+ }
+ return result;
+}
+
+QString toString(QAudioFormat::Endian endian)
+{
+ QString result("Unknown");
+ switch (endian) {
+ case QAudioFormat::LittleEndian:
+ result = "LittleEndian";
+ break;
+ case QAudioFormat::BigEndian:
+ result = "BigEndian";
+ break;
+ }
+ return result;
+}
+
+
+AudioDevicesBase::AudioDevicesBase(QWidget *parent, Qt::WFlags f)
+ : QMainWindow(parent, f)
+{
+ setupUi(this);
+}
+
+AudioDevicesBase::~AudioDevicesBase() {}
+
+
+AudioTest::AudioTest(QWidget *parent, Qt::WFlags f)
+ : AudioDevicesBase(parent, f)
+{
+ mode = QAudio::AudioOutput;
+
+ connect(testButton, SIGNAL(clicked()), SLOT(test()));
+ connect(modeBox, SIGNAL(activated(int)), SLOT(modeChanged(int)));
+ connect(deviceBox, SIGNAL(activated(int)), SLOT(deviceChanged(int)));
+ connect(frequencyBox, SIGNAL(activated(int)), SLOT(freqChanged(int)));
+ connect(channelsBox, SIGNAL(activated(int)), SLOT(channelChanged(int)));
+ connect(codecsBox, SIGNAL(activated(int)), SLOT(codecChanged(int)));
+ connect(sampleSizesBox, SIGNAL(activated(int)), SLOT(sampleSizeChanged(int)));
+ connect(sampleTypesBox, SIGNAL(activated(int)), SLOT(sampleTypeChanged(int)));
+ connect(endianBox, SIGNAL(activated(int)), SLOT(endianChanged(int)));
+ connect(populateTableButton, SIGNAL(clicked()), SLOT(populateTable()));
+
+ modeBox->setCurrentIndex(0);
+ modeChanged(0);
+ deviceBox->setCurrentIndex(0);
+ deviceChanged(0);
+}
+
+AudioTest::~AudioTest()
+{
+}
+
+void AudioTest::test()
+{
+ // tries to set all the settings picked.
+ testResult->clear();
+
+ if (!deviceInfo.isNull()) {
+ if (deviceInfo.isFormatSupported(settings)) {
+ testResult->setText(tr("Success"));
+ nearestFreq->setText("");
+ nearestChannel->setText("");
+ nearestCodec->setText("");
+ nearestSampleSize->setText("");
+ nearestSampleType->setText("");
+ nearestEndian->setText("");
+ } else {
+ QAudioFormat nearest = deviceInfo.nearestFormat(settings);
+ testResult->setText(tr("Failed"));
+ nearestFreq->setText(QString("%1").arg(nearest.frequency()));
+ nearestChannel->setText(QString("%1").arg(nearest.channels()));
+ nearestCodec->setText(nearest.codec());
+ nearestSampleSize->setText(QString("%1").arg(nearest.sampleSize()));
+ nearestSampleType->setText(toString(nearest.sampleType()));
+ nearestEndian->setText(toString(nearest.byteOrder()));
+ }
+ }
+ else
+ testResult->setText(tr("No Device"));
+}
+
+void AudioTest::modeChanged(int idx)
+{
+ testResult->clear();
+
+ // mode has changed
+ if (idx == 0)
+ mode = QAudio::AudioInput;
+ else
+ mode = QAudio::AudioOutput;
+
+ deviceBox->clear();
+ foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(mode))
+ deviceBox->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo));
+
+ deviceBox->setCurrentIndex(0);
+ deviceChanged(0);
+}
+
+void AudioTest::deviceChanged(int idx)
+{
+ testResult->clear();
+
+ if (deviceBox->count() == 0)
+ return;
+
+ // device has changed
+ deviceInfo = deviceBox->itemData(idx).value<QAudioDeviceInfo>();
+
+ frequencyBox->clear();
+ QList<int> freqz = deviceInfo.supportedFrequencies();
+ for(int i = 0; i < freqz.size(); ++i)
+ frequencyBox->addItem(QString("%1").arg(freqz.at(i)));
+ if(freqz.size())
+ settings.setFrequency(freqz.at(0));
+
+ channelsBox->clear();
+ QList<int> chz = deviceInfo.supportedChannels();
+ for(int i = 0; i < chz.size(); ++i)
+ channelsBox->addItem(QString("%1").arg(chz.at(i)));
+ if(chz.size())
+ settings.setChannels(chz.at(0));
+
+ codecsBox->clear();
+ QStringList codecz = deviceInfo.supportedCodecs();
+ for (int i = 0; i < codecz.size(); ++i)
+ codecsBox->addItem(QString("%1").arg(codecz.at(i)));
+ if (codecz.size())
+ settings.setCodec(codecz.at(0));
+ // Add false to create failed condition!
+ codecsBox->addItem("audio/test");
+
+ sampleSizesBox->clear();
+ QList<int> sampleSizez = deviceInfo.supportedSampleSizes();
+ for (int i = 0; i < sampleSizez.size(); ++i)
+ sampleSizesBox->addItem(QString("%1").arg(sampleSizez.at(i)));
+ if (sampleSizez.size())
+ settings.setSampleSize(sampleSizez.at(0));
+
+ sampleTypesBox->clear();
+ QList<QAudioFormat::SampleType> sampleTypez = deviceInfo.supportedSampleTypes();
+
+ for (int i = 0; i < sampleTypez.size(); ++i)
+ sampleTypesBox->addItem(toString(sampleTypez.at(i)));
+ if (sampleTypez.size())
+ settings.setSampleType(sampleTypez.at(0));
+
+ endianBox->clear();
+ QList<QAudioFormat::Endian> endianz = deviceInfo.supportedByteOrders();
+ for (int i = 0; i < endianz.size(); ++i)
+ endianBox->addItem(toString(endianz.at(i)));
+ if (endianz.size())
+ settings.setByteOrder(endianz.at(0));
+
+ allFormatsTable->clearContents();
+}
+
+void AudioTest::populateTable()
+{
+ int row = 0;
+
+ QAudioFormat format;
+ foreach (QString codec, deviceInfo.supportedCodecs()) {
+ format.setCodec(codec);
+ foreach (int frequency, deviceInfo.supportedFrequencies()) {
+ format.setFrequency(frequency);
+ foreach (int channels, deviceInfo.supportedChannels()) {
+ format.setChannels(channels);
+ foreach (QAudioFormat::SampleType sampleType, deviceInfo.supportedSampleTypes()) {
+ format.setSampleType(sampleType);
+ foreach (int sampleSize, deviceInfo.supportedSampleSizes()) {
+ format.setSampleSize(sampleSize);
+ foreach (QAudioFormat::Endian endian, deviceInfo.supportedByteOrders()) {
+ format.setByteOrder(endian);
+ if (deviceInfo.isFormatSupported(format)) {
+ allFormatsTable->setRowCount(row + 1);
+
+ QTableWidgetItem *codecItem = new QTableWidgetItem(format.codec());
+ allFormatsTable->setItem(row, 0, codecItem);
+
+ QTableWidgetItem *frequencyItem = new QTableWidgetItem(QString("%1").arg(format.frequency()));
+ allFormatsTable->setItem(row, 1, frequencyItem);
+
+ QTableWidgetItem *channelsItem = new QTableWidgetItem(QString("%1").arg(format.channels()));
+ allFormatsTable->setItem(row, 2, channelsItem);
+
+ QTableWidgetItem *sampleTypeItem = new QTableWidgetItem(toString(format.sampleType()));
+ allFormatsTable->setItem(row, 3, sampleTypeItem);
+
+ QTableWidgetItem *sampleSizeItem = new QTableWidgetItem(QString("%1").arg(format.sampleSize()));
+ allFormatsTable->setItem(row, 4, sampleSizeItem);
+
+ QTableWidgetItem *byteOrderItem = new QTableWidgetItem(toString(format.byteOrder()));
+ allFormatsTable->setItem(row, 5, byteOrderItem);
+
+ ++row;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+void AudioTest::freqChanged(int idx)
+{
+ // freq has changed
+ settings.setFrequency(frequencyBox->itemText(idx).toInt());
+}
+
+void AudioTest::channelChanged(int idx)
+{
+ settings.setChannels(channelsBox->itemText(idx).toInt());
+}
+
+void AudioTest::codecChanged(int idx)
+{
+ settings.setCodec(codecsBox->itemText(idx));
+}
+
+void AudioTest::sampleSizeChanged(int idx)
+{
+ settings.setSampleSize(sampleSizesBox->itemText(idx).toInt());
+}
+
+void AudioTest::sampleTypeChanged(int idx)
+{
+ switch (sampleTypesBox->itemText(idx).toInt()) {
+ case QAudioFormat::SignedInt:
+ settings.setSampleType(QAudioFormat::SignedInt);
+ break;
+ case QAudioFormat::UnSignedInt:
+ settings.setSampleType(QAudioFormat::UnSignedInt);
+ break;
+ case QAudioFormat::Float:
+ settings.setSampleType(QAudioFormat::Float);
+ }
+}
+
+void AudioTest::endianChanged(int idx)
+{
+ switch (endianBox->itemText(idx).toInt()) {
+ case QAudioFormat::LittleEndian:
+ settings.setByteOrder(QAudioFormat::LittleEndian);
+ break;
+ case QAudioFormat::BigEndian:
+ settings.setByteOrder(QAudioFormat::BigEndian);
+ }
+}
diff --git a/examples/multimedia/audiodevices/audiodevices.h b/examples/multimedia/audiodevices/audiodevices.h
new file mode 100644
index 000000000..cae8139f2
--- /dev/null
+++ b/examples/multimedia/audiodevices/audiodevices.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef AUDIODEVICES_H
+#define AUDIODEVICES_H
+
+#include <QObject>
+#include <QMainWindow>
+#include <QAudioDeviceInfo>
+
+#include "ui_audiodevicesbase.h"
+
+class AudioDevicesBase : public QMainWindow, public Ui::AudioDevicesBase
+{
+public:
+ AudioDevicesBase(QWidget *parent = 0, Qt::WFlags f = 0);
+ virtual ~AudioDevicesBase();
+};
+
+class AudioTest : public AudioDevicesBase
+{
+ Q_OBJECT
+public:
+ AudioTest(QWidget *parent = 0, Qt::WFlags f = 0);
+ virtual ~AudioTest();
+
+ QAudioDeviceInfo deviceInfo;
+ QAudioFormat settings;
+ QAudio::Mode mode;
+
+private slots:
+ void modeChanged(int idx);
+ void deviceChanged(int idx);
+ void freqChanged(int idx);
+ void channelChanged(int idx);
+ void codecChanged(int idx);
+ void sampleSizeChanged(int idx);
+ void sampleTypeChanged(int idx);
+ void endianChanged(int idx);
+ void test();
+ void populateTable();
+
+};
+
+#endif
+
diff --git a/examples/multimedia/audiodevices/audiodevices.pro b/examples/multimedia/audiodevices/audiodevices.pro
new file mode 100644
index 000000000..fc434407f
--- /dev/null
+++ b/examples/multimedia/audiodevices/audiodevices.pro
@@ -0,0 +1,17 @@
+HEADERS = audiodevices.h
+SOURCES = audiodevices.cpp \
+ main.cpp
+FORMS += audiodevicesbase.ui
+
+QT += multimedia
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia/audiodevices
+sources.files = $$SOURCES *.h $$RESOURCES $$FORMS audiodevices.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia/audiodevices
+INSTALLS += target sources
+
+symbian {
+ TARGET.UID3 = 0xA000D7BE
+ include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
+}
diff --git a/examples/multimedia/audiodevices/audiodevicesbase.ui b/examples/multimedia/audiodevices/audiodevicesbase.ui
new file mode 100644
index 000000000..23b45d736
--- /dev/null
+++ b/examples/multimedia/audiodevices/audiodevicesbase.ui
@@ -0,0 +1,399 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AudioDevicesBase</class>
+ <widget class="QMainWindow" name="AudioDevicesBase">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>679</width>
+ <height>598</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Audio Devices</string>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QScrollArea" name="scrollArea">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="scrollAreaWidgetContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>659</width>
+ <height>558</height>
+ </rect>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_4">
+ <item row="0" column="0">
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="modeLabel">
+ <property name="text">
+ <string>Mode</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="deviceLabel">
+ <property name="text">
+ <string>Device</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QComboBox" name="modeBox">
+ <item>
+ <property name="text">
+ <string>Input</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Output</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="deviceBox"/>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="testFormatTab">
+ <attribute name="title">
+ <string>Test format</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="1">
+ <widget class="QLabel" name="actualLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Plain</enum>
+ </property>
+ <property name="text">
+ <string>&lt;i&gt;Actual Settings&lt;/i&gt;</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::RichText</enum>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QLabel" name="nearestLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Plain</enum>
+ </property>
+ <property name="text">
+ <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;Nearest Settings&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::RichText</enum>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QComboBox" name="frequencyBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QLineEdit" name="nearestFreq">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QComboBox" name="channelsBox"/>
+ </item>
+ <item row="5" column="2">
+ <widget class="QLineEdit" name="nearestChannel">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="9" column="1">
+ <widget class="QComboBox" name="sampleSizesBox"/>
+ </item>
+ <item row="9" column="2">
+ <widget class="QLineEdit" name="nearestSampleSize">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="14" column="1">
+ <widget class="QComboBox" name="endianBox"/>
+ </item>
+ <item row="14" column="2">
+ <widget class="QLineEdit" name="nearestEndian">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="15" column="1">
+ <widget class="QPushButton" name="testButton">
+ <property name="text">
+ <string>Test</string>
+ </property>
+ </widget>
+ </item>
+ <item row="15" column="2">
+ <widget class="QLabel" name="testResult">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="actualFreqLabel">
+ <property name="text">
+ <string>Frequency (Hz)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="actualChannelLabel">
+ <property name="text">
+ <string>Channels</string>
+ </property>
+ </widget>
+ </item>
+ <item row="9" column="0">
+ <widget class="QLabel" name="actualSampleSizeLabel">
+ <property name="text">
+ <string>Sample size (bits)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="14" column="0">
+ <widget class="QLabel" name="actualEndianLabel">
+ <property name="text">
+ <string>Endianess</string>
+ </property>
+ </widget>
+ </item>
+ <item row="16" column="0" colspan="3">
+ <widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Note: an invalid codec 'audio/test' exists in order to allow an invalid format to be constructed, and therefore to trigger a 'nearest format' calculation.</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="actualCodecLabel">
+ <property name="text">
+ <string>Codec</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QLineEdit" name="nearestCodec">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QComboBox" name="codecsBox"/>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="actualSampleTypeLabel">
+ <property name="text">
+ <string>SampleType</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="1">
+ <widget class="QComboBox" name="sampleTypesBox"/>
+ </item>
+ <item row="6" column="2">
+ <widget class="QLineEdit" name="nearestSampleType">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>All formats</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QPushButton" name="populateTableButton">
+ <property name="text">
+ <string>Populate table</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QTableWidget" name="allFormatsTable">
+ <property name="editTriggers">
+ <set>QAbstractItemView::NoEditTriggers</set>
+ </property>
+ <property name="dragDropOverwriteMode">
+ <bool>false</bool>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::NoSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectItems</enum>
+ </property>
+ <property name="textElideMode">
+ <enum>Qt::ElideNone</enum>
+ </property>
+ <property name="sortingEnabled">
+ <bool>false</bool>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ <property name="cornerButtonEnabled">
+ <bool>false</bool>
+ </property>
+ <attribute name="horizontalHeaderHighlightSections">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="verticalHeaderVisible">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="verticalHeaderHighlightSections">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="verticalHeaderVisible">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="horizontalHeaderHighlightSections">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="verticalHeaderHighlightSections">
+ <bool>false</bool>
+ </attribute>
+ <column>
+ <property name="text">
+ <string>Codec</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Frequency (Hz)</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Channels</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Sample type</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Sample size (bits)</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Endianness</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+ </property>
+ </column>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QStatusBar" name="statusbar"/>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/multimedia/audiodevices/main.cpp b/examples/multimedia/audiodevices/main.cpp
new file mode 100644
index 000000000..79a6efbd0
--- /dev/null
+++ b/examples/multimedia/audiodevices/main.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+
+#include "audiodevices.h"
+
+int main(int argv, char **args)
+{
+ QApplication app(argv, args);
+ app.setApplicationName("Audio Device Test");
+
+ AudioTest audio;
+#ifdef Q_OS_SYMBIAN
+ audio.showMaximized();
+#else
+ audio.show();
+#endif
+
+ return app.exec();
+}
diff --git a/examples/multimedia/audioinput/audioinput.cpp b/examples/multimedia/audioinput/audioinput.cpp
new file mode 100644
index 000000000..9131551d0
--- /dev/null
+++ b/examples/multimedia/audioinput/audioinput.cpp
@@ -0,0 +1,379 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+
+#include <QDebug>
+#include <QPainter>
+#include <QVBoxLayout>
+
+#include <QAudioDeviceInfo>
+#include <QAudioInput>
+
+#include <QtCore/qendian.h>
+
+#include "audioinput.h"
+
+const QString InputTest::PushModeLabel(tr("Enable push mode"));
+const QString InputTest::PullModeLabel(tr("Enable pull mode"));
+const QString InputTest::SuspendLabel(tr("Suspend recording"));
+const QString InputTest::ResumeLabel(tr("Resume recording"));
+
+const int BufferSize = 4096;
+
+AudioInfo::AudioInfo(const QAudioFormat &format, QObject *parent)
+ : QIODevice(parent)
+ , m_format(format)
+ , m_maxAmplitude(0)
+ , m_level(0.0)
+
+{
+ switch (m_format.sampleSize()) {
+ case 8:
+ switch (m_format.sampleType()) {
+ case QAudioFormat::UnSignedInt:
+ m_maxAmplitude = 255;
+ break;
+ case QAudioFormat::SignedInt:
+ m_maxAmplitude = 127;
+ break;
+ default:
+ break;
+ }
+ break;
+ case 16:
+ switch (m_format.sampleType()) {
+ case QAudioFormat::UnSignedInt:
+ m_maxAmplitude = 65535;
+ break;
+ case QAudioFormat::SignedInt:
+ m_maxAmplitude = 32767;
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+AudioInfo::~AudioInfo()
+{
+}
+
+void AudioInfo::start()
+{
+ open(QIODevice::WriteOnly);
+}
+
+void AudioInfo::stop()
+{
+ close();
+}
+
+qint64 AudioInfo::readData(char *data, qint64 maxlen)
+{
+ Q_UNUSED(data)
+ Q_UNUSED(maxlen)
+
+ return 0;
+}
+
+qint64 AudioInfo::writeData(const char *data, qint64 len)
+{
+ if (m_maxAmplitude) {
+ Q_ASSERT(m_format.sampleSize() % 8 == 0);
+ const int channelBytes = m_format.sampleSize() / 8;
+ const int sampleBytes = m_format.channels() * channelBytes;
+ Q_ASSERT(len % sampleBytes == 0);
+ const int numSamples = len / sampleBytes;
+
+ quint16 maxValue = 0;
+ const unsigned char *ptr = reinterpret_cast<const unsigned char *>(data);
+
+ for (int i = 0; i < numSamples; ++i) {
+ for(int j = 0; j < m_format.channels(); ++j) {
+ quint16 value = 0;
+
+ if (m_format.sampleSize() == 8 && m_format.sampleType() == QAudioFormat::UnSignedInt) {
+ value = *reinterpret_cast<const quint8*>(ptr);
+ } else if (m_format.sampleSize() == 8 && m_format.sampleType() == QAudioFormat::SignedInt) {
+ value = qAbs(*reinterpret_cast<const qint8*>(ptr));
+ } else if (m_format.sampleSize() == 16 && m_format.sampleType() == QAudioFormat::UnSignedInt) {
+ if (m_format.byteOrder() == QAudioFormat::LittleEndian)
+ value = qFromLittleEndian<quint16>(ptr);
+ else
+ value = qFromBigEndian<quint16>(ptr);
+ } else if (m_format.sampleSize() == 16 && m_format.sampleType() == QAudioFormat::SignedInt) {
+ if (m_format.byteOrder() == QAudioFormat::LittleEndian)
+ value = qAbs(qFromLittleEndian<qint16>(ptr));
+ else
+ value = qAbs(qFromBigEndian<qint16>(ptr));
+ }
+
+ maxValue = qMax(value, maxValue);
+ ptr += channelBytes;
+ }
+ }
+
+ maxValue = qMin(maxValue, m_maxAmplitude);
+ m_level = qreal(maxValue) / m_maxAmplitude;
+ }
+
+ emit update();
+ return len;
+}
+
+RenderArea::RenderArea(QWidget *parent)
+ : QWidget(parent)
+{
+ setBackgroundRole(QPalette::Base);
+ setAutoFillBackground(true);
+
+ m_level = 0;
+ setMinimumHeight(30);
+ setMinimumWidth(200);
+}
+
+void RenderArea::paintEvent(QPaintEvent * /* event */)
+{
+ QPainter painter(this);
+
+ painter.setPen(Qt::black);
+ painter.drawRect(QRect(painter.viewport().left()+10,
+ painter.viewport().top()+10,
+ painter.viewport().right()-20,
+ painter.viewport().bottom()-20));
+ if (m_level == 0.0)
+ return;
+
+ painter.setPen(Qt::red);
+
+ int pos = ((painter.viewport().right()-20)-(painter.viewport().left()+11))*m_level;
+ for (int i = 0; i < 10; ++i) {
+ int x1 = painter.viewport().left()+11;
+ int y1 = painter.viewport().top()+10+i;
+ int x2 = painter.viewport().left()+20+pos;
+ int y2 = painter.viewport().top()+10+i;
+ if (x2 < painter.viewport().left()+10)
+ x2 = painter.viewport().left()+10;
+
+ painter.drawLine(QPoint(x1, y1),QPoint(x2, y2));
+ }
+}
+
+void RenderArea::setLevel(qreal value)
+{
+ m_level = value;
+ repaint();
+}
+
+
+InputTest::InputTest()
+ : m_canvas(0)
+ , m_modeButton(0)
+ , m_suspendResumeButton(0)
+ , m_deviceBox(0)
+ , m_device(QAudioDeviceInfo::defaultInputDevice())
+ , m_audioInfo(0)
+ , m_audioInput(0)
+ , m_input(0)
+ , m_pullMode(false)
+ , m_buffer(BufferSize, 0)
+{
+ initializeWindow();
+ initializeAudio();
+}
+
+InputTest::~InputTest() {}
+
+void InputTest::initializeWindow()
+{
+ QScopedPointer<QWidget> window(new QWidget);
+ QScopedPointer<QVBoxLayout> layout(new QVBoxLayout);
+
+ m_canvas = new RenderArea(this);
+ layout->addWidget(m_canvas);
+
+ m_deviceBox = new QComboBox(this);
+ QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
+ for(int i = 0; i < devices.size(); ++i)
+ m_deviceBox->addItem(devices.at(i).deviceName(), QVariant::fromValue(devices.at(i)));
+
+ connect(m_deviceBox, SIGNAL(activated(int)), SLOT(deviceChanged(int)));
+ layout->addWidget(m_deviceBox);
+
+ m_modeButton = new QPushButton(this);
+ m_modeButton->setText(PushModeLabel);
+ connect(m_modeButton, SIGNAL(clicked()), SLOT(toggleMode()));
+ layout->addWidget(m_modeButton);
+
+ m_suspendResumeButton = new QPushButton(this);
+ m_suspendResumeButton->setText(SuspendLabel);
+ connect(m_suspendResumeButton, SIGNAL(clicked()), SLOT(toggleSuspend()));
+ layout->addWidget(m_suspendResumeButton);
+
+ window->setLayout(layout.data());
+ layout.take(); // ownership transferred
+
+ setCentralWidget(window.data());
+ QWidget *const windowPtr = window.take(); // ownership transferred
+ windowPtr->show();
+}
+
+void InputTest::initializeAudio()
+{
+ m_pullMode = true;
+
+ m_format.setFrequency(8000);
+ m_format.setChannels(1);
+ m_format.setSampleSize(16);
+ m_format.setSampleType(QAudioFormat::SignedInt);
+ m_format.setByteOrder(QAudioFormat::LittleEndian);
+ m_format.setCodec("audio/pcm");
+
+ QAudioDeviceInfo info(QAudioDeviceInfo::defaultInputDevice());
+ if (!info.isFormatSupported(m_format)) {
+ qWarning() << "Default format not supported - trying to use nearest";
+ m_format = info.nearestFormat(m_format);
+ }
+
+ m_audioInfo = new AudioInfo(m_format, this);
+ connect(m_audioInfo, SIGNAL(update()), SLOT(refreshDisplay()));
+
+ createAudioInput();
+}
+
+void InputTest::createAudioInput()
+{
+ m_audioInput = new QAudioInput(m_device, m_format, this);
+ connect(m_audioInput, SIGNAL(notify()), SLOT(notified()));
+ connect(m_audioInput, SIGNAL(stateChanged(QAudio::State)), SLOT(stateChanged(QAudio::State)));
+ m_audioInfo->start();
+ m_audioInput->start(m_audioInfo);
+}
+
+void InputTest::notified()
+{
+ qWarning() << "bytesReady = " << m_audioInput->bytesReady()
+ << ", " << "elapsedUSecs = " <<m_audioInput->elapsedUSecs()
+ << ", " << "processedUSecs = "<<m_audioInput->processedUSecs();
+}
+
+void InputTest::readMore()
+{
+ if(!m_audioInput)
+ return;
+ qint64 len = m_audioInput->bytesReady();
+ if(len > 4096)
+ len = 4096;
+ qint64 l = m_input->read(m_buffer.data(), len);
+ if(l > 0) {
+ m_audioInfo->write(m_buffer.constData(), l);
+ }
+}
+
+void InputTest::toggleMode()
+{
+ // Change bewteen pull and push modes
+ if (m_input != 0) {
+ disconnect(m_input, 0, this, 0);
+ m_input = 0;
+ }
+
+ m_audioInput->stop();
+
+ if (m_pullMode) {
+ m_modeButton->setText(PullModeLabel);
+ m_input = m_audioInput->start();
+ connect(m_input, SIGNAL(readyRead()), SLOT(readMore()));
+ m_pullMode = false;
+ } else {
+ m_modeButton->setText(PushModeLabel);
+ m_pullMode = true;
+ m_audioInput->start(m_audioInfo);
+ }
+
+ m_suspendResumeButton->setText(SuspendLabel);
+}
+
+void InputTest::toggleSuspend()
+{
+ // toggle suspend/resume
+ if(m_audioInput->state() == QAudio::SuspendedState) {
+ qWarning() << "status: Suspended, resume()";
+ m_audioInput->resume();
+ m_suspendResumeButton->setText(SuspendLabel);
+ } else if (m_audioInput->state() == QAudio::ActiveState) {
+ qWarning() << "status: Active, suspend()";
+ m_audioInput->suspend();
+ m_suspendResumeButton->setText(ResumeLabel);
+ } else if (m_audioInput->state() == QAudio::StoppedState) {
+ qWarning() << "status: Stopped, resume()";
+ m_audioInput->resume();
+ m_suspendResumeButton->setText(SuspendLabel);
+ } else if (m_audioInput->state() == QAudio::IdleState) {
+ qWarning() << "status: IdleState";
+ }
+}
+
+void InputTest::stateChanged(QAudio::State state)
+{
+ qWarning() << "state = " << state;
+}
+
+void InputTest::refreshDisplay()
+{
+ m_canvas->setLevel(m_audioInfo->level());
+ m_canvas->repaint();
+}
+
+void InputTest::deviceChanged(int index)
+{
+ m_audioInfo->stop();
+ m_audioInput->stop();
+ m_audioInput->disconnect(this);
+ delete m_audioInput;
+
+ m_device = m_deviceBox->itemData(index).value<QAudioDeviceInfo>();
+ createAudioInput();
+}
diff --git a/examples/multimedia/audioinput/audioinput.h b/examples/multimedia/audioinput/audioinput.h
new file mode 100644
index 000000000..d8d1e3963
--- /dev/null
+++ b/examples/multimedia/audioinput/audioinput.h
@@ -0,0 +1,139 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef AUDIOINPUT_H
+#define AUDIOINPUT_H
+
+#include <QPixmap>
+#include <QWidget>
+#include <QObject>
+#include <QMainWindow>
+#include <QPushButton>
+#include <QComboBox>
+#include <QByteArray>
+
+#include <qaudioinput.h>
+
+class AudioInfo : public QIODevice
+{
+ Q_OBJECT
+public:
+ AudioInfo(const QAudioFormat &format, QObject *parent);
+ ~AudioInfo();
+
+ void start();
+ void stop();
+
+ qreal level() const { return m_level; }
+
+ qint64 readData(char *data, qint64 maxlen);
+ qint64 writeData(const char *data, qint64 len);
+
+private:
+ const QAudioFormat m_format;
+ quint16 m_maxAmplitude;
+ qreal m_level; // 0.0 <= m_level <= 1.0
+
+signals:
+ void update();
+};
+
+
+class RenderArea : public QWidget
+{
+ Q_OBJECT
+
+public:
+ RenderArea(QWidget *parent = 0);
+
+ void setLevel(qreal value);
+
+protected:
+ void paintEvent(QPaintEvent *event);
+
+private:
+ qreal m_level;
+ QPixmap m_pixmap;
+};
+
+class InputTest : public QMainWindow
+{
+ Q_OBJECT
+public:
+ InputTest();
+ ~InputTest();
+
+private:
+ void initializeWindow();
+ void initializeAudio();
+ void createAudioInput();
+
+private slots:
+ void refreshDisplay();
+ void notified();
+ void readMore();
+ void toggleMode();
+ void toggleSuspend();
+ void stateChanged(QAudio::State state);
+ void deviceChanged(int index);
+
+private:
+ // Owned by layout
+ RenderArea *m_canvas;
+ QPushButton *m_modeButton;
+ QPushButton *m_suspendResumeButton;
+ QComboBox *m_deviceBox;
+
+ QAudioDeviceInfo m_device;
+ AudioInfo *m_audioInfo;
+ QAudioFormat m_format;
+ QAudioInput *m_audioInput;
+ QIODevice *m_input;
+ bool m_pullMode;
+ QByteArray m_buffer;
+
+ static const QString PushModeLabel;
+ static const QString PullModeLabel;
+ static const QString SuspendLabel;
+ static const QString ResumeLabel;
+};
+
+#endif
+
diff --git a/examples/multimedia/audioinput/audioinput.pro b/examples/multimedia/audioinput/audioinput.pro
new file mode 100644
index 000000000..1fbfeafa3
--- /dev/null
+++ b/examples/multimedia/audioinput/audioinput.pro
@@ -0,0 +1,17 @@
+HEADERS = audioinput.h
+SOURCES = audioinput.cpp \
+ main.cpp
+
+QT += multimedia
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia/audioinput
+sources.files = $$SOURCES *.h $$RESOURCES $$FORMS audioinput.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia/audioinput
+INSTALLS += target sources
+
+symbian {
+ TARGET.UID3 = 0xA000D7BF
+ TARGET.CAPABILITY += UserEnvironment
+ include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
+}
diff --git a/examples/multimedia/audioinput/main.cpp b/examples/multimedia/audioinput/main.cpp
new file mode 100644
index 000000000..dd25f62f8
--- /dev/null
+++ b/examples/multimedia/audioinput/main.cpp
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+
+#include "audioinput.h"
+
+int main(int argv, char **args)
+{
+ QApplication app(argv, args);
+ app.setApplicationName("Audio Input Test");
+
+ InputTest input;
+ input.show();
+
+ return app.exec();
+}
diff --git a/examples/multimedia/audiooutput/audiooutput.cpp b/examples/multimedia/audiooutput/audiooutput.cpp
new file mode 100644
index 000000000..3e43b025d
--- /dev/null
+++ b/examples/multimedia/audiooutput/audiooutput.cpp
@@ -0,0 +1,314 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QDebug>
+#include <QVBoxLayout>
+
+#include <QAudioOutput>
+#include <QAudioDeviceInfo>
+#include <QtCore/qmath.h>
+#include <QtCore/qendian.h>
+#include "audiooutput.h"
+
+const QString AudioTest::PushModeLabel(tr("Enable push mode"));
+const QString AudioTest::PullModeLabel(tr("Enable pull mode"));
+const QString AudioTest::SuspendLabel(tr("Suspend playback"));
+const QString AudioTest::ResumeLabel(tr("Resume playback"));
+
+const int DurationSeconds = 1;
+const int ToneFrequencyHz = 600;
+const int DataFrequencyHz = 44100;
+const int BufferSize = 32768;
+
+
+Generator::Generator(const QAudioFormat &format,
+ qint64 durationUs,
+ int frequency,
+ QObject *parent)
+ : QIODevice(parent)
+ , m_pos(0)
+{
+ generateData(format, durationUs, frequency);
+}
+
+Generator::~Generator()
+{
+
+}
+
+void Generator::start()
+{
+ open(QIODevice::ReadOnly);
+}
+
+void Generator::stop()
+{
+ m_pos = 0;
+ close();
+}
+
+void Generator::generateData(const QAudioFormat &format, qint64 durationUs, int frequency)
+{
+ const int channelBytes = format.sampleSize() / 8;
+ const int sampleBytes = format.channels() * channelBytes;
+
+ qint64 length = (format.frequency() * format.channels() * (format.sampleSize() / 8))
+ * durationUs / 100000;
+
+ Q_ASSERT(length % sampleBytes == 0);
+ Q_UNUSED(sampleBytes) // suppress warning in release builds
+
+ m_buffer.resize(length);
+ unsigned char *ptr = reinterpret_cast<unsigned char *>(m_buffer.data());
+ int sampleIndex = 0;
+
+ while (length) {
+ const qreal x = qSin(2 * M_PI * frequency * qreal(sampleIndex % format.frequency()) / format.frequency());
+ for (int i=0; i<format.channels(); ++i) {
+ if (format.sampleSize() == 8 && format.sampleType() == QAudioFormat::UnSignedInt) {
+ const quint8 value = static_cast<quint8>((1.0 + x) / 2 * 255);
+ *reinterpret_cast<quint8*>(ptr) = value;
+ } else if (format.sampleSize() == 8 && format.sampleType() == QAudioFormat::SignedInt) {
+ const qint8 value = static_cast<qint8>(x * 127);
+ *reinterpret_cast<quint8*>(ptr) = value;
+ } else if (format.sampleSize() == 16 && format.sampleType() == QAudioFormat::UnSignedInt) {
+ quint16 value = static_cast<quint16>((1.0 + x) / 2 * 65535);
+ if (format.byteOrder() == QAudioFormat::LittleEndian)
+ qToLittleEndian<quint16>(value, ptr);
+ else
+ qToBigEndian<quint16>(value, ptr);
+ } else if (format.sampleSize() == 16 && format.sampleType() == QAudioFormat::SignedInt) {
+ qint16 value = static_cast<qint16>(x * 32767);
+ if (format.byteOrder() == QAudioFormat::LittleEndian)
+ qToLittleEndian<qint16>(value, ptr);
+ else
+ qToBigEndian<qint16>(value, ptr);
+ }
+
+ ptr += channelBytes;
+ length -= channelBytes;
+ }
+ ++sampleIndex;
+ }
+}
+
+qint64 Generator::readData(char *data, qint64 len)
+{
+ qint64 total = 0;
+ while (len - total > 0) {
+ const qint64 chunk = qMin((m_buffer.size() - m_pos), len - total);
+ memcpy(data + total, m_buffer.constData() + m_pos, chunk);
+ m_pos = (m_pos + chunk) % m_buffer.size();
+ total += chunk;
+ }
+ return total;
+}
+
+qint64 Generator::writeData(const char *data, qint64 len)
+{
+ Q_UNUSED(data);
+ Q_UNUSED(len);
+
+ return 0;
+}
+
+qint64 Generator::bytesAvailable() const
+{
+ return m_buffer.size() + QIODevice::bytesAvailable();
+}
+
+AudioTest::AudioTest()
+ : m_pullTimer(new QTimer(this))
+ , m_modeButton(0)
+ , m_suspendResumeButton(0)
+ , m_deviceBox(0)
+ , m_device(QAudioDeviceInfo::defaultOutputDevice())
+ , m_generator(0)
+ , m_audioOutput(0)
+ , m_output(0)
+ , m_buffer(BufferSize, 0)
+{
+ initializeWindow();
+ initializeAudio();
+}
+
+void AudioTest::initializeWindow()
+{
+ QScopedPointer<QWidget> window(new QWidget);
+ QScopedPointer<QVBoxLayout> layout(new QVBoxLayout);
+
+ m_deviceBox = new QComboBox(this);
+ foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
+ m_deviceBox->addItem(deviceInfo.deviceName(), QVariant::fromValue(deviceInfo));
+ connect(m_deviceBox,SIGNAL(activated(int)),SLOT(deviceChanged(int)));
+ layout->addWidget(m_deviceBox);
+
+ m_modeButton = new QPushButton(this);
+ m_modeButton->setText(PushModeLabel);
+ connect(m_modeButton, SIGNAL(clicked()), SLOT(toggleMode()));
+ layout->addWidget(m_modeButton);
+
+ m_suspendResumeButton = new QPushButton(this);
+ m_suspendResumeButton->setText(SuspendLabel);
+ connect(m_suspendResumeButton, SIGNAL(clicked()), SLOT(toggleSuspendResume()));
+ layout->addWidget(m_suspendResumeButton);
+
+ window->setLayout(layout.data());
+ layout.take(); // ownership transferred
+
+ setCentralWidget(window.data());
+ QWidget *const windowPtr = window.take(); // ownership transferred
+ windowPtr->show();
+}
+
+void AudioTest::initializeAudio()
+{
+ connect(m_pullTimer, SIGNAL(timeout()), SLOT(pullTimerExpired()));
+
+ m_pullMode = true;
+
+ m_format.setFrequency(DataFrequencyHz);
+ m_format.setChannels(1);
+ m_format.setSampleSize(16);
+ m_format.setCodec("audio/pcm");
+ m_format.setByteOrder(QAudioFormat::LittleEndian);
+ m_format.setSampleType(QAudioFormat::SignedInt);
+
+ QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
+ if (!info.isFormatSupported(m_format)) {
+ qWarning() << "Default format not supported - trying to use nearest";
+ m_format = info.nearestFormat(m_format);
+ }
+
+ m_generator = new Generator(m_format, DurationSeconds*1000000, ToneFrequencyHz, this);
+
+ createAudioOutput();
+}
+
+void AudioTest::createAudioOutput()
+{
+ delete m_audioOutput;
+ m_audioOutput = 0;
+ m_audioOutput = new QAudioOutput(m_device, m_format, this);
+ connect(m_audioOutput, SIGNAL(notify()), SLOT(notified()));
+ connect(m_audioOutput, SIGNAL(stateChanged(QAudio::State)), SLOT(stateChanged(QAudio::State)));
+ m_generator->start();
+ m_audioOutput->start(m_generator);
+}
+
+AudioTest::~AudioTest()
+{
+
+}
+
+void AudioTest::deviceChanged(int index)
+{
+ m_pullTimer->stop();
+ m_generator->stop();
+ m_audioOutput->stop();
+ m_audioOutput->disconnect(this);
+ m_device = m_deviceBox->itemData(index).value<QAudioDeviceInfo>();
+ createAudioOutput();
+}
+
+void AudioTest::notified()
+{
+ qWarning() << "bytesFree = " << m_audioOutput->bytesFree()
+ << ", " << "elapsedUSecs = " << m_audioOutput->elapsedUSecs()
+ << ", " << "processedUSecs = " << m_audioOutput->processedUSecs();
+}
+
+void AudioTest::pullTimerExpired()
+{
+ if (m_audioOutput && m_audioOutput->state() != QAudio::StoppedState) {
+ int chunks = m_audioOutput->bytesFree()/m_audioOutput->periodSize();
+ while (chunks) {
+ const qint64 len = m_generator->read(m_buffer.data(), m_audioOutput->periodSize());
+ if (len)
+ m_output->write(m_buffer.data(), len);
+ if (len != m_audioOutput->periodSize())
+ break;
+ --chunks;
+ }
+ }
+}
+
+void AudioTest::toggleMode()
+{
+ m_pullTimer->stop();
+ m_audioOutput->stop();
+
+ if (m_pullMode) {
+ m_modeButton->setText(PullModeLabel);
+ m_output = m_audioOutput->start();
+ m_pullMode = false;
+ m_pullTimer->start(20);
+ } else {
+ m_modeButton->setText(PushModeLabel);
+ m_pullMode = true;
+ m_audioOutput->start(m_generator);
+ }
+
+ m_suspendResumeButton->setText(SuspendLabel);
+}
+
+void AudioTest::toggleSuspendResume()
+{
+ if (m_audioOutput->state() == QAudio::SuspendedState) {
+ qWarning() << "status: Suspended, resume()";
+ m_audioOutput->resume();
+ m_suspendResumeButton->setText(SuspendLabel);
+ } else if (m_audioOutput->state() == QAudio::ActiveState) {
+ qWarning() << "status: Active, suspend()";
+ m_audioOutput->suspend();
+ m_suspendResumeButton->setText(ResumeLabel);
+ } else if (m_audioOutput->state() == QAudio::StoppedState) {
+ qWarning() << "status: Stopped, resume()";
+ m_audioOutput->resume();
+ m_suspendResumeButton->setText(SuspendLabel);
+ } else if (m_audioOutput->state() == QAudio::IdleState) {
+ qWarning() << "status: IdleState";
+ }
+}
+
+void AudioTest::stateChanged(QAudio::State state)
+{
+ qWarning() << "state = " << state;
+}
diff --git a/examples/multimedia/audiooutput/audiooutput.h b/examples/multimedia/audiooutput/audiooutput.h
new file mode 100644
index 000000000..3faa48410
--- /dev/null
+++ b/examples/multimedia/audiooutput/audiooutput.h
@@ -0,0 +1,122 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef AUDIOOUTPUT_H
+#define AUDIOOUTPUT_H
+
+#include <math.h>
+
+#include <QObject>
+#include <QMainWindow>
+#include <QIODevice>
+#include <QTimer>
+#include <QPushButton>
+#include <QComboBox>
+#include <QByteArray>
+
+#include <QAudioOutput>
+
+class Generator : public QIODevice
+{
+ Q_OBJECT
+public:
+ Generator(const QAudioFormat &format, qint64 durationUs, int frequency, QObject *parent);
+ ~Generator();
+
+ void start();
+ void stop();
+
+ qint64 readData(char *data, qint64 maxlen);
+ qint64 writeData(const char *data, qint64 len);
+ qint64 bytesAvailable() const;
+
+private:
+ void generateData(const QAudioFormat &format, qint64 durationUs, int frequency);
+
+private:
+ qint64 m_pos;
+ QByteArray m_buffer;
+};
+
+class AudioTest : public QMainWindow
+{
+ Q_OBJECT
+public:
+ AudioTest();
+ ~AudioTest();
+
+private:
+ void initializeWindow();
+ void initializeAudio();
+ void createAudioOutput();
+
+private:
+ QTimer* m_pullTimer;
+
+ // Owned by layout
+ QPushButton* m_modeButton;
+ QPushButton* m_suspendResumeButton;
+ QComboBox* m_deviceBox;
+
+ QAudioDeviceInfo m_device;
+ Generator* m_generator;
+ QAudioOutput* m_audioOutput;
+ QIODevice* m_output; // not owned
+ QAudioFormat m_format;
+
+ bool m_pullMode;
+ QByteArray m_buffer;
+
+ static const QString PushModeLabel;
+ static const QString PullModeLabel;
+ static const QString SuspendLabel;
+ static const QString ResumeLabel;
+
+private slots:
+ void notified();
+ void pullTimerExpired();
+ void toggleMode();
+ void toggleSuspendResume();
+ void stateChanged(QAudio::State state);
+ void deviceChanged(int index);
+};
+
+#endif
+
diff --git a/examples/multimedia/audiooutput/audiooutput.pro b/examples/multimedia/audiooutput/audiooutput.pro
new file mode 100644
index 000000000..e7cbe1aea
--- /dev/null
+++ b/examples/multimedia/audiooutput/audiooutput.pro
@@ -0,0 +1,16 @@
+HEADERS = audiooutput.h
+SOURCES = audiooutput.cpp \
+ main.cpp
+
+QT += multimedia
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia/audiooutput
+sources.files = $$SOURCES *.h $$RESOURCES $$FORMS audiooutput.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia/audiooutput
+INSTALLS += target sources
+
+symbian {
+ TARGET.UID3 = 0xA000D7C0
+ include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
+}
diff --git a/examples/multimedia/audiooutput/main.cpp b/examples/multimedia/audiooutput/main.cpp
new file mode 100644
index 000000000..389a35d6c
--- /dev/null
+++ b/examples/multimedia/audiooutput/main.cpp
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtGui>
+
+#include "audiooutput.h"
+
+int main(int argv, char **args)
+{
+ QApplication app(argv, args);
+ app.setApplicationName("Audio Output Test");
+
+ AudioTest audio;
+ audio.show();
+
+ return app.exec();
+}
diff --git a/examples/multimedia/multimedia.pro b/examples/multimedia/multimedia.pro
new file mode 100644
index 000000000..05fe0918c
--- /dev/null
+++ b/examples/multimedia/multimedia.pro
@@ -0,0 +1,18 @@
+TEMPLATE = subdirs
+
+!static {
+ SUBDIRS += \
+ audiodevices \
+ audioinput \
+ audiooutput
+}
+
+SUBDIRS += \
+ videographicsitem \
+ videowidget
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS multimedia.pro README
+sources.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia
+INSTALLS += target sources
diff --git a/examples/multimedia/videographicsitem/main.cpp b/examples/multimedia/videographicsitem/main.cpp
new file mode 100644
index 000000000..f7f88cc30
--- /dev/null
+++ b/examples/multimedia/videographicsitem/main.cpp
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "videoplayer.h"
+
+#include <QtGui/QApplication>
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ VideoPlayer player;
+ player.show();
+
+ return app.exec();
+}
+
diff --git a/examples/multimedia/videographicsitem/videographicsitem.pro b/examples/multimedia/videographicsitem/videographicsitem.pro
new file mode 100644
index 000000000..ca6b9b383
--- /dev/null
+++ b/examples/multimedia/videographicsitem/videographicsitem.pro
@@ -0,0 +1,21 @@
+QT += multimedia
+
+contains(QT_CONFIG, opengl): QT += opengl
+
+HEADERS += videoplayer.h \
+ videoitem.h
+
+SOURCES += main.cpp \
+ videoplayer.cpp \
+ videoitem.cpp
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia/videographicsitem
+sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png images
+sources.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia/videographicsitem
+INSTALLS += target sources
+
+symbian {
+ TARGET.UID3 = 0xA000D7C2
+ include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
+}
diff --git a/examples/multimedia/videographicsitem/videoitem.cpp b/examples/multimedia/videographicsitem/videoitem.cpp
new file mode 100644
index 000000000..06b379367
--- /dev/null
+++ b/examples/multimedia/videographicsitem/videoitem.cpp
@@ -0,0 +1,143 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "videoitem.h"
+
+#include <QtMultimedia>
+
+VideoItem::VideoItem(QGraphicsItem *parent)
+ : QGraphicsItem(parent)
+ , imageFormat(QImage::Format_Invalid)
+ , framePainted(false)
+{
+}
+
+VideoItem::~VideoItem()
+{
+}
+
+QRectF VideoItem::boundingRect() const
+{
+ return QRectF(QPointF(0,0), surfaceFormat().sizeHint());
+}
+
+void VideoItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+ Q_UNUSED(option);
+ Q_UNUSED(widget);
+
+ if (currentFrame.map(QAbstractVideoBuffer::ReadOnly)) {
+ const QTransform oldTransform = painter->transform();
+
+ if (surfaceFormat().scanLineDirection() == QVideoSurfaceFormat::BottomToTop) {
+ painter->scale(1, -1);
+ painter->translate(0, -boundingRect().height());
+ }
+
+ painter->drawImage(boundingRect(), QImage(
+ currentFrame.bits(),
+ imageSize.width(),
+ imageSize.height(),
+ imageFormat));
+
+ painter->setTransform(oldTransform);
+
+ framePainted = true;
+
+ currentFrame.unmap();
+ }
+}
+
+QList<QVideoFrame::PixelFormat> VideoItem::supportedPixelFormats(
+ QAbstractVideoBuffer::HandleType handleType) const
+{
+ if (handleType == QAbstractVideoBuffer::NoHandle) {
+ return QList<QVideoFrame::PixelFormat>()
+ << QVideoFrame::Format_RGB32
+ << QVideoFrame::Format_ARGB32
+ << QVideoFrame::Format_ARGB32_Premultiplied
+ << QVideoFrame::Format_RGB565
+ << QVideoFrame::Format_RGB555;
+ } else {
+ return QList<QVideoFrame::PixelFormat>();
+ }
+}
+
+bool VideoItem::start(const QVideoSurfaceFormat &format)
+{
+ if (isFormatSupported(format)) {
+ imageFormat = QVideoFrame::imageFormatFromPixelFormat(format.pixelFormat());
+ imageSize = format.frameSize();
+ framePainted = true;
+
+ QAbstractVideoSurface::start(format);
+
+ prepareGeometryChange();
+
+ return true;
+ } else {
+ return false;
+ }
+}
+
+void VideoItem::stop()
+{
+ currentFrame = QVideoFrame();
+ framePainted = false;
+
+ QAbstractVideoSurface::stop();
+}
+
+bool VideoItem::present(const QVideoFrame &frame)
+{
+ if (!framePainted) {
+ if (!QAbstractVideoSurface::isActive())
+ setError(StoppedError);
+
+ return false;
+ } else {
+ currentFrame = frame;
+ framePainted = false;
+
+ update();
+
+ return true;
+ }
+}
diff --git a/examples/multimedia/videographicsitem/videoitem.h b/examples/multimedia/videographicsitem/videoitem.h
new file mode 100644
index 000000000..a0080ac35
--- /dev/null
+++ b/examples/multimedia/videographicsitem/videoitem.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef VIDEOITEM_H
+#define VIDEOITEM_H
+
+#include <QtMultimedia/QAbstractVideoSurface>
+#include <QtGui/QGraphicsItem>
+
+class VideoItem
+ : public QAbstractVideoSurface,
+ public QGraphicsItem
+{
+ Q_OBJECT
+ Q_INTERFACES(QGraphicsItem)
+public:
+ explicit VideoItem(QGraphicsItem *parentItem = 0);
+ ~VideoItem();
+
+ QRectF boundingRect() const;
+ void paint(
+ QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+
+ //video surface
+ QList<QVideoFrame::PixelFormat> supportedPixelFormats(
+ QAbstractVideoBuffer::HandleType handleType = QAbstractVideoBuffer::NoHandle) const;
+
+ bool start(const QVideoSurfaceFormat &format);
+ void stop();
+ bool present(const QVideoFrame &frame);
+
+private:
+ QImage::Format imageFormat;
+ QSize imageSize;
+
+ QVideoFrame currentFrame;
+ bool framePainted;
+};
+
+#endif
+
diff --git a/examples/multimedia/videographicsitem/videoplayer.cpp b/examples/multimedia/videographicsitem/videoplayer.cpp
new file mode 100644
index 000000000..8d6775adb
--- /dev/null
+++ b/examples/multimedia/videographicsitem/videoplayer.cpp
@@ -0,0 +1,221 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "videoplayer.h"
+#include "videoitem.h"
+
+#include <QtMultimedia>
+
+#ifndef QT_NO_OPENGL
+# include <QtOpenGL/QGLWidget>
+#endif
+
+VideoPlayer::VideoPlayer(QWidget *parent, Qt::WindowFlags flags)
+ : QWidget(parent, flags)
+ , videoItem(0)
+ , playButton(0)
+ , positionSlider(0)
+{
+ connect(&movie, SIGNAL(stateChanged(QMovie::MovieState)),
+ this, SLOT(movieStateChanged(QMovie::MovieState)));
+ connect(&movie, SIGNAL(frameChanged(int)),
+ this, SLOT(frameChanged(int)));
+
+ videoItem = new VideoItem;
+
+ QGraphicsScene *scene = new QGraphicsScene(this);
+ QGraphicsView *graphicsView = new QGraphicsView(scene);
+
+#ifndef QT_NO_OPENGL
+ graphicsView->setViewport(new QGLWidget);
+#endif
+
+ scene->addItem(videoItem);
+
+ QSlider *rotateSlider = new QSlider(Qt::Horizontal);
+ rotateSlider->setRange(-180, 180);
+ rotateSlider->setValue(0);
+
+ connect(rotateSlider, SIGNAL(valueChanged(int)),
+ this, SLOT(rotateVideo(int)));
+
+ QAbstractButton *openButton = new QPushButton(tr("Open..."));
+ connect(openButton, SIGNAL(clicked()), this, SLOT(openFile()));
+
+ playButton = new QPushButton;
+ playButton->setEnabled(false);
+ playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
+
+ connect(playButton, SIGNAL(clicked()),
+ this, SLOT(play()));
+
+ positionSlider = new QSlider(Qt::Horizontal);
+ positionSlider->setRange(0, 0);
+
+ connect(positionSlider, SIGNAL(sliderMoved(int)),
+ this, SLOT(setPosition(int)));
+
+ connect(&movie, SIGNAL(frameChanged(int)),
+ positionSlider, SLOT(setValue(int)));
+
+ QBoxLayout *controlLayout = new QHBoxLayout;
+ controlLayout->setMargin(0);
+ controlLayout->addWidget(openButton);
+ controlLayout->addWidget(playButton);
+ controlLayout->addWidget(positionSlider);
+
+ QBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(graphicsView);
+ layout->addWidget(rotateSlider);
+ layout->addLayout(controlLayout);
+
+ setLayout(layout);
+}
+
+VideoPlayer::~VideoPlayer()
+{
+}
+
+void VideoPlayer::openFile()
+{
+ QStringList supportedFormats;
+ foreach (QString fmt, QMovie::supportedFormats())
+ supportedFormats << fmt;
+ foreach (QString fmt, QImageReader::supportedImageFormats())
+ supportedFormats << fmt;
+
+ QString filter = "Images (";
+ foreach ( QString fmt, supportedFormats) {
+ filter.append(QString("*.%1 ").arg(fmt));
+ }
+ filter.append(")");
+
+ QString fileName = QFileDialog::getOpenFileName(this, tr("Open Movie"),
+ QDir::homePath(), filter);
+
+ if (!fileName.isEmpty()) {
+ videoItem->stop();
+
+ movie.setFileName(fileName);
+
+ playButton->setEnabled(true);
+ positionSlider->setMaximum(movie.frameCount());
+
+ movie.jumpToFrame(0);
+ }
+}
+
+void VideoPlayer::play()
+{
+ switch(movie.state()) {
+ case QMovie::NotRunning:
+ movie.start();
+ break;
+ case QMovie::Paused:
+ movie.setPaused(false);
+ break;
+ case QMovie::Running:
+ movie.setPaused(true);
+ break;
+ }
+}
+
+void VideoPlayer::movieStateChanged(QMovie::MovieState state)
+{
+ switch(state) {
+ case QMovie::NotRunning:
+ case QMovie::Paused:
+ playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
+ break;
+ case QMovie::Running:
+ playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPause));
+ break;
+ }
+}
+
+void VideoPlayer::frameChanged(int frame)
+{
+ if (!presentImage(movie.currentImage())) {
+ movie.stop();
+ playButton->setEnabled(false);
+ positionSlider->setMaximum(0);
+ } else {
+ positionSlider->setValue(frame);
+ }
+}
+
+void VideoPlayer::setPosition(int frame)
+{
+ movie.jumpToFrame(frame);
+}
+
+void VideoPlayer::rotateVideo(int angle)
+{
+ //rotate around the center of video element
+ qreal x = videoItem->boundingRect().width() / 2.0;
+ qreal y = videoItem->boundingRect().height() / 2.0;
+ videoItem->setTransform(QTransform().translate(x, y).rotate(angle).translate(-x, -y));
+}
+
+bool VideoPlayer::presentImage(const QImage &image)
+{
+ QVideoFrame frame(image);
+
+ if (!frame.isValid())
+ return false;
+
+ QVideoSurfaceFormat currentFormat = videoItem->surfaceFormat();
+
+ if (frame.pixelFormat() != currentFormat.pixelFormat()
+ || frame.size() != currentFormat.frameSize()) {
+ QVideoSurfaceFormat format(frame.size(), frame.pixelFormat());
+
+ if (!videoItem->start(format))
+ return false;
+ }
+
+ if (!videoItem->present(frame)) {
+ videoItem->stop();
+
+ return false;
+ } else {
+ return true;
+ }
+}
diff --git a/examples/multimedia/videographicsitem/videoplayer.h b/examples/multimedia/videographicsitem/videoplayer.h
new file mode 100644
index 000000000..33c3d26f1
--- /dev/null
+++ b/examples/multimedia/videographicsitem/videoplayer.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef VIDEOPLAYER_H
+#define VIDEOPLAYER_H
+
+#include <QtGui/QMovie>
+#include <QtGui/QWidget>
+
+QT_BEGIN_NAMESPACE
+class QAbstractButton;
+class QAbstractVideoSurface;
+class QSlider;
+QT_END_NAMESPACE
+
+
+class VideoItem;
+
+class VideoPlayer : public QWidget
+{
+ Q_OBJECT
+public:
+ VideoPlayer(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+ ~VideoPlayer();
+
+ QSize sizeHint() const { return QSize(800, 600); }
+
+public slots:
+ void openFile();
+ void play();
+
+private slots:
+ void movieStateChanged(QMovie::MovieState state);
+ void frameChanged(int frame);
+ void setPosition(int frame);
+ void rotateVideo(int angle);
+
+private:
+ bool presentImage(const QImage &image);
+
+ QMovie movie;
+ VideoItem *videoItem;
+ QAbstractButton *playButton;
+ QSlider *positionSlider;
+};
+
+#endif
+
diff --git a/examples/multimedia/videowidget/main.cpp b/examples/multimedia/videowidget/main.cpp
new file mode 100644
index 000000000..b1d3524ea
--- /dev/null
+++ b/examples/multimedia/videowidget/main.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "videoplayer.h"
+
+#include <QtGui/QApplication>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ VideoPlayer player;
+ player.show();
+
+ return app.exec();
+}
diff --git a/examples/multimedia/videowidget/videoplayer.cpp b/examples/multimedia/videowidget/videoplayer.cpp
new file mode 100644
index 000000000..3bc18303c
--- /dev/null
+++ b/examples/multimedia/videowidget/videoplayer.cpp
@@ -0,0 +1,194 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "videoplayer.h"
+
+#include "videowidget.h"
+
+#include <QtMultimedia>
+
+VideoPlayer::VideoPlayer(QWidget *parent)
+ : QWidget(parent)
+ , surface(0)
+ , playButton(0)
+ , positionSlider(0)
+{
+ connect(&movie, SIGNAL(stateChanged(QMovie::MovieState)),
+ this, SLOT(movieStateChanged(QMovie::MovieState)));
+ connect(&movie, SIGNAL(frameChanged(int)),
+ this, SLOT(frameChanged(int)));
+
+ VideoWidget *videoWidget = new VideoWidget;
+ surface = videoWidget->videoSurface();
+
+ QAbstractButton *openButton = new QPushButton(tr("Open..."));
+ connect(openButton, SIGNAL(clicked()), this, SLOT(openFile()));
+
+ playButton = new QPushButton;
+ playButton->setEnabled(false);
+ playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
+
+ connect(playButton, SIGNAL(clicked()),
+ this, SLOT(play()));
+
+ positionSlider = new QSlider(Qt::Horizontal);
+ positionSlider->setRange(0, 0);
+
+ connect(positionSlider, SIGNAL(sliderMoved(int)),
+ this, SLOT(setPosition(int)));
+
+ connect(&movie, SIGNAL(frameChanged(int)),
+ positionSlider, SLOT(setValue(int)));
+
+ QBoxLayout *controlLayout = new QHBoxLayout;
+ controlLayout->setMargin(0);
+ controlLayout->addWidget(openButton);
+ controlLayout->addWidget(playButton);
+ controlLayout->addWidget(positionSlider);
+
+ QBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(videoWidget);
+ layout->addLayout(controlLayout);
+
+ setLayout(layout);
+}
+
+VideoPlayer::~VideoPlayer()
+{
+}
+
+void VideoPlayer::openFile()
+{
+ QStringList supportedFormats;
+ foreach (QString fmt, QMovie::supportedFormats())
+ supportedFormats << fmt;
+ foreach (QString fmt, QImageReader::supportedImageFormats())
+ supportedFormats << fmt;
+
+ QString filter = "Images (";
+ foreach ( QString fmt, supportedFormats) {
+ filter.append(QString("*.%1 ").arg(fmt));
+ }
+ filter.append(")");
+
+ QString fileName = QFileDialog::getOpenFileName(this, tr("Open Movie"),
+ QDir::homePath(), filter);
+
+ if (!fileName.isEmpty()) {
+ surface->stop();
+
+ movie.setFileName(fileName);
+
+ playButton->setEnabled(true);
+ positionSlider->setMaximum(movie.frameCount());
+
+ movie.jumpToFrame(0);
+ }
+}
+
+void VideoPlayer::play()
+{
+ switch(movie.state()) {
+ case QMovie::NotRunning:
+ movie.start();
+ break;
+ case QMovie::Paused:
+ movie.setPaused(false);
+ break;
+ case QMovie::Running:
+ movie.setPaused(true);
+ break;
+ }
+}
+
+void VideoPlayer::movieStateChanged(QMovie::MovieState state)
+{
+ switch(state) {
+ case QMovie::NotRunning:
+ case QMovie::Paused:
+ playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
+ break;
+ case QMovie::Running:
+ playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPause));
+ break;
+ }
+}
+
+void VideoPlayer::frameChanged(int frame)
+{
+ if (!presentImage(movie.currentImage())) {
+ movie.stop();
+ playButton->setEnabled(false);
+ positionSlider->setMaximum(0);
+ } else {
+ positionSlider->setValue(frame);
+ }
+}
+
+void VideoPlayer::setPosition(int frame)
+{
+ movie.jumpToFrame(frame);
+}
+
+bool VideoPlayer::presentImage(const QImage &image)
+{
+ QVideoFrame frame(image);
+
+ if (!frame.isValid())
+ return false;
+
+ QVideoSurfaceFormat currentFormat = surface->surfaceFormat();
+
+ if (frame.pixelFormat() != currentFormat.pixelFormat()
+ || frame.size() != currentFormat.frameSize()) {
+ QVideoSurfaceFormat format(frame.size(), frame.pixelFormat());
+
+ if (!surface->start(format))
+ return false;
+ }
+
+ if (!surface->present(frame)) {
+ surface->stop();
+
+ return false;
+ } else {
+ return true;
+ }
+}
diff --git a/examples/multimedia/videowidget/videoplayer.h b/examples/multimedia/videowidget/videoplayer.h
new file mode 100644
index 000000000..11bec4a66
--- /dev/null
+++ b/examples/multimedia/videowidget/videoplayer.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef VIDEOPLAYER_H
+#define VIDEOPLAYER_H
+
+#include <QtGui/QMovie>
+#include <QtGui/QWidget>
+
+QT_BEGIN_NAMESPACE
+class QAbstractButton;
+class QAbstractVideoSurface;
+class QSlider;
+QT_END_NAMESPACE
+
+class VideoPlayer : public QWidget
+{
+ Q_OBJECT
+public:
+ VideoPlayer(QWidget *parent = 0);
+ ~VideoPlayer();
+
+public slots:
+ void openFile();
+ void play();
+
+private slots:
+ void movieStateChanged(QMovie::MovieState state);
+ void frameChanged(int frame);
+ void setPosition(int frame);
+
+private:
+ bool presentImage(const QImage &image);
+
+ QMovie movie;
+ QAbstractVideoSurface *surface;
+ QAbstractButton *playButton;
+ QSlider *positionSlider;
+};
+
+#endif
diff --git a/examples/multimedia/videowidget/videowidget.cpp b/examples/multimedia/videowidget/videowidget.cpp
new file mode 100644
index 000000000..23b49f7df
--- /dev/null
+++ b/examples/multimedia/videowidget/videowidget.cpp
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "videowidget.h"
+
+#include "videowidgetsurface.h"
+
+#include <QtMultimedia>
+
+//! [0]
+VideoWidget::VideoWidget(QWidget *parent)
+ : QWidget(parent)
+ , surface(0)
+{
+ setAutoFillBackground(false);
+ setAttribute(Qt::WA_NoSystemBackground, true);
+ setAttribute(Qt::WA_PaintOnScreen, true);
+
+ QPalette palette = this->palette();
+ palette.setColor(QPalette::Background, Qt::black);
+ setPalette(palette);
+
+ setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+
+ surface = new VideoWidgetSurface(this);
+}
+//! [0]
+
+//! [1]
+VideoWidget::~VideoWidget()
+{
+ delete surface;
+}
+//! [1]
+
+//! [2]
+QSize VideoWidget::sizeHint() const
+{
+ return surface->surfaceFormat().sizeHint();
+}
+//! [2]
+
+
+//! [3]
+void VideoWidget::paintEvent(QPaintEvent *event)
+{
+ QPainter painter(this);
+
+ if (surface->isActive()) {
+ const QRect videoRect = surface->videoRect();
+
+ if (!videoRect.contains(event->rect())) {
+ QRegion region = event->region();
+ region.subtract(videoRect);
+
+ QBrush brush = palette().background();
+
+ foreach (const QRect &rect, region.rects())
+ painter.fillRect(rect, brush);
+ }
+
+ surface->paint(&painter);
+ } else {
+ painter.fillRect(event->rect(), palette().background());
+ }
+}
+//! [3]
+
+//! [4]
+void VideoWidget::resizeEvent(QResizeEvent *event)
+{
+ QWidget::resizeEvent(event);
+
+ surface->updateVideoRect();
+}
+//! [4]
diff --git a/examples/multimedia/videowidget/videowidget.h b/examples/multimedia/videowidget/videowidget.h
new file mode 100644
index 000000000..c2b722b56
--- /dev/null
+++ b/examples/multimedia/videowidget/videowidget.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef VIDEOWIDGET_H
+#define VIDEOWIDGET_H
+
+#include "videowidgetsurface.h"
+
+#include <QtGui/QWidget>
+
+QT_BEGIN_NAMESPACE
+class QAbstractVideoSurface;
+QT_END_NAMESPACE
+
+class VideoWidgetSurface;
+
+//! [0]
+class VideoWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ VideoWidget(QWidget *parent = 0);
+ ~VideoWidget();
+
+ QAbstractVideoSurface *videoSurface() const { return surface; }
+
+ QSize sizeHint() const;
+
+protected:
+ void paintEvent(QPaintEvent *event);
+ void resizeEvent(QResizeEvent *event);
+
+private:
+ VideoWidgetSurface *surface;
+};
+//! [0]
+
+#endif
diff --git a/examples/multimedia/videowidget/videowidget.pro b/examples/multimedia/videowidget/videowidget.pro
new file mode 100644
index 000000000..e4447960c
--- /dev/null
+++ b/examples/multimedia/videowidget/videowidget.pro
@@ -0,0 +1,25 @@
+TEMPLATE = app
+
+QT += multimedia
+
+HEADERS = \
+ videoplayer.h \
+ videowidget.h \
+ videowidgetsurface.h
+
+SOURCES = \
+ main.cpp \
+ videoplayer.cpp \
+ videowidget.cpp \
+ videowidgetsurface.cpp
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia/videowidget
+sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png images
+sources.path = $$[QT_INSTALL_EXAMPLES]/qtmultimedia/multimedia/videowidget
+INSTALLS += target sources
+
+symbian {
+ TARGET.UID3 = 0xA000D7C3
+ include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
+}
diff --git a/examples/multimedia/videowidget/videowidgetsurface.cpp b/examples/multimedia/videowidget/videowidgetsurface.cpp
new file mode 100644
index 000000000..b53771698
--- /dev/null
+++ b/examples/multimedia/videowidget/videowidgetsurface.cpp
@@ -0,0 +1,174 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "videowidgetsurface.h"
+
+#include <QtMultimedia>
+
+VideoWidgetSurface::VideoWidgetSurface(QWidget *widget, QObject *parent)
+ : QAbstractVideoSurface(parent)
+ , widget(widget)
+ , imageFormat(QImage::Format_Invalid)
+{
+}
+
+//! [0]
+QList<QVideoFrame::PixelFormat> VideoWidgetSurface::supportedPixelFormats(
+ QAbstractVideoBuffer::HandleType handleType) const
+{
+ if (handleType == QAbstractVideoBuffer::NoHandle) {
+ return QList<QVideoFrame::PixelFormat>()
+ << QVideoFrame::Format_RGB32
+ << QVideoFrame::Format_ARGB32
+ << QVideoFrame::Format_ARGB32_Premultiplied
+ << QVideoFrame::Format_RGB565
+ << QVideoFrame::Format_RGB555;
+ } else {
+ return QList<QVideoFrame::PixelFormat>();
+ }
+}
+//! [0]
+
+//! [1]
+bool VideoWidgetSurface::isFormatSupported(
+ const QVideoSurfaceFormat &format, QVideoSurfaceFormat *similar) const
+{
+ Q_UNUSED(similar);
+
+ const QImage::Format imageFormat = QVideoFrame::imageFormatFromPixelFormat(format.pixelFormat());
+ const QSize size = format.frameSize();
+
+ return imageFormat != QImage::Format_Invalid
+ && !size.isEmpty()
+ && format.handleType() == QAbstractVideoBuffer::NoHandle;
+}
+//! [1]
+
+//! [2]
+bool VideoWidgetSurface::start(const QVideoSurfaceFormat &format)
+{
+ const QImage::Format imageFormat = QVideoFrame::imageFormatFromPixelFormat(format.pixelFormat());
+ const QSize size = format.frameSize();
+
+ if (imageFormat != QImage::Format_Invalid && !size.isEmpty()) {
+ this->imageFormat = imageFormat;
+ imageSize = size;
+ sourceRect = format.viewport();
+
+ QAbstractVideoSurface::start(format);
+
+ widget->updateGeometry();
+ updateVideoRect();
+
+ return true;
+ } else {
+ return false;
+ }
+}
+//! [2]
+
+//! [3]
+void VideoWidgetSurface::stop()
+{
+ currentFrame = QVideoFrame();
+ targetRect = QRect();
+
+ QAbstractVideoSurface::stop();
+
+ widget->update();
+}
+//! [3]
+
+//! [4]
+bool VideoWidgetSurface::present(const QVideoFrame &frame)
+{
+ if (surfaceFormat().pixelFormat() != frame.pixelFormat()
+ || surfaceFormat().frameSize() != frame.size()) {
+ setError(IncorrectFormatError);
+ stop();
+
+ return false;
+ } else {
+ currentFrame = frame;
+
+ widget->repaint(targetRect);
+
+ return true;
+ }
+}
+//! [4]
+
+//! [5]
+void VideoWidgetSurface::updateVideoRect()
+{
+ QSize size = surfaceFormat().sizeHint();
+ size.scale(widget->size().boundedTo(size), Qt::KeepAspectRatio);
+
+ targetRect = QRect(QPoint(0, 0), size);
+ targetRect.moveCenter(widget->rect().center());
+}
+//! [5]
+
+//! [6]
+void VideoWidgetSurface::paint(QPainter *painter)
+{
+ if (currentFrame.map(QAbstractVideoBuffer::ReadOnly)) {
+ const QTransform oldTransform = painter->transform();
+
+ if (surfaceFormat().scanLineDirection() == QVideoSurfaceFormat::BottomToTop) {
+ painter->scale(1, -1);
+ painter->translate(0, -widget->height());
+ }
+
+ QImage image(
+ currentFrame.bits(),
+ currentFrame.width(),
+ currentFrame.height(),
+ currentFrame.bytesPerLine(),
+ imageFormat);
+
+ painter->drawImage(targetRect, image, sourceRect);
+
+ painter->setTransform(oldTransform);
+
+ currentFrame.unmap();
+ }
+}
+//! [6]
diff --git a/examples/multimedia/videowidget/videowidgetsurface.h b/examples/multimedia/videowidget/videowidgetsurface.h
new file mode 100644
index 000000000..603442123
--- /dev/null
+++ b/examples/multimedia/videowidget/videowidgetsurface.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef VIDEOWIDGETSURFACE_H
+#define VIDEOWIDGETSURFACE_H
+
+#include <QtCore/QRect>
+#include <QtGui/QImage>
+#include <QtMultimedia/QAbstractVideoSurface>
+#include <QtMultimedia/QVideoFrame>
+
+//! [0]
+class VideoWidgetSurface : public QAbstractVideoSurface
+{
+ Q_OBJECT
+public:
+ VideoWidgetSurface(QWidget *widget, QObject *parent = 0);
+
+ QList<QVideoFrame::PixelFormat> supportedPixelFormats(
+ QAbstractVideoBuffer::HandleType handleType = QAbstractVideoBuffer::NoHandle) const;
+ bool isFormatSupported(const QVideoSurfaceFormat &format, QVideoSurfaceFormat *similar) const;
+
+ bool start(const QVideoSurfaceFormat &format);
+ void stop();
+
+ bool present(const QVideoFrame &frame);
+
+ QRect videoRect() const { return targetRect; }
+ void updateVideoRect();
+
+ void paint(QPainter *painter);
+
+private:
+ QWidget *widget;
+ QImage::Format imageFormat;
+ QRect targetRect;
+ QSize imageSize;
+ QRect sourceRect;
+ QVideoFrame currentFrame;
+};
+//! [0]
+
+#endif
diff --git a/qtmultimedia.pro b/qtmultimedia.pro
new file mode 100644
index 000000000..bbaaa7af8
--- /dev/null
+++ b/qtmultimedia.pro
@@ -0,0 +1,22 @@
+TEMPLATE = subdirs
+
+module_qtmultimedia_src.subdir = src
+module_qtmultimedia_src.target = module-qtmultimedia-src
+
+module_qtmultimedia_demos.subdir = demos
+module_qtmultimedia_demos.target = module-qtmultimedia-demos
+module_qtmultimedia_demos.depends = module_qtmultimedia_src
+
+module_qtmultimedia_examples.subdir = examples
+module_qtmultimedia_examples.target = module-qtmultimedia-examples
+module_qtmultimedia_examples.depends = module_qtmultimedia_src
+
+module_qtmultimedia_tests.subdir = tests
+module_qtmultimedia_tests.target = module-qtmultimedia-tests
+module_qtmultimedia_tests.depends = module_qtmultimedia_src
+module_qtmultimedia_tests.CONFIG = no_default_target no_default_install
+
+SUBDIRS += module_qtmultimedia_src \
+ module_qtmultimedia_demos \
+ module_qtmultimedia_examples \
+ module_qtmultimedia_tests \
diff --git a/src/multimedia/audio/audio.pri b/src/multimedia/audio/audio.pri
new file mode 100644
index 000000000..7b2f9ad72
--- /dev/null
+++ b/src/multimedia/audio/audio.pri
@@ -0,0 +1,73 @@
+HEADERS += $$PWD/qaudio.h \
+ $$PWD/qaudioformat.h \
+ $$PWD/qaudioinput.h \
+ $$PWD/qaudiooutput.h \
+ $$PWD/qaudiodeviceinfo.h \
+ $$PWD/qaudioengineplugin.h \
+ $$PWD/qaudioengine.h \
+ $$PWD/qaudiodevicefactory_p.h
+
+
+SOURCES += $$PWD/qaudio.cpp \
+ $$PWD/qaudioformat.cpp \
+ $$PWD/qaudiodeviceinfo.cpp \
+ $$PWD/qaudiooutput.cpp \
+ $$PWD/qaudioinput.cpp \
+ $$PWD/qaudioengineplugin.cpp \
+ $$PWD/qaudioengine.cpp \
+ $$PWD/qaudiodevicefactory.cpp
+
+contains(QT_CONFIG, audio-backend) {
+
+mac {
+ HEADERS += $$PWD/qaudioinput_mac_p.h \
+ $$PWD/qaudiooutput_mac_p.h \
+ $$PWD/qaudiodeviceinfo_mac_p.h \
+ $$PWD/qaudio_mac_p.h
+
+ SOURCES += $$PWD/qaudiodeviceinfo_mac_p.cpp \
+ $$PWD/qaudiooutput_mac_p.cpp \
+ $$PWD/qaudioinput_mac_p.cpp \
+ $$PWD/qaudio_mac.cpp
+
+ LIBS += -framework ApplicationServices -framework CoreAudio -framework AudioUnit -framework AudioToolbox
+
+} else:win32 {
+
+ HEADERS += $$PWD/qaudioinput_win32_p.h $$PWD/qaudiooutput_win32_p.h $$PWD/qaudiodeviceinfo_win32_p.h
+ SOURCES += $$PWD/qaudiodeviceinfo_win32_p.cpp \
+ $$PWD/qaudiooutput_win32_p.cpp \
+ $$PWD/qaudioinput_win32_p.cpp
+ !wince*:LIBS += -lwinmm
+ wince*:LIBS += -lcoredll
+
+} else:symbian {
+ INCLUDEPATH += $${EPOCROOT}epoc32/include/mmf/common
+ INCLUDEPATH += $${EPOCROOT}epoc32/include/mmf/server
+
+ HEADERS += $$PWD/qaudio_symbian_p.h \
+ $$PWD/qaudiodeviceinfo_symbian_p.h \
+ $$PWD/qaudioinput_symbian_p.h \
+ $$PWD/qaudiooutput_symbian_p.h
+
+ SOURCES += $$PWD/qaudio_symbian_p.cpp \
+ $$PWD/qaudiodeviceinfo_symbian_p.cpp \
+ $$PWD/qaudioinput_symbian_p.cpp \
+ $$PWD/qaudiooutput_symbian_p.cpp
+
+ LIBS += -lmmfdevsound
+} else:unix {
+ unix:contains(QT_CONFIG, alsa) {
+ linux-*|freebsd-*|openbsd-*:{
+ DEFINES += HAS_ALSA
+ HEADERS += $$PWD/qaudiooutput_alsa_p.h $$PWD/qaudioinput_alsa_p.h $$PWD/qaudiodeviceinfo_alsa_p.h
+ SOURCES += $$PWD/qaudiodeviceinfo_alsa_p.cpp \
+ $$PWD/qaudiooutput_alsa_p.cpp \
+ $$PWD/qaudioinput_alsa_p.cpp
+ LIBS_PRIVATE += -lasound
+ }
+ }
+}
+} else {
+ DEFINES += QT_NO_AUDIO_BACKEND
+}
diff --git a/src/multimedia/audio/qaudio.cpp b/src/multimedia/audio/qaudio.cpp
new file mode 100644
index 000000000..52714c799
--- /dev/null
+++ b/src/multimedia/audio/qaudio.cpp
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtMultimedia/qaudio.h>
+
+
+QT_BEGIN_NAMESPACE
+
+namespace QAudio
+{
+
+class RegisterMetaTypes
+{
+public:
+ RegisterMetaTypes()
+ {
+ qRegisterMetaType<QAudio::Error>();
+ qRegisterMetaType<QAudio::State>();
+ qRegisterMetaType<QAudio::Mode>();
+ }
+
+} _register;
+
+}
+
+/*!
+ \namespace QAudio
+ \brief The QAudio namespace contains enums used by the audio classes.
+ \inmodule QtMultimedia
+ \ingroup multimedia
+ \since 4.6
+*/
+
+/*!
+ \enum QAudio::Error
+
+ \value NoError No errors have occurred
+ \value OpenError An error opening the audio device
+ \value IOError An error occurred during read/write of audio device
+ \value UnderrunError Audio data is not being fed to the audio device at a fast enough rate
+ \value FatalError A non-recoverable error has occurred, the audio device is not usable at this time.
+*/
+
+/*!
+ \enum QAudio::State
+
+ \value ActiveState Audio data is being processed, this state is set after start() is called
+ and while audio data is available to be processed.
+ \value SuspendedState The audio device is in a suspended state, this state will only be entered
+ after suspend() is called.
+ \value StoppedState The audio device is closed, not processing any audio data
+ \value IdleState The QIODevice passed in has no data and audio system's buffer is empty, this state
+ is set after start() is called and while no audio data is available to be processed.
+*/
+
+/*!
+ \enum QAudio::Mode
+
+ \value AudioOutput audio output device
+ \value AudioInput audio input device
+*/
+
+
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/audio/qaudio.h b/src/multimedia/audio/qaudio.h
new file mode 100644
index 000000000..00eb50993
--- /dev/null
+++ b/src/multimedia/audio/qaudio.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QAUDIO_H
+#define QAUDIO_H
+
+
+#include <QtCore/qglobal.h>
+#include <QtCore/qmetatype.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+namespace QAudio
+{
+ enum Error { NoError, OpenError, IOError, UnderrunError, FatalError };
+ enum State { ActiveState, SuspendedState, StoppedState, IdleState };
+ enum Mode { AudioInput, AudioOutput };
+}
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+Q_DECLARE_METATYPE(QAudio::Error)
+Q_DECLARE_METATYPE(QAudio::State)
+Q_DECLARE_METATYPE(QAudio::Mode)
+
+#endif // QAUDIO_H
diff --git a/src/multimedia/audio/qaudio_mac.cpp b/src/multimedia/audio/qaudio_mac.cpp
new file mode 100644
index 000000000..71c93482e
--- /dev/null
+++ b/src/multimedia/audio/qaudio_mac.cpp
@@ -0,0 +1,145 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "qaudio_mac_p.h"
+
+QT_BEGIN_NAMESPACE
+
+// Debugging
+QDebug operator<<(QDebug dbg, const QAudioFormat& audioFormat)
+{
+ dbg.nospace() << "QAudioFormat(" <<
+ audioFormat.frequency() << "," <<
+ audioFormat.channels() << "," <<
+ audioFormat.sampleSize()<< "," <<
+ audioFormat.codec() << "," <<
+ audioFormat.byteOrder() << "," <<
+ audioFormat.sampleType() << ")";
+
+ return dbg.space();
+}
+
+
+// Conversion
+QAudioFormat toQAudioFormat(AudioStreamBasicDescription const& sf)
+{
+ QAudioFormat audioFormat;
+
+ audioFormat.setFrequency(sf.mSampleRate);
+ audioFormat.setChannels(sf.mChannelsPerFrame);
+ audioFormat.setSampleSize(sf.mBitsPerChannel);
+ audioFormat.setCodec(QString::fromLatin1("audio/pcm"));
+ audioFormat.setByteOrder((sf.mFormatFlags & kAudioFormatFlagIsBigEndian) != 0 ? QAudioFormat::BigEndian : QAudioFormat::LittleEndian);
+ QAudioFormat::SampleType type = QAudioFormat::UnSignedInt;
+ if ((sf.mFormatFlags & kAudioFormatFlagIsSignedInteger) != 0)
+ type = QAudioFormat::SignedInt;
+ else if ((sf.mFormatFlags & kAudioFormatFlagIsFloat) != 0)
+ type = QAudioFormat::Float;
+ audioFormat.setSampleType(type);
+
+ return audioFormat;
+}
+
+AudioStreamBasicDescription toAudioStreamBasicDescription(QAudioFormat const& audioFormat)
+{
+ AudioStreamBasicDescription sf;
+
+ sf.mFormatFlags = kAudioFormatFlagIsPacked;
+ sf.mSampleRate = audioFormat.frequency();
+ sf.mFramesPerPacket = 1;
+ sf.mChannelsPerFrame = audioFormat.channels();
+ sf.mBitsPerChannel = audioFormat.sampleSize();
+ sf.mBytesPerFrame = sf.mChannelsPerFrame * (sf.mBitsPerChannel / 8);
+ sf.mBytesPerPacket = sf.mFramesPerPacket * sf.mBytesPerFrame;
+ sf.mFormatID = kAudioFormatLinearPCM;
+
+ switch (audioFormat.sampleType()) {
+ case QAudioFormat::SignedInt: sf.mFormatFlags |= kAudioFormatFlagIsSignedInteger; break;
+ case QAudioFormat::UnSignedInt: /* default */ break;
+ case QAudioFormat::Float: sf.mFormatFlags |= kAudioFormatFlagIsFloat; break;
+ case QAudioFormat::Unknown: default: break;
+ }
+
+ if (audioFormat.byteOrder() == QAudioFormat::BigEndian)
+ sf.mFormatFlags |= kAudioFormatFlagIsBigEndian;
+
+ return sf;
+}
+
+// QAudioRingBuffer
+QAudioRingBuffer::QAudioRingBuffer(int bufferSize):
+ m_bufferSize(bufferSize)
+{
+ m_buffer = new char[m_bufferSize];
+ reset();
+}
+
+QAudioRingBuffer::~QAudioRingBuffer()
+{
+ delete m_buffer;
+}
+
+int QAudioRingBuffer::used() const
+{
+ return m_bufferUsed;
+}
+
+int QAudioRingBuffer::free() const
+{
+ return m_bufferSize - m_bufferUsed;
+}
+
+int QAudioRingBuffer::size() const
+{
+ return m_bufferSize;
+}
+
+void QAudioRingBuffer::reset()
+{
+ m_readPos = 0;
+ m_writePos = 0;
+ m_bufferUsed = 0;
+}
+
+QT_END_NAMESPACE
+
+
diff --git a/src/multimedia/audio/qaudio_mac_p.h b/src/multimedia/audio/qaudio_mac_p.h
new file mode 100644
index 000000000..a125da5c0
--- /dev/null
+++ b/src/multimedia/audio/qaudio_mac_p.h
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+
+#ifndef QAUDIO_MAC_P_H
+#define QAUDIO_MAC_P_H
+
+#include <CoreAudio/CoreAudio.h>
+
+#include <QtCore/qdebug.h>
+#include <QtCore/qatomic.h>
+
+#include <QtMultimedia/qaudioformat.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+extern QDebug operator<<(QDebug dbg, const QAudioFormat& audioFormat);
+
+extern QAudioFormat toQAudioFormat(const AudioStreamBasicDescription& streamFormat);
+extern AudioStreamBasicDescription toAudioStreamBasicDescription(QAudioFormat const& audioFormat);
+
+class QAudioRingBuffer
+{
+public:
+ typedef QPair<char*, int> Region;
+
+ QAudioRingBuffer(int bufferSize);
+ ~QAudioRingBuffer();
+
+ Region acquireReadRegion(int size)
+ {
+ const int used = m_bufferUsed.fetchAndAddAcquire(0);
+
+ if (used > 0) {
+ const int readSize = qMin(size, qMin(m_bufferSize - m_readPos, used));
+
+ return readSize > 0 ? Region(m_buffer + m_readPos, readSize) : Region(0, 0);
+ }
+
+ return Region(0, 0);
+ }
+
+ void releaseReadRegion(Region const& region)
+ {
+ m_readPos = (m_readPos + region.second) % m_bufferSize;
+
+ m_bufferUsed.fetchAndAddRelease(-region.second);
+ }
+
+ Region acquireWriteRegion(int size)
+ {
+ const int free = m_bufferSize - m_bufferUsed.fetchAndAddAcquire(0);
+
+ if (free > 0) {
+ const int writeSize = qMin(size, qMin(m_bufferSize - m_writePos, free));
+
+ return writeSize > 0 ? Region(m_buffer + m_writePos, writeSize) : Region(0, 0);
+ }
+
+ return Region(0, 0);
+ }
+
+ void releaseWriteRegion(Region const& region)
+ {
+ m_writePos = (m_writePos + region.second) % m_bufferSize;
+
+ m_bufferUsed.fetchAndAddRelease(region.second);
+ }
+
+ int used() const;
+ int free() const;
+ int size() const;
+
+ void reset();
+
+private:
+ int m_bufferSize;
+ int m_readPos;
+ int m_writePos;
+ char* m_buffer;
+ QAtomicInt m_bufferUsed;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QAUDIO_MAC_P_H
+
+
diff --git a/src/multimedia/audio/qaudio_symbian_p.cpp b/src/multimedia/audio/qaudio_symbian_p.cpp
new file mode 100644
index 000000000..a6cd46ef4
--- /dev/null
+++ b/src/multimedia/audio/qaudio_symbian_p.cpp
@@ -0,0 +1,644 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qaudio_symbian_p.h"
+#include <mmffourcc.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace SymbianAudio {
+namespace Utils {
+
+//-----------------------------------------------------------------------------
+// Static data
+//-----------------------------------------------------------------------------
+
+// Sample rate / frequency
+
+typedef TMMFSampleRate SampleRateNative;
+typedef int SampleRateQt;
+
+const int SampleRateCount = 12;
+
+const SampleRateNative SampleRateListNative[SampleRateCount] = {
+ EMMFSampleRate8000Hz
+ , EMMFSampleRate11025Hz
+ , EMMFSampleRate12000Hz
+ , EMMFSampleRate16000Hz
+ , EMMFSampleRate22050Hz
+ , EMMFSampleRate24000Hz
+ , EMMFSampleRate32000Hz
+ , EMMFSampleRate44100Hz
+ , EMMFSampleRate48000Hz
+ , EMMFSampleRate64000Hz
+ , EMMFSampleRate88200Hz
+ , EMMFSampleRate96000Hz
+};
+
+const SampleRateQt SampleRateListQt[SampleRateCount] = {
+ 8000
+ , 11025
+ , 12000
+ , 16000
+ , 22050
+ , 24000
+ , 32000
+ , 44100
+ , 48000
+ , 64000
+ , 88200
+ , 96000
+};
+
+// Channels
+
+typedef TMMFMonoStereo ChannelsNative;
+typedef int ChannelsQt;
+
+const int ChannelsCount = 2;
+
+const ChannelsNative ChannelsListNative[ChannelsCount] = {
+ EMMFMono
+ , EMMFStereo
+};
+
+const ChannelsQt ChannelsListQt[ChannelsCount] = {
+ 1
+ , 2
+};
+
+// Encoding
+
+const int EncodingCount = 6;
+
+const TUint32 EncodingFourCC[EncodingCount] = {
+ KMMFFourCCCodePCM8 // 0
+ , KMMFFourCCCodePCMU8 // 1
+ , KMMFFourCCCodePCM16 // 2
+ , KMMFFourCCCodePCMU16 // 3
+ , KMMFFourCCCodePCM16B // 4
+ , KMMFFourCCCodePCMU16B // 5
+};
+
+// The characterised DevSound API specification states that the iEncoding
+// field in TMMFCapabilities is ignored, and that the FourCC should be used
+// to specify the PCM encoding.
+// See "SGL.GT0287.102 Multimedia DevSound Baseline Compatibility.doc" in the
+// mm_info/mm_docs repository.
+const TMMFSoundEncoding EncodingNative[EncodingCount] = {
+ EMMFSoundEncoding16BitPCM // 0
+ , EMMFSoundEncoding16BitPCM // 1
+ , EMMFSoundEncoding16BitPCM // 2
+ , EMMFSoundEncoding16BitPCM // 3
+ , EMMFSoundEncoding16BitPCM // 4
+ , EMMFSoundEncoding16BitPCM // 5
+};
+
+
+const int EncodingSampleSize[EncodingCount] = {
+ 8 // 0
+ , 8 // 1
+ , 16 // 2
+ , 16 // 3
+ , 16 // 4
+ , 16 // 5
+};
+
+const QAudioFormat::Endian EncodingByteOrder[EncodingCount] = {
+ QAudioFormat::LittleEndian // 0
+ , QAudioFormat::LittleEndian // 1
+ , QAudioFormat::LittleEndian // 2
+ , QAudioFormat::LittleEndian // 3
+ , QAudioFormat::BigEndian // 4
+ , QAudioFormat::BigEndian // 5
+};
+
+const QAudioFormat::SampleType EncodingSampleType[EncodingCount] = {
+ QAudioFormat::SignedInt // 0
+ , QAudioFormat::UnSignedInt // 1
+ , QAudioFormat::SignedInt // 2
+ , QAudioFormat::UnSignedInt // 3
+ , QAudioFormat::SignedInt // 4
+ , QAudioFormat::UnSignedInt // 5
+};
+
+
+//-----------------------------------------------------------------------------
+// Private functions
+//-----------------------------------------------------------------------------
+
+// Helper functions for implementing parameter conversions
+
+template<typename Input>
+bool findValue(const Input *inputArray, int length, Input input, int &index) {
+ bool result = false;
+ for (int i=0; !result && i<length; ++i)
+ if (inputArray[i] == input) {
+ index = i;
+ result = true;
+ }
+ return result;
+}
+
+template<typename Input, typename Output>
+bool convertValue(const Input *inputArray, const Output *outputArray,
+ int length, Input input, Output &output) {
+ int index;
+ const bool result = findValue<Input>(inputArray, length, input, index);
+ if (result)
+ output = outputArray[index];
+ return result;
+}
+
+/**
+ * Macro which is used to generate the implementation of the conversion
+ * functions. The implementation is just a wrapper around the templated
+ * convertValue function, e.g.
+ *
+ * CONVERSION_FUNCTION_IMPL(SampleRate, Qt, Native)
+ *
+ * expands to
+ *
+ * bool SampleRateQtToNative(int input, TMMFSampleRate &output) {
+ * return convertValue<SampleRateQt, SampleRateNative>
+ * (SampleRateListQt, SampleRateListNative, SampleRateCount,
+ * input, output);
+ * }
+ */
+#define CONVERSION_FUNCTION_IMPL(FieldLc, Field, Input, Output) \
+bool FieldLc##Input##To##Output(Field##Input input, Field##Output &output) { \
+ return convertValue<Field##Input, Field##Output>(Field##List##Input, \
+ Field##List##Output, Field##Count, input, output); \
+}
+
+//-----------------------------------------------------------------------------
+// Local helper functions
+//-----------------------------------------------------------------------------
+
+CONVERSION_FUNCTION_IMPL(sampleRate, SampleRate, Qt, Native)
+CONVERSION_FUNCTION_IMPL(sampleRate, SampleRate, Native, Qt)
+CONVERSION_FUNCTION_IMPL(channels, Channels, Qt, Native)
+CONVERSION_FUNCTION_IMPL(channels, Channels, Native, Qt)
+
+bool sampleInfoQtToNative(int inputSampleSize,
+ QAudioFormat::Endian inputByteOrder,
+ QAudioFormat::SampleType inputSampleType,
+ TUint32 &outputFourCC,
+ TMMFSoundEncoding &outputEncoding) {
+
+ bool found = false;
+
+ for (int i=0; i<EncodingCount && !found; ++i) {
+ if ( EncodingSampleSize[i] == inputSampleSize
+ && EncodingByteOrder[i] == inputByteOrder
+ && EncodingSampleType[i] == inputSampleType) {
+ outputFourCC = EncodingFourCC[i];
+ outputEncoding = EncodingNative[i]; // EMMFSoundEncoding16BitPCM
+ found = true;
+ }
+ }
+
+ return found;
+}
+
+void capabilitiesNativeToQt(const TMMFCapabilities &caps,
+ const TFourCC &fourcc,
+ QList<int> &frequencies,
+ QList<int> &channels,
+ QList<int> &sampleSizes,
+ QList<QAudioFormat::Endian> &byteOrders,
+ QList<QAudioFormat::SampleType> &sampleTypes) {
+
+ frequencies.clear();
+ sampleSizes.clear();
+ byteOrders.clear();
+ sampleTypes.clear();
+ channels.clear();
+
+ for (int i=0; i<SampleRateCount; ++i)
+ if (caps.iRate & SampleRateListNative[i])
+ frequencies += SampleRateListQt[i];
+
+ for (int i=0; i<ChannelsCount; ++i)
+ if (caps.iChannels & ChannelsListNative[i])
+ channels += ChannelsListQt[i];
+
+ for (int i=0; i<EncodingCount; ++i) {
+ if (fourcc == EncodingFourCC[i]) {
+ sampleSizes += EncodingSampleSize[i];
+ byteOrders += EncodingByteOrder[i];
+ sampleTypes += EncodingSampleType[i];
+ }
+ }
+}
+
+bool formatQtToNative(const QAudioFormat &inputFormat,
+ TUint32 &outputFourCC,
+ TMMFCapabilities &outputFormat) {
+
+ bool result = false;
+
+ // Need to use temporary variables because TMMFCapabilities fields are all
+ // TInt, rather than MMF enumerated types.
+ TMMFSampleRate outputSampleRate;
+ TMMFMonoStereo outputChannels;
+ TMMFSoundEncoding outputEncoding;
+
+ if (inputFormat.codec() == QLatin1String("audio/pcm")) {
+ result =
+ sampleRateQtToNative(inputFormat.frequency(), outputSampleRate)
+ && channelsQtToNative(inputFormat.channels(), outputChannels)
+ && sampleInfoQtToNative(inputFormat.sampleSize(),
+ inputFormat.byteOrder(),
+ inputFormat.sampleType(),
+ outputFourCC,
+ outputEncoding);
+ }
+
+ if (result) {
+ outputFormat.iRate = outputSampleRate;
+ outputFormat.iChannels = outputChannels;
+ outputFormat.iEncoding = outputEncoding;
+ }
+
+ return result;
+}
+
+QAudio::State stateNativeToQt(State nativeState)
+{
+ switch (nativeState) {
+ case ClosedState:
+ return QAudio::StoppedState;
+ case InitializingState:
+ return QAudio::StoppedState;
+ case ActiveState:
+ return QAudio::ActiveState;
+ case IdleState:
+ return QAudio::IdleState;
+ case SuspendedPausedState:
+ case SuspendedStoppedState:
+ return QAudio::SuspendedState;
+ default:
+ Q_ASSERT_X(false, Q_FUNC_INFO, "Invalid state");
+ return QAudio::StoppedState; // suppress compiler warning
+ }
+}
+
+qint64 bytesToSamples(const QAudioFormat &format, qint64 length)
+{
+ return length / ((format.sampleSize() / 8) * format.channels());
+}
+
+qint64 samplesToBytes(const QAudioFormat &format, qint64 samples)
+{
+ return samples * (format.sampleSize() / 8) * format.channels();
+}
+
+} // namespace Utils
+
+
+//-----------------------------------------------------------------------------
+// DevSoundWrapper
+//-----------------------------------------------------------------------------
+
+DevSoundWrapper::DevSoundWrapper(QAudio::Mode mode, QObject *parent)
+ : QObject(parent)
+ , m_mode(mode)
+ , m_state(StateIdle)
+ , m_devsound(0)
+ , m_fourcc(0)
+{
+ QT_TRAP_THROWING(m_devsound = CMMFDevSound::NewL());
+
+ switch (mode) {
+ case QAudio::AudioOutput:
+ m_nativeMode = EMMFStatePlaying;
+ break;
+
+ case QAudio::AudioInput:
+ m_nativeMode = EMMFStateRecording;
+ break;
+
+ default:
+ Q_ASSERT_X(false, Q_FUNC_INFO, "Invalid mode");
+ }
+
+ getSupportedCodecs();
+}
+
+DevSoundWrapper::~DevSoundWrapper()
+{
+ delete m_devsound;
+}
+
+const QList<QString>& DevSoundWrapper::supportedCodecs() const
+{
+ return m_supportedCodecs;
+}
+
+void DevSoundWrapper::initialize(const QString& codec)
+{
+ Q_ASSERT(StateInitializing != m_state);
+ m_state = StateInitializing;
+ if (QLatin1String("audio/pcm") == codec) {
+ m_fourcc = KMMFFourCCCodePCM16;
+ TRAPD(err, m_devsound->InitializeL(*this, m_fourcc, m_nativeMode));
+ if (KErrNone != err) {
+ m_state = StateIdle;
+ emit initializeComplete(err);
+ }
+ } else {
+ emit initializeComplete(KErrNotSupported);
+ }
+}
+
+const QList<int>& DevSoundWrapper::supportedFrequencies() const
+{
+ Q_ASSERT(StateInitialized == m_state);
+ return m_supportedFrequencies;
+}
+
+const QList<int>& DevSoundWrapper::supportedChannels() const
+{
+ Q_ASSERT(StateInitialized == m_state);
+ return m_supportedChannels;
+}
+
+const QList<int>& DevSoundWrapper::supportedSampleSizes() const
+{
+ Q_ASSERT(StateInitialized == m_state);
+ return m_supportedSampleSizes;
+}
+
+const QList<QAudioFormat::Endian>& DevSoundWrapper::supportedByteOrders() const
+{
+ Q_ASSERT(StateInitialized == m_state);
+ return m_supportedByteOrders;
+}
+
+const QList<QAudioFormat::SampleType>& DevSoundWrapper::supportedSampleTypes() const
+{
+ Q_ASSERT(StateInitialized == m_state);
+ return m_supportedSampleTypes;
+}
+
+bool DevSoundWrapper::isFormatSupported(const QAudioFormat &format) const
+{
+ Q_ASSERT(StateInitialized == m_state);
+ return m_supportedCodecs.contains(format.codec())
+ && m_supportedFrequencies.contains(format.frequency())
+ && m_supportedChannels.contains(format.channels())
+ && m_supportedSampleSizes.contains(format.sampleSize())
+ && m_supportedSampleTypes.contains(format.sampleType())
+ && m_supportedByteOrders.contains(format.byteOrder());
+}
+
+int DevSoundWrapper::samplesProcessed() const
+{
+ int result = 0;
+ if (StateInitialized == m_state) {
+ switch (m_mode) {
+ case QAudio::AudioInput:
+ result = m_devsound->SamplesRecorded();
+ break;
+ case QAudio::AudioOutput:
+ result = m_devsound->SamplesPlayed();
+ break;
+ }
+ }
+ return result;
+}
+
+bool DevSoundWrapper::setFormat(const QAudioFormat &format)
+{
+ Q_ASSERT(StateInitialized == m_state);
+ bool result = false;
+ TUint32 fourcc;
+ TMMFCapabilities nativeFormat;
+ if (Utils::formatQtToNative(format, fourcc, nativeFormat)) {
+ TMMFCapabilities currentNativeFormat = m_devsound->Config();
+ nativeFormat.iBufferSize = currentNativeFormat.iBufferSize;
+ TRAPD(err, m_devsound->SetConfigL(nativeFormat));
+ result = (KErrNone == err);
+ }
+ return result;
+}
+
+bool DevSoundWrapper::start()
+{
+ Q_ASSERT(StateInitialized == m_state);
+ int err = KErrArgument;
+ switch (m_mode) {
+ case QAudio::AudioInput:
+ TRAP(err, m_devsound->RecordInitL());
+ break;
+ case QAudio::AudioOutput:
+ TRAP(err, m_devsound->PlayInitL());
+ break;
+ }
+ return (KErrNone == err);
+}
+
+bool DevSoundWrapper::pause()
+{
+ Q_ASSERT(StateInitialized == m_state);
+ const bool canPause = isResumeSupported();
+ if (canPause)
+ m_devsound->Pause();
+ else
+ stop();
+ return canPause;
+}
+
+void DevSoundWrapper::resume()
+{
+ Q_ASSERT(StateInitialized == m_state);
+ Q_ASSERT(isResumeSupported());
+ // TODO: QTBUG-13625
+}
+
+void DevSoundWrapper::stop()
+{
+ m_devsound->Stop();
+}
+
+void DevSoundWrapper::bufferProcessed()
+{
+ Q_ASSERT(StateInitialized == m_state);
+ switch (m_mode) {
+ case QAudio::AudioInput:
+ m_devsound->RecordData();
+ break;
+ case QAudio::AudioOutput:
+ m_devsound->PlayData();
+ break;
+ }
+}
+
+void DevSoundWrapper::getSupportedCodecs()
+{
+/*
+ * TODO: once we support formats other than PCM, this function should
+ * convert the array of FourCC codes into MIME types for each codec.
+ *
+ RArray<TFourCC> fourcc;
+ QT_TRAP_THROWING(CleanupClosePushL(&fourcc));
+
+ TMMFPrioritySettings settings;
+ switch (mode) {
+ case QAudio::AudioOutput:
+ settings.iState = EMMFStatePlaying;
+ m_devsound->GetSupportedInputDataTypesL(fourcc, settings);
+ break;
+
+ case QAudio::AudioInput:
+ settings.iState = EMMFStateRecording;
+ m_devsound->GetSupportedInputDataTypesL(fourcc, settings);
+ break;
+
+ default:
+ Q_ASSERT_X(false, Q_FUNC_INFO, "Invalid mode");
+ }
+
+ CleanupStack::PopAndDestroy(); // fourcc
+*/
+
+ m_supportedCodecs.append(QLatin1String("audio/pcm"));
+}
+
+void DevSoundWrapper::populateCapabilities()
+{
+ m_supportedFrequencies.clear();
+ m_supportedChannels.clear();
+ m_supportedSampleSizes.clear();
+ m_supportedByteOrders.clear();
+ m_supportedSampleTypes.clear();
+
+ const TMMFCapabilities caps = m_devsound->Capabilities();
+
+ for (int i=0; i<Utils::SampleRateCount; ++i)
+ if (caps.iRate & Utils::SampleRateListNative[i])
+ m_supportedFrequencies += Utils::SampleRateListQt[i];
+
+ for (int i=0; i<Utils::ChannelsCount; ++i)
+ if (caps.iChannels & Utils::ChannelsListNative[i])
+ m_supportedChannels += Utils::ChannelsListQt[i];
+
+ for (int i=0; i<Utils::EncodingCount; ++i) {
+ if (m_fourcc == Utils::EncodingFourCC[i]) {
+ m_supportedSampleSizes += Utils::EncodingSampleSize[i];
+ m_supportedByteOrders += Utils::EncodingByteOrder[i];
+ m_supportedSampleTypes += Utils::EncodingSampleType[i];
+ }
+ }
+}
+
+bool DevSoundWrapper::isResumeSupported() const
+{
+ // TODO: QTBUG-13625
+ return false;
+}
+
+void DevSoundWrapper::InitializeComplete(TInt aError)
+{
+ Q_ASSERT(StateInitializing == m_state);
+ if (KErrNone == aError) {
+ m_state = StateInitialized;
+ populateCapabilities();
+ } else {
+ m_state = StateIdle;
+ }
+ emit initializeComplete(aError);
+}
+
+void DevSoundWrapper::ToneFinished(TInt aError)
+{
+ Q_UNUSED(aError)
+ // This class doesn't use DevSound's tone playback functions, so should
+ // never receive this callback.
+ Q_ASSERT_X(false, Q_FUNC_INFO, "Unexpected callback");
+}
+
+void DevSoundWrapper::BufferToBeFilled(CMMFBuffer *aBuffer)
+{
+ Q_ASSERT(QAudio::AudioOutput == m_mode);
+ emit bufferToBeProcessed(aBuffer);
+}
+
+void DevSoundWrapper::PlayError(TInt aError)
+{
+ Q_ASSERT(QAudio::AudioOutput == m_mode);
+ emit processingError(aError);
+}
+
+void DevSoundWrapper::BufferToBeEmptied(CMMFBuffer *aBuffer)
+{
+ Q_ASSERT(QAudio::AudioInput == m_mode);
+ emit bufferToBeProcessed(aBuffer);
+}
+
+void DevSoundWrapper::RecordError(TInt aError)
+{
+ Q_ASSERT(QAudio::AudioInput == m_mode);
+ emit processingError(aError);
+}
+
+void DevSoundWrapper::ConvertError(TInt aError)
+{
+ Q_UNUSED(aError)
+ // This class doesn't use DevSound's format conversion functions, so
+ // should never receive this callback.
+ Q_ASSERT_X(false, Q_FUNC_INFO, "Unexpected callback");
+}
+
+void DevSoundWrapper::DeviceMessage(TUid aMessageType, const TDesC8 &aMsg)
+{
+ Q_UNUSED(aMessageType)
+ Q_UNUSED(aMsg)
+ // Ignore this callback.
+}
+
+
+} // namespace SymbianAudio
+
+QT_END_NAMESPACE
+
+
diff --git a/src/multimedia/audio/qaudio_symbian_p.h b/src/multimedia/audio/qaudio_symbian_p.h
new file mode 100644
index 000000000..f978ee817
--- /dev/null
+++ b/src/multimedia/audio/qaudio_symbian_p.h
@@ -0,0 +1,200 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QAUDIO_SYMBIAN_P_H
+#define QAUDIO_SYMBIAN_P_H
+
+#include <QtCore/QList>
+#include <QtCore/QString>
+#include <QtMultimedia/qaudioformat.h>
+#include <QtMultimedia/qaudio.h>
+#include <sounddevice.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace SymbianAudio {
+
+/**
+ * Default values used by audio input and output classes, when underlying
+ * DevSound instance has not yet been created.
+ */
+
+const int DefaultBufferSize = 4096; // bytes
+const int DefaultNotifyInterval = 1000; // ms
+
+/**
+ * Enumeration used to track state of internal DevSound instances.
+ * Values are translated to the corresponding QAudio::State values by
+ * SymbianAudio::Utils::stateNativeToQt.
+ */
+enum State {
+ ClosedState
+ , InitializingState
+ , ActiveState
+ , IdleState
+ // QAudio is suspended; DevSound is paused
+ , SuspendedPausedState
+ // QAudio is suspended; DevSound is stopped
+ , SuspendedStoppedState
+};
+
+/**
+ * Wrapper around DevSound instance
+ */
+class DevSoundWrapper
+ : public QObject
+ , public MDevSoundObserver
+{
+ Q_OBJECT
+
+public:
+ DevSoundWrapper(QAudio::Mode mode, QObject *parent = 0);
+ ~DevSoundWrapper();
+
+public:
+ // List of supported codecs; can be called once object is constructed
+ const QList<QString>& supportedCodecs() const;
+
+ // Asynchronous initialization function; emits devsoundInitializeComplete
+ void initialize(const QString& codec);
+
+ // Capabilities, for selected codec. Can be called once initialize has returned
+ // successfully.
+ const QList<int>& supportedFrequencies() const;
+ const QList<int>& supportedChannels() const;
+ const QList<int>& supportedSampleSizes() const;
+ const QList<QAudioFormat::Endian>& supportedByteOrders() const;
+ const QList<QAudioFormat::SampleType>& supportedSampleTypes() const;
+
+ bool isFormatSupported(const QAudioFormat &format) const;
+
+ int samplesProcessed() const;
+ bool setFormat(const QAudioFormat &format);
+ bool start();
+
+ // If DevSound implementation supports pause, calls pause and returns true.
+ // Otherwise calls stop and returns false. In this case, all DevSound buffers
+ // currently held by the backend must be discarded.
+ bool pause();
+
+ void resume();
+
+ void stop();
+ void bufferProcessed();
+
+public:
+ // MDevSoundObserver
+ void InitializeComplete(TInt aError);
+ void ToneFinished(TInt aError);
+ void BufferToBeFilled(CMMFBuffer *aBuffer);
+ void PlayError(TInt aError);
+ void BufferToBeEmptied(CMMFBuffer *aBuffer);
+ void RecordError(TInt aError);
+ void ConvertError(TInt aError);
+ void DeviceMessage(TUid aMessageType, const TDesC8 &aMsg);
+
+signals:
+ void initializeComplete(int error);
+ void bufferToBeProcessed(CMMFBuffer *buffer);
+ void processingError(int error);
+
+private:
+ void getSupportedCodecs();
+ void populateCapabilities();
+ bool isResumeSupported() const;
+
+private:
+ const QAudio::Mode m_mode;
+ TMMFState m_nativeMode;
+
+ enum State {
+ StateIdle,
+ StateInitializing,
+ StateInitialized
+ } m_state;
+
+ CMMFDevSound* m_devsound;
+ TFourCC m_fourcc;
+
+ QList<QString> m_supportedCodecs;
+ QList<int> m_supportedFrequencies;
+ QList<int> m_supportedChannels;
+ QList<int> m_supportedSampleSizes;
+ QList<QAudioFormat::Endian> m_supportedByteOrders;
+ QList<QAudioFormat::SampleType> m_supportedSampleTypes;
+
+};
+
+
+namespace Utils {
+
+/**
+ * Convert internal states to QAudio states.
+ */
+QAudio::State stateNativeToQt(State nativeState);
+
+/**
+ * Convert data length to number of samples.
+ */
+qint64 bytesToSamples(const QAudioFormat &format, qint64 length);
+
+/**
+ * Convert number of samples to data length.
+ */
+qint64 samplesToBytes(const QAudioFormat &format, qint64 samples);
+
+} // namespace Utils
+} // namespace SymbianAudio
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/audio/qaudiodevicefactory.cpp b/src/multimedia/audio/qaudiodevicefactory.cpp
new file mode 100644
index 000000000..8274b9767
--- /dev/null
+++ b/src/multimedia/audio/qaudiodevicefactory.cpp
@@ -0,0 +1,269 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/qdebug.h>
+#include <QtMultimedia/qaudioengine.h>
+#include <QtMultimedia/qaudioengineplugin.h>
+#include <private/qfactoryloader_p.h>
+#include "qaudiodevicefactory_p.h"
+
+#ifndef QT_NO_AUDIO_BACKEND
+#if defined(Q_OS_WIN)
+#include "qaudiodeviceinfo_win32_p.h"
+#include "qaudiooutput_win32_p.h"
+#include "qaudioinput_win32_p.h"
+#elif defined(Q_OS_MAC)
+#include "qaudiodeviceinfo_mac_p.h"
+#include "qaudiooutput_mac_p.h"
+#include "qaudioinput_mac_p.h"
+#elif defined(HAS_ALSA)
+#include "qaudiodeviceinfo_alsa_p.h"
+#include "qaudiooutput_alsa_p.h"
+#include "qaudioinput_alsa_p.h"
+#elif defined(Q_OS_SYMBIAN)
+#include "qaudiodeviceinfo_symbian_p.h"
+#include "qaudiooutput_symbian_p.h"
+#include "qaudioinput_symbian_p.h"
+#endif
+#endif
+
+QT_BEGIN_NAMESPACE
+
+
+#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
+Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
+ (QAudioEngineFactoryInterface_iid, QLatin1String("/audio"), Qt::CaseInsensitive))
+#endif
+
+class QNullDeviceInfo : public QAbstractAudioDeviceInfo
+{
+public:
+ QAudioFormat preferredFormat() const { qWarning()<<"using null deviceinfo, none available"; return QAudioFormat(); }
+ bool isFormatSupported(const QAudioFormat& ) const { return false; }
+ QAudioFormat nearestFormat(const QAudioFormat& ) const { return QAudioFormat(); }
+ QString deviceName() const { return QString(); }
+ QStringList codecList() { return QStringList(); }
+ QList<int> frequencyList() { return QList<int>(); }
+ QList<int> channelsList() { return QList<int>(); }
+ QList<int> sampleSizeList() { return QList<int>(); }
+ QList<QAudioFormat::Endian> byteOrderList() { return QList<QAudioFormat::Endian>(); }
+ QList<QAudioFormat::SampleType> sampleTypeList() { return QList<QAudioFormat::SampleType>(); }
+};
+
+class QNullInputDevice : public QAbstractAudioInput
+{
+public:
+ QIODevice* start(QIODevice* ) { qWarning()<<"using null input device, none available"; return 0; }
+ void stop() {}
+ void reset() {}
+ void suspend() {}
+ void resume() {}
+ int bytesReady() const { return 0; }
+ int periodSize() const { return 0; }
+ void setBufferSize(int ) {}
+ int bufferSize() const { return 0; }
+ void setNotifyInterval(int ) {}
+ int notifyInterval() const { return 0; }
+ qint64 processedUSecs() const { return 0; }
+ qint64 elapsedUSecs() const { return 0; }
+ QAudio::Error error() const { return QAudio::OpenError; }
+ QAudio::State state() const { return QAudio::StoppedState; }
+ QAudioFormat format() const { return QAudioFormat(); }
+};
+
+class QNullOutputDevice : public QAbstractAudioOutput
+{
+public:
+ QIODevice* start(QIODevice* ) { qWarning()<<"using null output device, none available"; return 0; }
+ void stop() {}
+ void reset() {}
+ void suspend() {}
+ void resume() {}
+ int bytesFree() const { return 0; }
+ int periodSize() const { return 0; }
+ void setBufferSize(int ) {}
+ int bufferSize() const { return 0; }
+ void setNotifyInterval(int ) {}
+ int notifyInterval() const { return 0; }
+ qint64 processedUSecs() const { return 0; }
+ qint64 elapsedUSecs() const { return 0; }
+ QAudio::Error error() const { return QAudio::OpenError; }
+ QAudio::State state() const { return QAudio::StoppedState; }
+ QAudioFormat format() const { return QAudioFormat(); }
+};
+
+QList<QAudioDeviceInfo> QAudioDeviceFactory::availableDevices(QAudio::Mode mode)
+{
+ QList<QAudioDeviceInfo> devices;
+#ifndef QT_NO_AUDIO_BACKEND
+#if (defined(Q_OS_WIN) || defined(Q_OS_MAC) || defined(HAS_ALSA) || defined(Q_OS_SYMBIAN))
+ foreach (const QByteArray &handle, QAudioDeviceInfoInternal::availableDevices(mode))
+ devices << QAudioDeviceInfo(QLatin1String("builtin"), handle, mode);
+#endif
+#endif
+#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
+ QFactoryLoader* l = loader();
+
+ foreach (QString const& key, l->keys()) {
+ QAudioEngineFactoryInterface* plugin = qobject_cast<QAudioEngineFactoryInterface*>(l->instance(key));
+ if (plugin) {
+ foreach (QByteArray const& handle, plugin->availableDevices(mode))
+ devices << QAudioDeviceInfo(key, handle, mode);
+ }
+
+ delete plugin;
+ }
+#endif
+ return devices;
+}
+
+QAudioDeviceInfo QAudioDeviceFactory::defaultInputDevice()
+{
+#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
+ QAudioEngineFactoryInterface* plugin = qobject_cast<QAudioEngineFactoryInterface*>(loader()->instance(QLatin1String("default")));
+
+ if (plugin) {
+ QList<QByteArray> list = plugin->availableDevices(QAudio::AudioInput);
+ if (list.size() > 0)
+ return QAudioDeviceInfo(QLatin1String("default"), list.at(0), QAudio::AudioInput);
+ }
+#endif
+
+#ifndef QT_NO_AUDIO_BACKEND
+#if (defined(Q_OS_WIN) || defined(Q_OS_MAC) || defined(HAS_ALSA) || defined(Q_OS_SYMBIAN))
+ return QAudioDeviceInfo(QLatin1String("builtin"), QAudioDeviceInfoInternal::defaultInputDevice(), QAudio::AudioInput);
+#endif
+#endif
+ return QAudioDeviceInfo();
+}
+
+QAudioDeviceInfo QAudioDeviceFactory::defaultOutputDevice()
+{
+#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
+ QAudioEngineFactoryInterface* plugin = qobject_cast<QAudioEngineFactoryInterface*>(loader()->instance(QLatin1String("default")));
+
+ if (plugin) {
+ QList<QByteArray> list = plugin->availableDevices(QAudio::AudioOutput);
+ if (list.size() > 0)
+ return QAudioDeviceInfo(QLatin1String("default"), list.at(0), QAudio::AudioOutput);
+ }
+#endif
+
+#ifndef QT_NO_AUDIO_BACKEND
+#if (defined(Q_OS_WIN) || defined(Q_OS_MAC) || defined(HAS_ALSA) || defined(Q_OS_SYMBIAN))
+ return QAudioDeviceInfo(QLatin1String("builtin"), QAudioDeviceInfoInternal::defaultOutputDevice(), QAudio::AudioOutput);
+#endif
+#endif
+ return QAudioDeviceInfo();
+}
+
+QAbstractAudioDeviceInfo* QAudioDeviceFactory::audioDeviceInfo(const QString &realm, const QByteArray &handle, QAudio::Mode mode)
+{
+ QAbstractAudioDeviceInfo *rc = 0;
+
+#ifndef QT_NO_AUDIO_BACKEND
+#if (defined(Q_OS_WIN) || defined(Q_OS_MAC) || defined(HAS_ALSA) || defined(Q_OS_SYMBIAN))
+ if (realm == QLatin1String("builtin"))
+ return new QAudioDeviceInfoInternal(handle, mode);
+#endif
+#endif
+#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
+ QAudioEngineFactoryInterface* plugin =
+ qobject_cast<QAudioEngineFactoryInterface*>(loader()->instance(realm));
+
+ if (plugin)
+ rc = plugin->createDeviceInfo(handle, mode);
+#endif
+ return rc == 0 ? new QNullDeviceInfo() : rc;
+}
+
+QAbstractAudioInput* QAudioDeviceFactory::createDefaultInputDevice(QAudioFormat const &format)
+{
+ return createInputDevice(defaultInputDevice(), format);
+}
+
+QAbstractAudioOutput* QAudioDeviceFactory::createDefaultOutputDevice(QAudioFormat const &format)
+{
+ return createOutputDevice(defaultOutputDevice(), format);
+}
+
+QAbstractAudioInput* QAudioDeviceFactory::createInputDevice(QAudioDeviceInfo const& deviceInfo, QAudioFormat const &format)
+{
+ if (deviceInfo.isNull())
+ return new QNullInputDevice();
+#ifndef QT_NO_AUDIO_BACKEND
+#if (defined(Q_OS_WIN) || defined(Q_OS_MAC) || defined(HAS_ALSA) || defined(Q_OS_SYMBIAN))
+ if (deviceInfo.realm() == QLatin1String("builtin"))
+ return new QAudioInputPrivate(deviceInfo.handle(), format);
+#endif
+#endif
+#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
+ QAudioEngineFactoryInterface* plugin =
+ qobject_cast<QAudioEngineFactoryInterface*>(loader()->instance(deviceInfo.realm()));
+
+ if (plugin)
+ return plugin->createInput(deviceInfo.handle(), format);
+#endif
+ return new QNullInputDevice();
+}
+
+QAbstractAudioOutput* QAudioDeviceFactory::createOutputDevice(QAudioDeviceInfo const& deviceInfo, QAudioFormat const &format)
+{
+ if (deviceInfo.isNull())
+ return new QNullOutputDevice();
+#ifndef QT_NO_AUDIO_BACKEND
+#if (defined(Q_OS_WIN) || defined(Q_OS_MAC) || defined(HAS_ALSA) || defined(Q_OS_SYMBIAN))
+ if (deviceInfo.realm() == QLatin1String("builtin"))
+ return new QAudioOutputPrivate(deviceInfo.handle(), format);
+#endif
+#endif
+#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
+ QAudioEngineFactoryInterface* plugin =
+ qobject_cast<QAudioEngineFactoryInterface*>(loader()->instance(deviceInfo.realm()));
+
+ if (plugin)
+ return plugin->createOutput(deviceInfo.handle(), format);
+#endif
+ return new QNullOutputDevice();
+}
+
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/audio/qaudiodevicefactory_p.h b/src/multimedia/audio/qaudiodevicefactory_p.h
new file mode 100644
index 000000000..13467b939
--- /dev/null
+++ b/src/multimedia/audio/qaudiodevicefactory_p.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QAUDIODEVICEFACTORY_P_H
+#define QAUDIODEVICEFACTORY_P_H
+
+#include <QtCore/qglobal.h>
+#include <QtCore/qbytearray.h>
+#include <QtCore/qlist.h>
+
+#include <QtMultimedia/qaudiodeviceinfo.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QAbstractAudioInput;
+class QAbstractAudioOutput;
+class QAbstractAudioDeviceInfo;
+
+class QAudioDeviceFactory
+{
+public:
+ static QList<QAudioDeviceInfo> availableDevices(QAudio::Mode mode);
+
+ static QAudioDeviceInfo defaultInputDevice();
+ static QAudioDeviceInfo defaultOutputDevice();
+
+ static QAbstractAudioDeviceInfo* audioDeviceInfo(const QString &realm, const QByteArray &handle, QAudio::Mode mode);
+
+ static QAbstractAudioInput* createDefaultInputDevice(QAudioFormat const &format);
+ static QAbstractAudioOutput* createDefaultOutputDevice(QAudioFormat const &format);
+
+ static QAbstractAudioInput* createInputDevice(QAudioDeviceInfo const &device, QAudioFormat const &format);
+ static QAbstractAudioOutput* createOutputDevice(QAudioDeviceInfo const &device, QAudioFormat const &format);
+
+ static QAbstractAudioInput* createNullInput();
+ static QAbstractAudioOutput* createNullOutput();
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QAUDIODEVICEFACTORY_P_H
+
diff --git a/src/multimedia/audio/qaudiodeviceinfo.cpp b/src/multimedia/audio/qaudiodeviceinfo.cpp
new file mode 100644
index 000000000..8c3cea4d7
--- /dev/null
+++ b/src/multimedia/audio/qaudiodeviceinfo.cpp
@@ -0,0 +1,460 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qaudiodevicefactory_p.h"
+#include <QtMultimedia/qaudioengine.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+
+#include <QtCore/qmap.h>
+
+QT_BEGIN_NAMESPACE
+
+class QAudioDeviceInfoPrivate : public QSharedData
+{
+public:
+ QAudioDeviceInfoPrivate():info(0) {}
+ QAudioDeviceInfoPrivate(const QString &r, const QByteArray &h, QAudio::Mode m):
+ realm(r), handle(h), mode(m)
+ {
+ info = QAudioDeviceFactory::audioDeviceInfo(realm, handle, mode);
+ }
+
+ QAudioDeviceInfoPrivate(const QAudioDeviceInfoPrivate &other):
+ QSharedData(other),
+ realm(other.realm), handle(other.handle), mode(other.mode)
+ {
+ info = QAudioDeviceFactory::audioDeviceInfo(realm, handle, mode);
+ }
+
+ QAudioDeviceInfoPrivate& operator=(const QAudioDeviceInfoPrivate &other)
+ {
+ delete info;
+
+ realm = other.realm;
+ handle = other.handle;
+ mode = other.mode;
+ info = QAudioDeviceFactory::audioDeviceInfo(realm, handle, mode);
+ return *this;
+ }
+
+ ~QAudioDeviceInfoPrivate()
+ {
+ delete info;
+ }
+
+ QString realm;
+ QByteArray handle;
+ QAudio::Mode mode;
+ QAbstractAudioDeviceInfo* info;
+};
+
+
+/*!
+ \class QAudioDeviceInfo
+ \brief The QAudioDeviceInfo class provides an interface to query audio devices and their functionality.
+ \inmodule QtMultimedia
+ \ingroup multimedia
+
+ \since 4.6
+
+ QAudioDeviceInfo lets you query for audio devices--such as sound
+ cards and USB headsets--that are currently available on the system.
+ The audio devices available are dependent on the platform or audio plugins installed.
+
+ You can also query each device for the formats it supports. A
+ format in this context is a set consisting of a specific byte
+ order, channel, codec, frequency, sample rate, and sample type. A
+ format is represented by the QAudioFormat class.
+
+ The values supported by the the device for each of these
+ parameters can be fetched with
+ supportedByteOrders(), supportedChannelCounts(), supportedCodecs(),
+ supportedSampleRates(), supportedSampleSizes(), and
+ supportedSampleTypes(). The combinations supported are dependent on the platform,
+ audio plugins installed and the audio device capabilities. If you need a specific format, you can check if
+ the device supports it with isFormatSupported(), or fetch a
+ supported format that is as close as possible to the format with
+ nearestFormat(). For instance:
+
+ \snippet doc/src/snippets/audio/main.cpp 1
+ \dots 8
+ \snippet doc/src/snippets/audio/main.cpp 2
+
+ A QAudioDeviceInfo is used by Qt to construct
+ classes that communicate with the device--such as
+ QAudioInput, and QAudioOutput. The static
+ functions defaultInputDevice(), defaultOutputDevice(), and
+ availableDevices() let you get a list of all available
+ devices. Devices are fetch according to the value of mode
+ this is specified by the QAudio::Mode enum.
+ The QAudioDeviceInfo returned are only valid for the QAudio::Mode.
+
+ For instance:
+
+ \code
+ foreach(const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
+ qDebug() << "Device name: " << deviceInfo.deviceName();
+ \endcode
+
+ In this code sample, we loop through all devices that are able to output
+ sound, i.e., play an audio stream in a supported format. For each device we
+ find, we simply print the deviceName().
+
+ \sa QAudioOutput, QAudioInput
+*/
+
+/*!
+ Constructs an empty QAudioDeviceInfo object.
+*/
+
+QAudioDeviceInfo::QAudioDeviceInfo():
+ d(new QAudioDeviceInfoPrivate)
+{
+}
+
+/*!
+ Constructs a copy of \a other.
+*/
+
+QAudioDeviceInfo::QAudioDeviceInfo(const QAudioDeviceInfo& other):
+ d(other.d)
+{
+}
+
+/*!
+ Destroy this audio device info.
+*/
+
+QAudioDeviceInfo::~QAudioDeviceInfo()
+{
+}
+
+/*!
+ Sets the QAudioDeviceInfo object to be equal to \a other.
+*/
+
+QAudioDeviceInfo& QAudioDeviceInfo::operator=(const QAudioDeviceInfo &other)
+{
+ d = other.d;
+ return *this;
+}
+
+/*!
+ Returns whether this QAudioDeviceInfo object holds a device definition.
+*/
+
+bool QAudioDeviceInfo::isNull() const
+{
+ return d->info == 0;
+}
+
+/*!
+ Returns human readable name of audio device.
+
+ Device names vary depending on platform/audio plugin being used.
+
+ They are a unique string identifiers for the audio device.
+
+ eg. default, Intel, U0x46d0x9a4
+*/
+
+QString QAudioDeviceInfo::deviceName() const
+{
+ return isNull() ? QString() : d->info->deviceName();
+}
+
+/*!
+ Returns true if \a settings are supported by the audio device of this QAudioDeviceInfo.
+*/
+
+bool QAudioDeviceInfo::isFormatSupported(const QAudioFormat &settings) const
+{
+ return isNull() ? false : d->info->isFormatSupported(settings);
+}
+
+/*!
+ Returns QAudioFormat of default settings.
+
+ These settings are provided by the platform/audio plugin being used.
+
+ They also are dependent on the QAudio::Mode being used.
+
+ A typical audio system would provide something like:
+ \list
+ \o Input settings: 8000Hz mono 8 bit.
+ \o Output settings: 44100Hz stereo 16 bit little endian.
+ \endlist
+*/
+
+QAudioFormat QAudioDeviceInfo::preferredFormat() const
+{
+ return isNull() ? QAudioFormat() : d->info->preferredFormat();
+}
+
+/*!
+ Returns closest QAudioFormat to \a settings that system audio supports.
+
+ These settings are provided by the platform/audio plugin being used.
+
+ They also are dependent on the QAudio::Mode being used.
+*/
+
+QAudioFormat QAudioDeviceInfo::nearestFormat(const QAudioFormat &settings) const
+{
+ if (isFormatSupported(settings))
+ return settings;
+
+ QAudioFormat nearest = settings;
+
+ nearest.setCodec(QLatin1String("audio/pcm"));
+
+ if (nearest.sampleType() == QAudioFormat::Unknown) {
+ QAudioFormat preferred = preferredFormat();
+ nearest.setSampleType(preferred.sampleType());
+ }
+
+ QMap<int,int> testFrequencies;
+ QList<int> frequenciesAvailable = supportedFrequencies();
+ QMap<int,int> testSampleSizes;
+ QList<int> sampleSizesAvailable = supportedSampleSizes();
+
+ // Get sorted sampleSizes (equal to and ascending values only)
+ if (sampleSizesAvailable.contains(settings.sampleSize()))
+ testSampleSizes.insert(0,settings.sampleSize());
+ sampleSizesAvailable.removeAll(settings.sampleSize());
+ foreach (int size, sampleSizesAvailable) {
+ int larger = (size > settings.sampleSize()) ? size : settings.sampleSize();
+ int smaller = (size > settings.sampleSize()) ? settings.sampleSize() : size;
+ if (size >= settings.sampleSize()) {
+ int diff = larger - smaller;
+ testSampleSizes.insert(diff, size);
+ }
+ }
+
+ // Get sorted frequencies (equal to and ascending values only)
+ if (frequenciesAvailable.contains(settings.frequency()))
+ testFrequencies.insert(0,settings.frequency());
+ frequenciesAvailable.removeAll(settings.frequency());
+ foreach (int frequency, frequenciesAvailable) {
+ int larger = (frequency > settings.frequency()) ? frequency : settings.frequency();
+ int smaller = (frequency > settings.frequency()) ? settings.frequency() : frequency;
+ if (frequency >= settings.frequency()) {
+ int diff = larger - smaller;
+ testFrequencies.insert(diff, frequency);
+ }
+ }
+
+ // Try to find nearest
+ // Check ascending frequencies, ascending sampleSizes
+ QMapIterator<int, int> sz(testSampleSizes);
+ while (sz.hasNext()) {
+ sz.next();
+ nearest.setSampleSize(sz.value());
+ QMapIterator<int, int> i(testFrequencies);
+ while (i.hasNext()) {
+ i.next();
+ nearest.setFrequency(i.value());
+ if (isFormatSupported(nearest))
+ return nearest;
+ }
+ }
+
+ //Fallback
+ return preferredFormat();
+}
+
+/*!
+ Returns a list of supported codecs.
+
+ All platform and plugin implementations should provide support for:
+
+ "audio/pcm" - Linear PCM
+
+ For writing plugins to support additional codecs refer to:
+
+ http://www.iana.org/assignments/media-types/audio/
+*/
+
+QStringList QAudioDeviceInfo::supportedCodecs() const
+{
+ return isNull() ? QStringList() : d->info->codecList();
+}
+
+/*!
+ Returns a list of supported sample rates.
+
+ \since 4.7
+*/
+
+QList<int> QAudioDeviceInfo::supportedSampleRates() const
+{
+ return supportedFrequencies();
+}
+
+/*!
+ \obsolete
+
+ Use supportedSampleRates() instead.
+*/
+
+QList<int> QAudioDeviceInfo::supportedFrequencies() const
+{
+ return isNull() ? QList<int>() : d->info->frequencyList();
+}
+
+/*!
+ Returns a list of supported channel counts.
+
+ \since 4.7
+*/
+
+QList<int> QAudioDeviceInfo::supportedChannelCounts() const
+{
+ return supportedChannels();
+}
+
+/*!
+ \obsolete
+
+ Use supportedChannelCount() instead.
+*/
+
+QList<int> QAudioDeviceInfo::supportedChannels() const
+{
+ return isNull() ? QList<int>() : d->info->channelsList();
+}
+
+/*!
+ Returns a list of supported sample sizes.
+*/
+
+QList<int> QAudioDeviceInfo::supportedSampleSizes() const
+{
+ return isNull() ? QList<int>() : d->info->sampleSizeList();
+}
+
+/*!
+ Returns a list of supported byte orders.
+*/
+
+QList<QAudioFormat::Endian> QAudioDeviceInfo::supportedByteOrders() const
+{
+ return isNull() ? QList<QAudioFormat::Endian>() : d->info->byteOrderList();
+}
+
+/*!
+ Returns a list of supported sample types.
+*/
+
+QList<QAudioFormat::SampleType> QAudioDeviceInfo::supportedSampleTypes() const
+{
+ return isNull() ? QList<QAudioFormat::SampleType>() : d->info->sampleTypeList();
+}
+
+/*!
+ Returns the name of the default input audio device.
+ All platform and audio plugin implementations provide a default audio device to use.
+*/
+
+QAudioDeviceInfo QAudioDeviceInfo::defaultInputDevice()
+{
+ return QAudioDeviceFactory::defaultInputDevice();
+}
+
+/*!
+ Returns the name of the default output audio device.
+ All platform and audio plugin implementations provide a default audio device to use.
+*/
+
+QAudioDeviceInfo QAudioDeviceInfo::defaultOutputDevice()
+{
+ return QAudioDeviceFactory::defaultOutputDevice();
+}
+
+/*!
+ Returns a list of audio devices that support \a mode.
+*/
+
+QList<QAudioDeviceInfo> QAudioDeviceInfo::availableDevices(QAudio::Mode mode)
+{
+ return QAudioDeviceFactory::availableDevices(mode);
+}
+
+
+/*!
+ \internal
+*/
+
+QAudioDeviceInfo::QAudioDeviceInfo(const QString &realm, const QByteArray &handle, QAudio::Mode mode):
+ d(new QAudioDeviceInfoPrivate(realm, handle, mode))
+{
+}
+
+/*!
+ \internal
+*/
+
+QString QAudioDeviceInfo::realm() const
+{
+ return d->realm;
+}
+
+/*!
+ \internal
+*/
+
+QByteArray QAudioDeviceInfo::handle() const
+{
+ return d->handle;
+}
+
+
+/*!
+ \internal
+*/
+
+QAudio::Mode QAudioDeviceInfo::mode() const
+{
+ return d->mode;
+}
+
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/audio/qaudiodeviceinfo.h b/src/multimedia/audio/qaudiodeviceinfo.h
new file mode 100644
index 000000000..c392eeb36
--- /dev/null
+++ b/src/multimedia/audio/qaudiodeviceinfo.h
@@ -0,0 +1,114 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QAUDIODEVICEINFO_H
+#define QAUDIODEVICEINFO_H
+
+#include <QtCore/qobject.h>
+#include <QtCore/qglobal.h>
+#include <QtCore/qbytearray.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/qlist.h>
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudioformat.h>
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QAudioDeviceFactory;
+
+class QAudioDeviceInfoPrivate;
+class Q_MULTIMEDIA_EXPORT QAudioDeviceInfo
+{
+ friend class QAudioDeviceFactory;
+
+public:
+ QAudioDeviceInfo();
+ QAudioDeviceInfo(const QAudioDeviceInfo& other);
+ ~QAudioDeviceInfo();
+
+ QAudioDeviceInfo& operator=(const QAudioDeviceInfo& other);
+
+ bool isNull() const;
+
+ QString deviceName() const;
+
+ bool isFormatSupported(const QAudioFormat &format) const;
+ QAudioFormat preferredFormat() const;
+ QAudioFormat nearestFormat(const QAudioFormat &format) const;
+
+ QStringList supportedCodecs() const;
+ QList<int> supportedFrequencies() const;
+ QList<int> supportedSampleRates() const;
+ QList<int> supportedChannels() const;
+ QList<int> supportedChannelCounts() const;
+ QList<int> supportedSampleSizes() const;
+ QList<QAudioFormat::Endian> supportedByteOrders() const;
+ QList<QAudioFormat::SampleType> supportedSampleTypes() const;
+
+ static QAudioDeviceInfo defaultInputDevice();
+ static QAudioDeviceInfo defaultOutputDevice();
+
+ static QList<QAudioDeviceInfo> availableDevices(QAudio::Mode mode);
+
+private:
+ QAudioDeviceInfo(const QString &realm, const QByteArray &handle, QAudio::Mode mode);
+ QString realm() const;
+ QByteArray handle() const;
+ QAudio::Mode mode() const;
+
+ QSharedDataPointer<QAudioDeviceInfoPrivate> d;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+Q_DECLARE_METATYPE(QAudioDeviceInfo)
+
+#endif // QAUDIODEVICEINFO_H
diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
new file mode 100644
index 000000000..e2a2424b9
--- /dev/null
+++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
@@ -0,0 +1,544 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qaudiodeviceinfo_alsa_p.h"
+
+#include <alsa/version.h>
+
+QT_BEGIN_NAMESPACE
+
+QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode mode)
+{
+ handle = 0;
+
+ device = QLatin1String(dev);
+ this->mode = mode;
+
+#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ checkSurround();
+#endif
+}
+
+QAudioDeviceInfoInternal::~QAudioDeviceInfoInternal()
+{
+ close();
+}
+
+bool QAudioDeviceInfoInternal::isFormatSupported(const QAudioFormat& format) const
+{
+ return testSettings(format);
+}
+
+QAudioFormat QAudioDeviceInfoInternal::preferredFormat() const
+{
+ QAudioFormat nearest;
+ if(mode == QAudio::AudioOutput) {
+ nearest.setFrequency(44100);
+ nearest.setChannels(2);
+ nearest.setByteOrder(QAudioFormat::LittleEndian);
+ nearest.setSampleType(QAudioFormat::SignedInt);
+ nearest.setSampleSize(16);
+ nearest.setCodec(QLatin1String("audio/pcm"));
+ } else {
+ nearest.setFrequency(8000);
+ nearest.setChannels(1);
+ nearest.setSampleType(QAudioFormat::UnSignedInt);
+ nearest.setSampleSize(8);
+ nearest.setCodec(QLatin1String("audio/pcm"));
+ if(!testSettings(nearest)) {
+ nearest.setChannels(2);
+ nearest.setSampleSize(16);
+ nearest.setSampleType(QAudioFormat::SignedInt);
+ }
+ }
+ return nearest;
+}
+
+QAudioFormat QAudioDeviceInfoInternal::nearestFormat(const QAudioFormat& format) const
+{
+ if(testSettings(format))
+ return format;
+ else
+ return preferredFormat();
+}
+
+QString QAudioDeviceInfoInternal::deviceName() const
+{
+ return device;
+}
+
+QStringList QAudioDeviceInfoInternal::codecList()
+{
+ updateLists();
+ return codecz;
+}
+
+QList<int> QAudioDeviceInfoInternal::frequencyList()
+{
+ updateLists();
+ return freqz;
+}
+
+QList<int> QAudioDeviceInfoInternal::channelsList()
+{
+ updateLists();
+ return channelz;
+}
+
+QList<int> QAudioDeviceInfoInternal::sampleSizeList()
+{
+ updateLists();
+ return sizez;
+}
+
+QList<QAudioFormat::Endian> QAudioDeviceInfoInternal::byteOrderList()
+{
+ updateLists();
+ return byteOrderz;
+}
+
+QList<QAudioFormat::SampleType> QAudioDeviceInfoInternal::sampleTypeList()
+{
+ updateLists();
+ return typez;
+}
+
+bool QAudioDeviceInfoInternal::open()
+{
+ int err = 0;
+ QString dev = device;
+ QList<QByteArray> devices = availableDevices(mode);
+
+ if(dev.compare(QLatin1String("default")) == 0) {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(devices.first().constData());
+#else
+ dev = QLatin1String("hw:0,0");
+#endif
+ } else {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = device;
+#else
+ int idx = 0;
+ char *name;
+
+ QString shortName = device.mid(device.indexOf(QLatin1String("="),0)+1);
+
+ while(snd_card_get_name(idx,&name) == 0) {
+ if(dev.contains(QLatin1String(name)))
+ break;
+ idx++;
+ }
+ dev = QString(QLatin1String("hw:%1,0")).arg(idx);
+#endif
+ }
+ if(mode == QAudio::AudioOutput) {
+ err=snd_pcm_open( &handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_PLAYBACK,0);
+ } else {
+ err=snd_pcm_open( &handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_CAPTURE,0);
+ }
+ if(err < 0) {
+ handle = 0;
+ return false;
+ }
+ return true;
+}
+
+void QAudioDeviceInfoInternal::close()
+{
+ if(handle)
+ snd_pcm_close(handle);
+ handle = 0;
+}
+
+bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const
+{
+ // Set nearest to closest settings that do work.
+ // See if what is in settings will work (return value).
+ int err = 0;
+ snd_pcm_t* handle;
+ snd_pcm_hw_params_t *params;
+ QString dev = device;
+
+ QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput);
+
+ if(dev.compare(QLatin1String("default")) == 0) {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(devices.first().constData());
+#else
+ dev = QLatin1String("hw:0,0");
+#endif
+ } else {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = device;
+#else
+ int idx = 0;
+ char *name;
+
+ QString shortName = device.mid(device.indexOf(QLatin1String("="),0)+1);
+
+ while(snd_card_get_name(idx,&name) == 0) {
+ if(shortName.compare(QLatin1String(name)) == 0)
+ break;
+ idx++;
+ }
+ dev = QString(QLatin1String("hw:%1,0")).arg(idx);
+#endif
+ }
+ if(mode == QAudio::AudioOutput) {
+ err=snd_pcm_open( &handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_PLAYBACK,0);
+ } else {
+ err=snd_pcm_open( &handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_CAPTURE,0);
+ }
+ if(err < 0) {
+ handle = 0;
+ return false;
+ }
+
+ bool testChannel = false;
+ bool testCodec = false;
+ bool testFreq = false;
+ bool testType = false;
+ bool testSize = false;
+
+ int dir = 0;
+
+ snd_pcm_nonblock( handle, 0 );
+ snd_pcm_hw_params_alloca( &params );
+ snd_pcm_hw_params_any( handle, params );
+
+ // set the values!
+ snd_pcm_hw_params_set_channels(handle,params,format.channels());
+ snd_pcm_hw_params_set_rate(handle,params,format.frequency(),dir);
+
+ err = -1;
+
+ switch(format.sampleSize()) {
+ case 8:
+ if(format.sampleType() == QAudioFormat::SignedInt)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S8);
+ else if(format.sampleType() == QAudioFormat::UnSignedInt)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U8);
+ break;
+ case 16:
+ if(format.sampleType() == QAudioFormat::SignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S16_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S16_BE);
+ } else if(format.sampleType() == QAudioFormat::UnSignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U16_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U16_BE);
+ }
+ break;
+ case 32:
+ if(format.sampleType() == QAudioFormat::SignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S32_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S32_BE);
+ } else if(format.sampleType() == QAudioFormat::UnSignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U32_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U32_BE);
+ }
+ }
+
+ // For now, just accept only audio/pcm codec
+ if(!format.codec().startsWith(QLatin1String("audio/pcm"))) {
+ err=-1;
+ } else
+ testCodec = true;
+
+ if(err>=0 && format.channels() != -1) {
+ err = snd_pcm_hw_params_test_channels(handle,params,format.channels());
+ if(err>=0)
+ err = snd_pcm_hw_params_set_channels(handle,params,format.channels());
+ if(err>=0)
+ testChannel = true;
+ }
+
+ if(err>=0 && format.frequency() != -1) {
+ err = snd_pcm_hw_params_test_rate(handle,params,format.frequency(),0);
+ if(err>=0)
+ err = snd_pcm_hw_params_set_rate(handle,params,format.frequency(),dir);
+ if(err>=0)
+ testFreq = true;
+ }
+
+ if((err>=0 && format.sampleSize() != -1) &&
+ (format.sampleType() != QAudioFormat::Unknown)) {
+ switch(format.sampleSize()) {
+ case 8:
+ if(format.sampleType() == QAudioFormat::SignedInt)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S8);
+ else if(format.sampleType() == QAudioFormat::UnSignedInt)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U8);
+ break;
+ case 16:
+ if(format.sampleType() == QAudioFormat::SignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S16_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S16_BE);
+ } else if(format.sampleType() == QAudioFormat::UnSignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U16_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U16_BE);
+ }
+ break;
+ case 32:
+ if(format.sampleType() == QAudioFormat::SignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S32_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_S32_BE);
+ } else if(format.sampleType() == QAudioFormat::UnSignedInt) {
+ if(format.byteOrder() == QAudioFormat::LittleEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U32_LE);
+ else if(format.byteOrder() == QAudioFormat::BigEndian)
+ err = snd_pcm_hw_params_set_format(handle,params,SND_PCM_FORMAT_U32_BE);
+ }
+ }
+ if(err>=0) {
+ testSize = true;
+ testType = true;
+ }
+ }
+ if(err>=0)
+ err = snd_pcm_hw_params(handle, params);
+
+ if(err == 0) {
+ // settings work
+ // close()
+ if(handle)
+ snd_pcm_close(handle);
+ return true;
+ }
+ if(handle)
+ snd_pcm_close(handle);
+
+ return false;
+}
+
+void QAudioDeviceInfoInternal::updateLists()
+{
+ // redo all lists based on current settings
+ freqz.clear();
+ channelz.clear();
+ sizez.clear();
+ byteOrderz.clear();
+ typez.clear();
+ codecz.clear();
+
+ if(!handle)
+ open();
+
+ if(!handle)
+ return;
+
+ for(int i=0; i<(int)MAX_SAMPLE_RATES; i++) {
+ //if(snd_pcm_hw_params_test_rate(handle, params, SAMPLE_RATES[i], dir) == 0)
+ freqz.append(SAMPLE_RATES[i]);
+ }
+ channelz.append(1);
+ channelz.append(2);
+#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ if (surround40) channelz.append(4);
+ if (surround51) channelz.append(6);
+ if (surround71) channelz.append(8);
+#endif
+ sizez.append(8);
+ sizez.append(16);
+ sizez.append(32);
+ byteOrderz.append(QAudioFormat::LittleEndian);
+ byteOrderz.append(QAudioFormat::BigEndian);
+ typez.append(QAudioFormat::SignedInt);
+ typez.append(QAudioFormat::UnSignedInt);
+ typez.append(QAudioFormat::Float);
+ codecz.append(QLatin1String("audio/pcm"));
+ close();
+}
+
+QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
+{
+ QList<QByteArray> allDevices;
+ QList<QByteArray> devices;
+ QByteArray filter;
+
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ // Create a list of all current audio devices that support mode
+ void **hints, **n;
+ char *name, *descr, *io;
+
+ if(snd_device_name_hint(-1, "pcm", &hints) < 0) {
+ qWarning() << "no alsa devices available";
+ return devices;
+ }
+ n = hints;
+
+ if(mode == QAudio::AudioInput) {
+ filter = "Input";
+ } else {
+ filter = "Output";
+ }
+
+ while (*n != NULL) {
+ name = snd_device_name_get_hint(*n, "NAME");
+ if (name != 0 && qstrcmp(name, "null") != 0) {
+ descr = snd_device_name_get_hint(*n, "DESC");
+ io = snd_device_name_get_hint(*n, "IOID");
+
+ if ((descr != NULL) && ((io == NULL) || (io == filter))) {
+ QString deviceName = QLatin1String(name);
+ QString deviceDescription = QLatin1String(descr);
+ allDevices.append(deviceName.toLocal8Bit().constData());
+ if (deviceDescription.contains(QLatin1String("Default Audio Device")))
+ devices.append(deviceName.toLocal8Bit().constData());
+ }
+
+ free(name);
+ if (descr != NULL)
+ free(descr);
+ if (io != NULL)
+ free(io);
+ }
+ ++n;
+ }
+ snd_device_name_free_hint(hints);
+
+ if(devices.size() > 0) {
+ devices.append("default");
+ }
+#else
+ int idx = 0;
+ char* name;
+
+ while(snd_card_get_name(idx,&name) == 0) {
+ devices.append(name);
+ idx++;
+ }
+ if (idx > 0)
+ devices.append("default");
+#endif
+ if (devices.size() == 0 && allDevices.size() > 0)
+ return allDevices;
+
+ return devices;
+}
+
+QByteArray QAudioDeviceInfoInternal::defaultInputDevice()
+{
+ QList<QByteArray> devices = availableDevices(QAudio::AudioInput);
+ if(devices.size() == 0)
+ return QByteArray();
+
+ return devices.first();
+}
+
+QByteArray QAudioDeviceInfoInternal::defaultOutputDevice()
+{
+ QList<QByteArray> devices = availableDevices(QAudio::AudioOutput);
+ if(devices.size() == 0)
+ return QByteArray();
+
+ return devices.first();
+}
+
+#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+void QAudioDeviceInfoInternal::checkSurround()
+{
+ QList<QByteArray> devices;
+ surround40 = false;
+ surround51 = false;
+ surround71 = false;
+
+ void **hints, **n;
+ char *name, *descr, *io;
+
+ if(snd_device_name_hint(-1, "pcm", &hints) < 0)
+ return;
+
+ n = hints;
+
+ while (*n != NULL) {
+ name = snd_device_name_get_hint(*n, "NAME");
+ descr = snd_device_name_get_hint(*n, "DESC");
+ io = snd_device_name_get_hint(*n, "IOID");
+ if((name != NULL) && (descr != NULL)) {
+ QString deviceName = QLatin1String(name);
+ if (mode == QAudio::AudioOutput) {
+ if(deviceName.contains(QLatin1String("surround40")))
+ surround40 = true;
+ if(deviceName.contains(QLatin1String("surround51")))
+ surround51 = true;
+ if(deviceName.contains(QLatin1String("surround71")))
+ surround71 = true;
+ }
+ }
+ if(name != NULL)
+ free(name);
+ if(descr != NULL)
+ free(descr);
+ if(io != NULL)
+ free(io);
+ ++n;
+ }
+ snd_device_name_free_hint(hints);
+}
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
new file mode 100644
index 000000000..71d6f1bdd
--- /dev/null
+++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+
+#ifndef QAUDIODEVICEINFOALSA_H
+#define QAUDIODEVICEINFOALSA_H
+
+#include <alsa/asoundlib.h>
+
+#include <QtCore/qbytearray.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/qlist.h>
+#include <QtCore/qdebug.h>
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudioengine.h>
+
+QT_BEGIN_NAMESPACE
+
+const unsigned int MAX_SAMPLE_RATES = 5;
+const unsigned int SAMPLE_RATES[] =
+ { 8000, 11025, 22050, 44100, 48000 };
+
+class QAudioDeviceInfoInternal : public QAbstractAudioDeviceInfo
+{
+ Q_OBJECT
+public:
+ QAudioDeviceInfoInternal(QByteArray dev,QAudio::Mode mode);
+ ~QAudioDeviceInfoInternal();
+
+ bool testSettings(const QAudioFormat& format) const;
+ void updateLists();
+ QAudioFormat preferredFormat() const;
+ bool isFormatSupported(const QAudioFormat& format) const;
+ QAudioFormat nearestFormat(const QAudioFormat& format) const;
+ QString deviceName() const;
+ QStringList codecList();
+ QList<int> frequencyList();
+ QList<int> channelsList();
+ QList<int> sampleSizeList();
+ QList<QAudioFormat::Endian> byteOrderList();
+ QList<QAudioFormat::SampleType> sampleTypeList();
+ static QByteArray defaultInputDevice();
+ static QByteArray defaultOutputDevice();
+ static QList<QByteArray> availableDevices(QAudio::Mode);
+
+private:
+ bool open();
+ void close();
+
+#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ void checkSurround();
+ bool surround40;
+ bool surround51;
+ bool surround71;
+#endif
+
+ QString device;
+ QAudio::Mode mode;
+ QAudioFormat nearest;
+ QList<int> freqz;
+ QList<int> channelz;
+ QList<int> sizez;
+ QList<QAudioFormat::Endian> byteOrderz;
+ QStringList codecz;
+ QList<QAudioFormat::SampleType> typez;
+ snd_pcm_t* handle;
+ snd_pcm_hw_params_t *params;
+};
+
+QT_END_NAMESPACE
+
+#endif
+
diff --git a/src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp
new file mode 100644
index 000000000..4d9c3c243
--- /dev/null
+++ b/src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp
@@ -0,0 +1,363 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qstringlist.h>
+#include <QtCore/qlist.h>
+#include <QtCore/qbytearray.h>
+#include <QtCore/qdatastream.h>
+#include <QtCore/qdebug.h>
+#include <private/qcore_mac_p.h>
+
+#include <QtMultimedia/qaudiodeviceinfo.h>
+#include "qaudio_mac_p.h"
+#include "qaudiodeviceinfo_mac_p.h"
+
+
+
+QT_BEGIN_NAMESPACE
+
+
+QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray const& handle, QAudio::Mode)
+{
+ QDataStream ds(handle);
+ quint32 did, tm;
+
+ ds >> did >> tm >> name;
+ deviceId = AudioDeviceID(did);
+ mode = QAudio::Mode(tm);
+}
+
+bool QAudioDeviceInfoInternal::isFormatSupported(const QAudioFormat& format) const
+{
+ QAudioDeviceInfoInternal *self = const_cast<QAudioDeviceInfoInternal*>(this);
+
+ return format.isValid()
+ && format.codec() == QString::fromLatin1("audio/pcm")
+ && self->frequencyList().contains(format.frequency())
+ && self->channelsList().contains(format.channels())
+ && self->sampleSizeList().contains(format.sampleSize());
+}
+
+QAudioFormat QAudioDeviceInfoInternal::preferredFormat() const
+{
+ QAudioFormat rc;
+
+ UInt32 propSize = 0;
+
+ if (AudioDeviceGetPropertyInfo(deviceId,
+ 0,
+ mode == QAudio::AudioInput,
+ kAudioDevicePropertyStreams,
+ &propSize,
+ 0) == noErr) {
+
+ const int sc = propSize / sizeof(AudioStreamID);
+
+ if (sc > 0) {
+ AudioStreamID* streams = new AudioStreamID[sc];
+
+ if (AudioDeviceGetProperty(deviceId,
+ 0,
+ mode == QAudio::AudioInput,
+ kAudioDevicePropertyStreams,
+ &propSize,
+ streams) == noErr) {
+
+ for (int i = 0; i < sc; ++i) {
+ if (AudioStreamGetPropertyInfo(streams[i],
+ 0,
+ kAudioStreamPropertyPhysicalFormat,
+ &propSize,
+ 0) == noErr) {
+
+ AudioStreamBasicDescription sf;
+
+ if (AudioStreamGetProperty(streams[i],
+ 0,
+ kAudioStreamPropertyPhysicalFormat,
+ &propSize,
+ &sf) == noErr) {
+ rc = toQAudioFormat(sf);
+ break;
+ }
+ }
+ }
+ }
+
+ delete[] streams;
+ }
+ }
+
+ return rc;
+}
+
+QAudioFormat QAudioDeviceInfoInternal::nearestFormat(const QAudioFormat& format) const
+{
+ QAudioFormat rc(format);
+ QAudioFormat target = preferredFormat();
+
+ if (!format.codec().isEmpty() && format.codec() != QString::fromLatin1("audio/pcm"))
+ return QAudioFormat();
+
+ rc.setCodec(QString::fromLatin1("audio/pcm"));
+
+ if (rc.frequency() != target.frequency())
+ rc.setFrequency(target.frequency());
+ if (rc.channels() != target.channels())
+ rc.setChannels(target.channels());
+ if (rc.sampleSize() != target.sampleSize())
+ rc.setSampleSize(target.sampleSize());
+ if (rc.byteOrder() != target.byteOrder())
+ rc.setByteOrder(target.byteOrder());
+ if (rc.sampleType() != target.sampleType())
+ rc.setSampleType(target.sampleType());
+
+ return rc;
+}
+
+QString QAudioDeviceInfoInternal::deviceName() const
+{
+ return name;
+}
+
+QStringList QAudioDeviceInfoInternal::codecList()
+{
+ return QStringList() << QString::fromLatin1("audio/pcm");
+}
+
+QList<int> QAudioDeviceInfoInternal::frequencyList()
+{
+ QSet<int> rc;
+
+ // Add some common frequencies
+ rc << 8000 << 11025 << 22050 << 44100;
+
+ //
+ UInt32 propSize = 0;
+
+ if (AudioDeviceGetPropertyInfo(deviceId,
+ 0,
+ mode == QAudio::AudioInput,
+ kAudioDevicePropertyAvailableNominalSampleRates,
+ &propSize,
+ 0) == noErr) {
+
+ const int pc = propSize / sizeof(AudioValueRange);
+
+ if (pc > 0) {
+ AudioValueRange* vr = new AudioValueRange[pc];
+
+ if (AudioDeviceGetProperty(deviceId,
+ 0,
+ mode == QAudio::AudioInput,
+ kAudioDevicePropertyAvailableNominalSampleRates,
+ &propSize,
+ vr) == noErr) {
+
+ for (int i = 0; i < pc; ++i)
+ rc << vr[i].mMaximum;
+ }
+
+ delete[] vr;
+ }
+ }
+
+ return rc.toList();
+}
+
+QList<int> QAudioDeviceInfoInternal::channelsList()
+{
+ QList<int> rc;
+
+ // Can mix down to 1 channel
+ rc << 1;
+
+ UInt32 propSize = 0;
+ int channels = 0;
+
+ if (AudioDeviceGetPropertyInfo(deviceId,
+ 0,
+ mode == QAudio::AudioInput,
+ kAudioDevicePropertyStreamConfiguration,
+ &propSize,
+ 0) == noErr) {
+
+ AudioBufferList* audioBufferList = static_cast<AudioBufferList*>(qMalloc(propSize));
+
+ if (audioBufferList != 0) {
+ if (AudioDeviceGetProperty(deviceId,
+ 0,
+ mode == QAudio::AudioInput,
+ kAudioDevicePropertyStreamConfiguration,
+ &propSize,
+ audioBufferList) == noErr) {
+
+ for (int i = 0; i < int(audioBufferList->mNumberBuffers); ++i) {
+ channels += audioBufferList->mBuffers[i].mNumberChannels;
+ rc << channels;
+ }
+ }
+
+ qFree(audioBufferList);
+ }
+ }
+
+ return rc;
+}
+
+QList<int> QAudioDeviceInfoInternal::sampleSizeList()
+{
+ return QList<int>() << 8 << 16 << 24 << 32 << 64;
+}
+
+QList<QAudioFormat::Endian> QAudioDeviceInfoInternal::byteOrderList()
+{
+ return QList<QAudioFormat::Endian>() << QAudioFormat::LittleEndian << QAudioFormat::BigEndian;
+}
+
+QList<QAudioFormat::SampleType> QAudioDeviceInfoInternal::sampleTypeList()
+{
+ return QList<QAudioFormat::SampleType>() << QAudioFormat::SignedInt << QAudioFormat::UnSignedInt << QAudioFormat::Float;
+}
+
+static QByteArray get_device_info(AudioDeviceID audioDevice, QAudio::Mode mode)
+{
+ UInt32 size;
+ QByteArray device;
+ QDataStream ds(&device, QIODevice::WriteOnly);
+ AudioStreamBasicDescription sf;
+ CFStringRef name;
+ Boolean isInput = mode == QAudio::AudioInput;
+
+ // Id
+ ds << quint32(audioDevice);
+
+ // Mode
+ size = sizeof(AudioStreamBasicDescription);
+ if (AudioDeviceGetProperty(audioDevice, 0, isInput, kAudioDevicePropertyStreamFormat,
+ &size, &sf) != noErr) {
+ return QByteArray();
+ }
+ ds << quint32(mode);
+
+ // Name
+ size = sizeof(CFStringRef);
+ if (AudioDeviceGetProperty(audioDevice, 0, isInput, kAudioObjectPropertyName,
+ &size, &name) != noErr) {
+ qWarning() << "QAudioDeviceInfo: Unable to find device name";
+ }
+ ds << QCFString::toQString(name);
+
+ CFRelease(name);
+
+ return device;
+}
+
+QByteArray QAudioDeviceInfoInternal::defaultInputDevice()
+{
+ AudioDeviceID audioDevice;
+ UInt32 size = sizeof(audioDevice);
+
+ if (AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice, &size,
+ &audioDevice) != noErr) {
+ qWarning() << "QAudioDeviceInfo: Unable to find default input device";
+ return QByteArray();
+ }
+
+ return get_device_info(audioDevice, QAudio::AudioInput);
+}
+
+QByteArray QAudioDeviceInfoInternal::defaultOutputDevice()
+{
+ AudioDeviceID audioDevice;
+ UInt32 size = sizeof(audioDevice);
+
+ if (AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &size,
+ &audioDevice) != noErr) {
+ qWarning() << "QAudioDeviceInfo: Unable to find default output device";
+ return QByteArray();
+ }
+
+ return get_device_info(audioDevice, QAudio::AudioOutput);
+}
+
+QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
+{
+ QList<QByteArray> devices;
+
+ UInt32 propSize = 0;
+
+ if (AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, &propSize, 0) == noErr) {
+
+ const int dc = propSize / sizeof(AudioDeviceID);
+
+ if (dc > 0) {
+ AudioDeviceID* audioDevices = new AudioDeviceID[dc];
+
+ if (AudioHardwareGetProperty(kAudioHardwarePropertyDevices, &propSize, audioDevices) == noErr) {
+ for (int i = 0; i < dc; ++i) {
+ QByteArray info = get_device_info(audioDevices[i], mode);
+ if (!info.isNull())
+ devices << info;
+ }
+ }
+
+ delete[] audioDevices;
+ }
+ }
+
+ return devices;
+}
+
+
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/audio/qaudiodeviceinfo_mac_p.h b/src/multimedia/audio/qaudiodeviceinfo_mac_p.h
new file mode 100644
index 000000000..cd5a5a0b0
--- /dev/null
+++ b/src/multimedia/audio/qaudiodeviceinfo_mac_p.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+
+#ifndef QDEVICEINFO_MAC_P_H
+#define QDEVICEINFO_MAC_P_H
+
+#include <CoreAudio/CoreAudio.h>
+
+#include <QtMultimedia/qaudioengine.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QAudioDeviceInfoInternal : public QAbstractAudioDeviceInfo
+{
+public:
+ AudioDeviceID deviceId;
+ QString name;
+ QAudio::Mode mode;
+
+ QAudioDeviceInfoInternal(QByteArray const& handle, QAudio::Mode mode);
+
+ bool isFormatSupported(const QAudioFormat& format) const;
+ QAudioFormat preferredFormat() const;
+ QAudioFormat nearestFormat(const QAudioFormat& format) const;
+
+ QString deviceName() const;
+
+ QStringList codecList();
+ QList<int> frequencyList();
+ QList<int> channelsList();
+ QList<int> sampleSizeList();
+ QList<QAudioFormat::Endian> byteOrderList();
+ QList<QAudioFormat::SampleType> sampleTypeList();
+
+ static QByteArray defaultInputDevice();
+ static QByteArray defaultOutputDevice();
+
+ static QList<QByteArray> availableDevices(QAudio::Mode mode);
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QDEVICEINFO_MAC_P_H
diff --git a/src/multimedia/audio/qaudiodeviceinfo_symbian_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_symbian_p.cpp
new file mode 100644
index 000000000..99da006c4
--- /dev/null
+++ b/src/multimedia/audio/qaudiodeviceinfo_symbian_p.cpp
@@ -0,0 +1,240 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QCoreApplication>
+#include "qaudiodeviceinfo_symbian_p.h"
+#include "qaudio_symbian_p.h"
+
+QT_BEGIN_NAMESPACE
+
+QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray device,
+ QAudio::Mode mode)
+ : m_deviceName(QLatin1String(device))
+ , m_mode(mode)
+ , m_updated(false)
+{
+
+}
+
+QAudioDeviceInfoInternal::~QAudioDeviceInfoInternal()
+{
+
+}
+
+QAudioFormat QAudioDeviceInfoInternal::preferredFormat() const
+{
+ QAudioFormat format;
+ switch (m_mode) {
+ case QAudio::AudioOutput:
+ format.setFrequency(44100);
+ format.setChannels(2);
+ format.setSampleSize(16);
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setSampleType(QAudioFormat::SignedInt);
+ format.setCodec(QLatin1String("audio/pcm"));
+ break;
+
+ case QAudio::AudioInput:
+ format.setFrequency(8000);
+ format.setChannels(1);
+ format.setSampleSize(16);
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setSampleType(QAudioFormat::SignedInt);
+ format.setCodec(QLatin1String("audio/pcm"));
+ break;
+
+ default:
+ Q_ASSERT_X(false, Q_FUNC_INFO, "Invalid mode");
+ }
+
+ if (!isFormatSupported(format)) {
+ format = QAudioFormat();
+ format.setCodec(QLatin1String("audio/pcm"));
+ if (m_capabilities.contains(format.codec())) {
+ const Capabilities &codecCaps = m_capabilities[format.codec()];
+ if (codecCaps.m_frequencies.size())
+ format.setFrequency(codecCaps.m_frequencies[0]);
+ if (codecCaps.m_channels.size())
+ format.setChannels(codecCaps.m_channels[0]);
+ if (codecCaps.m_sampleSizes.size())
+ format.setSampleSize(codecCaps.m_sampleSizes[0]);
+ if (codecCaps.m_byteOrders.size())
+ format.setByteOrder(codecCaps.m_byteOrders[0]);
+ if (codecCaps.m_sampleTypes.size())
+ format.setSampleType(codecCaps.m_sampleTypes[0]);
+ }
+ }
+
+ return format;
+}
+
+bool QAudioDeviceInfoInternal::isFormatSupported(
+ const QAudioFormat &format) const
+{
+ getSupportedFormats();
+ bool supported = false;
+ if (m_capabilities.contains(format.codec())) {
+ const Capabilities &codecCaps = m_capabilities[format.codec()];
+ supported = codecCaps.m_frequencies.contains(format.frequency())
+ && codecCaps.m_channels.contains(format.channels())
+ && codecCaps.m_sampleSizes.contains(format.sampleSize())
+ && codecCaps.m_byteOrders.contains(format.byteOrder())
+ && codecCaps.m_sampleTypes.contains(format.sampleType());
+ }
+ return supported;
+}
+
+QAudioFormat QAudioDeviceInfoInternal::nearestFormat(const QAudioFormat &format) const
+{
+ if (isFormatSupported(format))
+ return format;
+ else
+ return preferredFormat();
+}
+
+QString QAudioDeviceInfoInternal::deviceName() const
+{
+ return m_deviceName;
+}
+
+QStringList QAudioDeviceInfoInternal::codecList()
+{
+ getSupportedFormats();
+ return m_capabilities.keys();
+}
+
+QList<int> QAudioDeviceInfoInternal::frequencyList()
+{
+ getSupportedFormats();
+ return m_unionCapabilities.m_frequencies;
+}
+
+QList<int> QAudioDeviceInfoInternal::channelsList()
+{
+ getSupportedFormats();
+ return m_unionCapabilities.m_channels;
+}
+
+QList<int> QAudioDeviceInfoInternal::sampleSizeList()
+{
+ getSupportedFormats();
+ return m_unionCapabilities.m_sampleSizes;
+}
+
+QList<QAudioFormat::Endian> QAudioDeviceInfoInternal::byteOrderList()
+{
+ getSupportedFormats();
+ return m_unionCapabilities.m_byteOrders;
+}
+
+QList<QAudioFormat::SampleType> QAudioDeviceInfoInternal::sampleTypeList()
+{
+ getSupportedFormats();
+ return m_unionCapabilities.m_sampleTypes;
+}
+
+QByteArray QAudioDeviceInfoInternal::defaultInputDevice()
+{
+ return QByteArray("default");
+}
+
+QByteArray QAudioDeviceInfoInternal::defaultOutputDevice()
+{
+ return QByteArray("default");
+}
+
+QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode)
+{
+ QList<QByteArray> result;
+ result += QByteArray("default");
+ return result;
+}
+
+void QAudioDeviceInfoInternal::devsoundInitializeComplete(int err)
+{
+ m_intializationResult = err;
+ m_initializing = false;
+}
+
+// Helper function
+template<typename T>
+void appendUnique(QList<T> &left, const QList<T> &right)
+{
+ foreach (const T &value, right)
+ if (!left.contains(value))
+ left += value;
+}
+
+void QAudioDeviceInfoInternal::getSupportedFormats() const
+{
+ if (!m_updated) {
+ QScopedPointer<SymbianAudio::DevSoundWrapper> devsound(new SymbianAudio::DevSoundWrapper(m_mode));
+ connect(devsound.data(), SIGNAL(initializeComplete(int)),
+ this, SLOT(devsoundInitializeComplete(int)));
+
+ foreach (const QString& codec, devsound->supportedCodecs()) {
+ m_initializing = true;
+ devsound->initialize(codec);
+ while (m_initializing)
+ QCoreApplication::instance()->processEvents(QEventLoop::WaitForMoreEvents);
+ if (KErrNone == m_intializationResult) {
+ m_capabilities[codec].m_frequencies = devsound->supportedFrequencies();
+ appendUnique(m_unionCapabilities.m_frequencies, devsound->supportedFrequencies());
+
+ m_capabilities[codec].m_channels = devsound->supportedChannels();
+ appendUnique(m_unionCapabilities.m_channels, devsound->supportedChannels());
+
+ m_capabilities[codec].m_sampleSizes = devsound->supportedSampleSizes();
+ appendUnique(m_unionCapabilities.m_sampleSizes, devsound->supportedSampleSizes());
+
+ m_capabilities[codec].m_byteOrders = devsound->supportedByteOrders();
+ appendUnique(m_unionCapabilities.m_byteOrders, devsound->supportedByteOrders());
+
+ m_capabilities[codec].m_sampleTypes = devsound->supportedSampleTypes();
+ appendUnique(m_unionCapabilities.m_sampleTypes, devsound->supportedSampleTypes());
+ }
+ }
+
+ m_updated = true;
+ }
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudiodeviceinfo_symbian_p.h b/src/multimedia/audio/qaudiodeviceinfo_symbian_p.h
new file mode 100644
index 000000000..5a1c8576f
--- /dev/null
+++ b/src/multimedia/audio/qaudiodeviceinfo_symbian_p.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QAUDIODEVICEINFO_SYMBIAN_P_H
+#define QAUDIODEVICEINFO_SYMBIAN_P_H
+
+#include <QtCore/QMap>
+#include <QtMultimedia/qaudioengine.h>
+#include <sounddevice.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace SymbianAudio {
+class DevSoundWrapper;
+}
+
+class QAudioDeviceInfoInternal
+ : public QAbstractAudioDeviceInfo
+{
+ Q_OBJECT
+
+public:
+ QAudioDeviceInfoInternal(QByteArray device, QAudio::Mode mode);
+ ~QAudioDeviceInfoInternal();
+
+ // QAbstractAudioDeviceInfo
+ QAudioFormat preferredFormat() const;
+ bool isFormatSupported(const QAudioFormat &format) const;
+ QAudioFormat nearestFormat(const QAudioFormat &format) const;
+ QString deviceName() const;
+ QStringList codecList();
+ QList<int> frequencyList();
+ QList<int> channelsList();
+ QList<int> sampleSizeList();
+ QList<QAudioFormat::Endian> byteOrderList();
+ QList<QAudioFormat::SampleType> sampleTypeList();
+ static QByteArray defaultInputDevice();
+ static QByteArray defaultOutputDevice();
+ static QList<QByteArray> availableDevices(QAudio::Mode);
+
+private slots:
+ void devsoundInitializeComplete(int err);
+
+private:
+ void getSupportedFormats() const;
+
+private:
+ mutable bool m_initializing;
+ int m_intializationResult;
+
+ QString m_deviceName;
+ QAudio::Mode m_mode;
+
+ struct Capabilities
+ {
+ QList<int> m_frequencies;
+ QList<int> m_channels;
+ QList<int> m_sampleSizes;
+ QList<QAudioFormat::Endian> m_byteOrders;
+ QList<QAudioFormat::SampleType> m_sampleTypes;
+ };
+
+ // Mutable to allow lazy initialization when called from const-qualified
+ // public functions (isFormatSupported, nearestFormat)
+ mutable bool m_updated;
+ mutable QMap<QString, Capabilities> m_capabilities;
+ mutable Capabilities m_unionCapabilities;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp
new file mode 100644
index 000000000..71251c633
--- /dev/null
+++ b/src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp
@@ -0,0 +1,447 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+
+#include <windows.h>
+#include <mmsystem.h>
+#include "qaudiodeviceinfo_win32_p.h"
+
+QT_BEGIN_NAMESPACE
+
+// For mingw toolchain mmsystem.h only defines half the defines, so add if needed.
+#ifndef WAVE_FORMAT_44M08
+#define WAVE_FORMAT_44M08 0x00000100
+#define WAVE_FORMAT_44S08 0x00000200
+#define WAVE_FORMAT_44M16 0x00000400
+#define WAVE_FORMAT_44S16 0x00000800
+#define WAVE_FORMAT_48M08 0x00001000
+#define WAVE_FORMAT_48S08 0x00002000
+#define WAVE_FORMAT_48M16 0x00004000
+#define WAVE_FORMAT_48S16 0x00008000
+#define WAVE_FORMAT_96M08 0x00010000
+#define WAVE_FORMAT_96S08 0x00020000
+#define WAVE_FORMAT_96M16 0x00040000
+#define WAVE_FORMAT_96S16 0x00080000
+#endif
+
+
+QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode mode)
+{
+ device = QLatin1String(dev);
+ this->mode = mode;
+
+ updateLists();
+}
+
+QAudioDeviceInfoInternal::~QAudioDeviceInfoInternal()
+{
+ close();
+}
+
+bool QAudioDeviceInfoInternal::isFormatSupported(const QAudioFormat& format) const
+{
+ return testSettings(format);
+}
+
+QAudioFormat QAudioDeviceInfoInternal::preferredFormat() const
+{
+ QAudioFormat nearest;
+ if(mode == QAudio::AudioOutput) {
+ nearest.setFrequency(44100);
+ nearest.setChannelCount(2);
+ nearest.setByteOrder(QAudioFormat::LittleEndian);
+ nearest.setSampleType(QAudioFormat::SignedInt);
+ nearest.setSampleSize(16);
+ nearest.setCodec(QLatin1String("audio/pcm"));
+ } else {
+ nearest.setFrequency(11025);
+ nearest.setChannelCount(1);
+ nearest.setByteOrder(QAudioFormat::LittleEndian);
+ nearest.setSampleType(QAudioFormat::SignedInt);
+ nearest.setSampleSize(8);
+ nearest.setCodec(QLatin1String("audio/pcm"));
+ }
+ return nearest;
+}
+
+QAudioFormat QAudioDeviceInfoInternal::nearestFormat(const QAudioFormat& format) const
+{
+ if(testSettings(format))
+ return format;
+ else
+ return preferredFormat();
+}
+
+QString QAudioDeviceInfoInternal::deviceName() const
+{
+ return device;
+}
+
+QStringList QAudioDeviceInfoInternal::codecList()
+{
+ updateLists();
+ return codecz;
+}
+
+QList<int> QAudioDeviceInfoInternal::frequencyList()
+{
+ updateLists();
+ return freqz;
+}
+
+QList<int> QAudioDeviceInfoInternal::channelsList()
+{
+ updateLists();
+ return channelz;
+}
+
+QList<int> QAudioDeviceInfoInternal::sampleSizeList()
+{
+ updateLists();
+ return sizez;
+}
+
+QList<QAudioFormat::Endian> QAudioDeviceInfoInternal::byteOrderList()
+{
+ updateLists();
+ return byteOrderz;
+}
+
+QList<QAudioFormat::SampleType> QAudioDeviceInfoInternal::sampleTypeList()
+{
+ updateLists();
+ return typez;
+}
+
+
+bool QAudioDeviceInfoInternal::open()
+{
+ return true;
+}
+
+void QAudioDeviceInfoInternal::close()
+{
+}
+
+bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const
+{
+ // Set nearest to closest settings that do work.
+ // See if what is in settings will work (return value).
+
+ bool failed = false;
+ bool match = false;
+
+ // check codec
+ for( int i = 0; i < codecz.count(); i++) {
+ if (format.codec() == codecz.at(i))
+ match = true;
+ }
+ if (!match) failed = true;
+
+ // check channel
+ match = false;
+ if (!failed) {
+ for( int i = 0; i < channelz.count(); i++) {
+ if (format.channels() == channelz.at(i)) {
+ match = true;
+ break;
+ }
+ }
+ if (!match)
+ failed = true;
+ }
+
+ // check frequency
+ match = false;
+ if (!failed) {
+ for( int i = 0; i < freqz.count(); i++) {
+ if (format.frequency() == freqz.at(i)) {
+ match = true;
+ break;
+ }
+ }
+ if (!match)
+ failed = true;
+ }
+
+ // check sample size
+ match = false;
+ if (!failed) {
+ for( int i = 0; i < sizez.count(); i++) {
+ if (format.sampleSize() == sizez.at(i)) {
+ match = true;
+ break;
+ }
+ }
+ if (!match)
+ failed = true;
+ }
+
+ // check byte order
+ match = false;
+ if (!failed) {
+ for( int i = 0; i < byteOrderz.count(); i++) {
+ if (format.byteOrder() == byteOrderz.at(i)) {
+ match = true;
+ break;
+ }
+ }
+ if (!match)
+ failed = true;
+ }
+
+ // check sample type
+ match = false;
+ if (!failed) {
+ for( int i = 0; i < typez.count(); i++) {
+ if (format.sampleType() == typez.at(i)) {
+ match = true;
+ break;
+ }
+ }
+ if (!match)
+ failed = true;
+ }
+
+ if(!failed) {
+ // settings work
+ return true;
+ }
+ return false;
+}
+
+void QAudioDeviceInfoInternal::updateLists()
+{
+ // redo all lists based on current settings
+ bool base = false;
+ bool match = false;
+ DWORD fmt = NULL;
+ QString tmp;
+
+ if(device.compare(QLatin1String("default")) == 0)
+ base = true;
+
+ if(mode == QAudio::AudioOutput) {
+ WAVEOUTCAPS woc;
+ unsigned long iNumDevs,i;
+ iNumDevs = waveOutGetNumDevs();
+ for(i=0;i<iNumDevs;i++) {
+ if(waveOutGetDevCaps(i, &woc, sizeof(WAVEOUTCAPS))
+ == MMSYSERR_NOERROR) {
+ tmp = QString((const QChar *)woc.szPname);
+ if(tmp.compare(device) == 0) {
+ match = true;
+ fmt = woc.dwFormats;
+ break;
+ }
+ if(base) {
+ match = true;
+ fmt = woc.dwFormats;
+ break;
+ }
+ }
+ }
+ } else {
+ WAVEINCAPS woc;
+ unsigned long iNumDevs,i;
+ iNumDevs = waveInGetNumDevs();
+ for(i=0;i<iNumDevs;i++) {
+ if(waveInGetDevCaps(i, &woc, sizeof(WAVEINCAPS))
+ == MMSYSERR_NOERROR) {
+ tmp = QString((const QChar *)woc.szPname);
+ if(tmp.compare(device) == 0) {
+ match = true;
+ fmt = woc.dwFormats;
+ break;
+ }
+ if(base) {
+ match = true;
+ fmt = woc.dwFormats;
+ break;
+ }
+ }
+ }
+ }
+ sizez.clear();
+ freqz.clear();
+ channelz.clear();
+ byteOrderz.clear();
+ typez.clear();
+ codecz.clear();
+
+ if(match) {
+ if((fmt && WAVE_FORMAT_1M08)
+ || (fmt && WAVE_FORMAT_1S08)
+ || (fmt && WAVE_FORMAT_2M08)
+ || (fmt && WAVE_FORMAT_2S08)
+ || (fmt && WAVE_FORMAT_4M08)
+ || (fmt && WAVE_FORMAT_4S08)
+#ifndef Q_OS_WINCE
+ || (fmt && WAVE_FORMAT_48M08)
+ || (fmt && WAVE_FORMAT_48S08)
+ || (fmt && WAVE_FORMAT_96M08)
+ || (fmt && WAVE_FORMAT_96S08)
+#endif
+ ) {
+ sizez.append(8);
+ }
+ if((fmt && WAVE_FORMAT_1M16)
+ || (fmt && WAVE_FORMAT_1S16)
+ || (fmt && WAVE_FORMAT_2M16)
+ || (fmt && WAVE_FORMAT_2S16)
+ || (fmt && WAVE_FORMAT_4M16)
+ || (fmt && WAVE_FORMAT_4S16)
+#ifndef Q_OS_WINCE
+ || (fmt && WAVE_FORMAT_48M16)
+ || (fmt && WAVE_FORMAT_48S16)
+ || (fmt && WAVE_FORMAT_96M16)
+ || (fmt && WAVE_FORMAT_96S16)
+#endif
+ ) {
+ sizez.append(16);
+ }
+ if((fmt && WAVE_FORMAT_1M08)
+ || (fmt && WAVE_FORMAT_1S08)
+ || (fmt && WAVE_FORMAT_1M16)
+ || (fmt && WAVE_FORMAT_1S16)) {
+ freqz.append(11025);
+ }
+ if((fmt && WAVE_FORMAT_2M08)
+ || (fmt && WAVE_FORMAT_2S08)
+ || (fmt && WAVE_FORMAT_2M16)
+ || (fmt && WAVE_FORMAT_2S16)) {
+ freqz.append(22050);
+ }
+ if((fmt && WAVE_FORMAT_4M08)
+ || (fmt && WAVE_FORMAT_4S08)
+ || (fmt && WAVE_FORMAT_4M16)
+ || (fmt && WAVE_FORMAT_4S16)) {
+ freqz.append(44100);
+ }
+#ifndef Q_OS_WINCE
+ if((fmt && WAVE_FORMAT_48M08)
+ || (fmt && WAVE_FORMAT_48S08)
+ || (fmt && WAVE_FORMAT_48M16)
+ || (fmt && WAVE_FORMAT_48S16)) {
+ freqz.append(48000);
+ }
+ if((fmt && WAVE_FORMAT_96M08)
+ || (fmt && WAVE_FORMAT_96S08)
+ || (fmt && WAVE_FORMAT_96M16)
+ || (fmt && WAVE_FORMAT_96S16)) {
+ freqz.append(96000);
+ }
+#endif
+ channelz.append(1);
+ channelz.append(2);
+ if (mode == QAudio::AudioOutput) {
+ channelz.append(4);
+ channelz.append(6);
+ channelz.append(8);
+ }
+
+ byteOrderz.append(QAudioFormat::LittleEndian);
+
+ typez.append(QAudioFormat::SignedInt);
+ typez.append(QAudioFormat::UnSignedInt);
+
+ codecz.append(QLatin1String("audio/pcm"));
+ }
+ if (freqz.count() > 0)
+ freqz.prepend(8000);
+}
+
+QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
+{
+ Q_UNUSED(mode)
+
+ QList<QByteArray> devices;
+
+ if(mode == QAudio::AudioOutput) {
+ WAVEOUTCAPS woc;
+ unsigned long iNumDevs,i;
+ iNumDevs = waveOutGetNumDevs();
+ for(i=0;i<iNumDevs;i++) {
+ if(waveOutGetDevCaps(i, &woc, sizeof(WAVEOUTCAPS))
+ == MMSYSERR_NOERROR) {
+ devices.append(QString((const QChar *)woc.szPname).toLocal8Bit().constData());
+ }
+ }
+ } else {
+ WAVEINCAPS woc;
+ unsigned long iNumDevs,i;
+ iNumDevs = waveInGetNumDevs();
+ for(i=0;i<iNumDevs;i++) {
+ if(waveInGetDevCaps(i, &woc, sizeof(WAVEINCAPS))
+ == MMSYSERR_NOERROR) {
+ devices.append(QString((const QChar *)woc.szPname).toLocal8Bit().constData());
+ }
+ }
+
+ }
+ if(devices.count() > 0)
+ devices.append("default");
+
+ return devices;
+}
+
+QByteArray QAudioDeviceInfoInternal::defaultOutputDevice()
+{
+ return QByteArray("default");
+}
+
+QByteArray QAudioDeviceInfoInternal::defaultInputDevice()
+{
+ return QByteArray("default");
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudiodeviceinfo_win32_p.h b/src/multimedia/audio/qaudiodeviceinfo_win32_p.h
new file mode 100644
index 000000000..5d54a244e
--- /dev/null
+++ b/src/multimedia/audio/qaudiodeviceinfo_win32_p.h
@@ -0,0 +1,112 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+
+#ifndef QAUDIODEVICEINFOWIN_H
+#define QAUDIODEVICEINFOWIN_H
+
+#include <QtCore/qbytearray.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/qlist.h>
+#include <QtCore/qdebug.h>
+
+#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudioengine.h>
+
+
+QT_BEGIN_NAMESPACE
+
+const unsigned int MAX_SAMPLE_RATES = 5;
+const unsigned int SAMPLE_RATES[] = { 8000, 11025, 22050, 44100, 48000 };
+
+class QAudioDeviceInfoInternal : public QAbstractAudioDeviceInfo
+{
+ Q_OBJECT
+
+public:
+ QAudioDeviceInfoInternal(QByteArray dev,QAudio::Mode mode);
+ ~QAudioDeviceInfoInternal();
+
+ bool open();
+ void close();
+
+ bool testSettings(const QAudioFormat& format) const;
+ void updateLists();
+ QAudioFormat preferredFormat() const;
+ bool isFormatSupported(const QAudioFormat& format) const;
+ QAudioFormat nearestFormat(const QAudioFormat& format) const;
+ QString deviceName() const;
+ QStringList codecList();
+ QList<int> frequencyList();
+ QList<int> channelsList();
+ QList<int> sampleSizeList();
+ QList<QAudioFormat::Endian> byteOrderList();
+ QList<QAudioFormat::SampleType> sampleTypeList();
+ static QByteArray defaultInputDevice();
+ static QByteArray defaultOutputDevice();
+ static QList<QByteArray> availableDevices(QAudio::Mode);
+
+private:
+ QAudio::Mode mode;
+ QString device;
+ QAudioFormat nearest;
+ QList<int> freqz;
+ QList<int> channelz;
+ QList<int> sizez;
+ QList<QAudioFormat::Endian> byteOrderz;
+ QStringList codecz;
+ QList<QAudioFormat::SampleType> typez;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/audio/qaudioengine.cpp b/src/multimedia/audio/qaudioengine.cpp
new file mode 100644
index 000000000..e6d0aa847
--- /dev/null
+++ b/src/multimedia/audio/qaudioengine.cpp
@@ -0,0 +1,343 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtMultimedia/qaudioengine.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QAbstractAudioDeviceInfo
+ \brief The QAbstractAudioDeviceInfo class provides access for QAudioDeviceInfo to access the audio
+ device provided by the plugin.
+ \internal
+
+ \ingroup multimedia
+
+ This class implements the audio functionality for
+ QAudioDeviceInfo, i.e., QAudioDeviceInfo keeps a
+ QAbstractAudioDeviceInfo and routes function calls to it. For a
+ description of the functionality that QAbstractAudioDeviceInfo
+ implements, you can read the class and functions documentation of
+ QAudioDeviceInfo.
+
+ \sa QAudioDeviceInfo
+*/
+
+/*!
+ \fn virtual QAudioFormat QAbstractAudioDeviceInfo::preferredFormat() const
+ Returns the nearest settings.
+*/
+
+/*!
+ \fn virtual bool QAbstractAudioDeviceInfo::isFormatSupported(const QAudioFormat& format) const
+ Returns true if \a format is available from audio device.
+*/
+
+/*!
+ \fn virtual QAudioFormat QAbstractAudioDeviceInfo::nearestFormat(const QAudioFormat& format) const
+ Returns the nearest settings \a format.
+*/
+
+/*!
+ \fn virtual QString QAbstractAudioDeviceInfo::deviceName() const
+ Returns the audio device name.
+*/
+
+/*!
+ \fn virtual QStringList QAbstractAudioDeviceInfo::codecList()
+ Returns the list of currently available codecs.
+*/
+
+/*!
+ \fn virtual QList<int> QAbstractAudioDeviceInfo::frequencyList()
+ Returns the list of currently available frequencies.
+*/
+
+/*!
+ \fn virtual QList<int> QAbstractAudioDeviceInfo::channelsList()
+ Returns the list of currently available channels.
+*/
+
+/*!
+ \fn virtual QList<int> QAbstractAudioDeviceInfo::sampleSizeList()
+ Returns the list of currently available sample sizes.
+*/
+
+/*!
+ \fn virtual QList<QAudioFormat::Endian> QAbstractAudioDeviceInfo::byteOrderList()
+ Returns the list of currently available byte orders.
+*/
+
+/*!
+ \fn virtual QList<QAudioFormat::SampleType> QAbstractAudioDeviceInfo::sampleTypeList()
+ Returns the list of currently available sample types.
+*/
+
+/*!
+ \class QAbstractAudioOutput
+ \brief The QAbstractAudioOutput class provides access for QAudioOutput to access the audio
+ device provided by the plugin.
+ \internal
+
+ \ingroup multimedia
+
+ QAbstractAudioOutput implements audio functionality for
+ QAudioOutput, i.e., QAudioOutput routes function calls to
+ QAbstractAudioOutput. For a description of the functionality that
+ is implemented, see the QAudioOutput class and function
+ descriptions.
+
+ \sa QAudioOutput
+*/
+
+/*!
+ \fn virtual QIODevice* QAbstractAudioOutput::start(QIODevice* device)
+ Uses the \a device as the QIODevice to transfer data. If \a device is null then the class
+ creates an internal QIODevice. Returns a pointer to the QIODevice being used to handle
+ the data transfer. This QIODevice can be used to write() audio data directly. Passing a
+ QIODevice allows the data to be transferred without any extra code.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioOutput::stop()
+ Stops the audio output.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioOutput::reset()
+ Drops all audio data in the buffers, resets buffers to zero.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioOutput::suspend()
+ Stops processing audio data, preserving buffered audio data.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioOutput::resume()
+ Resumes processing audio data after a suspend()
+*/
+
+/*!
+ \fn virtual int QAbstractAudioOutput::bytesFree() const
+ Returns the free space available in bytes in the audio buffer.
+*/
+
+/*!
+ \fn virtual int QAbstractAudioOutput::periodSize() const
+ Returns the period size in bytes.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioOutput::setBufferSize(int value)
+ Sets the audio buffer size to \a value in bytes.
+*/
+
+/*!
+ \fn virtual int QAbstractAudioOutput::bufferSize() const
+ Returns the audio buffer size in bytes.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioOutput::setNotifyInterval(int ms)
+ Sets the interval for notify() signal to be emitted. This is based on the \a ms
+ of audio data processed not on actual real-time. The resolution of the timer
+ is platform specific.
+*/
+
+/*!
+ \fn virtual int QAbstractAudioOutput::notifyInterval() const
+ Returns the notify interval in milliseconds.
+*/
+
+/*!
+ \fn virtual qint64 QAbstractAudioOutput::processedUSecs() const
+ Returns the amount of audio data processed since start() was called in milliseconds.
+*/
+
+/*!
+ \fn virtual qint64 QAbstractAudioOutput::elapsedUSecs() const
+ Returns the milliseconds since start() was called, including time in Idle and suspend states.
+*/
+
+/*!
+ \fn virtual QAudio::Error QAbstractAudioOutput::error() const
+ Returns the error state.
+*/
+
+/*!
+ \fn virtual QAudio::State QAbstractAudioOutput::state() const
+ Returns the state of audio processing.
+*/
+
+/*!
+ \fn virtual QAudioFormat QAbstractAudioOutput::format() const
+ Returns the QAudioFormat being used.
+*/
+
+/*!
+ \fn QAbstractAudioOutput::stateChanged(QAudio::State state)
+ This signal is emitted when the device \a state has changed.
+*/
+
+/*!
+ \fn QAbstractAudioOutput::notify()
+ This signal is emitted when x ms of audio data has been processed
+ the interval set by setNotifyInterval(x).
+*/
+
+
+/*!
+ \class QAbstractAudioInput
+ \brief The QAbstractAudioInput class provides access for QAudioInput to access the audio
+ device provided by the plugin.
+ \internal
+
+ \ingroup multimedia
+
+ QAudioDeviceInput keeps an instance of QAbstractAudioInput and
+ routes calls to functions of the same name to QAbstractAudioInput.
+ This means that it is QAbstractAudioInput that implements the
+ audio functionality. For a description of the functionality, see
+ the QAudioInput class description.
+
+ \sa QAudioInput
+*/
+
+/*!
+ \fn virtual QIODevice* QAbstractAudioInput::start(QIODevice* device)
+ Uses the \a device as the QIODevice to transfer data. If \a device is null
+ then the class creates an internal QIODevice. Returns a pointer to the
+ QIODevice being used to handle the data transfer. This QIODevice can be used to
+ read() audio data directly. Passing a QIODevice allows the data to be transferred
+ without any extra code.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioInput::stop()
+ Stops the audio input.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioInput::reset()
+ Drops all audio data in the buffers, resets buffers to zero.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioInput::suspend()
+ Stops processing audio data, preserving buffered audio data.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioInput::resume()
+ Resumes processing audio data after a suspend().
+*/
+
+/*!
+ \fn virtual int QAbstractAudioInput::bytesReady() const
+ Returns the amount of audio data available to read in bytes.
+*/
+
+/*!
+ \fn virtual int QAbstractAudioInput::periodSize() const
+ Returns the period size in bytes.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioInput::setBufferSize(int value)
+ Sets the audio buffer size to \a value in milliseconds.
+*/
+
+/*!
+ \fn virtual int QAbstractAudioInput::bufferSize() const
+ Returns the audio buffer size in milliseconds.
+*/
+
+/*!
+ \fn virtual void QAbstractAudioInput::setNotifyInterval(int ms)
+ Sets the interval for notify() signal to be emitted. This is based
+ on the \a ms of audio data processed not on actual real-time.
+ The resolution of the timer is platform specific.
+*/
+
+/*!
+ \fn virtual int QAbstractAudioInput::notifyInterval() const
+ Returns the notify interval in milliseconds.
+*/
+
+/*!
+ \fn virtual qint64 QAbstractAudioInput::processedUSecs() const
+ Returns the amount of audio data processed since start() was called in milliseconds.
+*/
+
+/*!
+ \fn virtual qint64 QAbstractAudioInput::elapsedUSecs() const
+ Returns the milliseconds since start() was called, including time in Idle and suspend states.
+*/
+
+/*!
+ \fn virtual QAudio::Error QAbstractAudioInput::error() const
+ Returns the error state.
+*/
+
+/*!
+ \fn virtual QAudio::State QAbstractAudioInput::state() const
+ Returns the state of audio processing.
+*/
+
+/*!
+ \fn virtual QAudioFormat QAbstractAudioInput::format() const
+ Returns the QAudioFormat being used
+*/
+
+/*!
+ \fn QAbstractAudioInput::stateChanged(QAudio::State state)
+ This signal is emitted when the device \a state has changed.
+*/
+
+/*!
+ \fn QAbstractAudioInput::notify()
+ This signal is emitted when x ms of audio data has been processed
+ the interval set by setNotifyInterval(x).
+*/
+
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudioengine.h b/src/multimedia/audio/qaudioengine.h
new file mode 100644
index 000000000..9ae6b9b05
--- /dev/null
+++ b/src/multimedia/audio/qaudioengine.h
@@ -0,0 +1,131 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QAUDIOENGINE_H
+#define QAUDIOENGINE_H
+
+#include <QtCore/qglobal.h>
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudioformat.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class Q_MULTIMEDIA_EXPORT QAbstractAudioDeviceInfo : public QObject
+{
+ Q_OBJECT
+
+public:
+ virtual QAudioFormat preferredFormat() const = 0;
+ virtual bool isFormatSupported(const QAudioFormat &format) const = 0;
+ virtual QAudioFormat nearestFormat(const QAudioFormat &format) const = 0;
+ virtual QString deviceName() const = 0;
+ virtual QStringList codecList() = 0;
+ virtual QList<int> frequencyList() = 0;
+ virtual QList<int> channelsList() = 0;
+ virtual QList<int> sampleSizeList() = 0;
+ virtual QList<QAudioFormat::Endian> byteOrderList() = 0;
+ virtual QList<QAudioFormat::SampleType> sampleTypeList() = 0;
+};
+
+class Q_MULTIMEDIA_EXPORT QAbstractAudioOutput : public QObject
+{
+ Q_OBJECT
+
+public:
+ virtual QIODevice* start(QIODevice* device) = 0;
+ virtual void stop() = 0;
+ virtual void reset() = 0;
+ virtual void suspend() = 0;
+ virtual void resume() = 0;
+ virtual int bytesFree() const = 0;
+ virtual int periodSize() const = 0;
+ virtual void setBufferSize(int value) = 0;
+ virtual int bufferSize() const = 0;
+ virtual void setNotifyInterval(int milliSeconds) = 0;
+ virtual int notifyInterval() const = 0;
+ virtual qint64 processedUSecs() const = 0;
+ virtual qint64 elapsedUSecs() const = 0;
+ virtual QAudio::Error error() const = 0;
+ virtual QAudio::State state() const = 0;
+ virtual QAudioFormat format() const = 0;
+
+Q_SIGNALS:
+ void stateChanged(QAudio::State);
+ void notify();
+};
+
+class Q_MULTIMEDIA_EXPORT QAbstractAudioInput : public QObject
+{
+ Q_OBJECT
+
+public:
+ virtual QIODevice* start(QIODevice* device) = 0;
+ virtual void stop() = 0;
+ virtual void reset() = 0;
+ virtual void suspend() = 0;
+ virtual void resume() = 0;
+ virtual int bytesReady() const = 0;
+ virtual int periodSize() const = 0;
+ virtual void setBufferSize(int value) = 0;
+ virtual int bufferSize() const = 0;
+ virtual void setNotifyInterval(int milliSeconds) = 0;
+ virtual int notifyInterval() const = 0;
+ virtual qint64 processedUSecs() const = 0;
+ virtual qint64 elapsedUSecs() const = 0;
+ virtual QAudio::Error error() const = 0;
+ virtual QAudio::State state() const = 0;
+ virtual QAudioFormat format() const = 0;
+
+Q_SIGNALS:
+ void stateChanged(QAudio::State);
+ void notify();
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QAUDIOENGINE_H
diff --git a/src/multimedia/audio/qaudioengineplugin.cpp b/src/multimedia/audio/qaudioengineplugin.cpp
new file mode 100644
index 000000000..95d1ea349
--- /dev/null
+++ b/src/multimedia/audio/qaudioengineplugin.cpp
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtMultimedia/qaudioengineplugin.h>
+
+QT_BEGIN_NAMESPACE
+
+QAudioEnginePlugin::QAudioEnginePlugin(QObject* parent) :
+ QObject(parent)
+{}
+
+QAudioEnginePlugin::~QAudioEnginePlugin()
+{}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudioengineplugin.h b/src/multimedia/audio/qaudioengineplugin.h
new file mode 100644
index 000000000..a7d22f0f2
--- /dev/null
+++ b/src/multimedia/audio/qaudioengineplugin.h
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QAUDIOENGINEPLUGIN_H
+#define QAUDIOENGINEPLUGIN_H
+
+#include <QtCore/qstring.h>
+#include <QtCore/qplugin.h>
+#include <QtCore/qfactoryinterface.h>
+
+#include <QtMultimedia/qaudioformat.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudioengine.h>
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+struct Q_MULTIMEDIA_EXPORT QAudioEngineFactoryInterface : public QFactoryInterface
+{
+ virtual QList<QByteArray> availableDevices(QAudio::Mode) const = 0;
+ virtual QAbstractAudioInput* createInput(const QByteArray& device, const QAudioFormat& format = QAudioFormat()) = 0;
+ virtual QAbstractAudioOutput* createOutput(const QByteArray& device, const QAudioFormat& format = QAudioFormat()) = 0;
+ virtual QAbstractAudioDeviceInfo* createDeviceInfo(const QByteArray& device, QAudio::Mode mode) = 0;
+};
+
+#define QAudioEngineFactoryInterface_iid \
+ "com.nokia.qt.QAudioEngineFactoryInterface"
+Q_DECLARE_INTERFACE(QAudioEngineFactoryInterface, QAudioEngineFactoryInterface_iid)
+
+class Q_MULTIMEDIA_EXPORT QAudioEnginePlugin : public QObject, public QAudioEngineFactoryInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(QAudioEngineFactoryInterface:QFactoryInterface)
+
+public:
+ QAudioEnginePlugin(QObject *parent = 0);
+ ~QAudioEnginePlugin();
+
+ virtual QStringList keys() const = 0;
+ virtual QList<QByteArray> availableDevices(QAudio::Mode) const = 0;
+ virtual QAbstractAudioInput* createInput(const QByteArray& device, const QAudioFormat& format = QAudioFormat()) = 0;
+ virtual QAbstractAudioOutput* createOutput(const QByteArray& device, const QAudioFormat& format = QAudioFormat()) = 0;
+ virtual QAbstractAudioDeviceInfo* createDeviceInfo(const QByteArray& device, QAudio::Mode mode) = 0;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QAUDIOENGINEPLUGIN_H
diff --git a/src/multimedia/audio/qaudioformat.cpp b/src/multimedia/audio/qaudioformat.cpp
new file mode 100644
index 000000000..c09811572
--- /dev/null
+++ b/src/multimedia/audio/qaudioformat.cpp
@@ -0,0 +1,407 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QDebug>
+#include <QtMultimedia/qaudioformat.h>
+
+
+QT_BEGIN_NAMESPACE
+
+
+class QAudioFormatPrivate : public QSharedData
+{
+public:
+ QAudioFormatPrivate()
+ {
+ frequency = -1;
+ channels = -1;
+ sampleSize = -1;
+ byteOrder = QAudioFormat::Endian(QSysInfo::ByteOrder);
+ sampleType = QAudioFormat::Unknown;
+ }
+
+ QAudioFormatPrivate(const QAudioFormatPrivate &other):
+ QSharedData(other),
+ codec(other.codec),
+ byteOrder(other.byteOrder),
+ sampleType(other.sampleType),
+ frequency(other.frequency),
+ channels(other.channels),
+ sampleSize(other.sampleSize)
+ {
+ }
+
+ QAudioFormatPrivate& operator=(const QAudioFormatPrivate &other)
+ {
+ codec = other.codec;
+ byteOrder = other.byteOrder;
+ sampleType = other.sampleType;
+ frequency = other.frequency;
+ channels = other.channels;
+ sampleSize = other.sampleSize;
+
+ return *this;
+ }
+
+ QString codec;
+ QAudioFormat::Endian byteOrder;
+ QAudioFormat::SampleType sampleType;
+ int frequency;
+ int channels;
+ int sampleSize;
+};
+
+/*!
+ \class QAudioFormat
+ \brief The QAudioFormat class stores audio parameter information.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia
+ \since 4.6
+
+ An audio format specifies how data in an audio stream is arranged,
+ i.e, how the stream is to be interpreted. The encoding itself is
+ specified by the codec() used for the stream.
+
+ In addition to the encoding, QAudioFormat contains other
+ parameters that further specify how the audio data is arranged.
+ These are the frequency, the number of channels, the sample size,
+ the sample type, and the byte order. The following table describes
+ these in more detail.
+
+ \table
+ \header
+ \o Parameter
+ \o Description
+ \row
+ \o Sample Rate
+ \o Samples per second of audio data in Hertz.
+ \row
+ \o Number of channels
+ \o The number of audio channels (typically one for mono
+ or two for stereo)
+ \row
+ \o Sample size
+ \o How much data is stored in each sample (typically 8
+ or 16 bits)
+ \row
+ \o Sample type
+ \o Numerical representation of sample (typically signed integer,
+ unsigned integer or float)
+ \row
+ \o Byte order
+ \o Byte ordering of sample (typically little endian, big endian)
+ \endtable
+
+ You can obtain audio formats compatible with the audio device used
+ through functions in QAudioDeviceInfo. This class also lets you
+ query available parameter values for a device, so that you can set
+ the parameters yourself. See the QAudioDeviceInfo class
+ description for details. You need to know the format of the audio
+ streams you wish to play. Qt does not set up formats for you.
+*/
+
+/*!
+ Construct a new audio format.
+
+ Values are initialized as follows:
+ \list
+ \o sampleRate() = -1
+ \o channelCount() = -1
+ \o sampleSize() = -1
+ \o byteOrder() = QAudioFormat::Endian(QSysInfo::ByteOrder)
+ \o sampleType() = QAudioFormat::Unknown
+ \c codec() = ""
+ \endlist
+*/
+
+QAudioFormat::QAudioFormat():
+ d(new QAudioFormatPrivate)
+{
+}
+
+/*!
+ Construct a new audio format using \a other.
+*/
+
+QAudioFormat::QAudioFormat(const QAudioFormat &other):
+ d(other.d)
+{
+}
+
+/*!
+ Destroy this audio format.
+*/
+
+QAudioFormat::~QAudioFormat()
+{
+}
+
+/*!
+ Assigns \a other to this QAudioFormat implementation.
+*/
+
+QAudioFormat& QAudioFormat::operator=(const QAudioFormat &other)
+{
+ d = other.d;
+ return *this;
+}
+
+/*!
+ Returns true if this QAudioFormat is equal to the \a other
+ QAudioFormat; otherwise returns false.
+
+ All elements of QAudioFormat are used for the comparison.
+*/
+
+bool QAudioFormat::operator==(const QAudioFormat &other) const
+{
+ return d->frequency == other.d->frequency &&
+ d->channels == other.d->channels &&
+ d->sampleSize == other.d->sampleSize &&
+ d->byteOrder == other.d->byteOrder &&
+ d->codec == other.d->codec &&
+ d->sampleType == other.d->sampleType;
+}
+
+/*!
+ Returns true if this QAudioFormat is not equal to the \a other
+ QAudioFormat; otherwise returns false.
+
+ All elements of QAudioFormat are used for the comparison.
+*/
+
+bool QAudioFormat::operator!=(const QAudioFormat& other) const
+{
+ return !(*this == other);
+}
+
+/*!
+ Returns true if all of the parameters are valid.
+*/
+
+bool QAudioFormat::isValid() const
+{
+ return d->frequency != -1 && d->channels != -1 && d->sampleSize != -1 &&
+ d->sampleType != QAudioFormat::Unknown && !d->codec.isEmpty();
+}
+
+/*!
+ Sets the sample rate to \a samplerate Hertz.
+
+ \since 4.7
+*/
+
+void QAudioFormat::setSampleRate(int samplerate)
+{
+ d->frequency = samplerate;
+}
+
+/*!
+ \obsolete
+
+ Use setSampleRate() instead.
+*/
+
+void QAudioFormat::setFrequency(int frequency)
+{
+ d->frequency = frequency;
+}
+
+/*!
+ Returns the current sample rate in Hertz.
+
+ \since 4.7
+*/
+
+int QAudioFormat::sampleRate() const
+{
+ return d->frequency;
+}
+
+/*!
+ \obsolete
+
+ Use sampleRate() instead.
+*/
+
+int QAudioFormat::frequency() const
+{
+ return d->frequency;
+}
+
+/*!
+ Sets the channel count to \a channels.
+
+ \since 4.7
+*/
+
+void QAudioFormat::setChannelCount(int channels)
+{
+ d->channels = channels;
+}
+
+/*!
+ \obsolete
+
+ Use setChannelCount() instead.
+*/
+
+void QAudioFormat::setChannels(int channels)
+{
+ d->channels = channels;
+}
+
+/*!
+ Returns the current channel count value.
+
+ \since 4.7
+*/
+
+int QAudioFormat::channelCount() const
+{
+ return d->channels;
+}
+
+/*!
+ \obsolete
+
+ Use channelCount() instead.
+*/
+
+int QAudioFormat::channels() const
+{
+ return d->channels;
+}
+
+/*!
+ Sets the sample size to the \a sampleSize specified.
+*/
+
+void QAudioFormat::setSampleSize(int sampleSize)
+{
+ d->sampleSize = sampleSize;
+}
+
+/*!
+ Returns the current sample size value.
+*/
+
+int QAudioFormat::sampleSize() const
+{
+ return d->sampleSize;
+}
+
+/*!
+ Sets the codec to \a codec.
+
+ \sa QAudioDeviceInfo::supportedCodecs()
+*/
+
+void QAudioFormat::setCodec(const QString &codec)
+{
+ d->codec = codec;
+}
+
+/*!
+ Returns the current codec value.
+
+ \sa QAudioDeviceInfo::supportedCodecs()
+*/
+
+QString QAudioFormat::codec() const
+{
+ return d->codec;
+}
+
+/*!
+ Sets the byteOrder to \a byteOrder.
+*/
+
+void QAudioFormat::setByteOrder(QAudioFormat::Endian byteOrder)
+{
+ d->byteOrder = byteOrder;
+}
+
+/*!
+ Returns the current byteOrder value.
+*/
+
+QAudioFormat::Endian QAudioFormat::byteOrder() const
+{
+ return d->byteOrder;
+}
+
+/*!
+ Sets the sampleType to \a sampleType.
+*/
+
+void QAudioFormat::setSampleType(QAudioFormat::SampleType sampleType)
+{
+ d->sampleType = sampleType;
+}
+
+/*!
+ Returns the current SampleType value.
+*/
+
+QAudioFormat::SampleType QAudioFormat::sampleType() const
+{
+ return d->sampleType;
+}
+
+/*!
+ \enum QAudioFormat::SampleType
+
+ \value Unknown Not Set
+ \value SignedInt samples are signed integers
+ \value UnSignedInt samples are unsigned intergers
+ \value Float samples are floats
+*/
+
+/*!
+ \enum QAudioFormat::Endian
+
+ \value BigEndian samples are big endian byte order
+ \value LittleEndian samples are little endian byte order
+*/
+
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/audio/qaudioformat.h b/src/multimedia/audio/qaudioformat.h
new file mode 100644
index 000000000..27b723fe3
--- /dev/null
+++ b/src/multimedia/audio/qaudioformat.h
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QAUDIOFORMAT_H
+#define QAUDIOFORMAT_H
+
+#include <QtCore/qobject.h>
+#include <QtCore/qglobal.h>
+#include <QtCore/qshareddata.h>
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class QAudioFormatPrivate;
+
+class Q_MULTIMEDIA_EXPORT QAudioFormat
+{
+public:
+ enum SampleType { Unknown, SignedInt, UnSignedInt, Float };
+ enum Endian { BigEndian = QSysInfo::BigEndian, LittleEndian = QSysInfo::LittleEndian };
+
+ QAudioFormat();
+ QAudioFormat(const QAudioFormat &other);
+ ~QAudioFormat();
+
+ QAudioFormat& operator=(const QAudioFormat &other);
+ bool operator==(const QAudioFormat &other) const;
+ bool operator!=(const QAudioFormat &other) const;
+
+ bool isValid() const;
+
+ void setFrequency(int frequency);
+ int frequency() const;
+ void setSampleRate(int sampleRate);
+ int sampleRate() const;
+
+ void setChannels(int channels);
+ int channels() const;
+ void setChannelCount(int channelCount);
+ int channelCount() const;
+
+ void setSampleSize(int sampleSize);
+ int sampleSize() const;
+
+ void setCodec(const QString &codec);
+ QString codec() const;
+
+ void setByteOrder(QAudioFormat::Endian byteOrder);
+ QAudioFormat::Endian byteOrder() const;
+
+ void setSampleType(QAudioFormat::SampleType sampleType);
+ QAudioFormat::SampleType sampleType() const;
+
+private:
+ QSharedDataPointer<QAudioFormatPrivate> d;
+};
+
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QAUDIOFORMAT_H
diff --git a/src/multimedia/audio/qaudioinput.cpp b/src/multimedia/audio/qaudioinput.cpp
new file mode 100644
index 000000000..77ecf70f7
--- /dev/null
+++ b/src/multimedia/audio/qaudioinput.cpp
@@ -0,0 +1,441 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudioengine.h>
+#include <QtMultimedia/qaudioinput.h>
+
+#include "qaudiodevicefactory_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QAudioInput
+ \brief The QAudioInput class provides an interface for receiving audio data from an audio input device.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia
+ \since 4.6
+
+ You can construct an audio input with the system's
+ \l{QAudioDeviceInfo::defaultInputDevice()}{default audio input
+ device}. It is also possible to create QAudioInput with a
+ specific QAudioDeviceInfo. When you create the audio input, you
+ should also send in the QAudioFormat to be used for the recording
+ (see the QAudioFormat class description for details).
+
+ To record to a file:
+
+ QAudioInput lets you record audio with an audio input device. The
+ default constructor of this class will use the systems default
+ audio device, but you can also specify a QAudioDeviceInfo for a
+ specific device. You also need to pass in the QAudioFormat in
+ which you wish to record.
+
+ Starting up the QAudioInput is simply a matter of calling start()
+ with a QIODevice opened for writing. For instance, to record to a
+ file, you can:
+
+ \code
+ QFile outputFile; // class member.
+ QAudioInput* audio; // class member.
+ \endcode
+
+ \code
+ {
+ outputFile.setFileName("/tmp/test.raw");
+ outputFile.open( QIODevice::WriteOnly | QIODevice::Truncate );
+
+ QAudioFormat format;
+ // set up the format you want, eg.
+ format.setFrequency(8000);
+ format.setChannels(1);
+ format.setSampleSize(8);
+ format.setCodec("audio/pcm");
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setSampleType(QAudioFormat::UnSignedInt);
+
+ QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice();
+ if (!info.isFormatSupported(format)) {
+ qWarning()<<"default format not supported try to use nearest";
+ format = info.nearestFormat(format);
+ }
+
+ audio = new QAudioInput(format, this);
+ QTimer::singleShot(3000, this, SLOT(stopRecording()));
+ audio->start(&outputFile);
+ // Records audio for 3000ms
+ }
+ \endcode
+
+ This will start recording if the format specified is supported by
+ the input device (you can check this with
+ QAudioDeviceInfo::isFormatSupported(). In case there are any
+ snags, use the error() function to check what went wrong. We stop
+ recording in the \c stopRecording() slot.
+
+ \code
+ void stopRecording()
+ {
+ audio->stop();
+ outputFile->close();
+ delete audio;
+ }
+ \endcode
+
+ At any point in time, QAudioInput will be in one of four states:
+ active, suspended, stopped, or idle. These states are specified by
+ the QAudio::State enum. You can request a state change directly through
+ suspend(), resume(), stop(), reset(), and start(). The current
+ state is reported by state(). QAudioOutput will also signal you
+ when the state changes (stateChanged()).
+
+ QAudioInput provides several ways of measuring the time that has
+ passed since the start() of the recording. The \c processedUSecs()
+ function returns the length of the stream in microseconds written,
+ i.e., it leaves out the times the audio input was suspended or idle.
+ The elapsedUSecs() function returns the time elapsed since start() was called regardless of
+ which states the QAudioInput has been in.
+
+ If an error should occur, you can fetch its reason with error().
+ The possible error reasons are described by the QAudio::Error
+ enum. The QAudioInput will enter the \l{QAudio::}{StoppedState} when
+ an error is encountered. Connect to the stateChanged() signal to
+ handle the error:
+
+ \snippet doc/src/snippets/audio/main.cpp 0
+
+ \sa QAudioOutput, QAudioDeviceInfo
+
+ \section1 Symbian Platform Security Requirements
+
+ On Symbian, processes which use this class must have the
+ \c UserEnvironment platform security capability. If the client
+ process lacks this capability, calls to either overload of start()
+ will fail.
+ This failure is indicated by the QAudioInput object setting
+ its error() value to \l{QAudio::OpenError} and then emitting a
+ \l{stateChanged()}{stateChanged}(\l{QAudio::StoppedState}) signal.
+
+ Platform security capabilities are added via the
+ \l{qmake-variable-reference.html#target-capability}{TARGET.CAPABILITY}
+ qmake variable.
+*/
+
+/*!
+ Construct a new audio input and attach it to \a parent.
+ The default audio input device is used with the output
+ \a format parameters.
+*/
+
+QAudioInput::QAudioInput(const QAudioFormat &format, QObject *parent):
+ QObject(parent)
+{
+ d = QAudioDeviceFactory::createDefaultInputDevice(format);
+ connect(d, SIGNAL(notify()), SIGNAL(notify()));
+ connect(d, SIGNAL(stateChanged(QAudio::State)), SIGNAL(stateChanged(QAudio::State)));
+}
+
+/*!
+ Construct a new audio input and attach it to \a parent.
+ The device referenced by \a audioDevice is used with the input
+ \a format parameters.
+*/
+
+QAudioInput::QAudioInput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format, QObject *parent):
+ QObject(parent)
+{
+ d = QAudioDeviceFactory::createInputDevice(audioDevice, format);
+ connect(d, SIGNAL(notify()), SIGNAL(notify()));
+ connect(d, SIGNAL(stateChanged(QAudio::State)), SIGNAL(stateChanged(QAudio::State)));
+}
+
+/*!
+ Destroy this audio input.
+*/
+
+QAudioInput::~QAudioInput()
+{
+ delete d;
+}
+
+/*!
+ Uses the \a device as the QIODevice to transfer data.
+ Passing a QIODevice allows the data to be transferred without any extra code.
+ All that is required is to open the QIODevice. QAudioInput does not take
+ ownership of \a device.
+
+ The QAudioInput will write to the device when new data is available. You can
+ subclass QIODevice and reimplement \l{QIODevice::}{writeData()} if you wish to
+ access the data. If you simply want to save data to a file, you can pass a
+ QFile to this function.
+
+ If able to successfully get audio data from the systems audio device the
+ state() is set to either QAudio::ActiveState or QAudio::IdleState,
+ error() is set to QAudio::NoError and the stateChanged() signal is emitted.
+
+ If a problem occurs during this process the error() is set to QAudio::OpenError,
+ state() is set to QAudio::StoppedState and stateChanged() signal is emitted.
+
+ \l{QAudioInput#Symbian Platform Security Requirements}
+
+ \sa QIODevice
+*/
+
+void QAudioInput::start(QIODevice* device)
+{
+ d->start(device);
+}
+
+/*!
+
+ Returns a pointer to a new QIODevice that will be used to handle the data transfer.
+ This QIODevice can be used to \l{QIODevice::}{read()} audio data directly.
+ You will typically connect to the \l{QIODevice::}{readyRead()} signal, and
+ read from the device in the slot you connect to. QAudioInput keeps ownership
+ of the device.
+
+ If able to access the systems audio device the state() is set to
+ QAudio::IdleState, error() is set to QAudio::NoError
+ and the stateChanged() signal is emitted.
+
+ If a problem occurs during this process the error() is set to QAudio::OpenError,
+ state() is set to QAudio::StoppedState and stateChanged() signal is emitted.
+
+ \l{QAudioInput#Symbian Platform Security Requirements}
+
+ \sa QIODevice
+*/
+
+QIODevice* QAudioInput::start()
+{
+ return d->start(0);
+}
+
+/*!
+ Returns the QAudioFormat being used.
+*/
+
+QAudioFormat QAudioInput::format() const
+{
+ return d->format();
+}
+
+/*!
+ Stops the audio input, detaching from the system resource.
+
+ Sets error() to QAudio::NoError, state() to QAudio::StoppedState and
+ emit stateChanged() signal.
+*/
+
+void QAudioInput::stop()
+{
+ d->stop();
+}
+
+/*!
+ Drops all audio data in the buffers, resets buffers to zero.
+*/
+
+void QAudioInput::reset()
+{
+ d->reset();
+}
+
+/*!
+ Stops processing audio data, preserving buffered audio data.
+
+ Sets error() to QAudio::NoError, state() to QAudio::SuspendedState and
+ emit stateChanged() signal.
+*/
+
+void QAudioInput::suspend()
+{
+ d->suspend();
+}
+
+/*!
+ Resumes processing audio data after a suspend().
+
+ Sets error() to QAudio::NoError.
+ Sets state() to QAudio::ActiveState if you previously called start(QIODevice*).
+ Sets state() to QAudio::IdleState if you previously called start().
+ emits stateChanged() signal.
+*/
+
+void QAudioInput::resume()
+{
+ d->resume();
+}
+
+/*!
+ Sets the audio buffer size to \a value milliseconds.
+
+ Note: This function can be called anytime before start(), calls to this
+ are ignored after start(). It should not be assumed that the buffer size
+ set is the actual buffer size used, calling bufferSize() anytime after start()
+ will return the actual buffer size being used.
+
+*/
+
+void QAudioInput::setBufferSize(int value)
+{
+ d->setBufferSize(value);
+}
+
+/*!
+ Returns the audio buffer size in milliseconds.
+
+ If called before start(), returns platform default value.
+ If called before start() but setBufferSize() was called prior, returns value set by setBufferSize().
+ If called after start(), returns the actual buffer size being used. This may not be what was set previously
+ by setBufferSize().
+
+*/
+
+int QAudioInput::bufferSize() const
+{
+ return d->bufferSize();
+}
+
+/*!
+ Returns the amount of audio data available to read in bytes.
+
+ NOTE: returned value is only valid while in QAudio::ActiveState or QAudio::IdleState
+ state, otherwise returns zero.
+*/
+
+int QAudioInput::bytesReady() const
+{
+ /*
+ -If not ActiveState|IdleState, return 0
+ -return amount of audio data available to read
+ */
+ return d->bytesReady();
+}
+
+/*!
+ Returns the period size in bytes.
+
+ Note: This is the recommended read size in bytes.
+*/
+
+int QAudioInput::periodSize() const
+{
+ return d->periodSize();
+}
+
+/*!
+ Sets the interval for notify() signal to be emitted.
+ This is based on the \a ms of audio data processed
+ not on actual real-time.
+ The minimum resolution of the timer is platform specific and values
+ should be checked with notifyInterval() to confirm actual value
+ being used.
+*/
+
+void QAudioInput::setNotifyInterval(int ms)
+{
+ d->setNotifyInterval(ms);
+}
+
+/*!
+ Returns the notify interval in milliseconds.
+*/
+
+int QAudioInput::notifyInterval() const
+{
+ return d->notifyInterval();
+}
+
+/*!
+ Returns the amount of audio data processed since start()
+ was called in microseconds.
+*/
+
+qint64 QAudioInput::processedUSecs() const
+{
+ return d->processedUSecs();
+}
+
+/*!
+ Returns the microseconds since start() was called, including time in Idle and
+ Suspend states.
+*/
+
+qint64 QAudioInput::elapsedUSecs() const
+{
+ return d->elapsedUSecs();
+}
+
+/*!
+ Returns the error state.
+*/
+
+QAudio::Error QAudioInput::error() const
+{
+ return d->error();
+}
+
+/*!
+ Returns the state of audio processing.
+*/
+
+QAudio::State QAudioInput::state() const
+{
+ return d->state();
+}
+
+/*!
+ \fn QAudioInput::stateChanged(QAudio::State state)
+ This signal is emitted when the device \a state has changed.
+*/
+
+/*!
+ \fn QAudioInput::notify()
+ This signal is emitted when x ms of audio data has been processed
+ the interval set by setNotifyInterval(x).
+*/
+
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/audio/qaudioinput.h b/src/multimedia/audio/qaudioinput.h
new file mode 100644
index 000000000..bee7b4018
--- /dev/null
+++ b/src/multimedia/audio/qaudioinput.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QAUDIOINPUT_H
+#define QAUDIOINPUT_H
+
+#include <QtCore/qiodevice.h>
+#include <QtCore/qglobal.h>
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudioformat.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class QAbstractAudioInput;
+
+class Q_MULTIMEDIA_EXPORT QAudioInput : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit QAudioInput(const QAudioFormat &format = QAudioFormat(), QObject *parent = 0);
+ explicit QAudioInput(const QAudioDeviceInfo &audioDeviceInfo, const QAudioFormat &format = QAudioFormat(), QObject *parent = 0);
+ ~QAudioInput();
+
+ QAudioFormat format() const;
+
+ void start(QIODevice *device);
+ QIODevice* start();
+
+ void stop();
+ void reset();
+ void suspend();
+ void resume();
+
+ void setBufferSize(int bytes);
+ int bufferSize() const;
+
+ int bytesReady() const;
+ int periodSize() const;
+
+ void setNotifyInterval(int milliSeconds);
+ int notifyInterval() const;
+
+ qint64 processedUSecs() const;
+ qint64 elapsedUSecs() const;
+
+ QAudio::Error error() const;
+ QAudio::State state() const;
+
+Q_SIGNALS:
+ void stateChanged(QAudio::State);
+ void notify();
+
+private:
+ Q_DISABLE_COPY(QAudioInput)
+
+ QAbstractAudioInput* d;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QAUDIOINPUT_H
diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp
new file mode 100644
index 000000000..0c58583d5
--- /dev/null
+++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp
@@ -0,0 +1,746 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qcoreapplication.h>
+#include "qaudioinput_alsa_p.h"
+#include "qaudiodeviceinfo_alsa_p.h"
+
+QT_BEGIN_NAMESPACE
+
+//#define DEBUG_AUDIO 1
+
+QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device, const QAudioFormat& audioFormat):
+ settings(audioFormat)
+{
+ bytesAvailable = 0;
+ handle = 0;
+ ahandler = 0;
+ access = SND_PCM_ACCESS_RW_INTERLEAVED;
+ pcmformat = SND_PCM_FORMAT_S16;
+ buffer_size = 0;
+ period_size = 0;
+ buffer_time = 100000;
+ period_time = 20000;
+ totalTimeValue = 0;
+ intervalTime = 1000;
+ audioBuffer = 0;
+ errorState = QAudio::NoError;
+ deviceState = QAudio::StoppedState;
+ audioSource = 0;
+ pullMode = true;
+ resuming = false;
+
+ m_device = device;
+
+ timer = new QTimer(this);
+ connect(timer,SIGNAL(timeout()),SLOT(userFeed()));
+}
+
+QAudioInputPrivate::~QAudioInputPrivate()
+{
+ close();
+ disconnect(timer, SIGNAL(timeout()));
+ QCoreApplication::processEvents();
+ delete timer;
+}
+
+QAudio::Error QAudioInputPrivate::error() const
+{
+ return errorState;
+}
+
+QAudio::State QAudioInputPrivate::state() const
+{
+ return deviceState;
+}
+
+
+QAudioFormat QAudioInputPrivate::format() const
+{
+ return settings;
+}
+
+int QAudioInputPrivate::xrun_recovery(int err)
+{
+ int count = 0;
+ bool reset = false;
+
+ if(err == -EPIPE) {
+ errorState = QAudio::UnderrunError;
+ err = snd_pcm_prepare(handle);
+ if(err < 0)
+ reset = true;
+ else {
+ bytesAvailable = checkBytesReady();
+ if (bytesAvailable <= 0)
+ reset = true;
+ }
+
+ } else if((err == -ESTRPIPE)||(err == -EIO)) {
+ errorState = QAudio::IOError;
+ while((err = snd_pcm_resume(handle)) == -EAGAIN){
+ usleep(100);
+ count++;
+ if(count > 5) {
+ reset = true;
+ break;
+ }
+ }
+ if(err < 0) {
+ err = snd_pcm_prepare(handle);
+ if(err < 0)
+ reset = true;
+ }
+ }
+ if(reset) {
+ close();
+ open();
+ snd_pcm_prepare(handle);
+ return 0;
+ }
+ return err;
+}
+
+int QAudioInputPrivate::setFormat()
+{
+ snd_pcm_format_t format = SND_PCM_FORMAT_UNKNOWN;
+
+ if(settings.sampleSize() == 8) {
+ format = SND_PCM_FORMAT_U8;
+ } else if(settings.sampleSize() == 16) {
+ if(settings.sampleType() == QAudioFormat::SignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ format = SND_PCM_FORMAT_S16_LE;
+ else
+ format = SND_PCM_FORMAT_S16_BE;
+ } else if(settings.sampleType() == QAudioFormat::UnSignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ format = SND_PCM_FORMAT_U16_LE;
+ else
+ format = SND_PCM_FORMAT_U16_BE;
+ }
+ } else if(settings.sampleSize() == 24) {
+ if(settings.sampleType() == QAudioFormat::SignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ format = SND_PCM_FORMAT_S24_LE;
+ else
+ format = SND_PCM_FORMAT_S24_BE;
+ } else if(settings.sampleType() == QAudioFormat::UnSignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ format = SND_PCM_FORMAT_U24_LE;
+ else
+ format = SND_PCM_FORMAT_U24_BE;
+ }
+ } else if(settings.sampleSize() == 32) {
+ if(settings.sampleType() == QAudioFormat::SignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ format = SND_PCM_FORMAT_S32_LE;
+ else
+ format = SND_PCM_FORMAT_S32_BE;
+ } else if(settings.sampleType() == QAudioFormat::UnSignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ format = SND_PCM_FORMAT_U32_LE;
+ else
+ format = SND_PCM_FORMAT_U32_BE;
+ } else if(settings.sampleType() == QAudioFormat::Float) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ format = SND_PCM_FORMAT_FLOAT_LE;
+ else
+ format = SND_PCM_FORMAT_FLOAT_BE;
+ }
+ } else if(settings.sampleSize() == 64) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ format = SND_PCM_FORMAT_FLOAT64_LE;
+ else
+ format = SND_PCM_FORMAT_FLOAT64_BE;
+ }
+
+ return format != SND_PCM_FORMAT_UNKNOWN
+ ? snd_pcm_hw_params_set_format( handle, hwparams, format)
+ : -1;
+}
+
+QIODevice* QAudioInputPrivate::start(QIODevice* device)
+{
+ if(deviceState != QAudio::StoppedState)
+ close();
+
+ if(!pullMode && audioSource) {
+ delete audioSource;
+ }
+
+ if(device) {
+ //set to pull mode
+ pullMode = true;
+ audioSource = device;
+ deviceState = QAudio::ActiveState;
+ } else {
+ //set to push mode
+ pullMode = false;
+ deviceState = QAudio::IdleState;
+ audioSource = new InputPrivate(this);
+ audioSource->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
+ }
+
+ if( !open() )
+ return 0;
+
+ emit stateChanged(deviceState);
+
+ return audioSource;
+}
+
+void QAudioInputPrivate::stop()
+{
+ if(deviceState == QAudio::StoppedState)
+ return;
+
+ deviceState = QAudio::StoppedState;
+
+ close();
+ emit stateChanged(deviceState);
+}
+
+bool QAudioInputPrivate::open()
+{
+#ifdef DEBUG_AUDIO
+ QTime now(QTime::currentTime());
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :open()";
+#endif
+ clockStamp.restart();
+ timeStamp.restart();
+ elapsedTimeOffset = 0;
+
+ int dir;
+ int err = 0;
+ int count=0;
+ unsigned int freakuency=settings.frequency();
+
+ if (!settings.isValid()) {
+ qWarning("QAudioOutput: open error, invalid format.");
+ } else if (settings.frequency() <= 0) {
+ qWarning("QAudioOutput: open error, invalid sample rate (%d).",
+ settings.frequency());
+ } else {
+ err = -1;
+ }
+
+ if (err == 0) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ return false;
+ }
+
+
+ QString dev = QString(QLatin1String(m_device.constData()));
+ QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioInput);
+ if(dev.compare(QLatin1String("default")) == 0) {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(devices.first());
+#else
+ dev = QLatin1String("hw:0,0");
+#endif
+ } else {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(m_device);
+#else
+ int idx = 0;
+ char *name;
+
+ QString shortName = QLatin1String(m_device.mid(m_device.indexOf('=',0)+1).constData());
+
+ while(snd_card_get_name(idx,&name) == 0) {
+ if(qstrncmp(shortName.toLocal8Bit().constData(),name,shortName.length()) == 0)
+ break;
+ idx++;
+ }
+ dev = QString(QLatin1String("hw:%1,0")).arg(idx);
+#endif
+ }
+
+ // Step 1: try and open the device
+ while((count < 5) && (err < 0)) {
+ err=snd_pcm_open(&handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_CAPTURE,0);
+ if(err < 0)
+ count++;
+ }
+ if (( err < 0)||(handle == 0)) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ return false;
+ }
+ snd_pcm_nonblock( handle, 0 );
+
+ // Step 2: Set the desired HW parameters.
+ snd_pcm_hw_params_alloca( &hwparams );
+
+ bool fatal = false;
+ QString errMessage;
+ unsigned int chunks = 8;
+
+ err = snd_pcm_hw_params_any( handle, hwparams );
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioInput: snd_pcm_hw_params_any: err = %1").arg(err);
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_rate_resample( handle, hwparams, 1 );
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioInput: snd_pcm_hw_params_set_rate_resample: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_access( handle, hwparams, access );
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioInput: snd_pcm_hw_params_set_access: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = setFormat();
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioInput: snd_pcm_hw_params_set_format: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_channels( handle, hwparams, (unsigned int)settings.channels() );
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioInput: snd_pcm_hw_params_set_channels: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_rate_near( handle, hwparams, &freakuency, 0 );
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioInput: snd_pcm_hw_params_set_rate_near: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_buffer_time_near(handle, hwparams, &buffer_time, &dir);
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioInput: snd_pcm_hw_params_set_buffer_time_near: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_period_time_near(handle, hwparams, &period_time, &dir);
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioInput: snd_pcm_hw_params_set_period_time_near: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_periods_near(handle, hwparams, &chunks, &dir);
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioInput: snd_pcm_hw_params_set_periods_near: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params(handle, hwparams);
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioInput: snd_pcm_hw_params: err = %1").arg(err);
+ }
+ }
+ if( err < 0) {
+ qWarning()<<errMessage;
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ return false;
+ }
+ snd_pcm_hw_params_get_buffer_size(hwparams,&buffer_frames);
+ buffer_size = snd_pcm_frames_to_bytes(handle,buffer_frames);
+ snd_pcm_hw_params_get_period_size(hwparams,&period_frames, &dir);
+ period_size = snd_pcm_frames_to_bytes(handle,period_frames);
+ snd_pcm_hw_params_get_buffer_time(hwparams,&buffer_time, &dir);
+ snd_pcm_hw_params_get_period_time(hwparams,&period_time, &dir);
+
+ // Step 3: Set the desired SW parameters.
+ snd_pcm_sw_params_t *swparams;
+ snd_pcm_sw_params_alloca(&swparams);
+ snd_pcm_sw_params_current(handle, swparams);
+ snd_pcm_sw_params_set_start_threshold(handle,swparams,period_frames);
+ snd_pcm_sw_params_set_stop_threshold(handle,swparams,buffer_frames);
+ snd_pcm_sw_params_set_avail_min(handle, swparams,period_frames);
+ snd_pcm_sw_params(handle, swparams);
+
+ // Step 4: Prepare audio
+ if(audioBuffer == 0)
+ audioBuffer = new char[buffer_size];
+ snd_pcm_prepare( handle );
+ snd_pcm_start(handle);
+
+ // Step 5: Setup timer
+ bytesAvailable = checkBytesReady();
+
+ if(pullMode)
+ connect(audioSource,SIGNAL(readyRead()),this,SLOT(userFeed()));
+
+ // Step 6: Start audio processing
+ chunks = buffer_size/period_size;
+ timer->start(period_time*chunks/2000);
+
+ errorState = QAudio::NoError;
+
+ totalTimeValue = 0;
+
+ return true;
+}
+
+void QAudioInputPrivate::close()
+{
+ timer->stop();
+
+ if ( handle ) {
+ snd_pcm_drop( handle );
+ snd_pcm_close( handle );
+ handle = 0;
+ delete [] audioBuffer;
+ audioBuffer=0;
+ }
+}
+
+int QAudioInputPrivate::checkBytesReady()
+{
+ if(resuming)
+ bytesAvailable = period_size;
+ else if(deviceState != QAudio::ActiveState
+ && deviceState != QAudio::IdleState)
+ bytesAvailable = 0;
+ else {
+ int frames = snd_pcm_avail_update(handle);
+ if (frames < 0) {
+ bytesAvailable = frames;
+ } else {
+ if((int)frames > (int)buffer_frames)
+ frames = buffer_frames;
+ bytesAvailable = snd_pcm_frames_to_bytes(handle, frames);
+ }
+ }
+ return bytesAvailable;
+}
+
+int QAudioInputPrivate::bytesReady() const
+{
+ return qMax(bytesAvailable, 0);
+}
+
+qint64 QAudioInputPrivate::read(char* data, qint64 len)
+{
+ // Read in some audio data and write it to QIODevice, pull mode
+ if ( !handle )
+ return 0;
+
+ // bytesAvaiable is saved as a side effect of checkBytesReady().
+ int bytesToRead = checkBytesReady();
+
+ if (bytesToRead < 0) {
+ // bytesAvailable as negative is error code, try to recover from it.
+ xrun_recovery(bytesToRead);
+ bytesToRead = checkBytesReady();
+ if (bytesToRead < 0) {
+ // recovery failed must stop and set error.
+ close();
+ errorState = QAudio::IOError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ return 0;
+ }
+ }
+
+ bytesToRead = qMin<qint64>(len, bytesToRead);
+ bytesToRead -= bytesToRead % period_size;
+ int count=0, err = 0;
+ while(count < 5) {
+ int chunks = bytesToRead/period_size;
+ int frames = chunks*period_frames;
+ if(frames > (int)buffer_frames)
+ frames = buffer_frames;
+ int readFrames = snd_pcm_readi(handle, audioBuffer, frames);
+ if (readFrames >= 0) {
+ err = snd_pcm_frames_to_bytes(handle, readFrames);
+#ifdef DEBUG_AUDIO
+ qDebug()<<QString::fromLatin1("read in bytes = %1 (frames=%2)").arg(err).arg(readFrames).toLatin1().constData();
+#endif
+ break;
+ } else if((readFrames == -EAGAIN) || (readFrames == -EINTR)) {
+ errorState = QAudio::IOError;
+ err = 0;
+ break;
+ } else {
+ if(readFrames == -EPIPE) {
+ errorState = QAudio::UnderrunError;
+ err = snd_pcm_prepare(handle);
+ } else if(readFrames == -ESTRPIPE) {
+ err = snd_pcm_prepare(handle);
+ }
+ if(err != 0) break;
+ }
+ count++;
+ }
+ if(err > 0) {
+ // got some send it onward
+#ifdef DEBUG_AUDIO
+ qDebug()<<"frames to write to QIODevice = "<<
+ snd_pcm_bytes_to_frames( handle, (int)err )<<" ("<<err<<") bytes";
+#endif
+ if(deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
+ return 0;
+ if (pullMode) {
+ qint64 l = audioSource->write(audioBuffer,err);
+ if(l < 0) {
+ close();
+ errorState = QAudio::IOError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ } else if(l == 0) {
+ if (deviceState != QAudio::IdleState) {
+ errorState = QAudio::NoError;
+ deviceState = QAudio::IdleState;
+ emit stateChanged(deviceState);
+ }
+ } else {
+ bytesAvailable -= err;
+ totalTimeValue += err;
+ resuming = false;
+ if (deviceState != QAudio::ActiveState) {
+ errorState = QAudio::NoError;
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
+ }
+ return l;
+
+ } else {
+ memcpy(data,audioBuffer,err);
+ bytesAvailable -= err;
+ totalTimeValue += err;
+ resuming = false;
+ if (deviceState != QAudio::ActiveState) {
+ errorState = QAudio::NoError;
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
+ return err;
+ }
+ }
+ return 0;
+}
+
+void QAudioInputPrivate::resume()
+{
+ if(deviceState == QAudio::SuspendedState) {
+ int err = 0;
+
+ if(handle) {
+ err = snd_pcm_prepare( handle );
+ if(err < 0)
+ xrun_recovery(err);
+
+ err = snd_pcm_start(handle);
+ if(err < 0)
+ xrun_recovery(err);
+
+ bytesAvailable = buffer_size;
+ }
+ resuming = true;
+ deviceState = QAudio::ActiveState;
+ int chunks = buffer_size/period_size;
+ timer->start(period_time*chunks/2000);
+ emit stateChanged(deviceState);
+ }
+}
+
+void QAudioInputPrivate::setBufferSize(int value)
+{
+ buffer_size = value;
+}
+
+int QAudioInputPrivate::bufferSize() const
+{
+ return buffer_size;
+}
+
+int QAudioInputPrivate::periodSize() const
+{
+ return period_size;
+}
+
+void QAudioInputPrivate::setNotifyInterval(int ms)
+{
+ intervalTime = qMax(0, ms);
+}
+
+int QAudioInputPrivate::notifyInterval() const
+{
+ return intervalTime;
+}
+
+qint64 QAudioInputPrivate::processedUSecs() const
+{
+ qint64 result = qint64(1000000) * totalTimeValue /
+ (settings.channels()*(settings.sampleSize()/8)) /
+ settings.frequency();
+
+ return result;
+}
+
+void QAudioInputPrivate::suspend()
+{
+ if(deviceState == QAudio::ActiveState||resuming) {
+ timer->stop();
+ deviceState = QAudio::SuspendedState;
+ emit stateChanged(deviceState);
+ }
+}
+
+void QAudioInputPrivate::userFeed()
+{
+ if(deviceState == QAudio::StoppedState || deviceState == QAudio::SuspendedState)
+ return;
+#ifdef DEBUG_AUDIO
+ QTime now(QTime::currentTime());
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :userFeed() IN";
+#endif
+ deviceReady();
+}
+
+bool QAudioInputPrivate::deviceReady()
+{
+ if(pullMode) {
+ // reads some audio data and writes it to QIODevice
+ read(0, buffer_size);
+ } else {
+ // emits readyRead() so user will call read() on QIODevice to get some audio data
+ InputPrivate* a = qobject_cast<InputPrivate*>(audioSource);
+ a->trigger();
+ }
+ bytesAvailable = checkBytesReady();
+
+ if(deviceState != QAudio::ActiveState)
+ return true;
+
+ if (bytesAvailable < 0) {
+ // bytesAvailable as negative is error code, try to recover from it.
+ xrun_recovery(bytesAvailable);
+ bytesAvailable = checkBytesReady();
+ if (bytesAvailable < 0) {
+ // recovery failed must stop and set error.
+ close();
+ errorState = QAudio::IOError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ return 0;
+ }
+ }
+
+ if(intervalTime && (timeStamp.elapsed() + elapsedTimeOffset) > intervalTime) {
+ emit notify();
+ elapsedTimeOffset = timeStamp.elapsed() + elapsedTimeOffset - intervalTime;
+ timeStamp.restart();
+ }
+ return true;
+}
+
+qint64 QAudioInputPrivate::elapsedUSecs() const
+{
+ if (deviceState == QAudio::StoppedState)
+ return 0;
+
+ return clockStamp.elapsed()*1000;
+}
+
+void QAudioInputPrivate::reset()
+{
+ if(handle)
+ snd_pcm_reset(handle);
+}
+
+void QAudioInputPrivate::drain()
+{
+ if(handle)
+ snd_pcm_drain(handle);
+}
+
+InputPrivate::InputPrivate(QAudioInputPrivate* audio)
+{
+ audioDevice = qobject_cast<QAudioInputPrivate*>(audio);
+}
+
+InputPrivate::~InputPrivate()
+{
+}
+
+qint64 InputPrivate::readData( char* data, qint64 len)
+{
+ return audioDevice->read(data,len);
+}
+
+qint64 InputPrivate::writeData(const char* data, qint64 len)
+{
+ Q_UNUSED(data)
+ Q_UNUSED(len)
+ return 0;
+}
+
+void InputPrivate::trigger()
+{
+ emit readyRead();
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudioinput_alsa_p.h b/src/multimedia/audio/qaudioinput_alsa_p.h
new file mode 100644
index 000000000..9614039d5
--- /dev/null
+++ b/src/multimedia/audio/qaudioinput_alsa_p.h
@@ -0,0 +1,159 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+
+#ifndef QAUDIOINPUTALSA_H
+#define QAUDIOINPUTALSA_H
+
+#include <alsa/asoundlib.h>
+
+#include <QtCore/qfile.h>
+#include <QtCore/qdebug.h>
+#include <QtCore/qtimer.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/qelapsedtimer.h>
+#include <QtCore/qdatetime.h>
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudioengine.h>
+
+QT_BEGIN_NAMESPACE
+
+class InputPrivate;
+
+class QAudioInputPrivate : public QAbstractAudioInput
+{
+ Q_OBJECT
+public:
+ QAudioInputPrivate(const QByteArray &device, const QAudioFormat& audioFormat);
+ ~QAudioInputPrivate();
+
+ qint64 read(char* data, qint64 len);
+
+ QIODevice* start(QIODevice* device = 0);
+ void stop();
+ void reset();
+ void suspend();
+ void resume();
+ int bytesReady() const;
+ int periodSize() const;
+ void setBufferSize(int value);
+ int bufferSize() const;
+ void setNotifyInterval(int milliSeconds);
+ int notifyInterval() const;
+ qint64 processedUSecs() const;
+ qint64 elapsedUSecs() const;
+ QAudio::Error error() const;
+ QAudio::State state() const;
+ QAudioFormat format() const;
+ bool resuming;
+ snd_pcm_t* handle;
+ qint64 totalTimeValue;
+ QIODevice* audioSource;
+ QAudioFormat settings;
+ QAudio::Error errorState;
+ QAudio::State deviceState;
+
+private slots:
+ void userFeed();
+ bool deviceReady();
+
+private:
+ int checkBytesReady();
+ int xrun_recovery(int err);
+ int setFormat();
+ bool open();
+ void close();
+ void drain();
+
+ QTimer* timer;
+ QElapsedTimer timeStamp;
+ QElapsedTimer clockStamp;
+ qint64 elapsedTimeOffset;
+ int intervalTime;
+ char* audioBuffer;
+ int bytesAvailable;
+ QByteArray m_device;
+ bool pullMode;
+ int buffer_size;
+ int period_size;
+ unsigned int buffer_time;
+ unsigned int period_time;
+ snd_pcm_uframes_t buffer_frames;
+ snd_pcm_uframes_t period_frames;
+ snd_async_handler_t* ahandler;
+ snd_pcm_access_t access;
+ snd_pcm_format_t pcmformat;
+ snd_timestamp_t* timestamp;
+ snd_pcm_hw_params_t *hwparams;
+};
+
+class InputPrivate : public QIODevice
+{
+ Q_OBJECT
+public:
+ InputPrivate(QAudioInputPrivate* audio);
+ ~InputPrivate();
+
+ qint64 readData( char* data, qint64 len);
+ qint64 writeData(const char* data, qint64 len);
+
+ void trigger();
+private:
+ QAudioInputPrivate *audioDevice;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/audio/qaudioinput_mac_p.cpp b/src/multimedia/audio/qaudioinput_mac_p.cpp
new file mode 100644
index 000000000..aa21e1782
--- /dev/null
+++ b/src/multimedia/audio/qaudioinput_mac_p.cpp
@@ -0,0 +1,957 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qendian.h>
+#include <QtCore/qtimer.h>
+#include <QtCore/qdebug.h>
+
+#include <QtMultimedia/qaudioinput.h>
+
+#include "qaudio_mac_p.h"
+#include "qaudioinput_mac_p.h"
+#include "qaudiodeviceinfo_mac_p.h"
+
+QT_BEGIN_NAMESPACE
+
+
+namespace QtMultimediaInternal
+{
+
+static const int default_buffer_size = 4 * 1024;
+
+class QAudioBufferList
+{
+public:
+ QAudioBufferList(AudioStreamBasicDescription const& streamFormat):
+ owner(false),
+ sf(streamFormat)
+ {
+ const bool isInterleaved = (sf.mFormatFlags & kAudioFormatFlagIsNonInterleaved) == 0;
+ const int numberOfBuffers = isInterleaved ? 1 : sf.mChannelsPerFrame;
+
+ dataSize = 0;
+
+ bfs = reinterpret_cast<AudioBufferList*>(qMalloc(sizeof(AudioBufferList) +
+ (sizeof(AudioBuffer) * numberOfBuffers)));
+
+ bfs->mNumberBuffers = numberOfBuffers;
+ for (int i = 0; i < numberOfBuffers; ++i) {
+ bfs->mBuffers[i].mNumberChannels = isInterleaved ? numberOfBuffers : 1;
+ bfs->mBuffers[i].mDataByteSize = 0;
+ bfs->mBuffers[i].mData = 0;
+ }
+ }
+
+ QAudioBufferList(AudioStreamBasicDescription const& streamFormat, char* buffer, int bufferSize):
+ owner(false),
+ sf(streamFormat),
+ bfs(0)
+ {
+ dataSize = bufferSize;
+
+ bfs = reinterpret_cast<AudioBufferList*>(qMalloc(sizeof(AudioBufferList) + sizeof(AudioBuffer)));
+
+ bfs->mNumberBuffers = 1;
+ bfs->mBuffers[0].mNumberChannels = 1;
+ bfs->mBuffers[0].mDataByteSize = dataSize;
+ bfs->mBuffers[0].mData = buffer;
+ }
+
+ QAudioBufferList(AudioStreamBasicDescription const& streamFormat, int framesToBuffer):
+ owner(true),
+ sf(streamFormat),
+ bfs(0)
+ {
+ const bool isInterleaved = (sf.mFormatFlags & kAudioFormatFlagIsNonInterleaved) == 0;
+ const int numberOfBuffers = isInterleaved ? 1 : sf.mChannelsPerFrame;
+
+ dataSize = framesToBuffer * sf.mBytesPerFrame;
+
+ bfs = reinterpret_cast<AudioBufferList*>(qMalloc(sizeof(AudioBufferList) +
+ (sizeof(AudioBuffer) * numberOfBuffers)));
+ bfs->mNumberBuffers = numberOfBuffers;
+ for (int i = 0; i < numberOfBuffers; ++i) {
+ bfs->mBuffers[i].mNumberChannels = isInterleaved ? numberOfBuffers : 1;
+ bfs->mBuffers[i].mDataByteSize = dataSize;
+ bfs->mBuffers[i].mData = qMalloc(dataSize);
+ }
+ }
+
+ ~QAudioBufferList()
+ {
+ if (owner) {
+ for (UInt32 i = 0; i < bfs->mNumberBuffers; ++i)
+ qFree(bfs->mBuffers[i].mData);
+ }
+
+ qFree(bfs);
+ }
+
+ AudioBufferList* audioBufferList() const
+ {
+ return bfs;
+ }
+
+ char* data(int buffer = 0) const
+ {
+ return static_cast<char*>(bfs->mBuffers[buffer].mData);
+ }
+
+ qint64 bufferSize(int buffer = 0) const
+ {
+ return bfs->mBuffers[buffer].mDataByteSize;
+ }
+
+ int frameCount(int buffer = 0) const
+ {
+ return bfs->mBuffers[buffer].mDataByteSize / sf.mBytesPerFrame;
+ }
+
+ int packetCount(int buffer = 0) const
+ {
+ return bfs->mBuffers[buffer].mDataByteSize / sf.mBytesPerPacket;
+ }
+
+ int packetSize() const
+ {
+ return sf.mBytesPerPacket;
+ }
+
+ void reset()
+ {
+ for (UInt32 i = 0; i < bfs->mNumberBuffers; ++i) {
+ bfs->mBuffers[i].mDataByteSize = dataSize;
+ bfs->mBuffers[i].mData = 0;
+ }
+ }
+
+private:
+ bool owner;
+ int dataSize;
+ AudioStreamBasicDescription sf;
+ AudioBufferList* bfs;
+};
+
+class QAudioPacketFeeder
+{
+public:
+ QAudioPacketFeeder(QAudioBufferList* abl):
+ audioBufferList(abl)
+ {
+ totalPackets = audioBufferList->packetCount();
+ position = 0;
+ }
+
+ bool feed(AudioBufferList& dst, UInt32& packetCount)
+ {
+ if (position == totalPackets) {
+ dst.mBuffers[0].mDataByteSize = 0;
+ packetCount = 0;
+ return false;
+ }
+
+ if (totalPackets - position < packetCount)
+ packetCount = totalPackets - position;
+
+ dst.mBuffers[0].mDataByteSize = packetCount * audioBufferList->packetSize();
+ dst.mBuffers[0].mData = audioBufferList->data() + (position * audioBufferList->packetSize());
+
+ position += packetCount;
+
+ return true;
+ }
+
+ bool empty() const
+ {
+ return position == totalPackets;
+ }
+
+private:
+ UInt32 totalPackets;
+ UInt32 position;
+ QAudioBufferList* audioBufferList;
+};
+
+class QAudioInputBuffer : public QObject
+{
+ Q_OBJECT
+
+public:
+ QAudioInputBuffer(int bufferSize,
+ int maxPeriodSize,
+ AudioStreamBasicDescription const& inputFormat,
+ AudioStreamBasicDescription const& outputFormat,
+ QObject* parent):
+ QObject(parent),
+ m_deviceError(false),
+ m_audioConverter(0),
+ m_inputFormat(inputFormat),
+ m_outputFormat(outputFormat)
+ {
+ m_maxPeriodSize = maxPeriodSize;
+ m_periodTime = m_maxPeriodSize / m_outputFormat.mBytesPerFrame * 1000 / m_outputFormat.mSampleRate;
+ m_buffer = new QAudioRingBuffer(bufferSize + (bufferSize % maxPeriodSize == 0 ? 0 : maxPeriodSize - (bufferSize % maxPeriodSize)));
+ m_inputBufferList = new QAudioBufferList(m_inputFormat);
+
+ m_flushTimer = new QTimer(this);
+ connect(m_flushTimer, SIGNAL(timeout()), SLOT(flushBuffer()));
+
+ if (toQAudioFormat(inputFormat) != toQAudioFormat(outputFormat)) {
+ if (AudioConverterNew(&m_inputFormat, &m_outputFormat, &m_audioConverter) != noErr) {
+ qWarning() << "QAudioInput: Unable to create an Audio Converter";
+ m_audioConverter = 0;
+ }
+ }
+ }
+
+ ~QAudioInputBuffer()
+ {
+ delete m_buffer;
+ }
+
+ qint64 renderFromDevice(AudioUnit audioUnit,
+ AudioUnitRenderActionFlags* ioActionFlags,
+ const AudioTimeStamp* inTimeStamp,
+ UInt32 inBusNumber,
+ UInt32 inNumberFrames)
+ {
+ const bool pullMode = m_device == 0;
+
+ OSStatus err;
+ qint64 framesRendered = 0;
+
+ m_inputBufferList->reset();
+ err = AudioUnitRender(audioUnit,
+ ioActionFlags,
+ inTimeStamp,
+ inBusNumber,
+ inNumberFrames,
+ m_inputBufferList->audioBufferList());
+
+ if (m_audioConverter != 0) {
+ QAudioPacketFeeder feeder(m_inputBufferList);
+
+ int copied = 0;
+ const int available = m_buffer->free();
+
+ while (err == noErr && !feeder.empty()) {
+ QAudioRingBuffer::Region region = m_buffer->acquireWriteRegion(available);
+
+ if (region.second == 0)
+ break;
+
+ AudioBufferList output;
+ output.mNumberBuffers = 1;
+ output.mBuffers[0].mNumberChannels = 1;
+ output.mBuffers[0].mDataByteSize = region.second;
+ output.mBuffers[0].mData = region.first;
+
+ UInt32 packetSize = region.second / m_outputFormat.mBytesPerPacket;
+ err = AudioConverterFillComplexBuffer(m_audioConverter,
+ converterCallback,
+ &feeder,
+ &packetSize,
+ &output,
+ 0);
+ region.second = output.mBuffers[0].mDataByteSize;
+ copied += region.second;
+
+ m_buffer->releaseWriteRegion(region);
+ }
+
+ framesRendered += copied / m_outputFormat.mBytesPerFrame;
+ }
+ else {
+ const int available = m_inputBufferList->bufferSize();
+ bool wecan = true;
+ int copied = 0;
+
+ while (wecan && copied < available) {
+ QAudioRingBuffer::Region region = m_buffer->acquireWriteRegion(available - copied);
+
+ if (region.second > 0) {
+ memcpy(region.first, m_inputBufferList->data() + copied, region.second);
+ copied += region.second;
+ }
+ else
+ wecan = false;
+
+ m_buffer->releaseWriteRegion(region);
+ }
+
+ framesRendered = copied / m_outputFormat.mBytesPerFrame;
+ }
+
+ if (pullMode && framesRendered > 0)
+ emit readyRead();
+
+ return framesRendered;
+ }
+
+ qint64 readBytes(char* data, qint64 len)
+ {
+ bool wecan = true;
+ qint64 bytesCopied = 0;
+
+ len -= len % m_maxPeriodSize;
+ while (wecan && bytesCopied < len) {
+ QAudioRingBuffer::Region region = m_buffer->acquireReadRegion(len - bytesCopied);
+
+ if (region.second > 0) {
+ memcpy(data + bytesCopied, region.first, region.second);
+ bytesCopied += region.second;
+ }
+ else
+ wecan = false;
+
+ m_buffer->releaseReadRegion(region);
+ }
+
+ return bytesCopied;
+ }
+
+ void setFlushDevice(QIODevice* device)
+ {
+ if (m_device != device)
+ m_device = device;
+ }
+
+ void startFlushTimer()
+ {
+ if (m_device != 0) {
+ m_flushTimer->start((m_buffer->size() - (m_maxPeriodSize * 2)) / m_maxPeriodSize * m_periodTime);
+ }
+ }
+
+ void stopFlushTimer()
+ {
+ m_flushTimer->stop();
+ }
+
+ void flush(bool all = false)
+ {
+ if (m_device == 0)
+ return;
+
+ const int used = m_buffer->used();
+ const int readSize = all ? used : used - (used % m_maxPeriodSize);
+
+ if (readSize > 0) {
+ bool wecan = true;
+ int flushed = 0;
+
+ while (!m_deviceError && wecan && flushed < readSize) {
+ QAudioRingBuffer::Region region = m_buffer->acquireReadRegion(readSize - flushed);
+
+ if (region.second > 0) {
+ int bytesWritten = m_device->write(region.first, region.second);
+ if (bytesWritten < 0) {
+ stopFlushTimer();
+ m_deviceError = true;
+ }
+ else {
+ region.second = bytesWritten;
+ flushed += bytesWritten;
+ wecan = bytesWritten != 0;
+ }
+ }
+ else
+ wecan = false;
+
+ m_buffer->releaseReadRegion(region);
+ }
+ }
+ }
+
+ void reset()
+ {
+ m_buffer->reset();
+ m_deviceError = false;
+ }
+
+ int available() const
+ {
+ return m_buffer->free();
+ }
+
+ int used() const
+ {
+ return m_buffer->used();
+ }
+
+signals:
+ void readyRead();
+
+private slots:
+ void flushBuffer()
+ {
+ flush();
+ }
+
+private:
+ bool m_deviceError;
+ int m_maxPeriodSize;
+ int m_periodTime;
+ QIODevice* m_device;
+ QTimer* m_flushTimer;
+ QAudioRingBuffer* m_buffer;
+ QAudioBufferList* m_inputBufferList;
+ AudioConverterRef m_audioConverter;
+ AudioStreamBasicDescription m_inputFormat;
+ AudioStreamBasicDescription m_outputFormat;
+
+ const static OSStatus as_empty = 'qtem';
+
+ // Converter callback
+ static OSStatus converterCallback(AudioConverterRef inAudioConverter,
+ UInt32* ioNumberDataPackets,
+ AudioBufferList* ioData,
+ AudioStreamPacketDescription** outDataPacketDescription,
+ void* inUserData)
+ {
+ Q_UNUSED(inAudioConverter);
+ Q_UNUSED(outDataPacketDescription);
+
+ QAudioPacketFeeder* feeder = static_cast<QAudioPacketFeeder*>(inUserData);
+
+ if (!feeder->feed(*ioData, *ioNumberDataPackets))
+ return as_empty;
+
+ return noErr;
+ }
+};
+
+
+class MacInputDevice : public QIODevice
+{
+ Q_OBJECT
+
+public:
+ MacInputDevice(QAudioInputBuffer* audioBuffer, QObject* parent):
+ QIODevice(parent),
+ m_audioBuffer(audioBuffer)
+ {
+ open(QIODevice::ReadOnly | QIODevice::Unbuffered);
+ connect(m_audioBuffer, SIGNAL(readyRead()), SIGNAL(readyRead()));
+ }
+
+ qint64 readData(char* data, qint64 len)
+ {
+ return m_audioBuffer->readBytes(data, len);
+ }
+
+ qint64 writeData(const char* data, qint64 len)
+ {
+ Q_UNUSED(data);
+ Q_UNUSED(len);
+
+ return 0;
+ }
+
+ bool isSequential() const
+ {
+ return true;
+ }
+
+private:
+ QAudioInputBuffer* m_audioBuffer;
+};
+
+}
+
+
+QAudioInputPrivate::QAudioInputPrivate(const QByteArray& device, QAudioFormat const& format):
+ audioFormat(format)
+{
+ QDataStream ds(device);
+ quint32 did, mode;
+
+ ds >> did >> mode;
+
+ if (QAudio::Mode(mode) == QAudio::AudioOutput)
+ errorCode = QAudio::OpenError;
+ else {
+ audioDeviceInfo = new QAudioDeviceInfoInternal(device, QAudio::AudioInput);
+ isOpen = false;
+ audioDeviceId = AudioDeviceID(did);
+ audioUnit = 0;
+ startTime = 0;
+ totalFrames = 0;
+ audioBuffer = 0;
+ internalBufferSize = QtMultimediaInternal::default_buffer_size;
+ clockFrequency = AudioGetHostClockFrequency() / 1000;
+ errorCode = QAudio::NoError;
+ stateCode = QAudio::StoppedState;
+
+ intervalTimer = new QTimer(this);
+ intervalTimer->setInterval(1000);
+ connect(intervalTimer, SIGNAL(timeout()), SIGNAL(notify()));
+ }
+}
+
+QAudioInputPrivate::~QAudioInputPrivate()
+{
+ close();
+ delete audioDeviceInfo;
+}
+
+bool QAudioInputPrivate::open()
+{
+ UInt32 size = 0;
+
+ if (isOpen)
+ return true;
+
+ ComponentDescription cd;
+ cd.componentType = kAudioUnitType_Output;
+ cd.componentSubType = kAudioUnitSubType_HALOutput;
+ cd.componentManufacturer = kAudioUnitManufacturer_Apple;
+ cd.componentFlags = 0;
+ cd.componentFlagsMask = 0;
+
+ // Open
+ Component cp = FindNextComponent(NULL, &cd);
+ if (cp == 0) {
+ qWarning() << "QAudioInput: Failed to find HAL Output component";
+ return false;
+ }
+
+ if (OpenAComponent(cp, &audioUnit) != noErr) {
+ qWarning() << "QAudioInput: Unable to Open Output Component";
+ return false;
+ }
+
+ // Set mode
+ // switch to input mode
+ UInt32 enable = 1;
+ if (AudioUnitSetProperty(audioUnit,
+ kAudioOutputUnitProperty_EnableIO,
+ kAudioUnitScope_Input,
+ 1,
+ &enable,
+ sizeof(enable)) != noErr) {
+ qWarning() << "QAudioInput: Unable to switch to input mode (Enable Input)";
+ return false;
+ }
+
+ enable = 0;
+ if (AudioUnitSetProperty(audioUnit,
+ kAudioOutputUnitProperty_EnableIO,
+ kAudioUnitScope_Output,
+ 0,
+ &enable,
+ sizeof(enable)) != noErr) {
+ qWarning() << "QAudioInput: Unable to switch to input mode (Disable output)";
+ return false;
+ }
+
+ // register callback
+ AURenderCallbackStruct cb;
+ cb.inputProc = inputCallback;
+ cb.inputProcRefCon = this;
+
+ if (AudioUnitSetProperty(audioUnit,
+ kAudioOutputUnitProperty_SetInputCallback,
+ kAudioUnitScope_Global,
+ 0,
+ &cb,
+ sizeof(cb)) != noErr) {
+ qWarning() << "QAudioInput: Failed to set AudioUnit callback";
+ return false;
+ }
+
+ // Set Audio Device
+ if (AudioUnitSetProperty(audioUnit,
+ kAudioOutputUnitProperty_CurrentDevice,
+ kAudioUnitScope_Global,
+ 0,
+ &audioDeviceId,
+ sizeof(audioDeviceId)) != noErr) {
+ qWarning() << "QAudioInput: Unable to use configured device";
+ return false;
+ }
+
+ // Set format
+ // Wanted
+ streamFormat = toAudioStreamBasicDescription(audioFormat);
+
+ // Required on unit
+ if (audioFormat == audioDeviceInfo->preferredFormat()) {
+ deviceFormat = streamFormat;
+ AudioUnitSetProperty(audioUnit,
+ kAudioUnitProperty_StreamFormat,
+ kAudioUnitScope_Output,
+ 1,
+ &deviceFormat,
+ sizeof(deviceFormat));
+ }
+ else {
+ size = sizeof(deviceFormat);
+ if (AudioUnitGetProperty(audioUnit,
+ kAudioUnitProperty_StreamFormat,
+ kAudioUnitScope_Input,
+ 1,
+ &deviceFormat,
+ &size) != noErr) {
+ qWarning() << "QAudioInput: Unable to retrieve device format";
+ return false;
+ }
+
+ if (AudioUnitSetProperty(audioUnit,
+ kAudioUnitProperty_StreamFormat,
+ kAudioUnitScope_Output,
+ 1,
+ &deviceFormat,
+ sizeof(deviceFormat)) != noErr) {
+ qWarning() << "QAudioInput: Unable to set device format";
+ return false;
+ }
+ }
+
+ // Setup buffers
+ UInt32 numberOfFrames;
+ size = sizeof(UInt32);
+ if (AudioUnitGetProperty(audioUnit,
+ kAudioDevicePropertyBufferFrameSize,
+ kAudioUnitScope_Global,
+ 0,
+ &numberOfFrames,
+ &size) != noErr) {
+ qWarning() << "QAudioInput: Failed to get audio period size";
+ return false;
+ }
+
+ // Allocate buffer
+ periodSizeBytes = numberOfFrames * streamFormat.mBytesPerFrame;
+
+ if (internalBufferSize < periodSizeBytes * 2)
+ internalBufferSize = periodSizeBytes * 2;
+ else
+ internalBufferSize -= internalBufferSize % streamFormat.mBytesPerFrame;
+
+ audioBuffer = new QtMultimediaInternal::QAudioInputBuffer(internalBufferSize,
+ periodSizeBytes,
+ deviceFormat,
+ streamFormat,
+ this);
+
+ audioIO = new QtMultimediaInternal::MacInputDevice(audioBuffer, this);
+
+ // Init
+ if (AudioUnitInitialize(audioUnit) != noErr) {
+ qWarning() << "QAudioInput: Failed to initialize AudioUnit";
+ return false;
+ }
+
+ isOpen = true;
+
+ return isOpen;
+}
+
+void QAudioInputPrivate::close()
+{
+ if (audioUnit != 0) {
+ AudioOutputUnitStop(audioUnit);
+ AudioUnitUninitialize(audioUnit);
+ CloseComponent(audioUnit);
+ }
+
+ delete audioBuffer;
+}
+
+QAudioFormat QAudioInputPrivate::format() const
+{
+ return audioFormat;
+}
+
+QIODevice* QAudioInputPrivate::start(QIODevice* device)
+{
+ QIODevice* op = device;
+
+ if (!audioDeviceInfo->isFormatSupported(audioFormat) || !open()) {
+ stateCode = QAudio::StoppedState;
+ errorCode = QAudio::OpenError;
+ return audioIO;
+ }
+
+ reset();
+ audioBuffer->reset();
+ audioBuffer->setFlushDevice(op);
+
+ if (op == 0)
+ op = audioIO;
+
+ // Start
+ startTime = AudioGetCurrentHostTime();
+ totalFrames = 0;
+
+ audioThreadStart();
+
+ stateCode = QAudio::ActiveState;
+ errorCode = QAudio::NoError;
+ emit stateChanged(stateCode);
+
+ return op;
+}
+
+void QAudioInputPrivate::stop()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode != QAudio::StoppedState) {
+ audioThreadStop();
+ audioBuffer->flush(true);
+
+ errorCode = QAudio::NoError;
+ stateCode = QAudio::StoppedState;
+ QMetaObject::invokeMethod(this, "stateChanged", Qt::QueuedConnection, Q_ARG(QAudio::State, stateCode));
+ }
+}
+
+void QAudioInputPrivate::reset()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode != QAudio::StoppedState) {
+ audioThreadStop();
+
+ errorCode = QAudio::NoError;
+ stateCode = QAudio::StoppedState;
+ QMetaObject::invokeMethod(this, "stateChanged", Qt::QueuedConnection, Q_ARG(QAudio::State, stateCode));
+ }
+}
+
+void QAudioInputPrivate::suspend()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode == QAudio::ActiveState || stateCode == QAudio::IdleState) {
+ audioThreadStop();
+
+ errorCode = QAudio::NoError;
+ stateCode = QAudio::SuspendedState;
+ QMetaObject::invokeMethod(this, "stateChanged", Qt::QueuedConnection, Q_ARG(QAudio::State, stateCode));
+ }
+}
+
+void QAudioInputPrivate::resume()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode == QAudio::SuspendedState) {
+ audioThreadStart();
+
+ errorCode = QAudio::NoError;
+ stateCode = QAudio::ActiveState;
+ QMetaObject::invokeMethod(this, "stateChanged", Qt::QueuedConnection, Q_ARG(QAudio::State, stateCode));
+ }
+}
+
+int QAudioInputPrivate::bytesReady() const
+{
+ return audioBuffer->used();
+}
+
+int QAudioInputPrivate::periodSize() const
+{
+ return periodSizeBytes;
+}
+
+void QAudioInputPrivate::setBufferSize(int bs)
+{
+ internalBufferSize = bs;
+}
+
+int QAudioInputPrivate::bufferSize() const
+{
+ return internalBufferSize;
+}
+
+void QAudioInputPrivate::setNotifyInterval(int milliSeconds)
+{
+ if (intervalTimer->interval() == milliSeconds)
+ return;
+
+ if (milliSeconds <= 0)
+ milliSeconds = 0;
+
+ intervalTimer->setInterval(milliSeconds);
+}
+
+int QAudioInputPrivate::notifyInterval() const
+{
+ return intervalTimer->interval();
+}
+
+qint64 QAudioInputPrivate::processedUSecs() const
+{
+ return totalFrames * 1000000 / audioFormat.frequency();
+}
+
+qint64 QAudioInputPrivate::elapsedUSecs() const
+{
+ if (stateCode == QAudio::StoppedState)
+ return 0;
+
+ return (AudioGetCurrentHostTime() - startTime) / (clockFrequency / 1000);
+}
+
+QAudio::Error QAudioInputPrivate::error() const
+{
+ return errorCode;
+}
+
+QAudio::State QAudioInputPrivate::state() const
+{
+ return stateCode;
+}
+
+void QAudioInputPrivate::audioThreadStop()
+{
+ stopTimers();
+ if (audioThreadState.testAndSetAcquire(Running, Stopped))
+ threadFinished.wait(&mutex);
+}
+
+void QAudioInputPrivate::audioThreadStart()
+{
+ startTimers();
+ audioThreadState = Running;
+ AudioOutputUnitStart(audioUnit);
+}
+
+void QAudioInputPrivate::audioDeviceStop()
+{
+ AudioOutputUnitStop(audioUnit);
+ audioThreadState = Stopped;
+ threadFinished.wakeOne();
+}
+
+void QAudioInputPrivate::audioDeviceFull()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode == QAudio::ActiveState) {
+ audioDeviceStop();
+
+ errorCode = QAudio::UnderrunError;
+ stateCode = QAudio::IdleState;
+ QMetaObject::invokeMethod(this, "deviceStopped", Qt::QueuedConnection);
+ }
+}
+
+void QAudioInputPrivate::audioDeviceError()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode == QAudio::ActiveState) {
+ audioDeviceStop();
+
+ errorCode = QAudio::IOError;
+ stateCode = QAudio::StoppedState;
+ QMetaObject::invokeMethod(this, "deviceStopped", Qt::QueuedConnection);
+ }
+}
+
+void QAudioInputPrivate::startTimers()
+{
+ audioBuffer->startFlushTimer();
+ if (intervalTimer->interval() > 0)
+ intervalTimer->start();
+}
+
+void QAudioInputPrivate::stopTimers()
+{
+ audioBuffer->stopFlushTimer();
+ intervalTimer->stop();
+}
+
+void QAudioInputPrivate::deviceStopped()
+{
+ stopTimers();
+ emit stateChanged(stateCode);
+}
+
+// Input callback
+OSStatus QAudioInputPrivate::inputCallback(void* inRefCon,
+ AudioUnitRenderActionFlags* ioActionFlags,
+ const AudioTimeStamp* inTimeStamp,
+ UInt32 inBusNumber,
+ UInt32 inNumberFrames,
+ AudioBufferList* ioData)
+{
+ Q_UNUSED(ioData);
+
+ QAudioInputPrivate* d = static_cast<QAudioInputPrivate*>(inRefCon);
+
+ const int threadState = d->audioThreadState.fetchAndAddAcquire(0);
+ if (threadState == Stopped)
+ d->audioDeviceStop();
+ else {
+ qint64 framesWritten;
+
+ framesWritten = d->audioBuffer->renderFromDevice(d->audioUnit,
+ ioActionFlags,
+ inTimeStamp,
+ inBusNumber,
+ inNumberFrames);
+
+ if (framesWritten > 0)
+ d->totalFrames += framesWritten;
+ else if (framesWritten == 0)
+ d->audioDeviceFull();
+ else if (framesWritten < 0)
+ d->audioDeviceError();
+ }
+
+ return noErr;
+}
+
+
+QT_END_NAMESPACE
+
+#include "qaudioinput_mac_p.moc"
+
diff --git a/src/multimedia/audio/qaudioinput_mac_p.h b/src/multimedia/audio/qaudioinput_mac_p.h
new file mode 100644
index 000000000..ddc458455
--- /dev/null
+++ b/src/multimedia/audio/qaudioinput_mac_p.h
@@ -0,0 +1,169 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+
+#ifndef QAUDIOINPUT_MAC_P_H
+#define QAUDIOINPUT_MAC_P_H
+
+#include <CoreServices/CoreServices.h>
+#include <CoreAudio/CoreAudio.h>
+#include <AudioUnit/AudioUnit.h>
+#include <AudioToolbox/AudioToolbox.h>
+
+#include <QtCore/qobject.h>
+#include <QtCore/qmutex.h>
+#include <QtCore/qwaitcondition.h>
+#include <QtCore/qatomic.h>
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudioformat.h>
+#include <QtMultimedia/qaudioengine.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QTimer;
+class QIODevice;
+class QAbstractAudioDeviceInfo;
+
+namespace QtMultimediaInternal
+{
+class QAudioInputBuffer;
+}
+
+class QAudioInputPrivate : public QAbstractAudioInput
+{
+ Q_OBJECT
+
+public:
+ bool isOpen;
+ int periodSizeBytes;
+ int internalBufferSize;
+ qint64 totalFrames;
+ QAudioFormat audioFormat;
+ QIODevice* audioIO;
+ AudioUnit audioUnit;
+ AudioDeviceID audioDeviceId;
+ Float64 clockFrequency;
+ UInt64 startTime;
+ QAudio::Error errorCode;
+ QAudio::State stateCode;
+ QtMultimediaInternal::QAudioInputBuffer* audioBuffer;
+ QMutex mutex;
+ QWaitCondition threadFinished;
+ QAtomicInt audioThreadState;
+ QTimer* intervalTimer;
+ AudioStreamBasicDescription streamFormat;
+ AudioStreamBasicDescription deviceFormat;
+ QAbstractAudioDeviceInfo *audioDeviceInfo;
+
+ QAudioInputPrivate(const QByteArray& device, QAudioFormat const& format);
+ ~QAudioInputPrivate();
+
+ bool open();
+ void close();
+
+ QAudioFormat format() const;
+
+ QIODevice* start(QIODevice* device);
+ void stop();
+ void reset();
+ void suspend();
+ void resume();
+ void idle();
+
+ int bytesReady() const;
+ int periodSize() const;
+
+ void setBufferSize(int value);
+ int bufferSize() const;
+
+ void setNotifyInterval(int milliSeconds);
+ int notifyInterval() const;
+
+ qint64 processedUSecs() const;
+ qint64 elapsedUSecs() const;
+
+ QAudio::Error error() const;
+ QAudio::State state() const;
+
+ void audioThreadStart();
+ void audioThreadStop();
+
+ void audioDeviceStop();
+ void audioDeviceFull();
+ void audioDeviceError();
+
+ void startTimers();
+ void stopTimers();
+
+private slots:
+ void deviceStopped();
+
+private:
+ enum { Running, Stopped };
+
+ // Input callback
+ static OSStatus inputCallback(void* inRefCon,
+ AudioUnitRenderActionFlags* ioActionFlags,
+ const AudioTimeStamp* inTimeStamp,
+ UInt32 inBusNumber,
+ UInt32 inNumberFrames,
+ AudioBufferList* ioData);
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QAUDIOINPUT_MAC_P_H
diff --git a/src/multimedia/audio/qaudioinput_symbian_p.cpp b/src/multimedia/audio/qaudioinput_symbian_p.cpp
new file mode 100644
index 000000000..860a80edd
--- /dev/null
+++ b/src/multimedia/audio/qaudioinput_symbian_p.cpp
@@ -0,0 +1,560 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qaudioinput_symbian_p.h"
+
+QT_BEGIN_NAMESPACE
+
+//-----------------------------------------------------------------------------
+// Constants
+//-----------------------------------------------------------------------------
+
+const int PushInterval = 50; // ms
+
+
+//-----------------------------------------------------------------------------
+// Private class
+//-----------------------------------------------------------------------------
+
+SymbianAudioInputPrivate::SymbianAudioInputPrivate(
+ QAudioInputPrivate *audioDevice)
+ : m_audioDevice(audioDevice)
+{
+
+}
+
+SymbianAudioInputPrivate::~SymbianAudioInputPrivate()
+{
+
+}
+
+qint64 SymbianAudioInputPrivate::readData(char *data, qint64 len)
+{
+ qint64 totalRead = 0;
+
+ if (m_audioDevice->state() == QAudio::ActiveState ||
+ m_audioDevice->state() == QAudio::IdleState) {
+
+ while (totalRead < len) {
+ const qint64 read = m_audioDevice->read(data + totalRead,
+ len - totalRead);
+ if (read > 0)
+ totalRead += read;
+ else
+ break;
+ }
+ }
+
+ return totalRead;
+}
+
+qint64 SymbianAudioInputPrivate::writeData(const char *data, qint64 len)
+{
+ Q_UNUSED(data)
+ Q_UNUSED(len)
+ return 0;
+}
+
+void SymbianAudioInputPrivate::dataReady()
+{
+ emit readyRead();
+}
+
+
+//-----------------------------------------------------------------------------
+// Public functions
+//-----------------------------------------------------------------------------
+
+QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device,
+ const QAudioFormat &format)
+ : m_device(device)
+ , m_format(format)
+ , m_clientBufferSize(SymbianAudio::DefaultBufferSize)
+ , m_notifyInterval(SymbianAudio::DefaultNotifyInterval)
+ , m_notifyTimer(new QTimer(this))
+ , m_error(QAudio::NoError)
+ , m_internalState(SymbianAudio::ClosedState)
+ , m_externalState(QAudio::StoppedState)
+ , m_pullMode(false)
+ , m_sink(0)
+ , m_pullTimer(new QTimer(this))
+ , m_devSound(0)
+ , m_devSoundBuffer(0)
+ , m_devSoundBufferSize(0)
+ , m_totalBytesReady(0)
+ , m_devSoundBufferPos(0)
+ , m_totalSamplesRecorded(0)
+{
+ qRegisterMetaType<CMMFBuffer *>("CMMFBuffer *");
+
+ connect(m_notifyTimer.data(), SIGNAL(timeout()), this, SIGNAL(notify()));
+
+ m_pullTimer->setInterval(PushInterval);
+ connect(m_pullTimer.data(), SIGNAL(timeout()), this, SLOT(pullData()));
+}
+
+QAudioInputPrivate::~QAudioInputPrivate()
+{
+ close();
+}
+
+QIODevice* QAudioInputPrivate::start(QIODevice *device)
+{
+ stop();
+
+ open();
+ if (SymbianAudio::ClosedState != m_internalState) {
+ if (device) {
+ m_pullMode = true;
+ m_sink = device;
+ } else {
+ m_sink = new SymbianAudioInputPrivate(this);
+ m_sink->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
+ }
+
+ m_elapsed.restart();
+ }
+
+ return m_sink;
+}
+
+void QAudioInputPrivate::stop()
+{
+ close();
+}
+
+void QAudioInputPrivate::reset()
+{
+ m_totalSamplesRecorded += getSamplesRecorded();
+ m_devSound->stop();
+ startRecording();
+}
+
+void QAudioInputPrivate::suspend()
+{
+ if (SymbianAudio::ActiveState == m_internalState
+ || SymbianAudio::IdleState == m_internalState) {
+ m_notifyTimer->stop();
+ m_pullTimer->stop();
+ const qint64 samplesRecorded = getSamplesRecorded();
+ m_totalSamplesRecorded += samplesRecorded;
+
+ const bool paused = m_devSound->pause();
+ if (paused) {
+ if (m_devSoundBuffer)
+ m_devSoundBufferQ.append(m_devSoundBuffer);
+ m_devSoundBuffer = 0;
+ setState(SymbianAudio::SuspendedPausedState);
+ } else {
+ m_devSoundBuffer = 0;
+ m_devSoundBufferQ.clear();
+ m_devSoundBufferPos = 0;
+ setState(SymbianAudio::SuspendedStoppedState);
+ }
+ }
+}
+
+void QAudioInputPrivate::resume()
+{
+ if (QAudio::SuspendedState == m_externalState) {
+ if (SymbianAudio::SuspendedPausedState == m_internalState)
+ m_devSound->resume();
+ else
+ m_devSound->start();
+ startDataTransfer();
+ }
+}
+
+int QAudioInputPrivate::bytesReady() const
+{
+ Q_ASSERT(m_devSoundBufferPos <= m_totalBytesReady);
+ return m_totalBytesReady - m_devSoundBufferPos;
+}
+
+int QAudioInputPrivate::periodSize() const
+{
+ return bufferSize();
+}
+
+void QAudioInputPrivate::setBufferSize(int value)
+{
+ // Note that DevSound does not allow its client to specify the buffer size.
+ // This functionality is available via custom interfaces, but since these
+ // cannot be guaranteed to work across all DevSound implementations, we
+ // do not use them here.
+ // In order to comply with the expected bevahiour of QAudioInput, we store
+ // the value and return it from bufferSize(), but the underlying DevSound
+ // buffer size remains unchanged.
+ if (value > 0)
+ m_clientBufferSize = value;
+}
+
+int QAudioInputPrivate::bufferSize() const
+{
+ return m_devSoundBufferSize ? m_devSoundBufferSize : m_clientBufferSize;
+}
+
+void QAudioInputPrivate::setNotifyInterval(int ms)
+{
+ if (ms >= 0) {
+ const int oldNotifyInterval = m_notifyInterval;
+ m_notifyInterval = ms;
+ if (m_notifyInterval && (SymbianAudio::ActiveState == m_internalState ||
+ SymbianAudio::IdleState == m_internalState))
+ m_notifyTimer->start(m_notifyInterval);
+ else
+ m_notifyTimer->stop();
+ }
+}
+
+int QAudioInputPrivate::notifyInterval() const
+{
+ return m_notifyInterval;
+}
+
+qint64 QAudioInputPrivate::processedUSecs() const
+{
+ int samplesPlayed = 0;
+ if (m_devSound && QAudio::SuspendedState != m_externalState)
+ samplesPlayed = getSamplesRecorded();
+
+ // Protect against division by zero
+ Q_ASSERT_X(m_format.frequency() > 0, Q_FUNC_INFO, "Invalid frequency");
+
+ const qint64 result = qint64(1000000) *
+ (samplesPlayed + m_totalSamplesRecorded)
+ / m_format.frequency();
+
+ return result;
+}
+
+qint64 QAudioInputPrivate::elapsedUSecs() const
+{
+ const qint64 result = (QAudio::StoppedState == state()) ?
+ 0 : m_elapsed.elapsed() * 1000;
+ return result;
+}
+
+QAudio::Error QAudioInputPrivate::error() const
+{
+ return m_error;
+}
+
+QAudio::State QAudioInputPrivate::state() const
+{
+ return m_externalState;
+}
+
+QAudioFormat QAudioInputPrivate::format() const
+{
+ return m_format;
+}
+
+
+//-----------------------------------------------------------------------------
+// Private functions
+//-----------------------------------------------------------------------------
+
+void QAudioInputPrivate::open()
+{
+ Q_ASSERT_X(SymbianAudio::ClosedState == m_internalState,
+ Q_FUNC_INFO, "DevSound already opened");
+
+ Q_ASSERT(!m_devSound);
+ m_devSound = new SymbianAudio::DevSoundWrapper(QAudio::AudioInput, this);
+
+ connect(m_devSound, SIGNAL(initializeComplete(int)),
+ this, SLOT(devsoundInitializeComplete(int)));
+ connect(m_devSound, SIGNAL(bufferToBeProcessed(CMMFBuffer *)),
+ this, SLOT(devsoundBufferToBeEmptied(CMMFBuffer *)));
+ connect(m_devSound, SIGNAL(processingError(int)),
+ this, SLOT(devsoundRecordError(int)));
+
+ setState(SymbianAudio::InitializingState);
+ m_devSound->initialize(m_format.codec());
+}
+
+void QAudioInputPrivate::startRecording()
+{
+ const int samplesRecorded = m_devSound->samplesProcessed();
+ Q_ASSERT(samplesRecorded == 0);
+
+ bool ok = m_devSound->setFormat(m_format);
+ if (ok)
+ ok = m_devSound->start();
+
+ if (ok) {
+ startDataTransfer();
+ } else {
+ setError(QAudio::OpenError);
+ close();
+ }
+}
+
+void QAudioInputPrivate::startDataTransfer()
+{
+ if (m_notifyInterval)
+ m_notifyTimer->start(m_notifyInterval);
+
+ if (m_pullMode)
+ m_pullTimer->start();
+
+ if (bytesReady()) {
+ setState(SymbianAudio::ActiveState);
+ if (!m_pullMode)
+ pushData();
+ } else {
+ if (QAudio::SuspendedState == m_externalState)
+ setState(SymbianAudio::ActiveState);
+ else
+ setState(SymbianAudio::IdleState);
+ }
+}
+
+CMMFDataBuffer* QAudioInputPrivate::currentBuffer() const
+{
+ CMMFDataBuffer *result = m_devSoundBuffer;
+ if (!result && !m_devSoundBufferQ.empty())
+ result = m_devSoundBufferQ.front();
+ return result;
+}
+
+void QAudioInputPrivate::pushData()
+{
+ Q_ASSERT_X(bytesReady(), Q_FUNC_INFO, "No data available");
+ Q_ASSERT_X(!m_pullMode, Q_FUNC_INFO, "pushData called when in pull mode");
+ qobject_cast<SymbianAudioInputPrivate *>(m_sink)->dataReady();
+}
+
+qint64 QAudioInputPrivate::read(char *data, qint64 len)
+{
+ // SymbianAudioInputPrivate is ready to read data
+
+ Q_ASSERT_X(!m_pullMode, Q_FUNC_INFO,
+ "read called when in pull mode");
+
+ qint64 bytesRead = 0;
+
+ CMMFDataBuffer *buffer = 0;
+ while ((buffer = currentBuffer()) && (bytesRead < len)) {
+ if (SymbianAudio::IdleState == m_internalState)
+ setState(SymbianAudio::ActiveState);
+
+ TDesC8 &inputBuffer = buffer->Data();
+
+ Q_ASSERT(inputBuffer.Length() >= m_devSoundBufferPos);
+ const qint64 inputBytes = inputBuffer.Length() - m_devSoundBufferPos;
+ const qint64 outputBytes = len - bytesRead;
+ const qint64 copyBytes = outputBytes < inputBytes ?
+ outputBytes : inputBytes;
+
+ memcpy(data, inputBuffer.Ptr() + m_devSoundBufferPos, copyBytes);
+
+ m_devSoundBufferPos += copyBytes;
+ data += copyBytes;
+ bytesRead += copyBytes;
+
+ if (inputBytes == copyBytes)
+ bufferEmptied();
+ }
+
+ return bytesRead;
+}
+
+void QAudioInputPrivate::pullData()
+{
+ Q_ASSERT_X(m_pullMode, Q_FUNC_INFO,
+ "pullData called when in push mode");
+
+ CMMFDataBuffer *buffer = 0;
+ while (buffer = currentBuffer()) {
+ if (SymbianAudio::IdleState == m_internalState)
+ setState(SymbianAudio::ActiveState);
+
+ TDesC8 &inputBuffer = buffer->Data();
+
+ Q_ASSERT(inputBuffer.Length() >= m_devSoundBufferPos);
+ const qint64 inputBytes = inputBuffer.Length() - m_devSoundBufferPos;
+ const qint64 bytesPushed = m_sink->write(
+ (char*)inputBuffer.Ptr() + m_devSoundBufferPos, inputBytes);
+
+ m_devSoundBufferPos += bytesPushed;
+
+ if (inputBytes == bytesPushed)
+ bufferEmptied();
+
+ if (!bytesPushed)
+ break;
+ }
+}
+
+void QAudioInputPrivate::devsoundInitializeComplete(int err)
+{
+ Q_ASSERT_X(SymbianAudio::InitializingState == m_internalState,
+ Q_FUNC_INFO, "Invalid state");
+
+ if (!err && m_devSound->isFormatSupported(m_format))
+ startRecording();
+ else
+ setError(QAudio::OpenError);
+}
+
+void QAudioInputPrivate::devsoundBufferToBeEmptied(CMMFBuffer *baseBuffer)
+{
+ // Following receipt of this signal, DevSound should not provide another
+ // buffer until we have returned the current one.
+ Q_ASSERT_X(!m_devSoundBuffer, Q_FUNC_INFO, "Buffer already held");
+
+ CMMFDataBuffer *const buffer = static_cast<CMMFDataBuffer*>(baseBuffer);
+
+ if (!m_devSoundBufferSize)
+ m_devSoundBufferSize = buffer->Data().MaxLength();
+
+ m_totalBytesReady += buffer->Data().Length();
+
+ if (SymbianAudio::SuspendedPausedState == m_internalState) {
+ m_devSoundBufferQ.append(buffer);
+ } else {
+ // Will be returned to DevSoundWrapper by bufferProcessed().
+ m_devSoundBuffer = buffer;
+ m_devSoundBufferPos = 0;
+
+ if (bytesReady() && !m_pullMode)
+ pushData();
+ }
+}
+
+void QAudioInputPrivate::devsoundRecordError(int err)
+{
+ Q_UNUSED(err)
+ setError(QAudio::IOError);
+}
+
+void QAudioInputPrivate::bufferEmptied()
+{
+ m_devSoundBufferPos = 0;
+
+ if (m_devSoundBuffer) {
+ m_totalBytesReady -= m_devSoundBuffer->Data().Length();
+ m_devSoundBuffer = 0;
+ m_devSound->bufferProcessed();
+ } else {
+ Q_ASSERT(!m_devSoundBufferQ.empty());
+ m_totalBytesReady -= m_devSoundBufferQ.front()->Data().Length();
+ m_devSoundBufferQ.erase(m_devSoundBufferQ.begin());
+
+ // If the queue has been emptied, resume transfer from the hardware
+ if (m_devSoundBufferQ.empty())
+ if (!m_devSound->start())
+ setError(QAudio::IOError);
+ }
+
+ Q_ASSERT(m_totalBytesReady >= 0);
+}
+
+void QAudioInputPrivate::close()
+{
+ m_notifyTimer->stop();
+ m_pullTimer->stop();
+
+ m_error = QAudio::NoError;
+
+ if (m_devSound)
+ m_devSound->stop();
+ delete m_devSound;
+ m_devSound = 0;
+
+ m_devSoundBuffer = 0;
+ m_devSoundBufferSize = 0;
+ m_totalBytesReady = 0;
+
+ if (!m_pullMode) // m_sink is owned
+ delete m_sink;
+ m_pullMode = false;
+ m_sink = 0;
+
+ m_devSoundBufferQ.clear();
+ m_devSoundBufferPos = 0;
+ m_totalSamplesRecorded = 0;
+
+ setState(SymbianAudio::ClosedState);
+}
+
+qint64 QAudioInputPrivate::getSamplesRecorded() const
+{
+ qint64 result = 0;
+ if (m_devSound)
+ result = qint64(m_devSound->samplesProcessed());
+ return result;
+}
+
+void QAudioInputPrivate::setError(QAudio::Error error)
+{
+ m_error = error;
+
+ // Although no state transition actually occurs here, a stateChanged event
+ // must be emitted to inform the client that the call to start() was
+ // unsuccessful.
+ if (QAudio::OpenError == error) {
+ emit stateChanged(QAudio::StoppedState);
+ } else {
+ if (QAudio::UnderrunError == error)
+ setState(SymbianAudio::IdleState);
+ else
+ // Close the DevSound instance. This causes a transition to
+ // StoppedState. This must be done asynchronously in case the
+ // current function was called from a DevSound event handler, in which
+ // case deleting the DevSound instance may cause an exception.
+ QMetaObject::invokeMethod(this, "close", Qt::QueuedConnection);
+ }
+}
+
+void QAudioInputPrivate::setState(SymbianAudio::State newInternalState)
+{
+ const QAudio::State oldExternalState = m_externalState;
+ m_internalState = newInternalState;
+ m_externalState = SymbianAudio::Utils::stateNativeToQt(m_internalState);
+
+ if (m_externalState != oldExternalState)
+ emit stateChanged(m_externalState);
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudioinput_symbian_p.h b/src/multimedia/audio/qaudioinput_symbian_p.h
new file mode 100644
index 000000000..0a973fe7b
--- /dev/null
+++ b/src/multimedia/audio/qaudioinput_symbian_p.h
@@ -0,0 +1,174 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QAUDIOINPUT_SYMBIAN_P_H
+#define QAUDIOINPUT_SYMBIAN_P_H
+
+#include <QtMultimedia/qaudioengine.h>
+#include <QTime>
+#include <QTimer>
+#include "qaudio_symbian_p.h"
+
+QT_BEGIN_NAMESPACE
+
+class QAudioInputPrivate;
+
+class SymbianAudioInputPrivate : public QIODevice
+{
+ friend class QAudioInputPrivate;
+ Q_OBJECT
+public:
+ SymbianAudioInputPrivate(QAudioInputPrivate *audio);
+ ~SymbianAudioInputPrivate();
+
+ qint64 readData(char *data, qint64 len);
+ qint64 writeData(const char *data, qint64 len);
+
+ void dataReady();
+
+private:
+ QAudioInputPrivate *const m_audioDevice;
+};
+
+class QAudioInputPrivate
+ : public QAbstractAudioInput
+{
+ friend class SymbianAudioInputPrivate;
+ Q_OBJECT
+public:
+ QAudioInputPrivate(const QByteArray &device,
+ const QAudioFormat &audioFormat);
+ ~QAudioInputPrivate();
+
+ // QAbstractAudioInput
+ QIODevice* start(QIODevice *device = 0);
+ void stop();
+ void reset();
+ void suspend();
+ void resume();
+ int bytesReady() const;
+ int periodSize() const;
+ void setBufferSize(int value);
+ int bufferSize() const;
+ void setNotifyInterval(int milliSeconds);
+ int notifyInterval() const;
+ qint64 processedUSecs() const;
+ qint64 elapsedUSecs() const;
+ QAudio::Error error() const;
+ QAudio::State state() const;
+ QAudioFormat format() const;
+
+private slots:
+ void pullData();
+ void devsoundInitializeComplete(int err);
+ void devsoundBufferToBeEmptied(CMMFBuffer *);
+ void devsoundRecordError(int err);
+
+private:
+ void open();
+ void startRecording();
+ void startDataTransfer();
+ CMMFDataBuffer* currentBuffer() const;
+ void pushData();
+ qint64 read(char *data, qint64 len);
+ void bufferEmptied();
+ Q_INVOKABLE void close();
+
+ qint64 getSamplesRecorded() const;
+
+ void setError(QAudio::Error error);
+ void setState(SymbianAudio::State state);
+
+private:
+ const QByteArray m_device;
+ const QAudioFormat m_format;
+
+ int m_clientBufferSize;
+ int m_notifyInterval;
+ QScopedPointer<QTimer> m_notifyTimer;
+ QTime m_elapsed;
+ QAudio::Error m_error;
+
+ SymbianAudio::State m_internalState;
+ QAudio::State m_externalState;
+
+ bool m_pullMode;
+ QIODevice *m_sink;
+
+ QScopedPointer<QTimer> m_pullTimer;
+
+ SymbianAudio::DevSoundWrapper* m_devSound;
+
+ // Latest buffer provided by DevSound, to be empied of data.
+ CMMFDataBuffer *m_devSoundBuffer;
+
+ int m_devSoundBufferSize;
+
+ // Total amount of data in buffers provided by DevSound
+ int m_totalBytesReady;
+
+ // Queue of buffers returned after call to CMMFDevSound::Pause().
+ QList<CMMFDataBuffer *> m_devSoundBufferQ;
+
+ // Current read position within m_devSoundBuffer
+ qint64 m_devSoundBufferPos;
+
+ // Samples recorded up to the last call to suspend(). It is necessary
+ // to cache this because suspend() is implemented using
+ // CMMFDevSound::Stop(), which resets DevSound's SamplesRecorded() counter.
+ quint32 m_totalSamplesRecorded;
+
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/audio/qaudioinput_win32_p.cpp b/src/multimedia/audio/qaudioinput_win32_p.cpp
new file mode 100644
index 000000000..5283f1fd5
--- /dev/null
+++ b/src/multimedia/audio/qaudioinput_win32_p.cpp
@@ -0,0 +1,633 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+
+#include "qaudioinput_win32_p.h"
+
+QT_BEGIN_NAMESPACE
+
+//#define DEBUG_AUDIO 1
+
+QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device, const QAudioFormat& audioFormat):
+ settings(audioFormat)
+{
+ bytesAvailable = 0;
+ buffer_size = 0;
+ period_size = 0;
+ m_device = device;
+ totalTimeValue = 0;
+ intervalTime = 1000;
+ errorState = QAudio::NoError;
+ deviceState = QAudio::StoppedState;
+ audioSource = 0;
+ pullMode = true;
+ resuming = false;
+ finished = false;
+}
+
+QAudioInputPrivate::~QAudioInputPrivate()
+{
+ stop();
+}
+
+void QT_WIN_CALLBACK QAudioInputPrivate::waveInProc( HWAVEIN hWaveIn, UINT uMsg,
+ DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 )
+{
+ Q_UNUSED(dwParam1)
+ Q_UNUSED(dwParam2)
+ Q_UNUSED(hWaveIn)
+
+ QAudioInputPrivate* qAudio;
+ qAudio = (QAudioInputPrivate*)(dwInstance);
+ if(!qAudio)
+ return;
+
+ QMutexLocker(&qAudio->mutex);
+
+ switch(uMsg) {
+ case WIM_OPEN:
+ break;
+ case WIM_DATA:
+ if(qAudio->waveFreeBlockCount > 0)
+ qAudio->waveFreeBlockCount--;
+ qAudio->feedback();
+ break;
+ case WIM_CLOSE:
+ qAudio->finished = true;
+ break;
+ default:
+ return;
+ }
+}
+
+WAVEHDR* QAudioInputPrivate::allocateBlocks(int size, int count)
+{
+ int i;
+ unsigned char* buffer;
+ WAVEHDR* blocks;
+ DWORD totalBufferSize = (size + sizeof(WAVEHDR))*count;
+
+ if((buffer=(unsigned char*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,
+ totalBufferSize)) == 0) {
+ qWarning("QAudioInput: Memory allocation error");
+ return 0;
+ }
+ blocks = (WAVEHDR*)buffer;
+ buffer += sizeof(WAVEHDR)*count;
+ for(i = 0; i < count; i++) {
+ blocks[i].dwBufferLength = size;
+ blocks[i].lpData = (LPSTR)buffer;
+ blocks[i].dwBytesRecorded=0;
+ blocks[i].dwUser = 0L;
+ blocks[i].dwFlags = 0L;
+ blocks[i].dwLoops = 0L;
+ result = waveInPrepareHeader(hWaveIn,&blocks[i], sizeof(WAVEHDR));
+ if(result != MMSYSERR_NOERROR) {
+ qWarning("QAudioInput: Can't prepare block %d",i);
+ return 0;
+ }
+ buffer += size;
+ }
+ return blocks;
+}
+
+void QAudioInputPrivate::freeBlocks(WAVEHDR* blockArray)
+{
+ WAVEHDR* blocks = blockArray;
+
+ int count = buffer_size/period_size;
+
+ for(int i = 0; i < count; i++) {
+ waveInUnprepareHeader(hWaveIn,blocks, sizeof(WAVEHDR));
+ blocks++;
+ }
+ HeapFree(GetProcessHeap(), 0, blockArray);
+}
+
+QAudio::Error QAudioInputPrivate::error() const
+{
+ return errorState;
+}
+
+QAudio::State QAudioInputPrivate::state() const
+{
+ return deviceState;
+}
+
+QAudioFormat QAudioInputPrivate::format() const
+{
+ return settings;
+}
+
+QIODevice* QAudioInputPrivate::start(QIODevice* device)
+{
+ if(deviceState != QAudio::StoppedState)
+ close();
+
+ if(!pullMode && audioSource) {
+ delete audioSource;
+ }
+
+ if(device) {
+ //set to pull mode
+ pullMode = true;
+ audioSource = device;
+ deviceState = QAudio::ActiveState;
+ } else {
+ //set to push mode
+ pullMode = false;
+ deviceState = QAudio::IdleState;
+ audioSource = new InputPrivate(this);
+ audioSource->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
+ }
+
+ if( !open() )
+ return 0;
+
+ emit stateChanged(deviceState);
+
+ return audioSource;
+}
+
+void QAudioInputPrivate::stop()
+{
+ if(deviceState == QAudio::StoppedState)
+ return;
+
+ close();
+ emit stateChanged(deviceState);
+}
+
+bool QAudioInputPrivate::open()
+{
+#ifdef DEBUG_AUDIO
+ QTime now(QTime::currentTime());
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :open()";
+#endif
+ header = 0;
+ period_size = 0;
+
+ if (!settings.isValid()) {
+ qWarning("QAudioInput: open error, invalid format.");
+ } else if (settings.channels() <= 0) {
+ qWarning("QAudioInput: open error, invalid number of channels (%d).",
+ settings.channels());
+ } else if (settings.sampleSize() <= 0) {
+ qWarning("QAudioInput: open error, invalid sample size (%d).",
+ settings.sampleSize());
+ } else if (settings.frequency() < 8000 || settings.frequency() > 48000) {
+ qWarning("QAudioInput: open error, frequency out of range (%d).", settings.frequency());
+ } else if (buffer_size == 0) {
+
+ buffer_size
+ = (settings.frequency()
+ * settings.channels()
+ * settings.sampleSize()
+#ifndef Q_OS_WINCE // Default buffer size, 200ms, default period size is 40ms
+ + 39) / 40;
+ period_size = buffer_size / 5;
+ } else {
+ period_size = buffer_size / 5;
+#else // For wince reduce size to 40ms for buffer size and 20ms period
+ + 199) / 200;
+ period_size = buffer_size / 2;
+ } else {
+ period_size = buffer_size / 2;
+#endif
+ }
+
+ if (period_size == 0) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ return false;
+ }
+
+ timeStamp.restart();
+ elapsedTimeOffset = 0;
+ wfx.nSamplesPerSec = settings.frequency();
+ wfx.wBitsPerSample = settings.sampleSize();
+ wfx.nChannels = settings.channels();
+ wfx.cbSize = 0;
+
+ wfx.wFormatTag = WAVE_FORMAT_PCM;
+ wfx.nBlockAlign = (wfx.wBitsPerSample >> 3) * wfx.nChannels;
+ wfx.nAvgBytesPerSec = wfx.nBlockAlign * wfx.nSamplesPerSec;
+
+ UINT_PTR devId = WAVE_MAPPER;
+
+ WAVEINCAPS wic;
+ unsigned long iNumDevs,ii;
+ iNumDevs = waveInGetNumDevs();
+ for(ii=0;ii<iNumDevs;ii++) {
+ if(waveInGetDevCaps(ii, &wic, sizeof(WAVEINCAPS))
+ == MMSYSERR_NOERROR) {
+ QString tmp;
+ tmp = QString((const QChar *)wic.szPname);
+ if(tmp.compare(QLatin1String(m_device)) == 0) {
+ devId = ii;
+ break;
+ }
+ }
+ }
+
+ if(waveInOpen(&hWaveIn, devId, &wfx,
+ (DWORD_PTR)&waveInProc,
+ (DWORD_PTR) this,
+ CALLBACK_FUNCTION) != MMSYSERR_NOERROR) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ qWarning("QAudioInput: failed to open audio device");
+ return false;
+ }
+ waveBlocks = allocateBlocks(period_size, buffer_size/period_size);
+
+ if(waveBlocks == 0) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ qWarning("QAudioInput: failed to allocate blocks. open failed");
+ return false;
+ }
+
+ mutex.lock();
+ waveFreeBlockCount = buffer_size/period_size;
+ mutex.unlock();
+
+ waveCurrentBlock = 0;
+
+ for(int i=0; i<buffer_size/period_size; i++) {
+ result = waveInAddBuffer(hWaveIn, &waveBlocks[i], sizeof(WAVEHDR));
+ if(result != MMSYSERR_NOERROR) {
+ qWarning("QAudioInput: failed to setup block %d,err=%d",i,result);
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ return false;
+ }
+ }
+ result = waveInStart(hWaveIn);
+ if(result) {
+ qWarning("QAudioInput: failed to start audio input");
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ return false;
+ }
+ timeStampOpened.restart();
+ elapsedTimeOffset = 0;
+ totalTimeValue = 0;
+ errorState = QAudio::NoError;
+ return true;
+}
+
+void QAudioInputPrivate::close()
+{
+ if(deviceState == QAudio::StoppedState)
+ return;
+
+ deviceState = QAudio::StoppedState;
+ waveInReset(hWaveIn);
+ waveInClose(hWaveIn);
+
+ int count = 0;
+ while(!finished && count < 500) {
+ count++;
+ Sleep(10);
+ }
+
+ mutex.lock();
+ for(int i=0; i<waveFreeBlockCount; i++)
+ waveInUnprepareHeader(hWaveIn,&waveBlocks[i],sizeof(WAVEHDR));
+ freeBlocks(waveBlocks);
+ mutex.unlock();
+}
+
+int QAudioInputPrivate::bytesReady() const
+{
+ if(period_size == 0 || buffer_size == 0)
+ return 0;
+
+ int buf = ((buffer_size/period_size)-waveFreeBlockCount)*period_size;
+ if(buf < 0)
+ buf = 0;
+ return buf;
+}
+
+qint64 QAudioInputPrivate::read(char* data, qint64 len)
+{
+ bool done = false;
+
+ char* p = data;
+ qint64 l = 0;
+ qint64 written = 0;
+ while(!done) {
+ // Read in some audio data
+ if(waveBlocks[header].dwBytesRecorded > 0 && waveBlocks[header].dwFlags & WHDR_DONE) {
+ if(pullMode) {
+ l = audioSource->write(waveBlocks[header].lpData,
+ waveBlocks[header].dwBytesRecorded);
+#ifdef DEBUG_AUDIO
+ qDebug()<<"IN: "<<waveBlocks[header].dwBytesRecorded<<", OUT: "<<l;
+#endif
+ if(l < 0) {
+ // error
+ qWarning("QAudioInput: IOError");
+ errorState = QAudio::IOError;
+
+ } else if(l == 0) {
+ // cant write to IODevice
+ qWarning("QAudioInput: IOError, can't write to QIODevice");
+ errorState = QAudio::IOError;
+
+ } else {
+ totalTimeValue += waveBlocks[header].dwBytesRecorded;
+ errorState = QAudio::NoError;
+ if (deviceState != QAudio::ActiveState) {
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
+ resuming = false;
+ }
+ } else {
+ l = qMin<qint64>(len, waveBlocks[header].dwBytesRecorded);
+ // push mode
+ memcpy(p, waveBlocks[header].lpData, l);
+
+ len -= l;
+
+#ifdef DEBUG_AUDIO
+ qDebug()<<"IN: "<<waveBlocks[header].dwBytesRecorded<<", OUT: "<<l;
+#endif
+ totalTimeValue += waveBlocks[header].dwBytesRecorded;
+ errorState = QAudio::NoError;
+ if (deviceState != QAudio::ActiveState) {
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
+ resuming = false;
+ }
+ } else {
+ //no data, not ready yet, next time
+ break;
+ }
+
+ waveInUnprepareHeader(hWaveIn,&waveBlocks[header], sizeof(WAVEHDR));
+
+ mutex.lock();
+ waveFreeBlockCount++;
+ mutex.unlock();
+
+ waveBlocks[header].dwBytesRecorded=0;
+ waveBlocks[header].dwFlags = 0L;
+ result = waveInPrepareHeader(hWaveIn,&waveBlocks[header], sizeof(WAVEHDR));
+ if(result != MMSYSERR_NOERROR) {
+ result = waveInPrepareHeader(hWaveIn,&waveBlocks[header], sizeof(WAVEHDR));
+ qWarning("QAudioInput: failed to prepare block %d,err=%d",header,result);
+ errorState = QAudio::IOError;
+
+ mutex.lock();
+ waveFreeBlockCount--;
+ mutex.unlock();
+
+ return 0;
+ }
+ result = waveInAddBuffer(hWaveIn, &waveBlocks[header], sizeof(WAVEHDR));
+ if(result != MMSYSERR_NOERROR) {
+ qWarning("QAudioInput: failed to setup block %d,err=%d",header,result);
+ errorState = QAudio::IOError;
+
+ mutex.lock();
+ waveFreeBlockCount--;
+ mutex.unlock();
+
+ return 0;
+ }
+ header++;
+ if(header >= buffer_size/period_size)
+ header = 0;
+ p+=l;
+
+ mutex.lock();
+ if(!pullMode) {
+ if(len < period_size || waveFreeBlockCount == buffer_size/period_size)
+ done = true;
+ } else {
+ if(waveFreeBlockCount == buffer_size/period_size)
+ done = true;
+ }
+ mutex.unlock();
+
+ written+=l;
+ }
+#ifdef DEBUG_AUDIO
+ qDebug()<<"read in len="<<written;
+#endif
+ return written;
+}
+
+void QAudioInputPrivate::resume()
+{
+ if(deviceState == QAudio::SuspendedState) {
+ deviceState = QAudio::ActiveState;
+ for(int i=0; i<buffer_size/period_size; i++) {
+ result = waveInAddBuffer(hWaveIn, &waveBlocks[i], sizeof(WAVEHDR));
+ if(result != MMSYSERR_NOERROR) {
+ qWarning("QAudioInput: failed to setup block %d,err=%d",i,result);
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ return;
+ }
+ }
+
+ mutex.lock();
+ waveFreeBlockCount = buffer_size/period_size;
+ mutex.unlock();
+
+ waveCurrentBlock = 0;
+ header = 0;
+ resuming = true;
+ waveInStart(hWaveIn);
+ QTimer::singleShot(20,this,SLOT(feedback()));
+ emit stateChanged(deviceState);
+ }
+}
+
+void QAudioInputPrivate::setBufferSize(int value)
+{
+ buffer_size = value;
+}
+
+int QAudioInputPrivate::bufferSize() const
+{
+ return buffer_size;
+}
+
+int QAudioInputPrivate::periodSize() const
+{
+ return period_size;
+}
+
+void QAudioInputPrivate::setNotifyInterval(int ms)
+{
+ intervalTime = qMax(0, ms);
+}
+
+int QAudioInputPrivate::notifyInterval() const
+{
+ return intervalTime;
+}
+
+qint64 QAudioInputPrivate::processedUSecs() const
+{
+ if (deviceState == QAudio::StoppedState)
+ return 0;
+ qint64 result = qint64(1000000) * totalTimeValue /
+ (settings.channels()*(settings.sampleSize()/8)) /
+ settings.frequency();
+
+ return result;
+}
+
+void QAudioInputPrivate::suspend()
+{
+ if(deviceState == QAudio::ActiveState) {
+ waveInReset(hWaveIn);
+ deviceState = QAudio::SuspendedState;
+ emit stateChanged(deviceState);
+ }
+}
+
+void QAudioInputPrivate::feedback()
+{
+#ifdef DEBUG_AUDIO
+ QTime now(QTime::currentTime());
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :feedback() INPUT "<<this;
+#endif
+ if(!(deviceState==QAudio::StoppedState||deviceState==QAudio::SuspendedState))
+ QMetaObject::invokeMethod(this, "deviceReady", Qt::QueuedConnection);
+}
+
+bool QAudioInputPrivate::deviceReady()
+{
+ bytesAvailable = bytesReady();
+#ifdef DEBUG_AUDIO
+ QTime now(QTime::currentTime());
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :deviceReady() INPUT";
+#endif
+ if(deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
+ return true;
+
+ if(pullMode) {
+ // reads some audio data and writes it to QIODevice
+ read(0, buffer_size);
+ } else {
+ // emits readyRead() so user will call read() on QIODevice to get some audio data
+ InputPrivate* a = qobject_cast<InputPrivate*>(audioSource);
+ a->trigger();
+ }
+
+ if(intervalTime && (timeStamp.elapsed() + elapsedTimeOffset) > intervalTime) {
+ emit notify();
+ elapsedTimeOffset = timeStamp.elapsed() + elapsedTimeOffset - intervalTime;
+ timeStamp.restart();
+ }
+ return true;
+}
+
+qint64 QAudioInputPrivate::elapsedUSecs() const
+{
+ if (deviceState == QAudio::StoppedState)
+ return 0;
+
+ return timeStampOpened.elapsed()*1000;
+}
+
+void QAudioInputPrivate::reset()
+{
+ close();
+}
+
+InputPrivate::InputPrivate(QAudioInputPrivate* audio)
+{
+ audioDevice = qobject_cast<QAudioInputPrivate*>(audio);
+}
+
+InputPrivate::~InputPrivate() {}
+
+qint64 InputPrivate::readData( char* data, qint64 len)
+{
+ // push mode, user read() called
+ if(audioDevice->deviceState != QAudio::ActiveState &&
+ audioDevice->deviceState != QAudio::IdleState)
+ return 0;
+ // Read in some audio data
+ return audioDevice->read(data,len);
+}
+
+qint64 InputPrivate::writeData(const char* data, qint64 len)
+{
+ Q_UNUSED(data)
+ Q_UNUSED(len)
+
+ emit readyRead();
+ return 0;
+}
+
+void InputPrivate::trigger()
+{
+ emit readyRead();
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudioinput_win32_p.h b/src/multimedia/audio/qaudioinput_win32_p.h
new file mode 100644
index 000000000..c592a2d7a
--- /dev/null
+++ b/src/multimedia/audio/qaudioinput_win32_p.h
@@ -0,0 +1,160 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QAUDIOINPUTWIN_H
+#define QAUDIOINPUTWIN_H
+
+#include <windows.h>
+#include <mmsystem.h>
+
+#include <QtCore/qfile.h>
+#include <QtCore/qdebug.h>
+#include <QtCore/qtimer.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/qdatetime.h>
+#include <QtCore/qmutex.h>
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudioengine.h>
+
+
+QT_BEGIN_NAMESPACE
+
+class QAudioInputPrivate : public QAbstractAudioInput
+{
+ Q_OBJECT
+public:
+ QAudioInputPrivate(const QByteArray &device, const QAudioFormat& audioFormat);
+ ~QAudioInputPrivate();
+
+ qint64 read(char* data, qint64 len);
+
+ QAudioFormat format() const;
+ QIODevice* start(QIODevice* device = 0);
+ void stop();
+ void reset();
+ void suspend();
+ void resume();
+ int bytesReady() const;
+ int periodSize() const;
+ void setBufferSize(int value);
+ int bufferSize() const;
+ void setNotifyInterval(int milliSeconds);
+ int notifyInterval() const;
+ qint64 processedUSecs() const;
+ qint64 elapsedUSecs() const;
+ QAudio::Error error() const;
+ QAudio::State state() const;
+
+ QIODevice* audioSource;
+ QAudioFormat settings;
+ QAudio::Error errorState;
+ QAudio::State deviceState;
+
+private:
+ qint32 buffer_size;
+ qint32 period_size;
+ qint32 header;
+ QByteArray m_device;
+ int bytesAvailable;
+ int intervalTime;
+ QTime timeStamp;
+ qint64 elapsedTimeOffset;
+ QTime timeStampOpened;
+ qint64 totalTimeValue;
+ bool pullMode;
+ bool resuming;
+ WAVEFORMATEX wfx;
+ HWAVEIN hWaveIn;
+ MMRESULT result;
+ WAVEHDR* waveBlocks;
+ volatile bool finished;
+ volatile int waveFreeBlockCount;
+ int waveCurrentBlock;
+
+ QMutex mutex;
+ static void QT_WIN_CALLBACK waveInProc( HWAVEIN hWaveIn, UINT uMsg,
+ DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 );
+
+ WAVEHDR* allocateBlocks(int size, int count);
+ void freeBlocks(WAVEHDR* blockArray);
+ bool open();
+ void close();
+
+private slots:
+ void feedback();
+ bool deviceReady();
+
+signals:
+ void processMore();
+};
+
+class InputPrivate : public QIODevice
+{
+ Q_OBJECT
+public:
+ InputPrivate(QAudioInputPrivate* audio);
+ ~InputPrivate();
+
+ qint64 readData( char* data, qint64 len);
+ qint64 writeData(const char* data, qint64 len);
+
+ void trigger();
+private:
+ QAudioInputPrivate *audioDevice;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/audio/qaudiooutput.cpp b/src/multimedia/audio/qaudiooutput.cpp
new file mode 100644
index 000000000..95a28a2bf
--- /dev/null
+++ b/src/multimedia/audio/qaudiooutput.cpp
@@ -0,0 +1,430 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudioengine.h>
+#include <QtMultimedia/qaudiooutput.h>
+
+#include "qaudiodevicefactory_p.h"
+
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QAudioOutput
+ \brief The QAudioOutput class provides an interface for sending audio data to an audio output device.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia
+ \since 4.6
+
+ You can construct an audio output with the system's
+ \l{QAudioDeviceInfo::defaultOutputDevice()}{default audio output
+ device}. It is also possible to create QAudioOutput with a
+ specific QAudioDeviceInfo. When you create the audio output, you
+ should also send in the QAudioFormat to be used for the playback
+ (see the QAudioFormat class description for details).
+
+ To play a file:
+
+ Starting to play an audio stream is simply a matter of calling
+ start() with a QIODevice. QAudioOutput will then fetch the data it
+ needs from the io device. So playing back an audio file is as
+ simple as:
+
+ \code
+ QFile inputFile; // class member.
+ QAudioOutput* audio; // class member.
+ \endcode
+
+ \code
+ inputFile.setFileName("/tmp/test.raw");
+ inputFile.open(QIODevice::ReadOnly);
+
+ QAudioFormat format;
+ // Set up the format, eg.
+ format.setFrequency(8000);
+ format.setChannels(1);
+ format.setSampleSize(8);
+ format.setCodec("audio/pcm");
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setSampleType(QAudioFormat::UnSignedInt);
+
+ QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
+ if (!info.isFormatSupported(format)) {
+ qWarning()<<"raw audio format not supported by backend, cannot play audio.";
+ return;
+ }
+
+ audio = new QAudioOutput(format, this);
+ connect(audio,SIGNAL(stateChanged(QAudio::State)),SLOT(finishedPlaying(QAudio::State)));
+ audio->start(&inputFile);
+
+ \endcode
+
+ The file will start playing assuming that the audio system and
+ output device support it. If you run out of luck, check what's
+ up with the error() function.
+
+ After the file has finished playing, we need to stop the device:
+
+ \code
+ void finishedPlaying(QAudio::State state)
+ {
+ if(state == QAudio::IdleState) {
+ audio->stop();
+ inputFile.close();
+ delete audio;
+ }
+ }
+ \endcode
+
+ At any given time, the QAudioOutput will be in one of four states:
+ active, suspended, stopped, or idle. These states are described
+ by the QAudio::State enum.
+ State changes are reported through the stateChanged() signal. You
+ can use this signal to, for instance, update the GUI of the
+ application; the mundane example here being changing the state of
+ a \c { play/pause } button. You request a state change directly
+ with suspend(), stop(), reset(), resume(), and start().
+
+ While the stream is playing, you can set a notify interval in
+ milliseconds with setNotifyInterval(). This interval specifies the
+ time between two emissions of the notify() signal. This is
+ relative to the position in the stream, i.e., if the QAudioOutput
+ is in the SuspendedState or the IdleState, the notify() signal is
+ not emitted. A typical use-case would be to update a
+ \l{QSlider}{slider} that allows seeking in the stream.
+ If you want the time since playback started regardless of which
+ states the audio output has been in, elapsedUSecs() is the function for you.
+
+ If an error occurs, you can fetch the \l{QAudio::Error}{error
+ type} with the error() function. Please see the QAudio::Error enum
+ for a description of the possible errors that are reported. When
+ an error is encountered, the state changes to QAudio::StoppedState.
+ You can check for errors by connecting to the stateChanged()
+ signal:
+
+ \snippet doc/src/snippets/audio/main.cpp 3
+
+ \sa QAudioInput, QAudioDeviceInfo
+*/
+
+/*!
+ Construct a new audio output and attach it to \a parent.
+ The default audio output device is used with the output
+ \a format parameters.
+*/
+
+QAudioOutput::QAudioOutput(const QAudioFormat &format, QObject *parent):
+ QObject(parent)
+{
+ d = QAudioDeviceFactory::createDefaultOutputDevice(format);
+ connect(d, SIGNAL(notify()), SIGNAL(notify()));
+ connect(d, SIGNAL(stateChanged(QAudio::State)), SIGNAL(stateChanged(QAudio::State)));
+}
+
+/*!
+ Construct a new audio output and attach it to \a parent.
+ The device referenced by \a audioDevice is used with the output
+ \a format parameters.
+*/
+
+QAudioOutput::QAudioOutput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format, QObject *parent):
+ QObject(parent)
+{
+ d = QAudioDeviceFactory::createOutputDevice(audioDevice, format);
+ connect(d, SIGNAL(notify()), SIGNAL(notify()));
+ connect(d, SIGNAL(stateChanged(QAudio::State)), SIGNAL(stateChanged(QAudio::State)));
+}
+
+/*!
+ Destroys this audio output.
+*/
+
+QAudioOutput::~QAudioOutput()
+{
+ delete d;
+}
+
+/*!
+ Returns the QAudioFormat being used.
+
+*/
+
+QAudioFormat QAudioOutput::format() const
+{
+ return d->format();
+}
+
+/*!
+ Uses the \a device as the QIODevice to transfer data.
+ Passing a QIODevice allows the data to be transferred without any extra code.
+ All that is required is to open the QIODevice.
+
+ If able to successfully output audio data to the systems audio device the
+ state() is set to QAudio::ActiveState, error() is set to QAudio::NoError
+ and the stateChanged() signal is emitted.
+
+ If a problem occurs during this process the error() is set to QAudio::OpenError,
+ state() is set to QAudio::StoppedState and stateChanged() signal is emitted.
+
+ In either case, the stateChanged() signal may be emitted either synchronously
+ during execution of the start() function or asynchronously after start() has
+ returned to the caller.
+
+ \sa QIODevice
+*/
+
+void QAudioOutput::start(QIODevice* device)
+{
+ d->start(device);
+}
+
+/*!
+ Returns a pointer to the QIODevice being used to handle the data
+ transfer. This QIODevice can be used to write() audio data directly.
+
+ If able to access the systems audio device the state() is set to
+ QAudio::IdleState, error() is set to QAudio::NoError
+ and the stateChanged() signal is emitted.
+
+ If a problem occurs during this process the error() is set to QAudio::OpenError,
+ state() is set to QAudio::StoppedState and stateChanged() signal is emitted.
+
+ In either case, the stateChanged() signal may be emitted either synchronously
+ during execution of the start() function or asynchronously after start() has
+ returned to the caller.
+
+ \sa QIODevice
+*/
+
+QIODevice* QAudioOutput::start()
+{
+ return d->start(0);
+}
+
+/*!
+ Stops the audio output, detaching from the system resource.
+
+ Sets error() to QAudio::NoError, state() to QAudio::StoppedState and
+ emit stateChanged() signal.
+*/
+
+void QAudioOutput::stop()
+{
+ d->stop();
+}
+
+/*!
+ Drops all audio data in the buffers, resets buffers to zero.
+*/
+
+void QAudioOutput::reset()
+{
+ d->reset();
+}
+
+/*!
+ Stops processing audio data, preserving buffered audio data.
+
+ Sets error() to QAudio::NoError, state() to QAudio::SuspendedState and
+ emit stateChanged() signal.
+*/
+
+void QAudioOutput::suspend()
+{
+ d->suspend();
+}
+
+/*!
+ Resumes processing audio data after a suspend().
+
+ Sets error() to QAudio::NoError.
+ Sets state() to QAudio::ActiveState if you previously called start(QIODevice*).
+ Sets state() to QAudio::IdleState if you previously called start().
+ emits stateChanged() signal.
+
+ Note: signal will always be emitted during execution of the resume() function.
+*/
+
+void QAudioOutput::resume()
+{
+ d->resume();
+}
+
+/*!
+ Returns the free space available in bytes in the audio buffer.
+
+ NOTE: returned value is only valid while in QAudio::ActiveState or QAudio::IdleState
+ state, otherwise returns zero.
+*/
+
+int QAudioOutput::bytesFree() const
+{
+ return d->bytesFree();
+}
+
+/*!
+ Returns the period size in bytes.
+
+ Note: This is the recommended write size in bytes.
+*/
+
+int QAudioOutput::periodSize() const
+{
+ return d->periodSize();
+}
+
+/*!
+ Sets the audio buffer size to \a value in bytes.
+
+ Note: This function can be called anytime before start(), calls to this
+ are ignored after start(). It should not be assumed that the buffer size
+ set is the actual buffer size used, calling bufferSize() anytime after start()
+ will return the actual buffer size being used.
+*/
+
+void QAudioOutput::setBufferSize(int value)
+{
+ d->setBufferSize(value);
+}
+
+/*!
+ Returns the audio buffer size in bytes.
+
+ If called before start(), returns platform default value.
+ If called before start() but setBufferSize() was called prior, returns value set by setBufferSize().
+ If called after start(), returns the actual buffer size being used. This may not be what was set previously
+ by setBufferSize().
+
+*/
+
+int QAudioOutput::bufferSize() const
+{
+ return d->bufferSize();
+}
+
+/*!
+ Sets the interval for notify() signal to be emitted.
+ This is based on the \a ms of audio data processed
+ not on actual real-time.
+ The minimum resolution of the timer is platform specific and values
+ should be checked with notifyInterval() to confirm actual value
+ being used.
+*/
+
+void QAudioOutput::setNotifyInterval(int ms)
+{
+ d->setNotifyInterval(ms);
+}
+
+/*!
+ Returns the notify interval in milliseconds.
+*/
+
+int QAudioOutput::notifyInterval() const
+{
+ return d->notifyInterval();
+}
+
+/*!
+ Returns the amount of audio data processed by the class since start()
+ was called in microseconds.
+
+ Note: The amount of audio data played can be determined by subtracting
+ the microseconds of audio data still in the systems audio buffer.
+
+ \code
+ qint64 bytesInBuffer = bufferSize() - bytesFree();
+ qint64 usInBuffer = (qint64)(1000000) * bytesInBuffer / ( channels() * sampleSize() / 8 ) / frequency();
+ qint64 usPlayed = processedUSecs() - usInBuffer;
+ \endcode
+*/
+
+qint64 QAudioOutput::processedUSecs() const
+{
+ return d->processedUSecs();
+}
+
+/*!
+ Returns the microseconds since start() was called, including time in Idle and
+ Suspend states.
+*/
+
+qint64 QAudioOutput::elapsedUSecs() const
+{
+ return d->elapsedUSecs();
+}
+
+/*!
+ Returns the error state.
+*/
+
+QAudio::Error QAudioOutput::error() const
+{
+ return d->error();
+}
+
+/*!
+ Returns the state of audio processing.
+*/
+
+QAudio::State QAudioOutput::state() const
+{
+ return d->state();
+}
+
+/*!
+ \fn QAudioOutput::stateChanged(QAudio::State state)
+ This signal is emitted when the device \a state has changed.
+ This is the current state of the audio output.
+*/
+
+/*!
+ \fn QAudioOutput::notify()
+ This signal is emitted when x ms of audio data has been processed
+ the interval set by setNotifyInterval(x).
+*/
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudiooutput.h b/src/multimedia/audio/qaudiooutput.h
new file mode 100644
index 000000000..e831a370c
--- /dev/null
+++ b/src/multimedia/audio/qaudiooutput.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QAUDIOOUTPUT_H
+#define QAUDIOOUTPUT_H
+
+#include <QtCore/qiodevice.h>
+#include <QtCore/qglobal.h>
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudioformat.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+
+class QAbstractAudioOutput;
+
+class Q_MULTIMEDIA_EXPORT QAudioOutput : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit QAudioOutput(const QAudioFormat &format = QAudioFormat(), QObject *parent = 0);
+ explicit QAudioOutput(const QAudioDeviceInfo &audioDeviceInfo, const QAudioFormat &format = QAudioFormat(), QObject *parent = 0);
+ ~QAudioOutput();
+
+ QAudioFormat format() const;
+
+ void start(QIODevice *device);
+ QIODevice* start();
+
+ void stop();
+ void reset();
+ void suspend();
+ void resume();
+
+ void setBufferSize(int bytes);
+ int bufferSize() const;
+
+ int bytesFree() const;
+ int periodSize() const;
+
+ void setNotifyInterval(int milliSeconds);
+ int notifyInterval() const;
+
+ qint64 processedUSecs() const;
+ qint64 elapsedUSecs() const;
+
+ QAudio::Error error() const;
+ QAudio::State state() const;
+
+Q_SIGNALS:
+ void stateChanged(QAudio::State);
+ void notify();
+
+private:
+ Q_DISABLE_COPY(QAudioOutput)
+
+ QAbstractAudioOutput* d;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QAUDIOOUTPUT_H
diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
new file mode 100644
index 000000000..2f30b1251
--- /dev/null
+++ b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
@@ -0,0 +1,791 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qcoreapplication.h>
+#include "qaudiooutput_alsa_p.h"
+#include "qaudiodeviceinfo_alsa_p.h"
+
+QT_BEGIN_NAMESPACE
+
+//#define DEBUG_AUDIO 1
+
+QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device, const QAudioFormat& audioFormat):
+ settings(audioFormat)
+{
+ bytesAvailable = 0;
+ handle = 0;
+ ahandler = 0;
+ access = SND_PCM_ACCESS_RW_INTERLEAVED;
+ pcmformat = SND_PCM_FORMAT_S16;
+ buffer_frames = 0;
+ period_frames = 0;
+ buffer_size = 0;
+ period_size = 0;
+ buffer_time = 100000;
+ period_time = 20000;
+ totalTimeValue = 0;
+ intervalTime = 1000;
+ audioBuffer = 0;
+ errorState = QAudio::NoError;
+ deviceState = QAudio::StoppedState;
+ audioSource = 0;
+ pullMode = true;
+ resuming = false;
+ opened = false;
+
+ m_device = device;
+
+ timer = new QTimer(this);
+ connect(timer,SIGNAL(timeout()),SLOT(userFeed()));
+}
+
+QAudioOutputPrivate::~QAudioOutputPrivate()
+{
+ close();
+ disconnect(timer, SIGNAL(timeout()));
+ QCoreApplication::processEvents();
+ delete timer;
+}
+
+QAudio::Error QAudioOutputPrivate::error() const
+{
+ return errorState;
+}
+
+QAudio::State QAudioOutputPrivate::state() const
+{
+ return deviceState;
+}
+
+void QAudioOutputPrivate::async_callback(snd_async_handler_t *ahandler)
+{
+ QAudioOutputPrivate* audioOut;
+
+ audioOut = static_cast<QAudioOutputPrivate*>
+ (snd_async_handler_get_callback_private(ahandler));
+
+ if((audioOut->deviceState==QAudio::ActiveState)||(audioOut->resuming))
+ audioOut->feedback();
+}
+
+int QAudioOutputPrivate::xrun_recovery(int err)
+{
+ int count = 0;
+ bool reset = false;
+
+ if(err == -EPIPE) {
+ errorState = QAudio::UnderrunError;
+ err = snd_pcm_prepare(handle);
+ if(err < 0)
+ reset = true;
+
+ } else if((err == -ESTRPIPE)||(err == -EIO)) {
+ errorState = QAudio::IOError;
+ while((err = snd_pcm_resume(handle)) == -EAGAIN){
+ usleep(100);
+ count++;
+ if(count > 5) {
+ reset = true;
+ break;
+ }
+ }
+ if(err < 0) {
+ err = snd_pcm_prepare(handle);
+ if(err < 0)
+ reset = true;
+ }
+ }
+ if(reset) {
+ close();
+ open();
+ snd_pcm_prepare(handle);
+ return 0;
+ }
+ return err;
+}
+
+int QAudioOutputPrivate::setFormat()
+{
+ snd_pcm_format_t pcmformat = SND_PCM_FORMAT_UNKNOWN;
+
+ if(settings.sampleSize() == 8) {
+ pcmformat = SND_PCM_FORMAT_U8;
+
+ } else if(settings.sampleSize() == 16) {
+ if(settings.sampleType() == QAudioFormat::SignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ pcmformat = SND_PCM_FORMAT_S16_LE;
+ else
+ pcmformat = SND_PCM_FORMAT_S16_BE;
+ } else if(settings.sampleType() == QAudioFormat::UnSignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ pcmformat = SND_PCM_FORMAT_U16_LE;
+ else
+ pcmformat = SND_PCM_FORMAT_U16_BE;
+ }
+ } else if(settings.sampleSize() == 24) {
+ if(settings.sampleType() == QAudioFormat::SignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ pcmformat = SND_PCM_FORMAT_S24_LE;
+ else
+ pcmformat = SND_PCM_FORMAT_S24_BE;
+ } else if(settings.sampleType() == QAudioFormat::UnSignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ pcmformat = SND_PCM_FORMAT_U24_LE;
+ else
+ pcmformat = SND_PCM_FORMAT_U24_BE;
+ }
+ } else if(settings.sampleSize() == 32) {
+ if(settings.sampleType() == QAudioFormat::SignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ pcmformat = SND_PCM_FORMAT_S32_LE;
+ else
+ pcmformat = SND_PCM_FORMAT_S32_BE;
+ } else if(settings.sampleType() == QAudioFormat::UnSignedInt) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ pcmformat = SND_PCM_FORMAT_U32_LE;
+ else
+ pcmformat = SND_PCM_FORMAT_U32_BE;
+ } else if(settings.sampleType() == QAudioFormat::Float) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ pcmformat = SND_PCM_FORMAT_FLOAT_LE;
+ else
+ pcmformat = SND_PCM_FORMAT_FLOAT_BE;
+ }
+ } else if(settings.sampleSize() == 64) {
+ if(settings.byteOrder() == QAudioFormat::LittleEndian)
+ pcmformat = SND_PCM_FORMAT_FLOAT64_LE;
+ else
+ pcmformat = SND_PCM_FORMAT_FLOAT64_BE;
+ }
+
+ return pcmformat != SND_PCM_FORMAT_UNKNOWN
+ ? snd_pcm_hw_params_set_format( handle, hwparams, pcmformat)
+ : -1;
+}
+
+QIODevice* QAudioOutputPrivate::start(QIODevice* device)
+{
+ if(deviceState != QAudio::StoppedState)
+ deviceState = QAudio::StoppedState;
+
+ errorState = QAudio::NoError;
+
+ // Handle change of mode
+ if(audioSource && pullMode && !device) {
+ // pull -> push
+ close();
+ audioSource = 0;
+ } else if(audioSource && !pullMode && device) {
+ // push -> pull
+ close();
+ delete audioSource;
+ audioSource = 0;
+ }
+
+ if(device) {
+ //set to pull mode
+ pullMode = true;
+ audioSource = device;
+ deviceState = QAudio::ActiveState;
+ } else {
+ //set to push mode
+ if(!audioSource) {
+ audioSource = new OutputPrivate(this);
+ audioSource->open(QIODevice::WriteOnly|QIODevice::Unbuffered);
+ }
+ pullMode = false;
+ deviceState = QAudio::IdleState;
+ }
+
+ open();
+
+ emit stateChanged(deviceState);
+
+ return audioSource;
+}
+
+void QAudioOutputPrivate::stop()
+{
+ if(deviceState == QAudio::StoppedState)
+ return;
+ errorState = QAudio::NoError;
+ deviceState = QAudio::StoppedState;
+ close();
+ emit stateChanged(deviceState);
+}
+
+bool QAudioOutputPrivate::open()
+{
+ if(opened)
+ return true;
+
+#ifdef DEBUG_AUDIO
+ QTime now(QTime::currentTime());
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :open()";
+#endif
+ timeStamp.restart();
+ elapsedTimeOffset = 0;
+
+ int dir;
+ int err = 0;
+ int count=0;
+ unsigned int freakuency=settings.frequency();
+
+ if (!settings.isValid()) {
+ qWarning("QAudioOutput: open error, invalid format.");
+ } else if (settings.frequency() <= 0) {
+ qWarning("QAudioOutput: open error, invalid sample rate (%d).",
+ settings.frequency());
+ } else {
+ err = -1;
+ }
+
+ if (err == 0) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ return false;
+ }
+
+ QString dev = QString(QLatin1String(m_device.constData()));
+ QList<QByteArray> devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput);
+ if(dev.compare(QLatin1String("default")) == 0) {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(devices.first());
+#else
+ dev = QLatin1String("hw:0,0");
+#endif
+ } else {
+#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
+ dev = QLatin1String(m_device);
+#else
+ int idx = 0;
+ char *name;
+
+ QString shortName = QLatin1String(m_device.mid(m_device.indexOf('=',0)+1).constData());
+
+ while(snd_card_get_name(idx,&name) == 0) {
+ if(qstrncmp(shortName.toLocal8Bit().constData(),name,shortName.length()) == 0)
+ break;
+ idx++;
+ }
+ dev = QString(QLatin1String("hw:%1,0")).arg(idx);
+#endif
+ }
+
+ // Step 1: try and open the device
+ while((count < 5) && (err < 0)) {
+ err=snd_pcm_open(&handle,dev.toLocal8Bit().constData(),SND_PCM_STREAM_PLAYBACK,0);
+ if(err < 0)
+ count++;
+ }
+ if (( err < 0)||(handle == 0)) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ return false;
+ }
+ snd_pcm_nonblock( handle, 0 );
+
+ // Step 2: Set the desired HW parameters.
+ snd_pcm_hw_params_alloca( &hwparams );
+
+ bool fatal = false;
+ QString errMessage;
+ unsigned int chunks = 8;
+
+ err = snd_pcm_hw_params_any( handle, hwparams );
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: snd_pcm_hw_params_any: err = %1").arg(err);
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_rate_resample( handle, hwparams, 1 );
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: snd_pcm_hw_params_set_rate_resample: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_access( handle, hwparams, access );
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: snd_pcm_hw_params_set_access: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = setFormat();
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: snd_pcm_hw_params_set_format: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_channels( handle, hwparams, (unsigned int)settings.channels() );
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: snd_pcm_hw_params_set_channels: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_rate_near( handle, hwparams, &freakuency, 0 );
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: snd_pcm_hw_params_set_rate_near: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ unsigned int maxBufferTime = 0;
+ unsigned int minBufferTime = 0;
+ unsigned int maxPeriodTime = 0;
+ unsigned int minPeriodTime = 0;
+
+ err = snd_pcm_hw_params_get_buffer_time_max(hwparams, &maxBufferTime, &dir);
+ if ( err >= 0)
+ err = snd_pcm_hw_params_get_buffer_time_min(hwparams, &minBufferTime, &dir);
+ if ( err >= 0)
+ err = snd_pcm_hw_params_get_period_time_max(hwparams, &maxPeriodTime, &dir);
+ if ( err >= 0)
+ err = snd_pcm_hw_params_get_period_time_min(hwparams, &minPeriodTime, &dir);
+
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: buffer/period min and max: err = %1").arg(err);
+ } else {
+ if (maxBufferTime < buffer_time || buffer_time < minBufferTime || maxPeriodTime < period_time || minPeriodTime > period_time) {
+#ifdef DEBUG_AUDIO
+ qDebug()<<"defaults out of range";
+ qDebug()<<"pmin="<<minPeriodTime<<", pmax="<<maxPeriodTime<<", bmin="<<minBufferTime<<", bmax="<<maxBufferTime;
+#endif
+ period_time = minPeriodTime;
+ if (period_time*4 <= maxBufferTime) {
+ // Use 4 periods if possible
+ buffer_time = period_time*4;
+ chunks = 4;
+ } else if (period_time*2 <= maxBufferTime) {
+ // Use 2 periods if possible
+ buffer_time = period_time*2;
+ chunks = 2;
+ } else {
+ qWarning()<<"QAudioOutput: alsa only supports single period!";
+ fatal = true;
+ }
+#ifdef DEBUG_AUDIO
+ qDebug()<<"used: buffer_time="<<buffer_time<<", period_time="<<period_time;
+#endif
+ }
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_buffer_time_near(handle, hwparams, &buffer_time, &dir);
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: snd_pcm_hw_params_set_buffer_time_near: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_period_time_near(handle, hwparams, &period_time, &dir);
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: snd_pcm_hw_params_set_period_time_near: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params_set_periods_near(handle, hwparams, &chunks, &dir);
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: snd_pcm_hw_params_set_periods_near: err = %1").arg(err);
+ }
+ }
+ if ( !fatal ) {
+ err = snd_pcm_hw_params(handle, hwparams);
+ if ( err < 0 ) {
+ fatal = true;
+ errMessage = QString::fromLatin1("QAudioOutput: snd_pcm_hw_params: err = %1").arg(err);
+ }
+ }
+ if( err < 0) {
+ qWarning()<<errMessage;
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ return false;
+ }
+ snd_pcm_hw_params_get_buffer_size(hwparams,&buffer_frames);
+ buffer_size = snd_pcm_frames_to_bytes(handle,buffer_frames);
+ snd_pcm_hw_params_get_period_size(hwparams,&period_frames, &dir);
+ period_size = snd_pcm_frames_to_bytes(handle,period_frames);
+ snd_pcm_hw_params_get_buffer_time(hwparams,&buffer_time, &dir);
+ snd_pcm_hw_params_get_period_time(hwparams,&period_time, &dir);
+
+ // Step 3: Set the desired SW parameters.
+ snd_pcm_sw_params_t *swparams;
+ snd_pcm_sw_params_alloca(&swparams);
+ snd_pcm_sw_params_current(handle, swparams);
+ snd_pcm_sw_params_set_start_threshold(handle,swparams,period_frames);
+ snd_pcm_sw_params_set_stop_threshold(handle,swparams,buffer_frames);
+ snd_pcm_sw_params_set_avail_min(handle, swparams,period_frames);
+ snd_pcm_sw_params(handle, swparams);
+
+ // Step 4: Prepare audio
+ if(audioBuffer == 0)
+ audioBuffer = new char[snd_pcm_frames_to_bytes(handle,buffer_frames)];
+ snd_pcm_prepare( handle );
+ snd_pcm_start(handle);
+
+ // Step 5: Setup callback and timer fallback
+ snd_async_add_pcm_handler(&ahandler, handle, async_callback, this);
+ bytesAvailable = bytesFree();
+
+ // Step 6: Start audio processing
+ timer->start(period_time/1000);
+
+ clockStamp.restart();
+ timeStamp.restart();
+ elapsedTimeOffset = 0;
+ errorState = QAudio::NoError;
+ totalTimeValue = 0;
+ opened = true;
+
+ return true;
+}
+
+void QAudioOutputPrivate::close()
+{
+ timer->stop();
+
+ if ( handle ) {
+ snd_pcm_drain( handle );
+ snd_pcm_close( handle );
+ handle = 0;
+ delete [] audioBuffer;
+ audioBuffer=0;
+ }
+ if(!pullMode && audioSource) {
+ delete audioSource;
+ audioSource = 0;
+ }
+ opened = false;
+}
+
+int QAudioOutputPrivate::bytesFree() const
+{
+ if(resuming)
+ return period_size;
+
+ if(deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
+ return 0;
+ int frames = snd_pcm_avail_update(handle);
+ if((int)frames > (int)buffer_frames)
+ frames = buffer_frames;
+
+ return snd_pcm_frames_to_bytes(handle, frames);
+}
+
+qint64 QAudioOutputPrivate::write( const char *data, qint64 len )
+{
+ // Write out some audio data
+ if ( !handle )
+ return 0;
+#ifdef DEBUG_AUDIO
+ qDebug()<<"frames to write out = "<<
+ snd_pcm_bytes_to_frames( handle, (int)len )<<" ("<<len<<") bytes";
+#endif
+ int frames, err;
+ int space = bytesFree();
+ if(len < space) {
+ // Just write it
+ frames = snd_pcm_bytes_to_frames( handle, (int)len );
+ err = snd_pcm_writei( handle, data, frames );
+ } else {
+ // Only write space worth
+ frames = snd_pcm_bytes_to_frames( handle, (int)space );
+ err = snd_pcm_writei( handle, data, frames );
+ }
+ if(err > 0) {
+ totalTimeValue += err;
+ resuming = false;
+ errorState = QAudio::NoError;
+ if (deviceState != QAudio::ActiveState) {
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
+ return snd_pcm_frames_to_bytes( handle, err );
+ } else
+ err = xrun_recovery(err);
+
+ if(err < 0) {
+ close();
+ errorState = QAudio::FatalError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ }
+ return 0;
+}
+
+int QAudioOutputPrivate::periodSize() const
+{
+ return period_size;
+}
+
+void QAudioOutputPrivate::setBufferSize(int value)
+{
+ if(deviceState == QAudio::StoppedState)
+ buffer_size = value;
+}
+
+int QAudioOutputPrivate::bufferSize() const
+{
+ return buffer_size;
+}
+
+void QAudioOutputPrivate::setNotifyInterval(int ms)
+{
+ intervalTime = qMax(0, ms);
+}
+
+int QAudioOutputPrivate::notifyInterval() const
+{
+ return intervalTime;
+}
+
+qint64 QAudioOutputPrivate::processedUSecs() const
+{
+ return qint64(1000000) * totalTimeValue / settings.frequency();
+}
+
+void QAudioOutputPrivate::resume()
+{
+ if(deviceState == QAudio::SuspendedState) {
+ int err = 0;
+
+ if(handle) {
+ err = snd_pcm_prepare( handle );
+ if(err < 0)
+ xrun_recovery(err);
+
+ err = snd_pcm_start(handle);
+ if(err < 0)
+ xrun_recovery(err);
+
+ bytesAvailable = (int)snd_pcm_frames_to_bytes(handle, buffer_frames);
+ }
+ resuming = true;
+
+ deviceState = QAudio::ActiveState;
+
+ errorState = QAudio::NoError;
+ timer->start(period_time/1000);
+ emit stateChanged(deviceState);
+ }
+}
+
+QAudioFormat QAudioOutputPrivate::format() const
+{
+ return settings;
+}
+
+void QAudioOutputPrivate::suspend()
+{
+ if(deviceState == QAudio::ActiveState || deviceState == QAudio::IdleState || resuming) {
+ timer->stop();
+ deviceState = QAudio::SuspendedState;
+ errorState = QAudio::NoError;
+ emit stateChanged(deviceState);
+ }
+}
+
+void QAudioOutputPrivate::userFeed()
+{
+ if(deviceState == QAudio::StoppedState || deviceState == QAudio::SuspendedState)
+ return;
+#ifdef DEBUG_AUDIO
+ QTime now(QTime::currentTime());
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :userFeed() OUT";
+#endif
+ if(deviceState == QAudio::IdleState)
+ bytesAvailable = bytesFree();
+
+ deviceReady();
+}
+
+void QAudioOutputPrivate::feedback()
+{
+ updateAvailable();
+}
+
+
+void QAudioOutputPrivate::updateAvailable()
+{
+#ifdef DEBUG_AUDIO
+ QTime now(QTime::currentTime());
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :updateAvailable()";
+#endif
+ bytesAvailable = bytesFree();
+}
+
+bool QAudioOutputPrivate::deviceReady()
+{
+ if(pullMode) {
+ int l = 0;
+ int chunks = bytesAvailable/period_size;
+ if(chunks==0) {
+ bytesAvailable = bytesFree();
+ return false;
+ }
+#ifdef DEBUG_AUDIO
+ qDebug()<<"deviceReady() avail="<<bytesAvailable<<" bytes, period size="<<period_size<<" bytes";
+ qDebug()<<"deviceReady() no. of chunks that can fit ="<<chunks<<", chunks in bytes ="<<period_size*chunks;
+#endif
+ int input = period_frames*chunks;
+ if(input > (int)buffer_frames)
+ input = buffer_frames;
+ l = audioSource->read(audioBuffer,snd_pcm_frames_to_bytes(handle, input));
+ if(l > 0) {
+ // Got some data to output
+ if(deviceState != QAudio::ActiveState)
+ return true;
+ qint64 bytesWritten = write(audioBuffer,l);
+ if (bytesWritten != l)
+ audioSource->seek(audioSource->pos()-(l-bytesWritten));
+ bytesAvailable = bytesFree();
+
+ } else if(l == 0) {
+ // Did not get any data to output
+ bytesAvailable = bytesFree();
+ if(bytesAvailable > snd_pcm_frames_to_bytes(handle, buffer_frames-period_frames)) {
+ // Underrun
+ if (deviceState != QAudio::IdleState) {
+ errorState = QAudio::UnderrunError;
+ deviceState = QAudio::IdleState;
+ emit stateChanged(deviceState);
+ }
+ }
+
+ } else if(l < 0) {
+ close();
+ deviceState = QAudio::StoppedState;
+ errorState = QAudio::IOError;
+ emit stateChanged(deviceState);
+ }
+ } else {
+ bytesAvailable = bytesFree();
+ if(bytesAvailable > snd_pcm_frames_to_bytes(handle, buffer_frames-period_frames)) {
+ // Underrun
+ if (deviceState != QAudio::IdleState) {
+ errorState = QAudio::UnderrunError;
+ deviceState = QAudio::IdleState;
+ emit stateChanged(deviceState);
+ }
+ }
+ }
+
+ if(deviceState != QAudio::ActiveState)
+ return true;
+
+ if(intervalTime && (timeStamp.elapsed() + elapsedTimeOffset) > intervalTime) {
+ emit notify();
+ elapsedTimeOffset = timeStamp.elapsed() + elapsedTimeOffset - intervalTime;
+ timeStamp.restart();
+ }
+ return true;
+}
+
+qint64 QAudioOutputPrivate::elapsedUSecs() const
+{
+ if (deviceState == QAudio::StoppedState)
+ return 0;
+
+ return clockStamp.elapsed()*1000;
+}
+
+void QAudioOutputPrivate::reset()
+{
+ if(handle)
+ snd_pcm_reset(handle);
+
+ stop();
+}
+
+OutputPrivate::OutputPrivate(QAudioOutputPrivate* audio)
+{
+ audioDevice = qobject_cast<QAudioOutputPrivate*>(audio);
+}
+
+OutputPrivate::~OutputPrivate() {}
+
+qint64 OutputPrivate::readData( char* data, qint64 len)
+{
+ Q_UNUSED(data)
+ Q_UNUSED(len)
+
+ return 0;
+}
+
+qint64 OutputPrivate::writeData(const char* data, qint64 len)
+{
+ int retry = 0;
+ qint64 written = 0;
+ if((audioDevice->deviceState == QAudio::ActiveState)
+ ||(audioDevice->deviceState == QAudio::IdleState)) {
+ while(written < len) {
+ int chunk = audioDevice->write(data+written,(len-written));
+ if(chunk <= 0)
+ retry++;
+ written+=chunk;
+ if(retry > 10)
+ return written;
+ }
+ }
+ return written;
+
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.h b/src/multimedia/audio/qaudiooutput_alsa_p.h
new file mode 100644
index 000000000..99a98cd0d
--- /dev/null
+++ b/src/multimedia/audio/qaudiooutput_alsa_p.h
@@ -0,0 +1,166 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QAUDIOOUTPUTALSA_H
+#define QAUDIOOUTPUTALSA_H
+
+#include <alsa/asoundlib.h>
+
+#include <QtCore/qfile.h>
+#include <QtCore/qdebug.h>
+#include <QtCore/qtimer.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/qelapsedtimer.h>
+#include <QtCore/qdatetime.h>
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudioengine.h>
+
+QT_BEGIN_NAMESPACE
+
+class OutputPrivate;
+
+class QAudioOutputPrivate : public QAbstractAudioOutput
+{
+ friend class OutputPrivate;
+ Q_OBJECT
+public:
+ QAudioOutputPrivate(const QByteArray &device, const QAudioFormat& audioFormat);
+ ~QAudioOutputPrivate();
+
+ qint64 write( const char *data, qint64 len );
+
+ QIODevice* start(QIODevice* device = 0);
+ void stop();
+ void reset();
+ void suspend();
+ void resume();
+ int bytesFree() const;
+ int periodSize() const;
+ void setBufferSize(int value);
+ int bufferSize() const;
+ void setNotifyInterval(int milliSeconds);
+ int notifyInterval() const;
+ qint64 processedUSecs() const;
+ qint64 elapsedUSecs() const;
+ QAudio::Error error() const;
+ QAudio::State state() const;
+ QAudioFormat format() const;
+
+ QIODevice* audioSource;
+ QAudioFormat settings;
+ QAudio::Error errorState;
+ QAudio::State deviceState;
+
+private slots:
+ void userFeed();
+ void feedback();
+ void updateAvailable();
+ bool deviceReady();
+
+signals:
+ void processMore();
+
+private:
+ bool opened;
+ bool pullMode;
+ bool resuming;
+ int buffer_size;
+ int period_size;
+ int intervalTime;
+ qint64 totalTimeValue;
+ unsigned int buffer_time;
+ unsigned int period_time;
+ snd_pcm_uframes_t buffer_frames;
+ snd_pcm_uframes_t period_frames;
+ static void async_callback(snd_async_handler_t *ahandler);
+ int xrun_recovery(int err);
+
+ int setFormat();
+ bool open();
+ void close();
+
+ QTimer* timer;
+ QByteArray m_device;
+ int bytesAvailable;
+ QElapsedTimer timeStamp;
+ QElapsedTimer clockStamp;
+ qint64 elapsedTimeOffset;
+ char* audioBuffer;
+ snd_pcm_t* handle;
+ snd_async_handler_t* ahandler;
+ snd_pcm_access_t access;
+ snd_pcm_format_t pcmformat;
+ snd_timestamp_t* timestamp;
+ snd_pcm_hw_params_t *hwparams;
+};
+
+class OutputPrivate : public QIODevice
+{
+ friend class QAudioOutputPrivate;
+ Q_OBJECT
+public:
+ OutputPrivate(QAudioOutputPrivate* audio);
+ ~OutputPrivate();
+
+ qint64 readData( char* data, qint64 len);
+ qint64 writeData(const char* data, qint64 len);
+
+private:
+ QAudioOutputPrivate *audioDevice;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/audio/qaudiooutput_mac_p.cpp b/src/multimedia/audio/qaudiooutput_mac_p.cpp
new file mode 100644
index 000000000..e47c3f101
--- /dev/null
+++ b/src/multimedia/audio/qaudiooutput_mac_p.cpp
@@ -0,0 +1,703 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <CoreServices/CoreServices.h>
+#include <CoreAudio/CoreAudio.h>
+#include <AudioUnit/AudioUnit.h>
+#include <AudioToolbox/AudioToolbox.h>
+
+#include <QtCore/qendian.h>
+#include <QtCore/qbuffer.h>
+#include <QtCore/qtimer.h>
+#include <QtCore/qdebug.h>
+
+#include <QtMultimedia/qaudiooutput.h>
+
+#include "qaudio_mac_p.h"
+#include "qaudiooutput_mac_p.h"
+#include "qaudiodeviceinfo_mac_p.h"
+
+
+QT_BEGIN_NAMESPACE
+
+
+namespace QtMultimediaInternal
+{
+
+static const int default_buffer_size = 8 * 1024;
+
+
+class QAudioOutputBuffer : public QObject
+{
+ Q_OBJECT
+
+public:
+ QAudioOutputBuffer(int bufferSize, int maxPeriodSize, QAudioFormat const& audioFormat):
+ m_deviceError(false),
+ m_maxPeriodSize(maxPeriodSize),
+ m_device(0)
+ {
+ m_buffer = new QAudioRingBuffer(bufferSize + (bufferSize % maxPeriodSize == 0 ? 0 : maxPeriodSize - (bufferSize % maxPeriodSize)));
+ m_bytesPerFrame = (audioFormat.sampleSize() / 8) * audioFormat.channels();
+ m_periodTime = m_maxPeriodSize / m_bytesPerFrame * 1000 / audioFormat.frequency();
+
+ m_fillTimer = new QTimer(this);
+ connect(m_fillTimer, SIGNAL(timeout()), SLOT(fillBuffer()));
+ }
+
+ ~QAudioOutputBuffer()
+ {
+ delete m_buffer;
+ }
+
+ qint64 readFrames(char* data, qint64 maxFrames)
+ {
+ bool wecan = true;
+ qint64 framesRead = 0;
+
+ while (wecan && framesRead < maxFrames) {
+ QAudioRingBuffer::Region region = m_buffer->acquireReadRegion((maxFrames - framesRead) * m_bytesPerFrame);
+
+ if (region.second > 0) {
+ region.second -= region.second % m_bytesPerFrame;
+ memcpy(data + (framesRead * m_bytesPerFrame), region.first, region.second);
+ framesRead += region.second / m_bytesPerFrame;
+ }
+ else
+ wecan = false;
+
+ m_buffer->releaseReadRegion(region);
+ }
+
+ if (framesRead == 0 && m_deviceError)
+ framesRead = -1;
+
+ return framesRead;
+ }
+
+ qint64 writeBytes(const char* data, qint64 maxSize)
+ {
+ bool wecan = true;
+ qint64 bytesWritten = 0;
+
+ maxSize -= maxSize % m_bytesPerFrame;
+ while (wecan && bytesWritten < maxSize) {
+ QAudioRingBuffer::Region region = m_buffer->acquireWriteRegion(maxSize - bytesWritten);
+
+ if (region.second > 0) {
+ memcpy(region.first, data + bytesWritten, region.second);
+ bytesWritten += region.second;
+ }
+ else
+ wecan = false;
+
+ m_buffer->releaseWriteRegion(region);
+ }
+
+ if (bytesWritten > 0)
+ emit readyRead();
+
+ return bytesWritten;
+ }
+
+ int available() const
+ {
+ return m_buffer->free();
+ }
+
+ void reset()
+ {
+ m_buffer->reset();
+ m_deviceError = false;
+ }
+
+ void setPrefetchDevice(QIODevice* device)
+ {
+ if (m_device != device) {
+ m_device = device;
+ if (m_device != 0)
+ fillBuffer();
+ }
+ }
+
+ void startFillTimer()
+ {
+ if (m_device != 0)
+ m_fillTimer->start(m_buffer->size() / 2 / m_maxPeriodSize * m_periodTime);
+ }
+
+ void stopFillTimer()
+ {
+ m_fillTimer->stop();
+ }
+
+signals:
+ void readyRead();
+
+private slots:
+ void fillBuffer()
+ {
+ const int free = m_buffer->free();
+ const int writeSize = free - (free % m_maxPeriodSize);
+
+ if (writeSize > 0) {
+ bool wecan = true;
+ int filled = 0;
+
+ while (!m_deviceError && wecan && filled < writeSize) {
+ QAudioRingBuffer::Region region = m_buffer->acquireWriteRegion(writeSize - filled);
+
+ if (region.second > 0) {
+ region.second = m_device->read(region.first, region.second);
+ if (region.second > 0)
+ filled += region.second;
+ else if (region.second == 0)
+ wecan = false;
+ else if (region.second < 0) {
+ m_fillTimer->stop();
+ region.second = 0;
+ m_deviceError = true;
+ }
+ }
+ else
+ wecan = false;
+
+ m_buffer->releaseWriteRegion(region);
+ }
+
+ if (filled > 0)
+ emit readyRead();
+ }
+ }
+
+private:
+ bool m_deviceError;
+ int m_maxPeriodSize;
+ int m_bytesPerFrame;
+ int m_periodTime;
+ QIODevice* m_device;
+ QTimer* m_fillTimer;
+ QAudioRingBuffer* m_buffer;
+};
+
+
+}
+
+class MacOutputDevice : public QIODevice
+{
+ Q_OBJECT
+
+public:
+ MacOutputDevice(QtMultimediaInternal::QAudioOutputBuffer* audioBuffer, QObject* parent):
+ QIODevice(parent),
+ m_audioBuffer(audioBuffer)
+ {
+ open(QIODevice::WriteOnly | QIODevice::Unbuffered);
+ }
+
+ qint64 readData(char* data, qint64 len)
+ {
+ Q_UNUSED(data);
+ Q_UNUSED(len);
+
+ return 0;
+ }
+
+ qint64 writeData(const char* data, qint64 len)
+ {
+ return m_audioBuffer->writeBytes(data, len);
+ }
+
+ bool isSequential() const
+ {
+ return true;
+ }
+
+private:
+ QtMultimediaInternal::QAudioOutputBuffer* m_audioBuffer;
+};
+
+
+QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray& device, const QAudioFormat& format):
+ audioFormat(format)
+{
+ QDataStream ds(device);
+ quint32 did, mode;
+
+ ds >> did >> mode;
+
+ if (QAudio::Mode(mode) == QAudio::AudioInput)
+ errorCode = QAudio::OpenError;
+ else {
+ audioDeviceInfo = new QAudioDeviceInfoInternal(device, QAudio::AudioOutput);
+ isOpen = false;
+ audioDeviceId = AudioDeviceID(did);
+ audioUnit = 0;
+ audioIO = 0;
+ startTime = 0;
+ totalFrames = 0;
+ audioBuffer = 0;
+ internalBufferSize = QtMultimediaInternal::default_buffer_size;
+ clockFrequency = AudioGetHostClockFrequency() / 1000;
+ errorCode = QAudio::NoError;
+ stateCode = QAudio::StoppedState;
+ audioThreadState = Stopped;
+
+ intervalTimer = new QTimer(this);
+ intervalTimer->setInterval(1000);
+ connect(intervalTimer, SIGNAL(timeout()), SIGNAL(notify()));
+ }
+}
+
+QAudioOutputPrivate::~QAudioOutputPrivate()
+{
+ delete audioDeviceInfo;
+ close();
+}
+
+bool QAudioOutputPrivate::open()
+{
+ if (errorCode != QAudio::NoError)
+ return false;
+
+ if (isOpen)
+ return true;
+
+ ComponentDescription cd;
+ cd.componentType = kAudioUnitType_Output;
+ cd.componentSubType = kAudioUnitSubType_HALOutput;
+ cd.componentManufacturer = kAudioUnitManufacturer_Apple;
+ cd.componentFlags = 0;
+ cd.componentFlagsMask = 0;
+
+ // Open
+ Component cp = FindNextComponent(NULL, &cd);
+ if (cp == 0) {
+ qWarning() << "QAudioOutput: Failed to find HAL Output component";
+ return false;
+ }
+
+ if (OpenAComponent(cp, &audioUnit) != noErr) {
+ qWarning() << "QAudioOutput: Unable to Open Output Component";
+ return false;
+ }
+
+ // register callback
+ AURenderCallbackStruct cb;
+ cb.inputProc = renderCallback;
+ cb.inputProcRefCon = this;
+
+ if (AudioUnitSetProperty(audioUnit,
+ kAudioUnitProperty_SetRenderCallback,
+ kAudioUnitScope_Global,
+ 0,
+ &cb,
+ sizeof(cb)) != noErr) {
+ qWarning() << "QAudioOutput: Failed to set AudioUnit callback";
+ return false;
+ }
+
+ // Set Audio Device
+ if (AudioUnitSetProperty(audioUnit,
+ kAudioOutputUnitProperty_CurrentDevice,
+ kAudioUnitScope_Global,
+ 0,
+ &audioDeviceId,
+ sizeof(audioDeviceId)) != noErr) {
+ qWarning() << "QAudioOutput: Unable to use configured device";
+ return false;
+ }
+
+ // Set stream format
+ streamFormat = toAudioStreamBasicDescription(audioFormat);
+
+ UInt32 size = sizeof(streamFormat);
+ if (AudioUnitSetProperty(audioUnit,
+ kAudioUnitProperty_StreamFormat,
+ kAudioUnitScope_Input,
+ 0,
+ &streamFormat,
+ sizeof(streamFormat)) != noErr) {
+ qWarning() << "QAudioOutput: Unable to Set Stream information";
+ return false;
+ }
+
+ // Allocate buffer
+ UInt32 numberOfFrames = 0;
+ size = sizeof(UInt32);
+ if (AudioUnitGetProperty(audioUnit,
+ kAudioDevicePropertyBufferFrameSize,
+ kAudioUnitScope_Global,
+ 0,
+ &numberOfFrames,
+ &size) != noErr) {
+ qWarning() << "QAudioInput: Failed to get audio period size";
+ return false;
+ }
+
+ periodSizeBytes = numberOfFrames * streamFormat.mBytesPerFrame;
+ if (internalBufferSize < periodSizeBytes * 2)
+ internalBufferSize = periodSizeBytes * 2;
+ else
+ internalBufferSize -= internalBufferSize % streamFormat.mBytesPerFrame;
+
+ audioBuffer = new QtMultimediaInternal::QAudioOutputBuffer(internalBufferSize, periodSizeBytes, audioFormat);
+ connect(audioBuffer, SIGNAL(readyRead()), SLOT(inputReady())); // Pull
+
+ audioIO = new MacOutputDevice(audioBuffer, this);
+
+ // Init
+ if (AudioUnitInitialize(audioUnit)) {
+ qWarning() << "QAudioOutput: Failed to initialize AudioUnit";
+ return false;
+ }
+
+ isOpen = true;
+
+ return true;
+}
+
+void QAudioOutputPrivate::close()
+{
+ if (audioUnit != 0) {
+ AudioOutputUnitStop(audioUnit);
+ AudioUnitUninitialize(audioUnit);
+ CloseComponent(audioUnit);
+ }
+
+ delete audioBuffer;
+}
+
+QAudioFormat QAudioOutputPrivate::format() const
+{
+ return audioFormat;
+}
+
+QIODevice* QAudioOutputPrivate::start(QIODevice* device)
+{
+ QIODevice* op = device;
+
+ if (!audioDeviceInfo->isFormatSupported(audioFormat) || !open()) {
+ stateCode = QAudio::StoppedState;
+ errorCode = QAudio::OpenError;
+ return audioIO;
+ }
+
+ reset();
+ audioBuffer->reset();
+ audioBuffer->setPrefetchDevice(op);
+
+ if (op == 0) {
+ op = audioIO;
+ stateCode = QAudio::IdleState;
+ }
+ else
+ stateCode = QAudio::ActiveState;
+
+ // Start
+ errorCode = QAudio::NoError;
+ totalFrames = 0;
+ startTime = AudioGetCurrentHostTime();
+
+ if (stateCode == QAudio::ActiveState)
+ audioThreadStart();
+
+ emit stateChanged(stateCode);
+
+ return op;
+}
+
+void QAudioOutputPrivate::stop()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode != QAudio::StoppedState) {
+ audioThreadDrain();
+
+ stateCode = QAudio::StoppedState;
+ errorCode = QAudio::NoError;
+ QMetaObject::invokeMethod(this, "stateChanged", Qt::QueuedConnection, Q_ARG(QAudio::State, stateCode));
+ }
+}
+
+void QAudioOutputPrivate::reset()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode != QAudio::StoppedState) {
+ audioThreadStop();
+
+ stateCode = QAudio::StoppedState;
+ errorCode = QAudio::NoError;
+ QMetaObject::invokeMethod(this, "stateChanged", Qt::QueuedConnection, Q_ARG(QAudio::State, stateCode));
+ }
+}
+
+void QAudioOutputPrivate::suspend()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode == QAudio::ActiveState || stateCode == QAudio::IdleState) {
+ audioThreadStop();
+
+ stateCode = QAudio::SuspendedState;
+ errorCode = QAudio::NoError;
+ QMetaObject::invokeMethod(this, "stateChanged", Qt::QueuedConnection, Q_ARG(QAudio::State, stateCode));
+ }
+}
+
+void QAudioOutputPrivate::resume()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode == QAudio::SuspendedState) {
+ audioThreadStart();
+
+ stateCode = QAudio::ActiveState;
+ errorCode = QAudio::NoError;
+ QMetaObject::invokeMethod(this, "stateChanged", Qt::QueuedConnection, Q_ARG(QAudio::State, stateCode));
+ }
+}
+
+int QAudioOutputPrivate::bytesFree() const
+{
+ return audioBuffer->available();
+}
+
+int QAudioOutputPrivate::periodSize() const
+{
+ return periodSizeBytes;
+}
+
+void QAudioOutputPrivate::setBufferSize(int bs)
+{
+ if (stateCode == QAudio::StoppedState)
+ internalBufferSize = bs;
+}
+
+int QAudioOutputPrivate::bufferSize() const
+{
+ return internalBufferSize;
+}
+
+void QAudioOutputPrivate::setNotifyInterval(int milliSeconds)
+{
+ if (intervalTimer->interval() == milliSeconds)
+ return;
+
+ if (milliSeconds <= 0)
+ milliSeconds = 0;
+
+ intervalTimer->setInterval(milliSeconds);
+}
+
+int QAudioOutputPrivate::notifyInterval() const
+{
+ return intervalTimer->interval();
+}
+
+qint64 QAudioOutputPrivate::processedUSecs() const
+{
+ return totalFrames * 1000000 / audioFormat.frequency();
+}
+
+qint64 QAudioOutputPrivate::elapsedUSecs() const
+{
+ if (stateCode == QAudio::StoppedState)
+ return 0;
+
+ return (AudioGetCurrentHostTime() - startTime) / (clockFrequency / 1000);
+}
+
+QAudio::Error QAudioOutputPrivate::error() const
+{
+ return errorCode;
+}
+
+QAudio::State QAudioOutputPrivate::state() const
+{
+ return stateCode;
+}
+
+void QAudioOutputPrivate::audioThreadStart()
+{
+ startTimers();
+ audioThreadState = Running;
+ AudioOutputUnitStart(audioUnit);
+}
+
+void QAudioOutputPrivate::audioThreadStop()
+{
+ stopTimers();
+ if (audioThreadState.testAndSetAcquire(Running, Stopped))
+ threadFinished.wait(&mutex);
+}
+
+void QAudioOutputPrivate::audioThreadDrain()
+{
+ stopTimers();
+ if (audioThreadState.testAndSetAcquire(Running, Draining))
+ threadFinished.wait(&mutex);
+}
+
+void QAudioOutputPrivate::audioDeviceStop()
+{
+ AudioOutputUnitStop(audioUnit);
+ audioThreadState = Stopped;
+ threadFinished.wakeOne();
+}
+
+void QAudioOutputPrivate::audioDeviceIdle()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode == QAudio::ActiveState) {
+ audioDeviceStop();
+
+ errorCode = QAudio::UnderrunError;
+ stateCode = QAudio::IdleState;
+ QMetaObject::invokeMethod(this, "deviceStopped", Qt::QueuedConnection);
+ }
+}
+
+void QAudioOutputPrivate::audioDeviceError()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode == QAudio::ActiveState) {
+ audioDeviceStop();
+
+ errorCode = QAudio::IOError;
+ stateCode = QAudio::StoppedState;
+ QMetaObject::invokeMethod(this, "deviceStopped", Qt::QueuedConnection);
+ }
+}
+
+void QAudioOutputPrivate::startTimers()
+{
+ audioBuffer->startFillTimer();
+ if (intervalTimer->interval() > 0)
+ intervalTimer->start();
+}
+
+void QAudioOutputPrivate::stopTimers()
+{
+ audioBuffer->stopFillTimer();
+ intervalTimer->stop();
+}
+
+
+void QAudioOutputPrivate::deviceStopped()
+{
+ intervalTimer->stop();
+ emit stateChanged(stateCode);
+}
+
+void QAudioOutputPrivate::inputReady()
+{
+ QMutexLocker lock(&mutex);
+ if (stateCode == QAudio::IdleState) {
+ audioThreadStart();
+
+ stateCode = QAudio::ActiveState;
+ errorCode = QAudio::NoError;
+
+ QMetaObject::invokeMethod(this, "stateChanged", Qt::QueuedConnection, Q_ARG(QAudio::State, stateCode));
+ }
+}
+
+
+OSStatus QAudioOutputPrivate::renderCallback(void* inRefCon,
+ AudioUnitRenderActionFlags* ioActionFlags,
+ const AudioTimeStamp* inTimeStamp,
+ UInt32 inBusNumber,
+ UInt32 inNumberFrames,
+ AudioBufferList* ioData)
+{
+ Q_UNUSED(ioActionFlags)
+ Q_UNUSED(inTimeStamp)
+ Q_UNUSED(inBusNumber)
+ Q_UNUSED(inNumberFrames)
+
+ QAudioOutputPrivate* d = static_cast<QAudioOutputPrivate*>(inRefCon);
+
+ const int threadState = d->audioThreadState.fetchAndAddAcquire(0);
+ if (threadState == Stopped) {
+ ioData->mBuffers[0].mDataByteSize = 0;
+ d->audioDeviceStop();
+ }
+ else {
+ const UInt32 bytesPerFrame = d->streamFormat.mBytesPerFrame;
+ qint64 framesRead;
+
+ framesRead = d->audioBuffer->readFrames((char*)ioData->mBuffers[0].mData,
+ ioData->mBuffers[0].mDataByteSize / bytesPerFrame);
+
+ if (framesRead > 0) {
+ ioData->mBuffers[0].mDataByteSize = framesRead * bytesPerFrame;
+ d->totalFrames += framesRead;
+ }
+ else {
+ ioData->mBuffers[0].mDataByteSize = 0;
+ if (framesRead == 0) {
+ if (threadState == Draining)
+ d->audioDeviceStop();
+ else
+ d->audioDeviceIdle();
+ }
+ else
+ d->audioDeviceError();
+ }
+ }
+
+ return noErr;
+}
+
+
+QT_END_NAMESPACE
+
+#include "qaudiooutput_mac_p.moc"
+
diff --git a/src/multimedia/audio/qaudiooutput_mac_p.h b/src/multimedia/audio/qaudiooutput_mac_p.h
new file mode 100644
index 000000000..a0144c0bc
--- /dev/null
+++ b/src/multimedia/audio/qaudiooutput_mac_p.h
@@ -0,0 +1,169 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QAUDIOOUTPUT_MAC_P_H
+#define QAUDIOOUTPUT_MAC_P_H
+
+#include <CoreServices/CoreServices.h>
+#include <CoreAudio/CoreAudio.h>
+#include <AudioUnit/AudioUnit.h>
+#include <AudioToolbox/AudioToolbox.h>
+
+#include <QtCore/qobject.h>
+#include <QtCore/qmutex.h>
+#include <QtCore/qwaitcondition.h>
+#include <QtCore/qtimer.h>
+#include <QtCore/qatomic.h>
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudioformat.h>
+#include <QtMultimedia/qaudioengine.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QIODevice;
+class QAbstractAudioDeviceInfo;
+
+namespace QtMultimediaInternal
+{
+class QAudioOutputBuffer;
+}
+
+class QAudioOutputPrivate : public QAbstractAudioOutput
+{
+ Q_OBJECT
+
+public:
+ bool isOpen;
+ int internalBufferSize;
+ int periodSizeBytes;
+ qint64 totalFrames;
+ QAudioFormat audioFormat;
+ QIODevice* audioIO;
+ AudioDeviceID audioDeviceId;
+ AudioUnit audioUnit;
+ Float64 clockFrequency;
+ UInt64 startTime;
+ AudioStreamBasicDescription deviceFormat;
+ AudioStreamBasicDescription streamFormat;
+ QtMultimediaInternal::QAudioOutputBuffer* audioBuffer;
+ QAtomicInt audioThreadState;
+ QWaitCondition threadFinished;
+ QMutex mutex;
+ QTimer* intervalTimer;
+ QAbstractAudioDeviceInfo *audioDeviceInfo;
+
+ QAudio::Error errorCode;
+ QAudio::State stateCode;
+
+ QAudioOutputPrivate(const QByteArray& device, const QAudioFormat& format);
+ ~QAudioOutputPrivate();
+
+ bool open();
+ void close();
+
+ QAudioFormat format() const;
+
+ QIODevice* start(QIODevice* device);
+ void stop();
+ void reset();
+ void suspend();
+ void resume();
+
+ int bytesFree() const;
+ int periodSize() const;
+
+ void setBufferSize(int value);
+ int bufferSize() const;
+
+ void setNotifyInterval(int milliSeconds);
+ int notifyInterval() const;
+
+ qint64 processedUSecs() const;
+ qint64 elapsedUSecs() const;
+
+ QAudio::Error error() const;
+ QAudio::State state() const;
+
+ void audioThreadStart();
+ void audioThreadStop();
+ void audioThreadDrain();
+
+ void audioDeviceStop();
+ void audioDeviceIdle();
+ void audioDeviceError();
+
+ void startTimers();
+ void stopTimers();
+
+private slots:
+ void deviceStopped();
+ void inputReady();
+
+private:
+ enum { Running, Draining, Stopped };
+
+ static OSStatus renderCallback(void* inRefCon,
+ AudioUnitRenderActionFlags* ioActionFlags,
+ const AudioTimeStamp* inTimeStamp,
+ UInt32 inBusNumber,
+ UInt32 inNumberFrames,
+ AudioBufferList* ioData);
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/src/multimedia/audio/qaudiooutput_symbian_p.cpp b/src/multimedia/audio/qaudiooutput_symbian_p.cpp
new file mode 100644
index 000000000..5db7099ac
--- /dev/null
+++ b/src/multimedia/audio/qaudiooutput_symbian_p.cpp
@@ -0,0 +1,643 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qaudiooutput_symbian_p.h"
+
+QT_BEGIN_NAMESPACE
+
+//-----------------------------------------------------------------------------
+// Constants
+//-----------------------------------------------------------------------------
+
+const int UnderflowTimerInterval = 50; // ms
+
+
+//-----------------------------------------------------------------------------
+// Private class
+//-----------------------------------------------------------------------------
+
+SymbianAudioOutputPrivate::SymbianAudioOutputPrivate(
+ QAudioOutputPrivate *audioDevice)
+ : m_audioDevice(audioDevice)
+{
+
+}
+
+SymbianAudioOutputPrivate::~SymbianAudioOutputPrivate()
+{
+
+}
+
+qint64 SymbianAudioOutputPrivate::readData(char *data, qint64 len)
+{
+ Q_UNUSED(data)
+ Q_UNUSED(len)
+ return 0;
+}
+
+qint64 SymbianAudioOutputPrivate::writeData(const char *data, qint64 len)
+{
+ qint64 totalWritten = 0;
+
+ if (m_audioDevice->state() == QAudio::ActiveState ||
+ m_audioDevice->state() == QAudio::IdleState) {
+
+ while (totalWritten < len) {
+ const qint64 written = m_audioDevice->pushData(data + totalWritten,
+ len - totalWritten);
+ if (written > 0)
+ totalWritten += written;
+ else
+ break;
+ }
+ }
+
+ return totalWritten;
+}
+
+
+//-----------------------------------------------------------------------------
+// Public functions
+//-----------------------------------------------------------------------------
+
+QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device,
+ const QAudioFormat &format)
+ : m_device(device)
+ , m_format(format)
+ , m_clientBufferSize(SymbianAudio::DefaultBufferSize)
+ , m_notifyInterval(SymbianAudio::DefaultNotifyInterval)
+ , m_notifyTimer(new QTimer(this))
+ , m_error(QAudio::NoError)
+ , m_internalState(SymbianAudio::ClosedState)
+ , m_externalState(QAudio::StoppedState)
+ , m_pullMode(false)
+ , m_source(0)
+ , m_devSound(0)
+ , m_devSoundBuffer(0)
+ , m_devSoundBufferSize(0)
+ , m_bytesWritten(0)
+ , m_pushDataReady(false)
+ , m_bytesPadding(0)
+ , m_underflow(false)
+ , m_lastBuffer(false)
+ , m_underflowTimer(new QTimer(this))
+ , m_samplesPlayed(0)
+ , m_totalSamplesPlayed(0)
+{
+ qRegisterMetaType<CMMFBuffer *>("CMMFBuffer *");
+
+ connect(m_notifyTimer.data(), SIGNAL(timeout()), this, SIGNAL(notify()));
+
+ m_underflowTimer->setInterval(UnderflowTimerInterval);
+ connect(m_underflowTimer.data(), SIGNAL(timeout()), this,
+ SLOT(underflowTimerExpired()));
+}
+
+QAudioOutputPrivate::~QAudioOutputPrivate()
+{
+ close();
+}
+
+QIODevice* QAudioOutputPrivate::start(QIODevice *device)
+{
+ stop();
+
+ if (device) {
+ m_pullMode = true;
+ m_source = device;
+ }
+
+ open();
+
+ if (SymbianAudio::ClosedState != m_internalState) {
+ if (device) {
+ connect(m_source, SIGNAL(readyRead()), this, SLOT(dataReady()));
+ } else {
+ m_source = new SymbianAudioOutputPrivate(this);
+ m_source->open(QIODevice::WriteOnly | QIODevice::Unbuffered);
+ }
+
+ m_elapsed.restart();
+ }
+
+ return m_source;
+}
+
+void QAudioOutputPrivate::stop()
+{
+ close();
+}
+
+void QAudioOutputPrivate::reset()
+{
+ m_totalSamplesPlayed += getSamplesPlayed();
+ m_devSound->stop();
+ m_bytesPadding = 0;
+ startPlayback();
+}
+
+void QAudioOutputPrivate::suspend()
+{
+ if (SymbianAudio::ActiveState == m_internalState
+ || SymbianAudio::IdleState == m_internalState) {
+ m_notifyTimer->stop();
+ m_underflowTimer->stop();
+ const qint64 samplesWritten = SymbianAudio::Utils::bytesToSamples(
+ m_format, m_bytesWritten);
+ const qint64 samplesPlayed = getSamplesPlayed();
+ m_totalSamplesPlayed += samplesPlayed;
+ m_bytesWritten = 0;
+ const bool paused = m_devSound->pause();
+ if (paused) {
+ setState(SymbianAudio::SuspendedPausedState);
+ } else {
+ m_devSoundBuffer = 0;
+ // Calculate the amount of data dropped
+ const qint64 paddingSamples = samplesWritten - samplesPlayed;
+ Q_ASSERT(paddingSamples >= 0);
+ m_bytesPadding = SymbianAudio::Utils::samplesToBytes(m_format,
+ paddingSamples);
+ setState(SymbianAudio::SuspendedStoppedState);
+ }
+ }
+}
+
+void QAudioOutputPrivate::resume()
+{
+ if (QAudio::SuspendedState == m_externalState) {
+ if (SymbianAudio::SuspendedPausedState == m_internalState)
+ m_devSound->resume();
+ else
+ startPlayback();
+ }
+}
+
+int QAudioOutputPrivate::bytesFree() const
+{
+ int result = 0;
+ if (m_devSoundBuffer) {
+ const TDes8 &outputBuffer = m_devSoundBuffer->Data();
+ result = outputBuffer.MaxLength() - outputBuffer.Length();
+ }
+ return result;
+}
+
+int QAudioOutputPrivate::periodSize() const
+{
+ return bufferSize();
+}
+
+void QAudioOutputPrivate::setBufferSize(int value)
+{
+ // Note that DevSound does not allow its client to specify the buffer size.
+ // This functionality is available via custom interfaces, but since these
+ // cannot be guaranteed to work across all DevSound implementations, we
+ // do not use them here.
+ // In order to comply with the expected bevahiour of QAudioOutput, we store
+ // the value and return it from bufferSize(), but the underlying DevSound
+ // buffer size remains unchanged.
+ if (value > 0)
+ m_clientBufferSize = value;
+}
+
+int QAudioOutputPrivate::bufferSize() const
+{
+ return m_devSoundBufferSize ? m_devSoundBufferSize : m_clientBufferSize;
+}
+
+void QAudioOutputPrivate::setNotifyInterval(int ms)
+{
+ if (ms >= 0) {
+ const int oldNotifyInterval = m_notifyInterval;
+ m_notifyInterval = ms;
+ if (m_notifyInterval && (SymbianAudio::ActiveState == m_internalState ||
+ SymbianAudio::IdleState == m_internalState))
+ m_notifyTimer->start(m_notifyInterval);
+ else
+ m_notifyTimer->stop();
+ }
+}
+
+int QAudioOutputPrivate::notifyInterval() const
+{
+ return m_notifyInterval;
+}
+
+qint64 QAudioOutputPrivate::processedUSecs() const
+{
+ int samplesPlayed = 0;
+ if (m_devSound && QAudio::SuspendedState != m_externalState)
+ samplesPlayed = getSamplesPlayed();
+
+ // Protect against division by zero
+ Q_ASSERT_X(m_format.frequency() > 0, Q_FUNC_INFO, "Invalid frequency");
+
+ const qint64 result = qint64(1000000) *
+ (samplesPlayed + m_totalSamplesPlayed)
+ / m_format.frequency();
+
+ return result;
+}
+
+qint64 QAudioOutputPrivate::elapsedUSecs() const
+{
+ const qint64 result = (QAudio::StoppedState == state()) ?
+ 0 : m_elapsed.elapsed() * 1000;
+ return result;
+}
+
+QAudio::Error QAudioOutputPrivate::error() const
+{
+ return m_error;
+}
+
+QAudio::State QAudioOutputPrivate::state() const
+{
+ return m_externalState;
+}
+
+QAudioFormat QAudioOutputPrivate::format() const
+{
+ return m_format;
+}
+
+
+//-----------------------------------------------------------------------------
+// Private functions
+//-----------------------------------------------------------------------------
+
+void QAudioOutputPrivate::dataReady()
+{
+ // Client-provided QIODevice has data ready to read.
+
+ Q_ASSERT_X(m_source->bytesAvailable(), Q_FUNC_INFO,
+ "readyRead signal received, but no data available");
+
+ if (!m_bytesPadding)
+ pullData();
+}
+
+void QAudioOutputPrivate::underflowTimerExpired()
+{
+ const TInt samplesPlayed = getSamplesPlayed();
+ if (m_samplesPlayed && (samplesPlayed == m_samplesPlayed)) {
+ setError(QAudio::UnderrunError);
+ } else {
+ m_samplesPlayed = samplesPlayed;
+ m_underflowTimer->start();
+ }
+}
+
+void QAudioOutputPrivate::devsoundInitializeComplete(int err)
+{
+ Q_ASSERT_X(SymbianAudio::InitializingState == m_internalState,
+ Q_FUNC_INFO, "Invalid state");
+
+ if (!err && m_devSound->isFormatSupported(m_format))
+ startPlayback();
+ else
+ setError(QAudio::OpenError);
+}
+
+void QAudioOutputPrivate::devsoundBufferToBeFilled(CMMFBuffer *bufferBase)
+{
+ // Following receipt of this signal, DevSound should not provide another
+ // buffer until we have returned the current one.
+ Q_ASSERT_X(!m_devSoundBuffer, Q_FUNC_INFO, "Buffer already held");
+
+ // Will be returned to DevSoundWrapper by bufferProcessed().
+ m_devSoundBuffer = static_cast<CMMFDataBuffer*>(bufferBase);
+
+ if (!m_devSoundBufferSize)
+ m_devSoundBufferSize = m_devSoundBuffer->Data().MaxLength();
+
+ writePaddingData();
+
+ if (m_pullMode && isDataReady() && !m_bytesPadding)
+ pullData();
+}
+
+void QAudioOutputPrivate::devsoundPlayError(int err)
+{
+ switch (err) {
+ case KErrUnderflow:
+ m_underflow = true;
+ if (m_pullMode && !m_lastBuffer)
+ setError(QAudio::UnderrunError);
+ else
+ setState(SymbianAudio::IdleState);
+ break;
+ case KErrOverflow:
+ // Silently consume this error when in playback mode
+ break;
+ default:
+ setError(QAudio::IOError);
+ break;
+ }
+}
+
+void QAudioOutputPrivate::open()
+{
+ Q_ASSERT_X(SymbianAudio::ClosedState == m_internalState,
+ Q_FUNC_INFO, "DevSound already opened");
+
+ Q_ASSERT(!m_devSound);
+ m_devSound = new SymbianAudio::DevSoundWrapper(QAudio::AudioOutput, this);
+
+ connect(m_devSound, SIGNAL(initializeComplete(int)),
+ this, SLOT(devsoundInitializeComplete(int)));
+ connect(m_devSound, SIGNAL(bufferToBeProcessed(CMMFBuffer *)),
+ this, SLOT(devsoundBufferToBeFilled(CMMFBuffer *)));
+ connect(m_devSound, SIGNAL(processingError(int)),
+ this, SLOT(devsoundPlayError(int)));
+
+ setState(SymbianAudio::InitializingState);
+ m_devSound->initialize(m_format.codec());
+}
+
+void QAudioOutputPrivate::startPlayback()
+{
+ bool ok = m_devSound->setFormat(m_format);
+ if (ok)
+ ok = m_devSound->start();
+
+ if (ok) {
+ if (isDataReady())
+ setState(SymbianAudio::ActiveState);
+ else
+ setState(SymbianAudio::IdleState);
+
+ if (m_notifyInterval)
+ m_notifyTimer->start(m_notifyInterval);
+ m_underflow = false;
+
+ Q_ASSERT(m_devSound->samplesProcessed() == 0);
+
+ writePaddingData();
+
+ if (m_pullMode && m_source->bytesAvailable() && !m_bytesPadding)
+ dataReady();
+ } else {
+ setError(QAudio::OpenError);
+ close();
+ }
+}
+
+void QAudioOutputPrivate::writePaddingData()
+{
+ // See comments in suspend()
+
+ while (m_devSoundBuffer && m_bytesPadding) {
+ if (SymbianAudio::IdleState == m_internalState)
+ setState(SymbianAudio::ActiveState);
+
+ TDes8 &outputBuffer = m_devSoundBuffer->Data();
+ const qint64 outputBytes = bytesFree();
+ const qint64 paddingBytes = outputBytes < m_bytesPadding ?
+ outputBytes : m_bytesPadding;
+ unsigned char *ptr = const_cast<unsigned char*>(outputBuffer.Ptr());
+ Mem::FillZ(ptr, paddingBytes);
+ outputBuffer.SetLength(outputBuffer.Length() + paddingBytes);
+ Q_ASSERT(m_bytesPadding >= paddingBytes);
+ m_bytesPadding -= paddingBytes;
+
+ if (m_pullMode && m_source->atEnd())
+ lastBufferFilled();
+ if ((paddingBytes == outputBytes) || !m_bytesPadding)
+ bufferFilled();
+ }
+}
+
+qint64 QAudioOutputPrivate::pushData(const char *data, qint64 len)
+{
+ // Data has been written to SymbianAudioOutputPrivate
+
+ Q_ASSERT_X(!m_pullMode, Q_FUNC_INFO,
+ "pushData called when in pull mode");
+
+ const unsigned char *const inputPtr =
+ reinterpret_cast<const unsigned char*>(data);
+ qint64 bytesWritten = 0;
+
+ if (SymbianAudio::IdleState == m_internalState)
+ setState(SymbianAudio::ActiveState);
+
+ while (m_devSoundBuffer && (bytesWritten < len)) {
+ // writePaddingData() is called from BufferToBeFilled(), so we should
+ // never have any padding data left at this point.
+ Q_ASSERT_X(0 == m_bytesPadding, Q_FUNC_INFO,
+ "Padding bytes remaining in pushData");
+
+ TDes8 &outputBuffer = m_devSoundBuffer->Data();
+
+ const qint64 outputBytes = bytesFree();
+ const qint64 inputBytes = len - bytesWritten;
+ const qint64 copyBytes = outputBytes < inputBytes ?
+ outputBytes : inputBytes;
+
+ outputBuffer.Append(inputPtr + bytesWritten, copyBytes);
+ bytesWritten += copyBytes;
+
+ bufferFilled();
+ }
+
+ m_pushDataReady = (bytesWritten < len);
+
+ // If DevSound is still initializing (m_internalState == InitializingState),
+ // we cannot transition m_internalState to ActiveState, but we must emit
+ // an (external) state change from IdleState to ActiveState. The following
+ // call triggers this signal.
+ setState(m_internalState);
+
+ return bytesWritten;
+}
+
+void QAudioOutputPrivate::pullData()
+{
+ Q_ASSERT_X(m_pullMode, Q_FUNC_INFO,
+ "pullData called when in push mode");
+
+ // writePaddingData() is called by BufferToBeFilled() before pullData(),
+ // so we should never have any padding data left at this point.
+ Q_ASSERT_X(0 == m_bytesPadding, Q_FUNC_INFO,
+ "Padding bytes remaining in pullData");
+
+ qint64 inputBytes = m_source->bytesAvailable();
+ while (m_devSoundBuffer && inputBytes) {
+ if (SymbianAudio::IdleState == m_internalState)
+ setState(SymbianAudio::ActiveState);
+
+ TDes8 &outputBuffer = m_devSoundBuffer->Data();
+
+ const qint64 outputBytes = bytesFree();
+ const qint64 copyBytes = outputBytes < inputBytes ?
+ outputBytes : inputBytes;
+
+ char *outputPtr = (char*)(outputBuffer.Ptr() + outputBuffer.Length());
+ const qint64 bytesCopied = m_source->read(outputPtr, copyBytes);
+ Q_ASSERT(bytesCopied == copyBytes);
+ outputBuffer.SetLength(outputBuffer.Length() + bytesCopied);
+ inputBytes -= bytesCopied;
+
+ if (m_source->atEnd())
+ lastBufferFilled();
+ else if (copyBytes == outputBytes)
+ bufferFilled();
+ }
+}
+
+void QAudioOutputPrivate::bufferFilled()
+{
+ Q_ASSERT_X(m_devSoundBuffer, Q_FUNC_INFO, "No buffer to return");
+
+ const TDes8 &outputBuffer = m_devSoundBuffer->Data();
+ m_bytesWritten += outputBuffer.Length();
+
+ m_devSoundBuffer = 0;
+
+ m_samplesPlayed = getSamplesPlayed();
+ m_underflowTimer->start();
+
+ if (QAudio::UnderrunError == m_error)
+ m_error = QAudio::NoError;
+
+ m_devSound->bufferProcessed();
+}
+
+void QAudioOutputPrivate::lastBufferFilled()
+{
+ Q_ASSERT_X(m_devSoundBuffer, Q_FUNC_INFO, "No buffer to fill");
+ Q_ASSERT_X(!m_lastBuffer, Q_FUNC_INFO, "Last buffer already sent");
+ m_lastBuffer = true;
+ m_devSoundBuffer->SetLastBuffer(ETrue);
+ bufferFilled();
+}
+
+void QAudioOutputPrivate::close()
+{
+ m_notifyTimer->stop();
+ m_underflowTimer->stop();
+
+ m_error = QAudio::NoError;
+
+ if (m_devSound)
+ m_devSound->stop();
+ delete m_devSound;
+ m_devSound = 0;
+
+ m_devSoundBuffer = 0;
+ m_devSoundBufferSize = 0;
+
+ if (!m_pullMode) // m_source is owned
+ delete m_source;
+ m_pullMode = false;
+ m_source = 0;
+
+ m_bytesWritten = 0;
+ m_pushDataReady = false;
+ m_bytesPadding = 0;
+ m_underflow = false;
+ m_lastBuffer = false;
+ m_samplesPlayed = 0;
+ m_totalSamplesPlayed = 0;
+
+ setState(SymbianAudio::ClosedState);
+}
+
+qint64 QAudioOutputPrivate::getSamplesPlayed() const
+{
+ qint64 result = 0;
+ if (m_devSound) {
+ const qint64 samplesWritten = SymbianAudio::Utils::bytesToSamples(
+ m_format, m_bytesWritten);
+
+ if (m_underflow) {
+ result = samplesWritten;
+ } else {
+ // This is necessary because some DevSound implementations report
+ // that they have played more data than has actually been provided to them
+ // by the client.
+ const qint64 devSoundSamplesPlayed(m_devSound->samplesProcessed());
+ result = qMin(devSoundSamplesPlayed, samplesWritten);
+ }
+ }
+ return result;
+}
+
+void QAudioOutputPrivate::setError(QAudio::Error error)
+{
+ m_error = error;
+
+ // Although no state transition actually occurs here, a stateChanged event
+ // must be emitted to inform the client that the call to start() was
+ // unsuccessful.
+ if (QAudio::OpenError == error) {
+ emit stateChanged(QAudio::StoppedState);
+ } else {
+ if (QAudio::UnderrunError == error)
+ setState(SymbianAudio::IdleState);
+ else
+ // Close the DevSound instance. This causes a transition to
+ // StoppedState. This must be done asynchronously in case the
+ // current function was called from a DevSound event handler, in which
+ // case deleting the DevSound instance may cause an exception.
+ QMetaObject::invokeMethod(this, "close", Qt::QueuedConnection);
+ }
+}
+
+void QAudioOutputPrivate::setState(SymbianAudio::State newInternalState)
+{
+ const QAudio::State oldExternalState = m_externalState;
+ m_internalState = newInternalState;
+ m_externalState = SymbianAudio::Utils::stateNativeToQt(m_internalState);
+
+ if (m_externalState != oldExternalState)
+ emit stateChanged(m_externalState);
+}
+
+bool QAudioOutputPrivate::isDataReady() const
+{
+ return (m_source && m_source->bytesAvailable())
+ || m_bytesPadding
+ || m_pushDataReady;
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudiooutput_symbian_p.h b/src/multimedia/audio/qaudiooutput_symbian_p.h
new file mode 100644
index 000000000..d76b0cb19
--- /dev/null
+++ b/src/multimedia/audio/qaudiooutput_symbian_p.h
@@ -0,0 +1,198 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QAUDIOOUTPUT_SYMBIAN_P_H
+#define QAUDIOOUTPUT_SYMBIAN_P_H
+
+#include <QtMultimedia/qaudioengine.h>
+#include <QTime>
+#include <QTimer>
+#include <sounddevice.h>
+#include "qaudio_symbian_p.h"
+
+QT_BEGIN_NAMESPACE
+
+class QAudioOutputPrivate;
+
+class SymbianAudioOutputPrivate : public QIODevice
+{
+ friend class QAudioOutputPrivate;
+ Q_OBJECT
+public:
+ SymbianAudioOutputPrivate(QAudioOutputPrivate *audio);
+ ~SymbianAudioOutputPrivate();
+
+ qint64 readData(char *data, qint64 len);
+ qint64 writeData(const char *data, qint64 len);
+
+private:
+ QAudioOutputPrivate *const m_audioDevice;
+};
+
+class QAudioOutputPrivate
+ : public QAbstractAudioOutput
+{
+ friend class SymbianAudioOutputPrivate;
+ Q_OBJECT
+public:
+ QAudioOutputPrivate(const QByteArray &device,
+ const QAudioFormat &audioFormat);
+ ~QAudioOutputPrivate();
+
+ // QAbstractAudioOutput
+ QIODevice* start(QIODevice *device = 0);
+ void stop();
+ void reset();
+ void suspend();
+ void resume();
+ int bytesFree() const;
+ int periodSize() const;
+ void setBufferSize(int value);
+ int bufferSize() const;
+ void setNotifyInterval(int milliSeconds);
+ int notifyInterval() const;
+ qint64 processedUSecs() const;
+ qint64 elapsedUSecs() const;
+ QAudio::Error error() const;
+ QAudio::State state() const;
+ QAudioFormat format() const;
+
+private slots:
+ void dataReady();
+ void underflowTimerExpired();
+ void devsoundInitializeComplete(int err);
+ void devsoundBufferToBeFilled(CMMFBuffer *);
+ void devsoundPlayError(int err);
+
+private:
+ void open();
+ void startPlayback();
+ void writePaddingData();
+ qint64 pushData(const char *data, qint64 len);
+ void pullData();
+ void bufferFilled();
+ void lastBufferFilled();
+ Q_INVOKABLE void close();
+
+ qint64 getSamplesPlayed() const;
+
+ void setError(QAudio::Error error);
+ void setState(SymbianAudio::State state);
+
+ bool isDataReady() const;
+
+private:
+ const QByteArray m_device;
+ const QAudioFormat m_format;
+
+ int m_clientBufferSize;
+ int m_notifyInterval;
+ QScopedPointer<QTimer> m_notifyTimer;
+ QTime m_elapsed;
+ QAudio::Error m_error;
+
+ SymbianAudio::State m_internalState;
+ QAudio::State m_externalState;
+
+ bool m_pullMode;
+ QIODevice *m_source;
+
+ SymbianAudio::DevSoundWrapper* m_devSound;
+
+ // Buffer provided by DevSound, to be filled with data.
+ CMMFDataBuffer *m_devSoundBuffer;
+
+ int m_devSoundBufferSize;
+
+ // Number of bytes transferred from QIODevice to QAudioOutput. It is
+ // necessary to count this because data is dropped when suspend() is
+ // called. The difference between the position reported by DevSound and
+ // this value allows us to calculate m_bytesPadding;
+ quint32 m_bytesWritten;
+
+ // True if client has provided data while the audio subsystem was not
+ // ready to consume it.
+ bool m_pushDataReady;
+
+ // Number of zero bytes which will be written when client calls resume().
+ quint32 m_bytesPadding;
+
+ // True if PlayError(KErrUnderflow) has been called.
+ bool m_underflow;
+
+ // True if a buffer marked with the "last buffer" flag has been provided
+ // to DevSound.
+ bool m_lastBuffer;
+
+ // Some DevSound implementations ignore all underflow errors raised by the
+ // audio driver, unless the last buffer flag has been set by the client.
+ // In push-mode playback, this flag will never be set, so the underflow
+ // error will never be reported. In order to work around this, a timer
+ // is used, which gets reset every time the client provides more data. If
+ // the timer expires, an underflow error is raised by this object.
+ QScopedPointer<QTimer> m_underflowTimer;
+
+ // Result of previous call to CMMFDevSound::SamplesPlayed(). This value is
+ // used to determine whether, when m_underflowTimer expires, an
+ // underflow error has actually occurred.
+ quint32 m_samplesPlayed;
+
+ // Samples played up to the last call to suspend(). It is necessary
+ // to cache this because suspend() is implemented using
+ // CMMFDevSound::Stop(), which resets DevSound's SamplesPlayed() counter.
+ quint32 m_totalSamplesPlayed;
+
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/multimedia/audio/qaudiooutput_win32_p.cpp
new file mode 100644
index 000000000..998cc22a4
--- /dev/null
+++ b/src/multimedia/audio/qaudiooutput_win32_p.cpp
@@ -0,0 +1,703 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qaudiooutput_win32_p.h"
+
+#ifndef SPEAKER_FRONT_LEFT
+ #define SPEAKER_FRONT_LEFT 0x00000001
+ #define SPEAKER_FRONT_RIGHT 0x00000002
+ #define SPEAKER_FRONT_CENTER 0x00000004
+ #define SPEAKER_LOW_FREQUENCY 0x00000008
+ #define SPEAKER_BACK_LEFT 0x00000010
+ #define SPEAKER_BACK_RIGHT 0x00000020
+ #define SPEAKER_FRONT_LEFT_OF_CENTER 0x00000040
+ #define SPEAKER_FRONT_RIGHT_OF_CENTER 0x00000080
+ #define SPEAKER_BACK_CENTER 0x00000100
+ #define SPEAKER_SIDE_LEFT 0x00000200
+ #define SPEAKER_SIDE_RIGHT 0x00000400
+ #define SPEAKER_TOP_CENTER 0x00000800
+ #define SPEAKER_TOP_FRONT_LEFT 0x00001000
+ #define SPEAKER_TOP_FRONT_CENTER 0x00002000
+ #define SPEAKER_TOP_FRONT_RIGHT 0x00004000
+ #define SPEAKER_TOP_BACK_LEFT 0x00008000
+ #define SPEAKER_TOP_BACK_CENTER 0x00010000
+ #define SPEAKER_TOP_BACK_RIGHT 0x00020000
+ #define SPEAKER_RESERVED 0x7FFC0000
+ #define SPEAKER_ALL 0x80000000
+#endif
+
+#ifndef _WAVEFORMATEXTENSIBLE_
+
+ #define _WAVEFORMATEXTENSIBLE_
+ typedef struct
+ {
+ WAVEFORMATEX Format; // Base WAVEFORMATEX data
+ union
+ {
+ WORD wValidBitsPerSample; // Valid bits in each sample container
+ WORD wSamplesPerBlock; // Samples per block of audio data; valid
+ // if wBitsPerSample=0 (but rarely used).
+ WORD wReserved; // Zero if neither case above applies.
+ } Samples;
+ DWORD dwChannelMask; // Positions of the audio channels
+ GUID SubFormat; // Format identifier GUID
+ } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE, *LPPWAVEFORMATEXTENSIBLE;
+ typedef const WAVEFORMATEXTENSIBLE* LPCWAVEFORMATEXTENSIBLE;
+
+#endif
+
+#if !defined(WAVE_FORMAT_EXTENSIBLE)
+#define WAVE_FORMAT_EXTENSIBLE 0xFFFE
+#endif
+
+//#define DEBUG_AUDIO 1
+
+QT_BEGIN_NAMESPACE
+
+QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device, const QAudioFormat& audioFormat):
+ settings(audioFormat)
+{
+ bytesAvailable = 0;
+ buffer_size = 0;
+ period_size = 0;
+ m_device = device;
+ totalTimeValue = 0;
+ intervalTime = 1000;
+ audioBuffer = 0;
+ errorState = QAudio::NoError;
+ deviceState = QAudio::StoppedState;
+ audioSource = 0;
+ pullMode = true;
+ finished = false;
+}
+
+QAudioOutputPrivate::~QAudioOutputPrivate()
+{
+ mutex.lock();
+ finished = true;
+ mutex.unlock();
+
+ close();
+}
+
+void CALLBACK QAudioOutputPrivate::waveOutProc( HWAVEOUT hWaveOut, UINT uMsg,
+ DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 )
+{
+ Q_UNUSED(dwParam1)
+ Q_UNUSED(dwParam2)
+ Q_UNUSED(hWaveOut)
+
+ QAudioOutputPrivate* qAudio;
+ qAudio = (QAudioOutputPrivate*)(dwInstance);
+ if(!qAudio)
+ return;
+
+ QMutexLocker(&qAudio->mutex);
+
+ switch(uMsg) {
+ case WOM_OPEN:
+ qAudio->feedback();
+ break;
+ case WOM_CLOSE:
+ return;
+ case WOM_DONE:
+ if(qAudio->finished || qAudio->buffer_size == 0 || qAudio->period_size == 0) {
+ return;
+ }
+ qAudio->waveFreeBlockCount++;
+ if(qAudio->waveFreeBlockCount >= qAudio->buffer_size/qAudio->period_size)
+ qAudio->waveFreeBlockCount = qAudio->buffer_size/qAudio->period_size;
+ qAudio->feedback();
+ break;
+ default:
+ return;
+ }
+}
+
+WAVEHDR* QAudioOutputPrivate::allocateBlocks(int size, int count)
+{
+ int i;
+ unsigned char* buffer;
+ WAVEHDR* blocks;
+ DWORD totalBufferSize = (size + sizeof(WAVEHDR))*count;
+
+ if((buffer=(unsigned char*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,
+ totalBufferSize)) == 0) {
+ qWarning("QAudioOutput: Memory allocation error");
+ return 0;
+ }
+ blocks = (WAVEHDR*)buffer;
+ buffer += sizeof(WAVEHDR)*count;
+ for(i = 0; i < count; i++) {
+ blocks[i].dwBufferLength = size;
+ blocks[i].lpData = (LPSTR)buffer;
+ buffer += size;
+ }
+ return blocks;
+}
+
+void QAudioOutputPrivate::freeBlocks(WAVEHDR* blockArray)
+{
+ WAVEHDR* blocks = blockArray;
+
+ int count = buffer_size/period_size;
+
+ for(int i = 0; i < count; i++) {
+ waveOutUnprepareHeader(hWaveOut,blocks, sizeof(WAVEHDR));
+ blocks++;
+ }
+ HeapFree(GetProcessHeap(), 0, blockArray);
+}
+
+QAudioFormat QAudioOutputPrivate::format() const
+{
+ return settings;
+}
+
+QIODevice* QAudioOutputPrivate::start(QIODevice* device)
+{
+ if(deviceState != QAudio::StoppedState)
+ close();
+
+ if(!pullMode && audioSource) {
+ delete audioSource;
+ }
+
+ if(device) {
+ //set to pull mode
+ pullMode = true;
+ audioSource = device;
+ deviceState = QAudio::ActiveState;
+ } else {
+ //set to push mode
+ pullMode = false;
+ audioSource = new OutputPrivate(this);
+ audioSource->open(QIODevice::WriteOnly|QIODevice::Unbuffered);
+ deviceState = QAudio::IdleState;
+ }
+
+ if( !open() )
+ return 0;
+
+ emit stateChanged(deviceState);
+
+ return audioSource;
+}
+
+void QAudioOutputPrivate::stop()
+{
+ if(deviceState == QAudio::StoppedState)
+ return;
+ close();
+ if(!pullMode && audioSource) {
+ delete audioSource;
+ audioSource = 0;
+ }
+ emit stateChanged(deviceState);
+}
+
+bool QAudioOutputPrivate::open()
+{
+#ifdef DEBUG_AUDIO
+ QTime now(QTime::currentTime());
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :open()";
+#endif
+
+ period_size = 0;
+
+ if (!settings.isValid()) {
+ qWarning("QAudioOutput: open error, invalid format.");
+ } else if (settings.channels() <= 0) {
+ qWarning("QAudioOutput: open error, invalid number of channels (%d).",
+ settings.channels());
+ } else if (settings.sampleSize() <= 0) {
+ qWarning("QAudioOutput: open error, invalid sample size (%d).",
+ settings.sampleSize());
+ } else if (settings.frequency() < 8000 || settings.frequency() > 48000) {
+ qWarning("QAudioOutput: open error, frequency out of range (%d).", settings.frequency());
+ } else if (buffer_size == 0) {
+ // Default buffer size, 200ms, default period size is 40ms
+ buffer_size
+ = (settings.frequency()
+ * settings.channels()
+ * settings.sampleSize()
+ + 39) / 40;
+ period_size = buffer_size / 5;
+ } else {
+ period_size = buffer_size / 5;
+ }
+
+ if (period_size == 0) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ return false;
+ }
+
+ waveBlocks = allocateBlocks(period_size, buffer_size/period_size);
+
+ mutex.lock();
+ waveFreeBlockCount = buffer_size/period_size;
+ mutex.unlock();
+
+ waveCurrentBlock = 0;
+
+ if(audioBuffer == 0)
+ audioBuffer = new char[buffer_size];
+
+ timeStamp.restart();
+ elapsedTimeOffset = 0;
+
+ wfx.nSamplesPerSec = settings.frequency();
+ wfx.wBitsPerSample = settings.sampleSize();
+ wfx.nChannels = settings.channels();
+ wfx.cbSize = 0;
+
+ wfx.wFormatTag = WAVE_FORMAT_PCM;
+ wfx.nBlockAlign = (wfx.wBitsPerSample >> 3) * wfx.nChannels;
+ wfx.nAvgBytesPerSec = wfx.nBlockAlign * wfx.nSamplesPerSec;
+
+ UINT_PTR devId = WAVE_MAPPER;
+
+ WAVEOUTCAPS woc;
+ unsigned long iNumDevs,ii;
+ iNumDevs = waveOutGetNumDevs();
+ for(ii=0;ii<iNumDevs;ii++) {
+ if(waveOutGetDevCaps(ii, &woc, sizeof(WAVEOUTCAPS))
+ == MMSYSERR_NOERROR) {
+ QString tmp;
+ tmp = QString((const QChar *)woc.szPname);
+ if(tmp.compare(QLatin1String(m_device)) == 0) {
+ devId = ii;
+ break;
+ }
+ }
+ }
+
+ if ( settings.channels() <= 2) {
+ if(waveOutOpen(&hWaveOut, devId, &wfx,
+ (DWORD_PTR)&waveOutProc,
+ (DWORD_PTR) this,
+ CALLBACK_FUNCTION) != MMSYSERR_NOERROR) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ qWarning("QAudioOutput: open error");
+ return false;
+ }
+ } else {
+ WAVEFORMATEXTENSIBLE wfex;
+ wfex.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
+ wfex.Format.nChannels = settings.channels();
+ wfex.Format.wBitsPerSample = settings.sampleSize();
+ wfex.Format.nSamplesPerSec = settings.frequency();
+ wfex.Format.nBlockAlign = wfex.Format.nChannels*wfex.Format.wBitsPerSample/8;
+ wfex.Format.nAvgBytesPerSec=wfex.Format.nSamplesPerSec*wfex.Format.nBlockAlign;
+ wfex.Samples.wValidBitsPerSample=wfex.Format.wBitsPerSample;
+ static const GUID _KSDATAFORMAT_SUBTYPE_PCM = {
+ 0x00000001, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
+ wfex.SubFormat=_KSDATAFORMAT_SUBTYPE_PCM;
+ wfex.Format.cbSize=22;
+
+ wfex.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT;
+ if (settings.channels() >= 4)
+ wfex.dwChannelMask |= SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT;
+ if (settings.channels() >= 6)
+ wfex.dwChannelMask |= SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY;
+ if (settings.channels() == 8)
+ wfex.dwChannelMask |= SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT;
+
+ if(waveOutOpen(&hWaveOut, devId, &wfex.Format,
+ (DWORD_PTR)&waveOutProc,
+ (DWORD_PTR) this,
+ CALLBACK_FUNCTION) != MMSYSERR_NOERROR) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ qWarning("QAudioOutput: open error");
+ return false;
+ }
+ }
+
+ totalTimeValue = 0;
+ timeStampOpened.restart();
+ elapsedTimeOffset = 0;
+
+ errorState = QAudio::NoError;
+ if(pullMode) {
+ deviceState = QAudio::ActiveState;
+ QTimer::singleShot(10, this, SLOT(feedback()));
+ } else
+ deviceState = QAudio::IdleState;
+
+ return true;
+}
+
+void QAudioOutputPrivate::close()
+{
+ if(deviceState == QAudio::StoppedState)
+ return;
+
+ deviceState = QAudio::StoppedState;
+ errorState = QAudio::NoError;
+ int delay = (buffer_size-bytesFree())*1000/(settings.frequency()
+ *settings.channels()*(settings.sampleSize()/8));
+ waveOutReset(hWaveOut);
+ Sleep(delay+10);
+
+ freeBlocks(waveBlocks);
+ waveOutClose(hWaveOut);
+ delete [] audioBuffer;
+ audioBuffer = 0;
+ buffer_size = 0;
+}
+
+int QAudioOutputPrivate::bytesFree() const
+{
+ int buf;
+ buf = waveFreeBlockCount*period_size;
+
+ return buf;
+}
+
+int QAudioOutputPrivate::periodSize() const
+{
+ return period_size;
+}
+
+void QAudioOutputPrivate::setBufferSize(int value)
+{
+ if(deviceState == QAudio::StoppedState)
+ buffer_size = value;
+}
+
+int QAudioOutputPrivate::bufferSize() const
+{
+ return buffer_size;
+}
+
+void QAudioOutputPrivate::setNotifyInterval(int ms)
+{
+ intervalTime = qMax(0, ms);
+}
+
+int QAudioOutputPrivate::notifyInterval() const
+{
+ return intervalTime;
+}
+
+qint64 QAudioOutputPrivate::processedUSecs() const
+{
+ if (deviceState == QAudio::StoppedState)
+ return 0;
+ qint64 result = qint64(1000000) * totalTimeValue /
+ (settings.channels()*(settings.sampleSize()/8)) /
+ settings.frequency();
+
+ return result;
+}
+
+qint64 QAudioOutputPrivate::write( const char *data, qint64 len )
+{
+ // Write out some audio data
+ if (deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
+ return 0;
+
+ char* p = (char*)data;
+ int l = (int)len;
+
+ WAVEHDR* current;
+ int remain;
+ current = &waveBlocks[waveCurrentBlock];
+ while(l > 0) {
+ mutex.lock();
+ if(waveFreeBlockCount==0) {
+ mutex.unlock();
+ break;
+ }
+ mutex.unlock();
+
+ if(current->dwFlags & WHDR_PREPARED)
+ waveOutUnprepareHeader(hWaveOut, current, sizeof(WAVEHDR));
+
+ if(l < period_size)
+ remain = l;
+ else
+ remain = period_size;
+ memcpy(current->lpData, p, remain);
+
+ l -= remain;
+ p += remain;
+ current->dwBufferLength = remain;
+ waveOutPrepareHeader(hWaveOut, current, sizeof(WAVEHDR));
+ waveOutWrite(hWaveOut, current, sizeof(WAVEHDR));
+
+ mutex.lock();
+ waveFreeBlockCount--;
+#ifdef DEBUG_AUDIO
+ qDebug("write out l=%d, waveFreeBlockCount=%d",
+ current->dwBufferLength,waveFreeBlockCount);
+#endif
+ mutex.unlock();
+ totalTimeValue += current->dwBufferLength;
+ waveCurrentBlock++;
+ waveCurrentBlock %= buffer_size/period_size;
+ current = &waveBlocks[waveCurrentBlock];
+ current->dwUser = 0;
+ errorState = QAudio::NoError;
+ if (deviceState != QAudio::ActiveState) {
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
+ }
+ return (len-l);
+}
+
+void QAudioOutputPrivate::resume()
+{
+ if(deviceState == QAudio::SuspendedState) {
+ deviceState = QAudio::ActiveState;
+ errorState = QAudio::NoError;
+ waveOutRestart(hWaveOut);
+ QTimer::singleShot(10, this, SLOT(feedback()));
+ emit stateChanged(deviceState);
+ }
+}
+
+void QAudioOutputPrivate::suspend()
+{
+ if(deviceState == QAudio::ActiveState || deviceState == QAudio::IdleState) {
+ int delay = (buffer_size-bytesFree())*1000/(settings.frequency()
+ *settings.channels()*(settings.sampleSize()/8));
+ waveOutPause(hWaveOut);
+ Sleep(delay+10);
+ deviceState = QAudio::SuspendedState;
+ errorState = QAudio::NoError;
+ emit stateChanged(deviceState);
+ }
+}
+
+void QAudioOutputPrivate::feedback()
+{
+#ifdef DEBUG_AUDIO
+ QTime now(QTime::currentTime());
+ qDebug()<<now.second()<<"s "<<now.msec()<<"ms :feedback()";
+#endif
+ bytesAvailable = bytesFree();
+
+ if(!(deviceState==QAudio::StoppedState||deviceState==QAudio::SuspendedState)) {
+ if(bytesAvailable >= period_size)
+ QMetaObject::invokeMethod(this, "deviceReady", Qt::QueuedConnection);
+ }
+}
+
+bool QAudioOutputPrivate::deviceReady()
+{
+ if(deviceState == QAudio::StoppedState || deviceState == QAudio::SuspendedState)
+ return false;
+
+ if(pullMode) {
+ int chunks = bytesAvailable/period_size;
+#ifdef DEBUG_AUDIO
+ qDebug()<<"deviceReady() avail="<<bytesAvailable<<" bytes, period size="<<period_size<<" bytes";
+ qDebug()<<"deviceReady() no. of chunks that can fit ="<<chunks<<", chunks in bytes ="<<chunks*period_size;
+#endif
+ bool startup = false;
+ if(totalTimeValue == 0)
+ startup = true;
+
+ bool full=false;
+
+ mutex.lock();
+ if(waveFreeBlockCount==0) full = true;
+ mutex.unlock();
+
+ if (full){
+#ifdef DEBUG_AUDIO
+ qDebug() << "Skipping data as unable to write";
+#endif
+ if(intervalTime && (timeStamp.elapsed() + elapsedTimeOffset) > intervalTime ) {
+ emit notify();
+ elapsedTimeOffset = timeStamp.elapsed() + elapsedTimeOffset - intervalTime;
+ timeStamp.restart();
+ }
+ return true;
+ }
+
+ if(startup)
+ waveOutPause(hWaveOut);
+ int input = period_size*chunks;
+ int l = audioSource->read(audioBuffer,input);
+ if(l > 0) {
+ int out= write(audioBuffer,l);
+ if(out > 0) {
+ if (deviceState != QAudio::ActiveState) {
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
+ }
+ if ( out < l) {
+ // Didn't write all data
+ audioSource->seek(audioSource->pos()-(l-out));
+ }
+ if(startup)
+ waveOutRestart(hWaveOut);
+ } else if(l == 0) {
+ bytesAvailable = bytesFree();
+
+ int check = 0;
+
+ mutex.lock();
+ check = waveFreeBlockCount;
+ mutex.unlock();
+
+ if(check == buffer_size/period_size) {
+ if (deviceState != QAudio::IdleState) {
+ errorState = QAudio::UnderrunError;
+ deviceState = QAudio::IdleState;
+ emit stateChanged(deviceState);
+ }
+ }
+
+ } else if(l < 0) {
+ bytesAvailable = bytesFree();
+ errorState = QAudio::IOError;
+ }
+ } else {
+ int buffered;
+
+ mutex.lock();
+ buffered = waveFreeBlockCount;
+ mutex.unlock();
+
+ if (buffered >= buffer_size/period_size && deviceState == QAudio::ActiveState) {
+ if (deviceState != QAudio::IdleState) {
+ errorState = QAudio::UnderrunError;
+ deviceState = QAudio::IdleState;
+ emit stateChanged(deviceState);
+ }
+ }
+ }
+ if(deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
+ return true;
+
+ if(intervalTime && (timeStamp.elapsed() + elapsedTimeOffset) > intervalTime) {
+ emit notify();
+ elapsedTimeOffset = timeStamp.elapsed() + elapsedTimeOffset - intervalTime;
+ timeStamp.restart();
+ }
+
+ return true;
+}
+
+qint64 QAudioOutputPrivate::elapsedUSecs() const
+{
+ if (deviceState == QAudio::StoppedState)
+ return 0;
+
+ return timeStampOpened.elapsed()*1000;
+}
+
+QAudio::Error QAudioOutputPrivate::error() const
+{
+ return errorState;
+}
+
+QAudio::State QAudioOutputPrivate::state() const
+{
+ return deviceState;
+}
+
+void QAudioOutputPrivate::reset()
+{
+ close();
+}
+
+OutputPrivate::OutputPrivate(QAudioOutputPrivate* audio)
+{
+ audioDevice = qobject_cast<QAudioOutputPrivate*>(audio);
+}
+
+OutputPrivate::~OutputPrivate() {}
+
+qint64 OutputPrivate::readData( char* data, qint64 len)
+{
+ Q_UNUSED(data)
+ Q_UNUSED(len)
+
+ return 0;
+}
+
+qint64 OutputPrivate::writeData(const char* data, qint64 len)
+{
+ int retry = 0;
+ qint64 written = 0;
+
+ if((audioDevice->deviceState == QAudio::ActiveState)
+ ||(audioDevice->deviceState == QAudio::IdleState)) {
+ qint64 l = len;
+ while(written < l) {
+ int chunk = audioDevice->write(data+written,(l-written));
+ if(chunk <= 0)
+ retry++;
+ else
+ written+=chunk;
+
+ if(retry > 10)
+ return written;
+ }
+ audioDevice->deviceState = QAudio::ActiveState;
+ }
+ return written;
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudiooutput_win32_p.h b/src/multimedia/audio/qaudiooutput_win32_p.h
new file mode 100644
index 000000000..be323240c
--- /dev/null
+++ b/src/multimedia/audio/qaudiooutput_win32_p.h
@@ -0,0 +1,157 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QAUDIOOUTPUTWIN_H
+#define QAUDIOOUTPUTWIN_H
+
+#include <windows.h>
+#include <mmsystem.h>
+
+#include <QtCore/qdebug.h>
+#include <QtCore/qtimer.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/qdatetime.h>
+#include <QtCore/qmutex.h>
+
+#include <QtMultimedia/qaudio.h>
+#include <QtMultimedia/qaudiodeviceinfo.h>
+#include <QtMultimedia/qaudioengine.h>
+
+
+QT_BEGIN_NAMESPACE
+
+class QAudioOutputPrivate : public QAbstractAudioOutput
+{
+ Q_OBJECT
+public:
+ QAudioOutputPrivate(const QByteArray &device, const QAudioFormat& audioFormat);
+ ~QAudioOutputPrivate();
+
+ qint64 write( const char *data, qint64 len );
+
+ QAudioFormat format() const;
+ QIODevice* start(QIODevice* device = 0);
+ void stop();
+ void reset();
+ void suspend();
+ void resume();
+ int bytesFree() const;
+ int periodSize() const;
+ void setBufferSize(int value);
+ int bufferSize() const;
+ void setNotifyInterval(int milliSeconds);
+ int notifyInterval() const;
+ qint64 processedUSecs() const;
+ qint64 elapsedUSecs() const;
+ QAudio::Error error() const;
+ QAudio::State state() const;
+
+ QIODevice* audioSource;
+ QAudioFormat settings;
+ QAudio::Error errorState;
+ QAudio::State deviceState;
+
+private slots:
+ void feedback();
+ bool deviceReady();
+
+private:
+ QByteArray m_device;
+ bool resuming;
+ int bytesAvailable;
+ QTime timeStamp;
+ qint64 elapsedTimeOffset;
+ QTime timeStampOpened;
+ qint32 buffer_size;
+ qint32 period_size;
+ qint64 totalTimeValue;
+ bool pullMode;
+ int intervalTime;
+ static void QT_WIN_CALLBACK waveOutProc( HWAVEOUT hWaveOut, UINT uMsg,
+ DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 );
+
+ QMutex mutex;
+
+ WAVEHDR* allocateBlocks(int size, int count);
+ void freeBlocks(WAVEHDR* blockArray);
+ bool open();
+ void close();
+
+ WAVEFORMATEX wfx;
+ HWAVEOUT hWaveOut;
+ MMRESULT result;
+ WAVEHDR header;
+ WAVEHDR* waveBlocks;
+ volatile bool finished;
+ volatile int waveFreeBlockCount;
+ int waveCurrentBlock;
+ char* audioBuffer;
+};
+
+class OutputPrivate : public QIODevice
+{
+ Q_OBJECT
+public:
+ OutputPrivate(QAudioOutputPrivate* audio);
+ ~OutputPrivate();
+
+ qint64 readData( char* data, qint64 len);
+ qint64 writeData(const char* data, qint64 len);
+
+private:
+ QAudioOutputPrivate *audioDevice;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro
new file mode 100644
index 000000000..e827cdd9f
--- /dev/null
+++ b/src/multimedia/multimedia.pro
@@ -0,0 +1,16 @@
+TARGET = QtMultimedia
+QPRO_PWD = $$PWD
+QT = core gui
+
+DEFINES += QT_BUILD_MULTIMEDIA_LIB QT_NO_USING_NAMESPACE
+
+unix|win32-g++*:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui
+
+include(../qbase.pri)
+
+include(audio/audio.pri)
+include(video/video.pri)
+
+symbian: {
+ TARGET.UID3 = 0x2001E627
+}
diff --git a/src/multimedia/video/qabstractvideobuffer.cpp b/src/multimedia/video/qabstractvideobuffer.cpp
new file mode 100644
index 000000000..1430978d6
--- /dev/null
+++ b/src/multimedia/video/qabstractvideobuffer.cpp
@@ -0,0 +1,201 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qabstractvideobuffer_p.h"
+
+#include <qvariant.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QAbstractVideoBuffer
+ \brief The QAbstractVideoBuffer class is an abstraction for video data.
+ \since 4.6
+
+ The QVideoFrame class makes use of a QAbstractVideoBuffer internally to reference a buffer of
+ video data. Creating a subclass of QAbstractVideoBuffer will allow you to construct video
+ frames from preallocated or static buffers.
+
+ The contents of a buffer can be accessed by mapping the buffer to memory using the map()
+ function which returns a pointer to memory containing the contents of the the video buffer.
+ The memory returned by map() is released by calling the unmap() function.
+
+ The handle() of a buffer may also be used to manipulate it's contents using type specific APIs.
+ The type of a buffer's handle is given by the handleType() function.
+
+ \sa QVideoFrame
+*/
+
+/*!
+ \enum QAbstractVideoBuffer::HandleType
+
+ Identifies the type of a video buffers handle.
+
+ \value NoHandle The buffer has no handle, its data can only be accessed by mapping the buffer.
+ \value GLTextureHandle The handle of the buffer is an OpenGL texture ID.
+ \value XvShmImageHandle The handle contains pointer to shared memory XVideo image.
+ \value CoreImageHandle The handle contains pointer to Mac OS X CIImage.
+ \value QPixmapHandle The handle of the buffer is a QPixmap.
+ \value UserHandle Start value for user defined handle types.
+
+ \sa handleType()
+*/
+
+/*!
+ \enum QAbstractVideoBuffer::MapMode
+
+ Enumerates how a video buffer's data is mapped to memory.
+
+ \value NotMapped The video buffer has is not mapped to memory.
+ \value ReadOnly The mapped memory is populated with data from the video buffer when mapped, but
+ the content of the mapped memory may be discarded when unmapped.
+ \value WriteOnly The mapped memory is uninitialized when mapped, and the content will be used to
+ populate the video buffer when unmapped.
+ \value ReadWrite The mapped memory is populated with data from the video buffer, and the
+ video buffer is repopulated with the content of the mapped memory.
+
+ \sa mapMode(), map()
+*/
+
+/*!
+ Constructs an abstract video buffer of the given \a type.
+*/
+
+QAbstractVideoBuffer::QAbstractVideoBuffer(HandleType type)
+ : d_ptr(new QAbstractVideoBufferPrivate)
+{
+ Q_D(QAbstractVideoBuffer);
+
+ d->handleType = type;
+}
+
+/*!
+ \internal
+*/
+
+QAbstractVideoBuffer::QAbstractVideoBuffer(QAbstractVideoBufferPrivate &dd, HandleType type)
+ : d_ptr(&dd)
+{
+ Q_D(QAbstractVideoBuffer);
+
+ d->handleType = type;
+}
+
+/*!
+ Destroys an abstract video buffer.
+*/
+
+QAbstractVideoBuffer::~QAbstractVideoBuffer()
+{
+ delete d_ptr;
+}
+
+/*!
+ Returns the type of a video buffer's handle.
+
+ \sa handle()
+*/
+
+QAbstractVideoBuffer::HandleType QAbstractVideoBuffer::handleType() const
+{
+ return d_func()->handleType;
+}
+
+/*!
+ \fn QAbstractVideoBuffer::mapMode() const
+
+ Returns the mode a video buffer is mapped in.
+
+ \sa map()
+*/
+
+/*!
+ \fn QAbstractVideoBuffer::map(MapMode mode, int *numBytes, int *bytesPerLine)
+
+ Maps the contents of a video buffer to memory.
+
+ The map \a mode indicates whether the contents of the mapped memory should be read from and/or
+ written to the buffer. If the map mode includes the QAbstractVideoBuffer::ReadOnly flag the
+ mapped memory will be populated with the content of the video buffer when mapped. If the map
+ mode includes the QAbstractVideoBuffer::WriteOnly flag the content of the mapped memory will be
+ persisted in the buffer when unmapped.
+
+ When access to the data is no longer needed be sure to call the unmap() function to release the
+ mapped memory.
+
+ Returns a pointer to the mapped memory region, or a null pointer if the mapping failed. The
+ size in bytes of the mapped memory region is returned in \a numBytes, and the line stride in \a
+ bytesPerLine.
+
+ When access to the data is no longer needed be sure to unmap() the buffer.
+
+ \note Writing to memory that is mapped as read-only is undefined, and may result in changes
+ to shared data.
+
+ \sa unmap(), mapMode()
+*/
+
+/*!
+ \fn QAbstractVideoBuffer::unmap()
+
+ Releases the memory mapped by the map() function
+
+ If the \l {QAbstractVideoBuffer::MapMode}{MapMode} included the QAbstractVideoBuffer::WriteOnly
+ flag this will persist the current content of the mapped memory to the video frame.
+
+ \sa map()
+*/
+
+/*!
+ Returns a type specific handle to the data buffer.
+
+ The type of the handle is given by handleType() function.
+
+ \sa handleType()
+*/
+
+QVariant QAbstractVideoBuffer::handle() const
+{
+ return QVariant();
+}
+
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/video/qabstractvideobuffer.h b/src/multimedia/video/qabstractvideobuffer.h
new file mode 100644
index 000000000..489b28398
--- /dev/null
+++ b/src/multimedia/video/qabstractvideobuffer.h
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QABSTRACTVIDEOBUFFER_H
+#define QABSTRACTVIDEOBUFFER_H
+
+#include <QtCore/qmetatype.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QVariant;
+
+class QAbstractVideoBufferPrivate;
+
+class Q_MULTIMEDIA_EXPORT QAbstractVideoBuffer
+{
+public:
+ enum HandleType
+ {
+ NoHandle,
+ GLTextureHandle,
+ XvShmImageHandle,
+ CoreImageHandle,
+ QPixmapHandle,
+ UserHandle = 1000
+ };
+
+ enum MapMode
+ {
+ NotMapped = 0x00,
+ ReadOnly = 0x01,
+ WriteOnly = 0x02,
+ ReadWrite = ReadOnly | WriteOnly
+ };
+
+ QAbstractVideoBuffer(HandleType type);
+ virtual ~QAbstractVideoBuffer();
+
+ HandleType handleType() const;
+
+ virtual MapMode mapMode() const = 0;
+
+ virtual uchar *map(MapMode mode, int *numBytes, int *bytesPerLine) = 0;
+ virtual void unmap() = 0;
+
+ virtual QVariant handle() const;
+
+protected:
+ QAbstractVideoBuffer(QAbstractVideoBufferPrivate &dd, HandleType type);
+
+ QAbstractVideoBufferPrivate *d_ptr;
+
+private:
+ Q_DECLARE_PRIVATE(QAbstractVideoBuffer)
+ Q_DISABLE_COPY(QAbstractVideoBuffer)
+};
+
+QT_END_NAMESPACE
+
+Q_DECLARE_METATYPE(QAbstractVideoBuffer::HandleType)
+Q_DECLARE_METATYPE(QAbstractVideoBuffer::MapMode)
+
+QT_END_HEADER
+
+#endif
diff --git a/src/multimedia/video/qabstractvideobuffer_p.h b/src/multimedia/video/qabstractvideobuffer_p.h
new file mode 100644
index 000000000..e10d31051
--- /dev/null
+++ b/src/multimedia/video/qabstractvideobuffer_p.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QABSTRACTVIDEOBUFFER_P_H
+#define QABSTRACTVIDEOBUFFER_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qshareddata.h>
+#include <QtMultimedia/qabstractvideobuffer.h>
+
+QT_BEGIN_NAMESPACE
+
+class QAbstractVideoBufferPrivate
+{
+public:
+ QAbstractVideoBufferPrivate()
+ : handleType(QAbstractVideoBuffer::NoHandle)
+ {}
+
+ virtual ~QAbstractVideoBufferPrivate()
+ {}
+
+ QAbstractVideoBuffer::HandleType handleType;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/video/qabstractvideosurface.cpp b/src/multimedia/video/qabstractvideosurface.cpp
new file mode 100644
index 000000000..dae2049d2
--- /dev/null
+++ b/src/multimedia/video/qabstractvideosurface.cpp
@@ -0,0 +1,283 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qabstractvideosurface_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QAbstractVideoSurface
+ \brief The QAbstractVideoSurface class is a base class for video presentation surfaces.
+ \since 4.6
+
+ The QAbstractVideoSurface class defines the standard interface that video producers use to
+ inter-operate with video presentation surfaces. It is not supposed to be instantiated directly.
+ Instead, you should subclass it to create new video surfaces.
+
+ A video surface presents a continuous stream of identically formatted frames, where the format
+ of each frame is compatible with a stream format supplied when starting a presentation.
+
+ A list of pixel formats a surface can present is given by the supportedPixelFormats() function,
+ and the isFormatSupported() function will test if a video surface format is supported. If a
+ format is not supported the nearestFormat() function may be able to suggest a similar format.
+ For example if a surface supports fixed set of resolutions it may suggest the smallest
+ supported resolution that contains the proposed resolution.
+
+ The start() function takes a supported format and enables a video surface. Once started a
+ surface will begin displaying the frames it receives in the present() function. Surfaces may
+ hold a reference to the buffer of a presented video frame until a new frame is presented or
+ streaming is stopped. The stop() function will disable a surface and a release any video
+ buffers it holds references to.
+*/
+
+/*!
+ \enum QAbstractVideoSurface::Error
+ This enum describes the errors that may be returned by the error() function.
+
+ \value NoError No error occurred.
+ \value UnsupportedFormatError A video format was not supported.
+ \value IncorrectFormatError A video frame was not compatible with the format of the surface.
+ \value StoppedError The surface has not been started.
+ \value ResourceError The surface could not allocate some resource.
+*/
+
+/*!
+ Constructs a video surface with the given \a parent.
+*/
+
+QAbstractVideoSurface::QAbstractVideoSurface(QObject *parent)
+ : QObject(*new QAbstractVideoSurfacePrivate, parent)
+{
+}
+
+/*!
+ \internal
+*/
+
+QAbstractVideoSurface::QAbstractVideoSurface(QAbstractVideoSurfacePrivate &dd, QObject *parent)
+ : QObject(dd, parent)
+{
+}
+
+/*!
+ Destroys a video surface.
+*/
+
+QAbstractVideoSurface::~QAbstractVideoSurface()
+{
+}
+
+/*!
+ \fn QAbstractVideoSurface::supportedPixelFormats(QAbstractVideoBuffer::HandleType type) const
+
+ Returns a list of pixel formats a video surface can present for a given handle \a type.
+
+ The pixel formats returned for the QAbstractVideoBuffer::NoHandle type are valid for any buffer
+ that can be mapped in read-only mode.
+
+ Types that are first in the list can be assumed to be faster to render.
+*/
+
+/*!
+ Tests a video surface \a format to determine if a surface can accept it.
+
+ Returns true if the format is supported by the surface, and false otherwise.
+*/
+
+bool QAbstractVideoSurface::isFormatSupported(const QVideoSurfaceFormat &format) const
+{
+ return supportedPixelFormats(format.handleType()).contains(format.pixelFormat());
+}
+
+/*!
+ Returns a supported video surface format that is similar to \a format.
+
+ A similar surface format is one that has the same \l {QVideoSurfaceFormat::pixelFormat()}{pixel
+ format} and \l {QVideoSurfaceFormat::handleType()}{handle type} but differs in some of the other
+ properties. For example if there are restrictions on the \l {QVideoSurfaceFormat::frameSize()}
+ {frame sizes} a video surface can accept it may suggest a format with a larger frame size and
+ a \l {QVideoSurfaceFormat::viewport()}{viewport} the size of the original frame size.
+
+ If the format is already supported it will be returned unchanged, or if there is no similar
+ supported format an invalid format will be returned.
+*/
+
+QVideoSurfaceFormat QAbstractVideoSurface::nearestFormat(const QVideoSurfaceFormat &format) const
+{
+ return isFormatSupported(format)
+ ? format
+ : QVideoSurfaceFormat();
+}
+
+/*!
+ \fn QAbstractVideoSurface::supportedFormatsChanged()
+
+ Signals that the set of formats supported by a video surface has changed.
+
+ \sa supportedPixelFormats(), isFormatSupported()
+*/
+
+/*!
+ Returns the format of a video surface.
+*/
+
+QVideoSurfaceFormat QAbstractVideoSurface::surfaceFormat() const
+{
+ return d_func()->format;
+}
+
+/*!
+ \fn QAbstractVideoSurface::surfaceFormatChanged(const QVideoSurfaceFormat &format)
+
+ Signals that the configured \a format of a video surface has changed.
+
+ \sa surfaceFormat(), start()
+*/
+
+/*!
+ Starts a video surface presenting \a format frames.
+
+ Returns true if the surface was started, and false if an error occurred.
+
+ \sa isActive(), stop()
+*/
+
+bool QAbstractVideoSurface::start(const QVideoSurfaceFormat &format)
+{
+ Q_D(QAbstractVideoSurface);
+
+ bool wasActive = d->active;
+
+ d->active = true;
+ d->format = format;
+ d->error = NoError;
+
+ emit surfaceFormatChanged(d->format);
+
+ if (!wasActive)
+ emit activeChanged(true);
+
+ return true;
+}
+
+/*!
+ Stops a video surface presenting frames and releases any resources acquired in start().
+
+ \sa isActive(), start()
+*/
+
+void QAbstractVideoSurface::stop()
+{
+ Q_D(QAbstractVideoSurface);
+
+ if (d->active) {
+ d->format = QVideoSurfaceFormat();
+ d->active = false;
+
+ emit activeChanged(false);
+ emit surfaceFormatChanged(d->format);
+ }
+}
+
+/*!
+ Indicates whether a video surface has been started.
+
+ Returns true if the surface has been started, and false otherwise.
+*/
+
+bool QAbstractVideoSurface::isActive() const
+{
+ return d_func()->active;
+}
+
+/*!
+ \fn QAbstractVideoSurface::activeChanged(bool active)
+
+ Signals that the \a active state of a video surface has changed.
+
+ \sa isActive(), start(), stop()
+*/
+
+/*!
+ \fn QAbstractVideoSurface::present(const QVideoFrame &frame)
+
+ Presents a video \a frame.
+
+ Returns true if the frame was presented, and false if an error occurred.
+
+ Not all surfaces will block until the presentation of a frame has completed. Calling present()
+ on a non-blocking surface may fail if called before the presentation of a previous frame has
+ completed. In such cases the surface may not return to a ready state until it's had an
+ opportunity to process events.
+
+ If present() fails for any other reason the surface will immediately enter the stopped state
+ and an error() value will be set.
+
+ A video surface must be in the started state for present() to succeed, and the format of the
+ video frame must be compatible with the current video surface format.
+
+ \sa error()
+*/
+
+/*!
+ Returns the last error that occurred.
+
+ If a surface fails to start(), or stops unexpectedly this function can be called to discover
+ what error occurred.
+*/
+
+QAbstractVideoSurface::Error QAbstractVideoSurface::error() const
+{
+ return d_func()->error;
+}
+
+/*!
+ Sets the value of error() to \a error.
+*/
+
+void QAbstractVideoSurface::setError(Error error)
+{
+ Q_D(QAbstractVideoSurface);
+
+ d->error = error;
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/video/qabstractvideosurface.h b/src/multimedia/video/qabstractvideosurface.h
new file mode 100644
index 000000000..cf2bb7c83
--- /dev/null
+++ b/src/multimedia/video/qabstractvideosurface.h
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QABSTRACTVIDEOSURFACE_H
+#define QABSTRACTVIDEOSURFACE_H
+
+#include <QtCore/qobject.h>
+#include <QtMultimedia/qvideoframe.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QRectF;
+class QVideoSurfaceFormat;
+
+class QAbstractVideoSurfacePrivate;
+
+class Q_MULTIMEDIA_EXPORT QAbstractVideoSurface : public QObject
+{
+ Q_OBJECT
+
+public:
+ enum Error
+ {
+ NoError,
+ UnsupportedFormatError,
+ IncorrectFormatError,
+ StoppedError,
+ ResourceError
+ };
+
+ explicit QAbstractVideoSurface(QObject *parent = 0);
+ ~QAbstractVideoSurface();
+
+ virtual QList<QVideoFrame::PixelFormat> supportedPixelFormats(
+ QAbstractVideoBuffer::HandleType handleType = QAbstractVideoBuffer::NoHandle) const = 0;
+ virtual bool isFormatSupported(const QVideoSurfaceFormat &format) const;
+ virtual QVideoSurfaceFormat nearestFormat(const QVideoSurfaceFormat &format) const;
+
+ QVideoSurfaceFormat surfaceFormat() const;
+
+ virtual bool start(const QVideoSurfaceFormat &format);
+ virtual void stop();
+
+ bool isActive() const;
+
+ virtual bool present(const QVideoFrame &frame) = 0;
+
+ Error error() const;
+
+Q_SIGNALS:
+ void activeChanged(bool active);
+ void surfaceFormatChanged(const QVideoSurfaceFormat &format);
+ void supportedFormatsChanged();
+
+protected:
+ QAbstractVideoSurface(QAbstractVideoSurfacePrivate &dd, QObject *parent);
+
+ void setError(Error error);
+
+private:
+ Q_DECLARE_PRIVATE(QAbstractVideoSurface)
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/src/multimedia/video/qabstractvideosurface_p.h b/src/multimedia/video/qabstractvideosurface_p.h
new file mode 100644
index 000000000..30ca70a5d
--- /dev/null
+++ b/src/multimedia/video/qabstractvideosurface_p.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QABSTRACTVIDEOSURFACE_P_H
+#define QABSTRACTVIDEOSURFACE_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtMultimedia/qabstractvideosurface.h>
+#include <QtMultimedia/qvideosurfaceformat.h>
+#include <QtCore/private/qobject_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QAbstractVideoSurfacePrivate : public QObjectPrivate
+{
+public:
+ QAbstractVideoSurfacePrivate()
+ : error(QAbstractVideoSurface::NoError)
+ , active(false)
+ {
+ }
+
+ mutable QAbstractVideoSurface::Error error;
+ QVideoSurfaceFormat format;
+ bool active;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/video/qimagevideobuffer.cpp b/src/multimedia/video/qimagevideobuffer.cpp
new file mode 100644
index 000000000..939dd9b5d
--- /dev/null
+++ b/src/multimedia/video/qimagevideobuffer.cpp
@@ -0,0 +1,106 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qimagevideobuffer_p.h"
+
+#include <private/qabstractvideobuffer_p.h>
+
+#include <qimage.h>
+#include <qvariant.h>
+
+QT_BEGIN_NAMESPACE
+
+class QImageVideoBufferPrivate : public QAbstractVideoBufferPrivate
+{
+public:
+ QImageVideoBufferPrivate()
+ : mapMode(QAbstractVideoBuffer::NotMapped)
+ {
+ }
+
+ QAbstractVideoBuffer::MapMode mapMode;
+ QImage image;
+};
+
+QImageVideoBuffer::QImageVideoBuffer(const QImage &image)
+ : QAbstractVideoBuffer(*new QImageVideoBufferPrivate, NoHandle)
+{
+ Q_D(QImageVideoBuffer);
+
+ d->image = image;
+}
+
+QImageVideoBuffer::~QImageVideoBuffer()
+{
+}
+
+QAbstractVideoBuffer::MapMode QImageVideoBuffer::mapMode() const
+{
+ return d_func()->mapMode;
+}
+
+uchar *QImageVideoBuffer::map(MapMode mode, int *numBytes, int *bytesPerLine)
+{
+ Q_D(QImageVideoBuffer);
+
+ if (d->mapMode == NotMapped && d->image.bits() && mode != NotMapped) {
+ d->mapMode = mode;
+
+ if (numBytes)
+ *numBytes = d->image.byteCount();
+
+ if (bytesPerLine)
+ *bytesPerLine = d->image.bytesPerLine();
+
+ return d->image.bits();
+ } else {
+ return 0;
+ }
+}
+
+void QImageVideoBuffer::unmap()
+{
+ Q_D(QImageVideoBuffer);
+
+ d->mapMode = NotMapped;
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/video/qimagevideobuffer_p.h b/src/multimedia/video/qimagevideobuffer_p.h
new file mode 100644
index 000000000..c814bae12
--- /dev/null
+++ b/src/multimedia/video/qimagevideobuffer_p.h
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QIMAGEVIDEOBUFFER_P_H
+#define QIMAGEVIDEOBUFFER_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtMultimedia/qabstractvideobuffer.h>
+
+QT_BEGIN_NAMESPACE
+
+class QImage;
+
+class QImageVideoBufferPrivate;
+
+class Q_MULTIMEDIA_EXPORT QImageVideoBuffer : public QAbstractVideoBuffer
+{
+ Q_DECLARE_PRIVATE(QImageVideoBuffer)
+public:
+ QImageVideoBuffer(const QImage &image);
+ ~QImageVideoBuffer();
+
+ MapMode mapMode() const;
+
+ uchar *map(MapMode mode, int *numBytes, int *bytesPerLine);
+ void unmap();
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/multimedia/video/qmemoryvideobuffer.cpp b/src/multimedia/video/qmemoryvideobuffer.cpp
new file mode 100644
index 000000000..a4c5e81af
--- /dev/null
+++ b/src/multimedia/video/qmemoryvideobuffer.cpp
@@ -0,0 +1,129 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmemoryvideobuffer_p.h"
+
+#include <private/qabstractvideobuffer_p.h>
+#include <qbytearray.h>
+
+QT_BEGIN_NAMESPACE
+
+class QMemoryVideoBufferPrivate : public QAbstractVideoBufferPrivate
+{
+public:
+ QMemoryVideoBufferPrivate()
+ : bytesPerLine(0)
+ , mapMode(QAbstractVideoBuffer::NotMapped)
+ {
+ }
+
+ int bytesPerLine;
+ QAbstractVideoBuffer::MapMode mapMode;
+ QByteArray data;
+};
+
+/*!
+ \class QMemoryVideoBuffer
+ \brief The QMemoryVideoBuffer class provides a system memory allocated video data buffer.
+ \internal
+
+ QMemoryVideoBuffer is the default video buffer for allocating system memory. It may be used to
+ allocate memory for a QVideoFrame without implementing your own QAbstractVideoBuffer.
+*/
+
+/*!
+ Constructs a video buffer with an image stride of \a bytesPerLine from a byte \a array.
+*/
+QMemoryVideoBuffer::QMemoryVideoBuffer(const QByteArray &array, int bytesPerLine)
+ : QAbstractVideoBuffer(*new QMemoryVideoBufferPrivate, NoHandle)
+{
+ Q_D(QMemoryVideoBuffer);
+
+ d->data = array;
+ d->bytesPerLine = bytesPerLine;
+}
+
+/*!
+ Destroys a system memory allocated video buffer.
+*/
+QMemoryVideoBuffer::~QMemoryVideoBuffer()
+{
+}
+
+/*!
+ \reimp
+*/
+QAbstractVideoBuffer::MapMode QMemoryVideoBuffer::mapMode() const
+{
+ return d_func()->mapMode;
+}
+
+/*!
+ \reimp
+*/
+uchar *QMemoryVideoBuffer::map(MapMode mode, int *numBytes, int *bytesPerLine)
+{
+ Q_D(QMemoryVideoBuffer);
+
+ if (d->mapMode == NotMapped && d->data.data() && mode != NotMapped) {
+ d->mapMode = mode;
+
+ if (numBytes)
+ *numBytes = d->data.size();
+
+ if (bytesPerLine)
+ *bytesPerLine = d->bytesPerLine;
+
+ return reinterpret_cast<uchar *>(d->data.data());
+ } else {
+ return 0;
+ }
+}
+
+/*!
+ \reimp
+*/
+void QMemoryVideoBuffer::unmap()
+{
+ d_func()->mapMode = NotMapped;
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/video/qmemoryvideobuffer_p.h b/src/multimedia/video/qmemoryvideobuffer_p.h
new file mode 100644
index 000000000..4d02c185b
--- /dev/null
+++ b/src/multimedia/video/qmemoryvideobuffer_p.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QMEMORYVIDEOBUFFER_P_H
+#define QMEMORYVIDEOBUFFER_P_H
+
+#include <QtMultimedia/qabstractvideobuffer.h>
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QMemoryVideoBufferPrivate;
+
+class Q_MULTIMEDIA_EXPORT QMemoryVideoBuffer : public QAbstractVideoBuffer
+{
+ Q_DECLARE_PRIVATE(QMemoryVideoBuffer)
+public:
+ QMemoryVideoBuffer(const QByteArray &data, int bytesPerLine);
+ ~QMemoryVideoBuffer();
+
+ MapMode mapMode() const;
+
+ uchar *map(MapMode mode, int *numBytes, int *bytesPerLine);
+ void unmap();
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/src/multimedia/video/qvideoframe.cpp b/src/multimedia/video/qvideoframe.cpp
new file mode 100644
index 000000000..656a836b4
--- /dev/null
+++ b/src/multimedia/video/qvideoframe.cpp
@@ -0,0 +1,742 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qvideoframe.h"
+
+#include <private/qimagevideobuffer_p.h>
+#include <private/qmemoryvideobuffer_p.h>
+
+#include <qimage.h>
+#include <qpair.h>
+#include <qsize.h>
+#include <qvariant.h>
+#include <qvector.h>
+
+QT_BEGIN_NAMESPACE
+
+class QVideoFramePrivate : public QSharedData
+{
+public:
+ QVideoFramePrivate()
+ : startTime(-1)
+ , endTime(-1)
+ , data(0)
+ , mappedBytes(0)
+ , bytesPerLine(0)
+ , pixelFormat(QVideoFrame::Format_Invalid)
+ , fieldType(QVideoFrame::ProgressiveFrame)
+ , buffer(0)
+ {
+ }
+
+ QVideoFramePrivate(const QSize &size, QVideoFrame::PixelFormat format)
+ : size(size)
+ , startTime(-1)
+ , endTime(-1)
+ , data(0)
+ , mappedBytes(0)
+ , bytesPerLine(0)
+ , pixelFormat(format)
+ , fieldType(QVideoFrame::ProgressiveFrame)
+ , buffer(0)
+ {
+ }
+
+ ~QVideoFramePrivate()
+ {
+ delete buffer;
+ }
+
+ QSize size;
+ qint64 startTime;
+ qint64 endTime;
+ uchar *data;
+ int mappedBytes;
+ int bytesPerLine;
+ QVideoFrame::PixelFormat pixelFormat;
+ QVideoFrame::FieldType fieldType;
+ QAbstractVideoBuffer *buffer;
+
+private:
+ Q_DISABLE_COPY(QVideoFramePrivate)
+};
+
+/*!
+ \class QVideoFrame
+ \brief The QVideoFrame class provides a representation of a frame of video data.
+ \since 4.6
+
+ A QVideoFrame encapsulates the data of a video frame, and information about the frame.
+
+ The contents of a video frame can be mapped to memory using the map() function. While
+ mapped the video data can accessed using the bits() function which returns a pointer to a
+ buffer, the total size of which is given by the mappedBytes(), and the size of each line is given
+ by bytesPerLine(). The return value of the handle() function may be used to access frame data
+ using the internal buffer's native APIs.
+
+ The video data in a QVideoFrame is encapsulated in a QAbstractVideoBuffer. A QVideoFrame
+ may be constructed from any buffer type by subclassing the QAbstractVideoBuffer class.
+
+ \note QVideoFrame is explicitly shared, any change made to video frame will also apply to any
+ copies.
+*/
+
+/*!
+ \enum QVideoFrame::PixelFormat
+
+ Enumerates video data types.
+
+ \value Format_Invalid
+ The frame is invalid.
+
+ \value Format_ARGB32
+ The frame is stored using a 32-bit ARGB format (0xAARRGGBB). This is equivalent to
+ QImage::Format_ARGB32.
+
+ \value Format_ARGB32_Premultiplied
+ The frame stored using a premultiplied 32-bit ARGB format (0xAARRGGBB). This is equivalent
+ to QImage::Format_ARGB32_Premultiplied.
+
+ \value Format_RGB32
+ The frame stored using a 32-bit RGB format (0xffRRGGBB). This is equivalent to
+ QImage::Format_RGB32
+
+ \value Format_RGB24
+ The frame is stored using a 24-bit RGB format (8-8-8). This is equivalent to
+ QImage::Format_RGB888
+
+ \value Format_RGB565
+ The frame is stored using a 16-bit RGB format (5-6-5). This is equivalent to
+ QImage::Format_RGB16.
+
+ \value Format_RGB555
+ The frame is stored using a 16-bit RGB format (5-5-5). This is equivalent to
+ QImage::Format_RGB555.
+
+ \value Format_ARGB8565_Premultiplied
+ The frame is stored using a 24-bit premultiplied ARGB format (8-6-6-5).
+
+ \value Format_BGRA32
+ The frame is stored using a 32-bit ARGB format (0xBBGGRRAA).
+
+ \value Format_BGRA32_Premultiplied
+ The frame is stored using a premultiplied 32bit BGRA format.
+
+ \value Format_BGR32
+ The frame is stored using a 32-bit BGR format (0xBBGGRRff).
+
+ \value Format_BGR24
+ The frame is stored using a 24-bit BGR format (0xBBGGRR).
+
+ \value Format_BGR565
+ The frame is stored using a 16-bit BGR format (5-6-5).
+
+ \value Format_BGR555
+ The frame is stored using a 16-bit BGR format (5-5-5).
+
+ \value Format_BGRA5658_Premultiplied
+ The frame is stored using a 24-bit premultiplied BGRA format (5-6-5-8).
+
+ \value Format_AYUV444
+ The frame is stored using a packed 32-bit AYUV format (0xAAYYUUVV).
+
+ \value Format_AYUV444_Premultiplied
+ The frame is stored using a packed premultiplied 32-bit AYUV format (0xAAYYUUVV).
+
+ \value Format_YUV444
+ The frame is stored using a 24-bit packed YUV format (8-8-8).
+
+ \value Format_YUV420P
+ The frame is stored using an 8-bit per component planar YUV format with the U and V planes
+ horizontally and vertically sub-sampled, i.e. the height and width of the U and V planes are
+ half that of the Y plane.
+
+ \value Format_YV12
+ The frame is stored using an 8-bit per component planar YVU format with the V and U planes
+ horizontally and vertically sub-sampled, i.e. the height and width of the V and U planes are
+ half that of the Y plane.
+
+ \value Format_UYVY
+ The frame is stored using an 8-bit per component packed YUV format with the U and V planes
+ horizontally sub-sampled (U-Y-V-Y), i.e. two horizontally adjacent pixels are stored as a 32-bit
+ macropixel which has a Y value for each pixel and common U and V values.
+
+ \value Format_YUYV
+ The frame is stored using an 8-bit per component packed YUV format with the U and V planes
+ horizontally sub-sampled (Y-U-Y-V), i.e. two horizontally adjacent pixels are stored as a 32-bit
+ macropixel which has a Y value for each pixel and common U and V values.
+
+ \value Format_NV12
+ The frame is stored using an 8-bit per component semi-planar YUV format with a Y plane (Y)
+ followed by a horizontally and vertically sub-sampled, packed UV plane (U-V).
+
+ \value Format_NV21
+ The frame is stored using an 8-bit per component semi-planar YUV format with a Y plane (Y)
+ followed by a horizontally and vertically sub-sampled, packed VU plane (V-U).
+
+ \value Format_IMC1
+ The frame is stored using an 8-bit per component planar YUV format with the U and V planes
+ horizontally and vertically sub-sampled. This is similar to the Format_YUV420P type, except
+ that the bytes per line of the U and V planes are padded out to the same stride as the Y plane.
+
+ \value Format_IMC2
+ The frame is stored using an 8-bit per component planar YUV format with the U and V planes
+ horizontally and vertically sub-sampled. This is similar to the Format_YUV420P type, except
+ that the lines of the U and V planes are interleaved, i.e. each line of U data is followed by a
+ line of V data creating a single line of the same stride as the Y data.
+
+ \value Format_IMC3
+ The frame is stored using an 8-bit per component planar YVU format with the V and U planes
+ horizontally and vertically sub-sampled. This is similar to the Format_YV12 type, except that
+ the bytes per line of the V and U planes are padded out to the same stride as the Y plane.
+
+ \value Format_IMC4
+ The frame is stored using an 8-bit per component planar YVU format with the V and U planes
+ horizontally and vertically sub-sampled. This is similar to the Format_YV12 type, except that
+ the lines of the V and U planes are interleaved, i.e. each line of V data is followed by a line
+ of U data creating a single line of the same stride as the Y data.
+
+ \value Format_Y8
+ The frame is stored using an 8-bit greyscale format.
+
+ \value Format_Y16
+ The frame is stored using a 16-bit linear greyscale format. Little endian.
+
+ \value Format_User
+ Start value for user defined pixel formats.
+*/
+
+/*!
+ \enum QVideoFrame::FieldType
+
+ Specifies the field an interlaced video frame belongs to.
+
+ \value ProgressiveFrame The frame is not interlaced.
+ \value TopField The frame contains a top field.
+ \value BottomField The frame contains a bottom field.
+ \value InterlacedFrame The frame contains a merged top and bottom field.
+*/
+
+/*!
+ Constructs a null video frame.
+*/
+
+QVideoFrame::QVideoFrame()
+ : d(new QVideoFramePrivate)
+{
+}
+
+/*!
+ Constructs a video frame from a \a buffer of the given pixel \a format and \a size in pixels.
+
+ \note This doesn't increment the reference count of the video buffer.
+*/
+
+QVideoFrame::QVideoFrame(
+ QAbstractVideoBuffer *buffer, const QSize &size, PixelFormat format)
+ : d(new QVideoFramePrivate(size, format))
+{
+ d->buffer = buffer;
+}
+
+/*!
+ Constructs a video frame of the given pixel \a format and \a size in pixels.
+
+ The \a bytesPerLine (stride) is the length of each scan line in bytes, and \a bytes is the total
+ number of bytes that must be allocated for the frame.
+*/
+
+QVideoFrame::QVideoFrame(int bytes, const QSize &size, int bytesPerLine, PixelFormat format)
+ : d(new QVideoFramePrivate(size, format))
+{
+ if (bytes > 0) {
+ QByteArray data;
+ data.resize(bytes);
+
+ // Check the memory was successfully allocated.
+ if (!data.isEmpty())
+ d->buffer = new QMemoryVideoBuffer(data, bytesPerLine);
+ }
+}
+
+/*!
+ Constructs a video frame from an \a image.
+
+ \note This will construct an invalid video frame if there is no frame type equivalent to the
+ image format.
+
+ \sa pixelFormatFromImageFormat()
+*/
+
+QVideoFrame::QVideoFrame(const QImage &image)
+ : d(new QVideoFramePrivate(
+ image.size(), pixelFormatFromImageFormat(image.format())))
+{
+ if (d->pixelFormat != Format_Invalid)
+ d->buffer = new QImageVideoBuffer(image);
+}
+
+/*!
+ Constructs a copy of \a other.
+*/
+
+QVideoFrame::QVideoFrame(const QVideoFrame &other)
+ : d(other.d)
+{
+}
+
+/*!
+ Assigns the contents of \a other to a video frame.
+*/
+
+QVideoFrame &QVideoFrame::operator =(const QVideoFrame &other)
+{
+ d = other.d;
+
+ return *this;
+}
+
+/*!
+ Destroys a video frame.
+*/
+
+QVideoFrame::~QVideoFrame()
+{
+}
+
+/*!
+ Identifies whether a video frame is valid.
+
+ An invalid frame has no video buffer associated with it.
+
+ Returns true if the frame is valid, and false if it is not.
+*/
+
+bool QVideoFrame::isValid() const
+{
+ return d->buffer != 0;
+}
+
+/*!
+ Returns the color format of a video frame.
+*/
+
+QVideoFrame::PixelFormat QVideoFrame::pixelFormat() const
+{
+ return d->pixelFormat;
+}
+
+/*!
+ Returns the type of a video frame's handle.
+*/
+
+QAbstractVideoBuffer::HandleType QVideoFrame::handleType() const
+{
+ return d->buffer ? d->buffer->handleType() : QAbstractVideoBuffer::NoHandle;
+}
+
+/*!
+ Returns the size of a video frame.
+*/
+
+QSize QVideoFrame::size() const
+{
+ return d->size;
+}
+
+/*!
+ Returns the width of a video frame.
+*/
+
+int QVideoFrame::width() const
+{
+ return d->size.width();
+}
+
+/*!
+ Returns the height of a video frame.
+*/
+
+int QVideoFrame::height() const
+{
+ return d->size.height();
+}
+
+/*!
+ Returns the field an interlaced video frame belongs to.
+
+ If the video is not interlaced this will return WholeFrame.
+*/
+
+QVideoFrame::FieldType QVideoFrame::fieldType() const
+{
+ return d->fieldType;
+}
+
+/*!
+ Sets the \a field an interlaced video frame belongs to.
+*/
+
+void QVideoFrame::setFieldType(QVideoFrame::FieldType field)
+{
+ d->fieldType = field;
+}
+
+/*!
+ Identifies if a video frame's contents are currently mapped to system memory.
+
+ This is a convenience function which checks that the \l {QAbstractVideoBuffer::MapMode}{MapMode}
+ of the frame is not equal to QAbstractVideoBuffer::NotMapped.
+
+ Returns true if the contents of the video frame are mapped to system memory, and false
+ otherwise.
+
+ \sa mapMode() QAbstractVideoBuffer::MapMode
+*/
+
+bool QVideoFrame::isMapped() const
+{
+ return d->buffer != 0 && d->buffer->mapMode() != QAbstractVideoBuffer::NotMapped;
+}
+
+/*!
+ Identifies if the mapped contents of a video frame will be persisted when the frame is unmapped.
+
+ This is a convenience function which checks if the \l {QAbstractVideoBuffer::MapMode}{MapMode}
+ contains the QAbstractVideoBuffer::WriteOnly flag.
+
+ Returns true if the video frame will be updated when unmapped, and false otherwise.
+
+ \note The result of altering the data of a frame that is mapped in read-only mode is undefined.
+ Depending on the buffer implementation the changes may be persisted, or worse alter a shared
+ buffer.
+
+ \sa mapMode(), QAbstractVideoBuffer::MapMode
+*/
+
+bool QVideoFrame::isWritable() const
+{
+ return d->buffer != 0 && (d->buffer->mapMode() & QAbstractVideoBuffer::WriteOnly);
+}
+
+/*!
+ Identifies if the mapped contents of a video frame were read from the frame when it was mapped.
+
+ This is a convenience function which checks if the \l {QAbstractVideoBuffer::MapMode}{MapMode}
+ contains the QAbstractVideoBuffer::WriteOnly flag.
+
+ Returns true if the contents of the mapped memory were read from the video frame, and false
+ otherwise.
+
+ \sa mapMode(), QAbstractVideoBuffer::MapMode
+*/
+
+bool QVideoFrame::isReadable() const
+{
+ return d->buffer != 0 && (d->buffer->mapMode() & QAbstractVideoBuffer::ReadOnly);
+}
+
+/*!
+ Returns the mode a video frame was mapped to system memory in.
+
+ \sa map(), QAbstractVideoBuffer::MapMode
+*/
+
+QAbstractVideoBuffer::MapMode QVideoFrame::mapMode() const
+{
+ return d->buffer != 0 ? d->buffer->mapMode() : QAbstractVideoBuffer::NotMapped;
+}
+
+/*!
+ Maps the contents of a video frame to memory.
+
+ The map \a mode indicates whether the contents of the mapped memory should be read from and/or
+ written to the frame. If the map mode includes the QAbstractVideoBuffer::ReadOnly flag the
+ mapped memory will be populated with the content of the video frame when mapped. If the map
+ mode inclues the QAbstractVideoBuffer::WriteOnly flag the content of the mapped memory will be
+ persisted in the frame when unmapped.
+
+ While mapped the contents of a video frame can be accessed directly through the pointer returned
+ by the bits() function.
+
+ When access to the data is no longer needed be sure to call the unmap() function to release the
+ mapped memory.
+
+ Returns true if the buffer was mapped to memory in the given \a mode and false otherwise.
+
+ \sa unmap(), mapMode(), bits()
+*/
+
+bool QVideoFrame::map(QAbstractVideoBuffer::MapMode mode)
+{
+ if (d->buffer != 0 && d->data == 0) {
+ Q_ASSERT(d->bytesPerLine == 0);
+ Q_ASSERT(d->mappedBytes == 0);
+
+ d->data = d->buffer->map(mode, &d->mappedBytes, &d->bytesPerLine);
+
+ return d->data != 0;
+ }
+
+ return false;
+}
+
+/*!
+ Releases the memory mapped by the map() function.
+
+ If the \l {QAbstractVideoBuffer::MapMode}{MapMode} included the QAbstractVideoBuffer::WriteOnly
+ flag this will persist the current content of the mapped memory to the video frame.
+
+ \sa map()
+*/
+
+void QVideoFrame::unmap()
+{
+ if (d->data != 0) {
+ d->mappedBytes = 0;
+ d->bytesPerLine = 0;
+ d->data = 0;
+
+ d->buffer->unmap();
+ }
+}
+
+/*!
+ Returns the number of bytes in a scan line.
+
+ \note This is the bytes per line of the first plane only. The bytes per line of subsequent
+ planes should be calculated as per the frame type.
+
+ This value is only valid while the frame data is \l {map()}{mapped}.
+
+ \sa bits(), map(), mappedBytes()
+*/
+
+int QVideoFrame::bytesPerLine() const
+{
+ return d->bytesPerLine;
+}
+
+/*!
+ Returns a pointer to the start of the frame data buffer.
+
+ This value is only valid while the frame data is \l {map()}{mapped}.
+
+ \sa map(), mappedBytes(), bytesPerLine()
+*/
+
+uchar *QVideoFrame::bits()
+{
+ return d->data;
+}
+
+/*!
+ Returns a pointer to the start of the frame data buffer.
+
+ This value is only valid while the frame data is \l {map()}{mapped}.
+
+ \sa map(), mappedBytes(), bytesPerLine()
+*/
+
+const uchar *QVideoFrame::bits() const
+{
+ return d->data;
+}
+
+/*!
+ Returns the number of bytes occupied by the mapped frame data.
+
+ This value is only valid while the frame data is \l {map()}{mapped}.
+
+ \sa map()
+*/
+
+int QVideoFrame::mappedBytes() const
+{
+ return d->mappedBytes;
+}
+
+/*!
+ Returns a type specific handle to a video frame's buffer.
+
+ For an OpenGL texture this would be the texture ID.
+
+ \sa QAbstractVideoBuffer::handle()
+*/
+
+QVariant QVideoFrame::handle() const
+{
+ return d->buffer != 0 ? d->buffer->handle() : QVariant();
+}
+
+/*!
+ Returns the presentation time when the frame should be displayed.
+*/
+
+qint64 QVideoFrame::startTime() const
+{
+ return d->startTime;
+}
+
+/*!
+ Sets the presentation \a time when the frame should be displayed.
+*/
+
+void QVideoFrame::setStartTime(qint64 time)
+{
+ d->startTime = time;
+}
+
+/*!
+ Returns the presentation time when a frame should stop being displayed.
+*/
+
+qint64 QVideoFrame::endTime() const
+{
+ return d->endTime;
+}
+
+/*!
+ Sets the presentation \a time when a frame should stop being displayed.
+*/
+
+void QVideoFrame::setEndTime(qint64 time)
+{
+ d->endTime = time;
+}
+
+/*!
+ Returns an video pixel format equivalent to an image \a format. If there is no equivalent
+ format QVideoFrame::InvalidType is returned instead.
+*/
+
+QVideoFrame::PixelFormat QVideoFrame::pixelFormatFromImageFormat(QImage::Format format)
+{
+ switch (format) {
+ case QImage::Format_Invalid:
+ case QImage::Format_Mono:
+ case QImage::Format_MonoLSB:
+ case QImage::Format_Indexed8:
+ return Format_Invalid;
+ case QImage::Format_RGB32:
+ return Format_RGB32;
+ case QImage::Format_ARGB32:
+ return Format_ARGB32;
+ case QImage::Format_ARGB32_Premultiplied:
+ return Format_ARGB32_Premultiplied;
+ case QImage::Format_RGB16:
+ return Format_RGB565;
+ case QImage::Format_ARGB8565_Premultiplied:
+ return Format_ARGB8565_Premultiplied;
+ case QImage::Format_RGB666:
+ case QImage::Format_ARGB6666_Premultiplied:
+ return Format_Invalid;
+ case QImage::Format_RGB555:
+ return Format_RGB555;
+ case QImage::Format_ARGB8555_Premultiplied:
+ return Format_Invalid;
+ case QImage::Format_RGB888:
+ return Format_RGB24;
+ case QImage::Format_RGB444:
+ case QImage::Format_ARGB4444_Premultiplied:
+ return Format_Invalid;
+ case QImage::NImageFormats:
+ return Format_Invalid;
+ }
+ return Format_Invalid;
+}
+
+/*!
+ Returns an image format equivalent to a video frame pixel \a format. If there is no equivalent
+ format QImage::Format_Invalid is returned instead.
+*/
+
+QImage::Format QVideoFrame::imageFormatFromPixelFormat(PixelFormat format)
+{
+ switch (format) {
+ case Format_Invalid:
+ return QImage::Format_Invalid;
+ case Format_ARGB32:
+ return QImage::Format_ARGB32;
+ case Format_ARGB32_Premultiplied:
+ return QImage::Format_ARGB32_Premultiplied;
+ case Format_RGB32:
+ return QImage::Format_RGB32;
+ case Format_RGB24:
+ return QImage::Format_RGB888;
+ case Format_RGB565:
+ return QImage::Format_RGB16;
+ case Format_RGB555:
+ return QImage::Format_RGB555;
+ case Format_ARGB8565_Premultiplied:
+ return QImage::Format_ARGB8565_Premultiplied;
+ case Format_BGRA32:
+ case Format_BGRA32_Premultiplied:
+ case Format_BGR32:
+ case Format_BGR24:
+ return QImage::Format_Invalid;
+ case Format_BGR565:
+ case Format_BGR555:
+ case Format_BGRA5658_Premultiplied:
+ case Format_AYUV444:
+ case Format_AYUV444_Premultiplied:
+ case Format_YUV444:
+ case Format_YUV420P:
+ case Format_YV12:
+ case Format_UYVY:
+ case Format_YUYV:
+ case Format_NV12:
+ case Format_NV21:
+ case Format_IMC1:
+ case Format_IMC2:
+ case Format_IMC3:
+ case Format_IMC4:
+ case Format_Y8:
+ case Format_Y16:
+ return QImage::Format_Invalid;
+ case Format_User:
+ return QImage::Format_Invalid;
+ }
+ return QImage::Format_Invalid;
+}
+
+QT_END_NAMESPACE
+
diff --git a/src/multimedia/video/qvideoframe.h b/src/multimedia/video/qvideoframe.h
new file mode 100644
index 000000000..87a814181
--- /dev/null
+++ b/src/multimedia/video/qvideoframe.h
@@ -0,0 +1,169 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QVIDEOFRAME_H
+#define QVIDEOFRAME_H
+
+#include <QtCore/qmetatype.h>
+#include <QtCore/qshareddata.h>
+#include <QtGui/qimage.h>
+#include <QtMultimedia/qabstractvideobuffer.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QSize;
+class QVariant;
+
+class QVideoFramePrivate;
+
+class Q_MULTIMEDIA_EXPORT QVideoFrame
+{
+public:
+ enum FieldType
+ {
+ ProgressiveFrame,
+ TopField,
+ BottomField,
+ InterlacedFrame
+ };
+
+ enum PixelFormat
+ {
+ Format_Invalid,
+ Format_ARGB32,
+ Format_ARGB32_Premultiplied,
+ Format_RGB32,
+ Format_RGB24,
+ Format_RGB565,
+ Format_RGB555,
+ Format_ARGB8565_Premultiplied,
+ Format_BGRA32,
+ Format_BGRA32_Premultiplied,
+ Format_BGR32,
+ Format_BGR24,
+ Format_BGR565,
+ Format_BGR555,
+ Format_BGRA5658_Premultiplied,
+
+ Format_AYUV444,
+ Format_AYUV444_Premultiplied,
+ Format_YUV444,
+ Format_YUV420P,
+ Format_YV12,
+ Format_UYVY,
+ Format_YUYV,
+ Format_NV12,
+ Format_NV21,
+ Format_IMC1,
+ Format_IMC2,
+ Format_IMC3,
+ Format_IMC4,
+ Format_Y8,
+ Format_Y16,
+
+ Format_User = 1000
+ };
+
+ QVideoFrame();
+ QVideoFrame(QAbstractVideoBuffer *buffer, const QSize &size, PixelFormat format);
+ QVideoFrame(int bytes, const QSize &size, int bytesPerLine, PixelFormat format);
+ QVideoFrame(const QImage &image);
+ QVideoFrame(const QVideoFrame &other);
+ ~QVideoFrame();
+
+ QVideoFrame &operator =(const QVideoFrame &other);
+
+ bool isValid() const;
+
+ PixelFormat pixelFormat() const;
+
+ QAbstractVideoBuffer::HandleType handleType() const;
+
+ QSize size() const;
+ int width() const;
+ int height() const;
+
+ FieldType fieldType() const;
+ void setFieldType(FieldType);
+
+ bool isMapped() const;
+ bool isReadable() const;
+ bool isWritable() const;
+
+ QAbstractVideoBuffer::MapMode mapMode() const;
+
+ bool map(QAbstractVideoBuffer::MapMode mode);
+ void unmap();
+
+ int bytesPerLine() const;
+
+ uchar *bits();
+ const uchar *bits() const;
+ int mappedBytes() const;
+
+ QVariant handle() const;
+
+ qint64 startTime() const;
+ void setStartTime(qint64 time);
+
+ qint64 endTime() const;
+ void setEndTime(qint64 time);
+
+ static PixelFormat pixelFormatFromImageFormat(QImage::Format format);
+ static QImage::Format imageFormatFromPixelFormat(PixelFormat format);
+
+private:
+ QExplicitlySharedDataPointer<QVideoFramePrivate> d;
+};
+
+QT_END_NAMESPACE
+
+Q_DECLARE_METATYPE(QVideoFrame::FieldType)
+Q_DECLARE_METATYPE(QVideoFrame::PixelFormat)
+
+QT_END_HEADER
+
+#endif
+
diff --git a/src/multimedia/video/qvideosurfaceformat.cpp b/src/multimedia/video/qvideosurfaceformat.cpp
new file mode 100644
index 000000000..0562a8437
--- /dev/null
+++ b/src/multimedia/video/qvideosurfaceformat.cpp
@@ -0,0 +1,704 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qvideosurfaceformat.h"
+
+#include <qdebug.h>
+#include <qmetatype.h>
+#include <qpair.h>
+#include <qvariant.h>
+#include <qvector.h>
+
+QT_BEGIN_NAMESPACE
+
+class QVideoSurfaceFormatPrivate : public QSharedData
+{
+public:
+ QVideoSurfaceFormatPrivate()
+ : pixelFormat(QVideoFrame::Format_Invalid)
+ , handleType(QAbstractVideoBuffer::NoHandle)
+ , scanLineDirection(QVideoSurfaceFormat::TopToBottom)
+ , pixelAspectRatio(1, 1)
+ , ycbcrColorSpace(QVideoSurfaceFormat::YCbCr_Undefined)
+ , frameRate(0.0)
+ {
+ }
+
+ QVideoSurfaceFormatPrivate(
+ const QSize &size,
+ QVideoFrame::PixelFormat format,
+ QAbstractVideoBuffer::HandleType type)
+ : pixelFormat(format)
+ , handleType(type)
+ , scanLineDirection(QVideoSurfaceFormat::TopToBottom)
+ , frameSize(size)
+ , pixelAspectRatio(1, 1)
+ , ycbcrColorSpace(QVideoSurfaceFormat::YCbCr_Undefined)
+ , viewport(QPoint(0, 0), size)
+ , frameRate(0.0)
+ {
+ }
+
+ QVideoSurfaceFormatPrivate(const QVideoSurfaceFormatPrivate &other)
+ : QSharedData(other)
+ , pixelFormat(other.pixelFormat)
+ , handleType(other.handleType)
+ , scanLineDirection(other.scanLineDirection)
+ , frameSize(other.frameSize)
+ , pixelAspectRatio(other.pixelAspectRatio)
+ , ycbcrColorSpace(other.ycbcrColorSpace)
+ , viewport(other.viewport)
+ , frameRate(other.frameRate)
+ , propertyNames(other.propertyNames)
+ , propertyValues(other.propertyValues)
+ {
+ }
+
+ bool operator ==(const QVideoSurfaceFormatPrivate &other) const
+ {
+ if (pixelFormat == other.pixelFormat
+ && handleType == other.handleType
+ && scanLineDirection == other.scanLineDirection
+ && frameSize == other.frameSize
+ && pixelAspectRatio == other.pixelAspectRatio
+ && viewport == other.viewport
+ && frameRatesEqual(frameRate, other.frameRate)
+ && ycbcrColorSpace == other.ycbcrColorSpace
+ && propertyNames.count() == other.propertyNames.count()) {
+ for (int i = 0; i < propertyNames.count(); ++i) {
+ int j = other.propertyNames.indexOf(propertyNames.at(i));
+
+ if (j == -1 || propertyValues.at(i) != other.propertyValues.at(j))
+ return false;
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ inline static bool frameRatesEqual(qreal r1, qreal r2)
+ {
+ return qAbs(r1 - r2) <= 0.00001 * qMin(qAbs(r1), qAbs(r2));
+ }
+
+ QVideoFrame::PixelFormat pixelFormat;
+ QAbstractVideoBuffer::HandleType handleType;
+ QVideoSurfaceFormat::Direction scanLineDirection;
+ QSize frameSize;
+ QSize pixelAspectRatio;
+ QVideoSurfaceFormat::YCbCrColorSpace ycbcrColorSpace;
+ QRect viewport;
+ qreal frameRate;
+ QList<QByteArray> propertyNames;
+ QList<QVariant> propertyValues;
+};
+
+/*!
+ \class QVideoSurfaceFormat
+ \brief The QVideoSurfaceFormat class specifies the stream format of a video presentation
+ surface.
+ \since 4.6
+
+ A video surface presents a stream of video frames. The surface's format describes the type of
+ the frames and determines how they should be presented.
+
+ The core properties of a video stream required to setup a video surface are the pixel format
+ given by pixelFormat(), and the frame dimensions given by frameSize().
+
+ If the surface is to present frames using a frame's handle a surface format will also include
+ a handle type which is given by the handleType() function.
+
+ The region of a frame that is actually displayed on a video surface is given by the viewport().
+ A stream may have a viewport less than the entire region of a frame to allow for videos smaller
+ than the nearest optimal size of a video frame. For example the width of a frame may be
+ extended so that the start of each scan line is eight byte aligned.
+
+ Other common properties are the pixelAspectRatio(), scanLineDirection(), and frameRate().
+ Additionally a stream may have some additional type specific properties which are listed by the
+ dynamicPropertyNames() function and can be accessed using the property(), and setProperty()
+ functions.
+*/
+
+/*!
+ \enum QVideoSurfaceFormat::Direction
+
+ Enumerates the layout direction of video scan lines.
+
+ \value TopToBottom Scan lines are arranged from the top of the frame to the bottom.
+ \value BottomToTop Scan lines are arranged from the bottom of the frame to the top.
+*/
+
+/*!
+ \enum QVideoSurfaceFormat::YCbCrColorSpace
+
+ Enumerates the Y'CbCr color space of video frames.
+
+ \value YCbCr_Undefined
+ No color space is specified.
+
+ \value YCbCr_BT601
+ A Y'CbCr color space defined by ITU-R recommendation BT.601
+ with Y value range from 16 to 235, and Cb/Cr range from 16 to 240.
+ Used in standard definition video.
+
+ \value YCbCr_BT709
+ A Y'CbCr color space defined by ITU-R BT.709 with the same values range as YCbCr_BT601. Used
+ for HDTV.
+
+ \value YCbCr_xvYCC601
+ The BT.601 color space with the value range extended to 0 to 255.
+ It is backward compatibile with BT.601 and uses values outside BT.601 range to represent
+ wider colors range.
+
+ \value YCbCr_xvYCC709
+ The BT.709 color space with the value range extended to 0 to 255.
+
+ \value YCbCr_JPEG
+ The full range Y'CbCr color space used in JPEG files.
+*/
+
+/*!
+ Constructs a null video stream format.
+*/
+
+QVideoSurfaceFormat::QVideoSurfaceFormat()
+ : d(new QVideoSurfaceFormatPrivate)
+{
+}
+
+/*!
+ Contructs a description of stream which receives stream of \a type buffers with given frame
+ \a size and pixel \a format.
+*/
+
+QVideoSurfaceFormat::QVideoSurfaceFormat(
+ const QSize& size, QVideoFrame::PixelFormat format, QAbstractVideoBuffer::HandleType type)
+ : d(new QVideoSurfaceFormatPrivate(size, format, type))
+{
+}
+
+/*!
+ Constructs a copy of \a other.
+*/
+
+QVideoSurfaceFormat::QVideoSurfaceFormat(const QVideoSurfaceFormat &other)
+ : d(other.d)
+{
+}
+
+/*!
+ Assigns the values of \a other to a video stream description.
+*/
+
+QVideoSurfaceFormat &QVideoSurfaceFormat::operator =(const QVideoSurfaceFormat &other)
+{
+ d = other.d;
+
+ return *this;
+}
+
+/*!
+ Destroys a video stream description.
+*/
+
+QVideoSurfaceFormat::~QVideoSurfaceFormat()
+{
+}
+
+/*!
+ Identifies if a video surface format has a valid pixel format and frame size.
+
+ Returns true if the format is valid, and false otherwise.
+*/
+
+bool QVideoSurfaceFormat::isValid() const
+{
+ return d->pixelFormat != QVideoFrame::Format_Invalid && d->frameSize.isValid();
+}
+
+/*!
+ Returns true if \a other is the same as a video format, and false if they are the different.
+*/
+
+bool QVideoSurfaceFormat::operator ==(const QVideoSurfaceFormat &other) const
+{
+ return d == other.d || *d == *other.d;
+}
+
+/*!
+ Returns true if \a other is different to a video format, and false if they are the same.
+*/
+
+bool QVideoSurfaceFormat::operator !=(const QVideoSurfaceFormat &other) const
+{
+ return d != other.d && !(*d == *other.d);
+}
+
+/*!
+ Returns the pixel format of frames in a video stream.
+*/
+
+QVideoFrame::PixelFormat QVideoSurfaceFormat::pixelFormat() const
+{
+ return d->pixelFormat;
+}
+
+/*!
+ Returns the type of handle the surface uses to present the frame data.
+
+ If the handle type is QAbstractVideoBuffer::NoHandle buffers with any handle type are valid
+ provided they can be \l {QAbstractVideoBuffer::map()}{mapped} with the
+ QAbstractVideoBuffer::ReadOnly flag. If the handleType() is not QAbstractVideoBuffer::NoHandle
+ then the handle type of the buffer be the same as that of the surface format.
+*/
+
+QAbstractVideoBuffer::HandleType QVideoSurfaceFormat::handleType() const
+{
+ return d->handleType;
+}
+
+/*!
+ Returns the size of frames in a video stream.
+
+ \sa frameWidth(), frameHeight()
+*/
+
+QSize QVideoSurfaceFormat::frameSize() const
+{
+ return d->frameSize;
+}
+
+/*!
+ Returns the width of frames in a video stream.
+
+ \sa frameSize(), frameHeight()
+*/
+
+int QVideoSurfaceFormat::frameWidth() const
+{
+ return d->frameSize.width();
+}
+
+/*!
+ Returns the height of frame in a video stream.
+*/
+
+int QVideoSurfaceFormat::frameHeight() const
+{
+ return d->frameSize.height();
+}
+
+/*!
+ Sets the size of frames in a video stream to \a size.
+
+ This will reset the viewport() to fill the entire frame.
+*/
+
+void QVideoSurfaceFormat::setFrameSize(const QSize &size)
+{
+ d->frameSize = size;
+ d->viewport = QRect(QPoint(0, 0), size);
+}
+
+/*!
+ \overload
+
+ Sets the \a width and \a height of frames in a video stream.
+
+ This will reset the viewport() to fill the entire frame.
+*/
+
+void QVideoSurfaceFormat::setFrameSize(int width, int height)
+{
+ d->frameSize = QSize(width, height);
+ d->viewport = QRect(0, 0, width, height);
+}
+
+/*!
+ Returns the viewport of a video stream.
+
+ The viewport is the region of a video frame that is actually displayed.
+
+ By default the viewport covers an entire frame.
+*/
+
+QRect QVideoSurfaceFormat::viewport() const
+{
+ return d->viewport;
+}
+
+/*!
+ Sets the viewport of a video stream to \a viewport.
+*/
+
+void QVideoSurfaceFormat::setViewport(const QRect &viewport)
+{
+ d->viewport = viewport;
+}
+
+/*!
+ Returns the direction of scan lines.
+*/
+
+QVideoSurfaceFormat::Direction QVideoSurfaceFormat::scanLineDirection() const
+{
+ return d->scanLineDirection;
+}
+
+/*!
+ Sets the \a direction of scan lines.
+*/
+
+void QVideoSurfaceFormat::setScanLineDirection(Direction direction)
+{
+ d->scanLineDirection = direction;
+}
+
+/*!
+ Returns the frame rate of a video stream in frames per second.
+*/
+
+qreal QVideoSurfaceFormat::frameRate() const
+{
+ return d->frameRate;
+}
+
+/*!
+ Sets the frame \a rate of a video stream in frames per second.
+*/
+
+void QVideoSurfaceFormat::setFrameRate(qreal rate)
+{
+ d->frameRate = rate;
+}
+
+/*!
+ Returns a video stream's pixel aspect ratio.
+*/
+
+QSize QVideoSurfaceFormat::pixelAspectRatio() const
+{
+ return d->pixelAspectRatio;
+}
+
+/*!
+ Sets a video stream's pixel aspect \a ratio.
+*/
+
+void QVideoSurfaceFormat::setPixelAspectRatio(const QSize &ratio)
+{
+ d->pixelAspectRatio = ratio;
+}
+
+/*!
+ \overload
+
+ Sets the \a horizontal and \a vertical elements of a video stream's pixel aspect ratio.
+*/
+
+void QVideoSurfaceFormat::setPixelAspectRatio(int horizontal, int vertical)
+{
+ d->pixelAspectRatio = QSize(horizontal, vertical);
+}
+
+/*!
+ Returns the Y'CbCr color space of a video stream.
+*/
+
+QVideoSurfaceFormat::YCbCrColorSpace QVideoSurfaceFormat::yCbCrColorSpace() const
+{
+ return d->ycbcrColorSpace;
+}
+
+/*!
+ Sets the Y'CbCr color \a space of a video stream.
+ It is only used with raw YUV frame types.
+*/
+
+void QVideoSurfaceFormat::setYCbCrColorSpace(QVideoSurfaceFormat::YCbCrColorSpace space)
+{
+ d->ycbcrColorSpace = space;
+}
+
+/*!
+ Returns a suggested size in pixels for the video stream.
+
+ This is the size of the viewport scaled according to the pixel aspect ratio.
+*/
+
+QSize QVideoSurfaceFormat::sizeHint() const
+{
+ QSize size = d->viewport.size();
+
+ if (d->pixelAspectRatio.height() != 0)
+ size.setWidth(size.width() * d->pixelAspectRatio.width() / d->pixelAspectRatio.height());
+
+ return size;
+}
+
+/*!
+ Returns a list of video format dynamic property names.
+*/
+
+QList<QByteArray> QVideoSurfaceFormat::propertyNames() const
+{
+ return (QList<QByteArray>()
+ << "handleType"
+ << "pixelFormat"
+ << "frameSize"
+ << "frameWidth"
+ << "viewport"
+ << "scanLineDirection"
+ << "frameRate"
+ << "pixelAspectRatio"
+ << "sizeHint"
+ << "yCbCrColorSpace")
+ + d->propertyNames;
+}
+
+/*!
+ Returns the value of the video format's \a name property.
+*/
+
+QVariant QVideoSurfaceFormat::property(const char *name) const
+{
+ if (qstrcmp(name, "handleType") == 0) {
+ return QVariant::fromValue(d->handleType);
+ } else if (qstrcmp(name, "pixelFormat") == 0) {
+ return QVariant::fromValue(d->pixelFormat);
+ } else if (qstrcmp(name, "handleType") == 0) {
+ return QVariant::fromValue(d->handleType);
+ } else if (qstrcmp(name, "frameSize") == 0) {
+ return d->frameSize;
+ } else if (qstrcmp(name, "frameWidth") == 0) {
+ return d->frameSize.width();
+ } else if (qstrcmp(name, "frameHeight") == 0) {
+ return d->frameSize.height();
+ } else if (qstrcmp(name, "viewport") == 0) {
+ return d->viewport;
+ } else if (qstrcmp(name, "scanLineDirection") == 0) {
+ return QVariant::fromValue(d->scanLineDirection);
+ } else if (qstrcmp(name, "frameRate") == 0) {
+ return QVariant::fromValue(d->frameRate);
+ } else if (qstrcmp(name, "pixelAspectRatio") == 0) {
+ return QVariant::fromValue(d->pixelAspectRatio);
+ } else if (qstrcmp(name, "sizeHint") == 0) {
+ return sizeHint();
+ } else if (qstrcmp(name, "yCbCrColorSpace") == 0) {
+ return QVariant::fromValue(d->ycbcrColorSpace);
+ } else {
+ int id = 0;
+ for (; id < d->propertyNames.count() && d->propertyNames.at(id) != name; ++id) {}
+
+ return id < d->propertyValues.count()
+ ? d->propertyValues.at(id)
+ : QVariant();
+ }
+}
+
+/*!
+ Sets the video format's \a name property to \a value.
+*/
+
+void QVideoSurfaceFormat::setProperty(const char *name, const QVariant &value)
+{
+ if (qstrcmp(name, "handleType") == 0) {
+ // read only.
+ } else if (qstrcmp(name, "pixelFormat") == 0) {
+ // read only.
+ } else if (qstrcmp(name, "frameSize") == 0) {
+ if (value.canConvert<QSize>()) {
+ d->frameSize = qvariant_cast<QSize>(value);
+ d->viewport = QRect(QPoint(0, 0), d->frameSize);
+ }
+ } else if (qstrcmp(name, "frameWidth") == 0) {
+ // read only.
+ } else if (qstrcmp(name, "frameHeight") == 0) {
+ // read only.
+ } else if (qstrcmp(name, "viewport") == 0) {
+ if (value.canConvert<QRect>())
+ d->viewport = qvariant_cast<QRect>(value);
+ } else if (qstrcmp(name, "scanLineDirection") == 0) {
+ if (value.canConvert<Direction>())
+ d->scanLineDirection = qvariant_cast<Direction>(value);
+ } else if (qstrcmp(name, "frameRate") == 0) {
+ if (value.canConvert<qreal>())
+ d->frameRate = qvariant_cast<qreal>(value);
+ } else if (qstrcmp(name, "pixelAspectRatio") == 0) {
+ if (value.canConvert<QSize>())
+ d->pixelAspectRatio = qvariant_cast<QSize>(value);
+ } else if (qstrcmp(name, "sizeHint") == 0) {
+ // read only.
+ } else if (qstrcmp(name, "yCbCrColorSpace") == 0) {
+ if (value.canConvert<YCbCrColorSpace>())
+ d->ycbcrColorSpace = qvariant_cast<YCbCrColorSpace>(value);
+ } else {
+ int id = 0;
+ for (; id < d->propertyNames.count() && d->propertyNames.at(id) != name; ++id) {}
+
+ if (id < d->propertyValues.count()) {
+ if (value.isNull()) {
+ d->propertyNames.removeAt(id);
+ d->propertyValues.removeAt(id);
+ } else {
+ d->propertyValues[id] = value;
+ }
+ } else if (!value.isNull()) {
+ d->propertyNames.append(QByteArray(name));
+ d->propertyValues.append(value);
+ }
+ }
+}
+
+
+#ifndef QT_NO_DEBUG_STREAM
+QDebug operator<<(QDebug dbg, const QVideoSurfaceFormat &f)
+{
+ QString typeName;
+ switch (f.pixelFormat()) {
+ case QVideoFrame::Format_Invalid:
+ typeName = QLatin1String("Format_Invalid");
+ break;
+ case QVideoFrame::Format_ARGB32:
+ typeName = QLatin1String("Format_ARGB32");
+ break;
+ case QVideoFrame::Format_ARGB32_Premultiplied:
+ typeName = QLatin1String("Format_ARGB32_Premultiplied");
+ break;
+ case QVideoFrame::Format_RGB32:
+ typeName = QLatin1String("Format_RGB32");
+ break;
+ case QVideoFrame::Format_RGB24:
+ typeName = QLatin1String("Format_RGB24");
+ break;
+ case QVideoFrame::Format_RGB565:
+ typeName = QLatin1String("Format_RGB565");
+ break;
+ case QVideoFrame::Format_RGB555:
+ typeName = QLatin1String("Format_RGB555");
+ break;
+ case QVideoFrame::Format_ARGB8565_Premultiplied:
+ typeName = QLatin1String("Format_ARGB8565_Premultiplied");
+ break;
+ case QVideoFrame::Format_BGRA32:
+ typeName = QLatin1String("Format_BGRA32");
+ break;
+ case QVideoFrame::Format_BGRA32_Premultiplied:
+ typeName = QLatin1String("Format_BGRA32_Premultiplied");
+ break;
+ case QVideoFrame::Format_BGR32:
+ typeName = QLatin1String("Format_BGR32");
+ break;
+ case QVideoFrame::Format_BGR24:
+ typeName = QLatin1String("Format_BGR24");
+ break;
+ case QVideoFrame::Format_BGR565:
+ typeName = QLatin1String("Format_BGR565");
+ break;
+ case QVideoFrame::Format_BGR555:
+ typeName = QLatin1String("Format_BGR555");
+ break;
+ case QVideoFrame::Format_BGRA5658_Premultiplied:
+ typeName = QLatin1String("Format_BGRA5658_Premultiplied");
+ break;
+ case QVideoFrame::Format_AYUV444:
+ typeName = QLatin1String("Format_AYUV444");
+ break;
+ case QVideoFrame::Format_AYUV444_Premultiplied:
+ typeName = QLatin1String("Format_AYUV444_Premultiplied");
+ break;
+ case QVideoFrame::Format_YUV444:
+ typeName = QLatin1String("Format_YUV444");
+ break;
+ case QVideoFrame::Format_YUV420P:
+ typeName = QLatin1String("Format_YUV420P");
+ break;
+ case QVideoFrame::Format_YV12:
+ typeName = QLatin1String("Format_YV12");
+ break;
+ case QVideoFrame::Format_UYVY:
+ typeName = QLatin1String("Format_UYVY");
+ break;
+ case QVideoFrame::Format_YUYV:
+ typeName = QLatin1String("Format_YUYV");
+ break;
+ case QVideoFrame::Format_NV12:
+ typeName = QLatin1String("Format_NV12");
+ break;
+ case QVideoFrame::Format_NV21:
+ typeName = QLatin1String("Format_NV21");
+ break;
+ case QVideoFrame::Format_IMC1:
+ typeName = QLatin1String("Format_IMC1");
+ break;
+ case QVideoFrame::Format_IMC2:
+ typeName = QLatin1String("Format_IMC2");
+ break;
+ case QVideoFrame::Format_IMC3:
+ typeName = QLatin1String("Format_IMC3");
+ break;
+ case QVideoFrame::Format_IMC4:
+ typeName = QLatin1String("Format_IMC4");
+ break;
+ case QVideoFrame::Format_Y8:
+ typeName = QLatin1String("Format_Y8");
+ break;
+ case QVideoFrame::Format_Y16:
+ typeName = QLatin1String("Format_Y16");
+ default:
+ typeName = QString(QLatin1String("UserType(%1)" )).arg(int(f.pixelFormat()));
+ }
+
+ dbg.nospace() << "QVideoSurfaceFormat(" << typeName;
+ dbg.nospace() << ", " << f.frameSize();
+ dbg.nospace() << ", viewport=" << f.viewport();
+ dbg.nospace() << ", pixelAspectRatio=" << f.pixelAspectRatio();
+ dbg.nospace() << ")";
+
+ foreach(const QByteArray& propertyName, f.propertyNames())
+ dbg << "\n " << propertyName.data() << " = " << f.property(propertyName.data());
+
+ return dbg.space();
+}
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/video/qvideosurfaceformat.h b/src/multimedia/video/qvideosurfaceformat.h
new file mode 100644
index 000000000..97f2ec3bd
--- /dev/null
+++ b/src/multimedia/video/qvideosurfaceformat.h
@@ -0,0 +1,147 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QVIDEOSURFACEFORMAT_H
+#define QVIDEOSURFACEFORMAT_H
+
+#include <QtCore/qlist.h>
+#include <QtCore/qpair.h>
+#include <QtCore/qshareddata.h>
+#include <QtCore/qsize.h>
+#include <QtGui/qimage.h>
+#include <QtMultimedia/qvideoframe.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class QDebug;
+
+class QVideoSurfaceFormatPrivate;
+
+class Q_MULTIMEDIA_EXPORT QVideoSurfaceFormat
+{
+public:
+ enum Direction
+ {
+ TopToBottom,
+ BottomToTop
+ };
+
+ enum YCbCrColorSpace
+ {
+ YCbCr_Undefined,
+ YCbCr_BT601,
+ YCbCr_BT709,
+ YCbCr_xvYCC601,
+ YCbCr_xvYCC709,
+ YCbCr_JPEG,
+#ifndef qdoc
+ YCbCr_CustomMatrix
+#endif
+ };
+
+ QVideoSurfaceFormat();
+ QVideoSurfaceFormat(
+ const QSize &size,
+ QVideoFrame::PixelFormat pixelFormat,
+ QAbstractVideoBuffer::HandleType handleType = QAbstractVideoBuffer::NoHandle);
+ QVideoSurfaceFormat(const QVideoSurfaceFormat &format);
+ ~QVideoSurfaceFormat();
+
+ QVideoSurfaceFormat &operator =(const QVideoSurfaceFormat &format);
+
+ bool operator ==(const QVideoSurfaceFormat &format) const;
+ bool operator !=(const QVideoSurfaceFormat &format) const;
+
+ bool isValid() const;
+
+ QVideoFrame::PixelFormat pixelFormat() const;
+ QAbstractVideoBuffer::HandleType handleType() const;
+
+ QSize frameSize() const;
+ void setFrameSize(const QSize &size);
+ void setFrameSize(int width, int height);
+
+ int frameWidth() const;
+ int frameHeight() const;
+
+ QRect viewport() const;
+ void setViewport(const QRect &viewport);
+
+ Direction scanLineDirection() const;
+ void setScanLineDirection(Direction direction);
+
+ qreal frameRate() const;
+ void setFrameRate(qreal rate);
+
+ QSize pixelAspectRatio() const;
+ void setPixelAspectRatio(const QSize &ratio);
+ void setPixelAspectRatio(int width, int height);
+
+ YCbCrColorSpace yCbCrColorSpace() const;
+ void setYCbCrColorSpace(YCbCrColorSpace colorSpace);
+
+ QSize sizeHint() const;
+
+ QList<QByteArray> propertyNames() const;
+ QVariant property(const char *name) const;
+ void setProperty(const char *name, const QVariant &value);
+
+private:
+ QSharedDataPointer<QVideoSurfaceFormatPrivate> d;
+};
+
+#ifndef QT_NO_DEBUG_STREAM
+Q_MULTIMEDIA_EXPORT QDebug operator<<(QDebug, const QVideoSurfaceFormat &);
+#endif
+
+QT_END_NAMESPACE
+
+Q_DECLARE_METATYPE(QVideoSurfaceFormat::Direction)
+Q_DECLARE_METATYPE(QVideoSurfaceFormat::YCbCrColorSpace)
+
+QT_END_HEADER
+
+#endif
+
diff --git a/src/multimedia/video/video.pri b/src/multimedia/video/video.pri
new file mode 100644
index 000000000..0547a4c3e
--- /dev/null
+++ b/src/multimedia/video/video.pri
@@ -0,0 +1,21 @@
+
+INCLUDEPATH += $$PWD
+
+HEADERS += \
+ $$PWD/qabstractvideobuffer.h \
+ $$PWD/qabstractvideobuffer_p.h \
+ $$PWD/qabstractvideosurface.h \
+ $$PWD/qabstractvideosurface_p.h \
+ $$PWD/qimagevideobuffer_p.h \
+ $$PWD/qmemoryvideobuffer_p.h \
+ $$PWD/qvideoframe.h \
+ $$PWD/qvideosurfaceformat.h
+
+SOURCES += \
+ $$PWD/qabstractvideobuffer.cpp \
+ $$PWD/qabstractvideosurface.cpp \
+ $$PWD/qimagevideobuffer.cpp \
+ $$PWD/qmemoryvideobuffer.cpp \
+ $$PWD/qvideoframe.cpp \
+ $$PWD/qvideosurfaceformat.cpp
+
diff --git a/src/src.pro b/src/src.pro
new file mode 100644
index 000000000..a05c504b5
--- /dev/null
+++ b/src/src.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS += multimedia
diff --git a/tests/README b/tests/README
new file mode 100644
index 000000000..f94d5a2f1
--- /dev/null
+++ b/tests/README
@@ -0,0 +1,18 @@
+This directory contains autotests and benchmarks based on QTestlib. In order
+to run the autotests reliably, you need to configure a desktop to match the
+test environment that these tests are written for.
+
+Linux X11:
+
+ * The user must be logged in to an active desktop; you can't run the
+ autotests without a valid DISPLAY that allows X11 connections.
+
+ * The tests are run against a KDE3 or KDE4 desktop.
+
+ * Window manager uses "click to focus", and not "focus follows mouse". Many
+ tests move the mouse cursor around and expect this to not affect focus
+ and activation.
+
+ * Disable "click to activate", i.e., when a window is opened, the window
+ manager should automatically activate it (give it input focus) and not
+ wait for the user to click the window.
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
new file mode 100644
index 000000000..0a89f53a3
--- /dev/null
+++ b/tests/auto/auto.pro
@@ -0,0 +1,11 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qabstractvideobuffer \
+ qabstractvideosurface \
+ qaudiodeviceinfo \
+ qaudioformat \
+ qaudioinput \
+ qaudiooutput \
+ qvideoframe \
+ qvideosurfaceformat
+
diff --git a/tests/auto/bic/.gitignore b/tests/auto/bic/.gitignore
new file mode 100644
index 000000000..6f26b868f
--- /dev/null
+++ b/tests/auto/bic/.gitignore
@@ -0,0 +1,2 @@
+qt_temp.*.*lass
+test.cpp
diff --git a/tests/auto/bic/data/QtMultimedia.4.6.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtMultimedia.4.6.0.linux-gcc-amd64.txt
new file mode 100644
index 000000000..176b6f3c4
--- /dev/null
+++ b/tests/auto/bic/data/QtMultimedia.4.6.0.linux-gcc-amd64.txt
@@ -0,0 +1,17011 @@
+Class QSysInfo
+ size=1 align=1
+ base size=0 base align=1
+QSysInfo (0x7f95586be230) 0 empty
+
+Class QBool
+ size=1 align=1
+ base size=1 base align=1
+QBool (0x7f95586bee70) 0
+
+Class qIsNull(double)::U
+ size=8 align=8
+ base size=8 base align=8
+qIsNull(double)::U (0x7f9557cc5540) 0
+
+Class qIsNull(float)::U
+ size=4 align=4
+ base size=4 base align=4
+qIsNull(float)::U (0x7f9557cc57e0) 0
+
+Class QFlag
+ size=4 align=4
+ base size=4 base align=4
+QFlag (0x7f9557d00690) 0
+
+Class QIncompatibleFlag
+ size=4 align=4
+ base size=4 base align=4
+QIncompatibleFlag (0x7f9557d00e70) 0
+
+Class QLatin1Char
+ size=1 align=1
+ base size=1 base align=1
+QLatin1Char (0x7f9557d2f5b0) 0
+
+Class QChar
+ size=2 align=2
+ base size=2 base align=2
+QChar (0x7f9557d54150) 0
+
+Class QBasicAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QBasicAtomicInt (0x7f9557bbd310) 0
+
+Class QAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QAtomicInt (0x7f9557bf9cb0) 0
+ QBasicAtomicInt (0x7f9557bf9d20) 0
+
+Class QInternal
+ size=1 align=1
+ base size=0 base align=1
+QInternal (0x7f9557a514d0) 0 empty
+
+Class __locale_struct
+ size=232 align=8
+ base size=232 base align=8
+__locale_struct (0x7f9557a51700) 0
+
+Class QByteArray::Data
+ size=32 align=8
+ base size=32 base align=8
+QByteArray::Data (0x7f9557a8baf0) 0
+
+Class QByteArray
+ size=8 align=8
+ base size=8 base align=8
+QByteArray (0x7f9557a8ba80) 0
+
+Class QByteRef
+ size=16 align=8
+ base size=12 base align=8
+QByteRef (0x7f955792d380) 0
+
+Class QString::Null
+ size=1 align=1
+ base size=0 base align=1
+QString::Null (0x7f955782ed20) 0 empty
+
+Class QString::Data
+ size=32 align=8
+ base size=32 base align=8
+QString::Data (0x7f95578465b0) 0
+
+Class QString
+ size=8 align=8
+ base size=8 base align=8
+QString (0x7f95579a8bd0) 0
+
+Class QLatin1String
+ size=8 align=8
+ base size=8 base align=8
+QLatin1String (0x7f955771c9a0) 0
+
+Class QCharRef
+ size=16 align=8
+ base size=12 base align=8
+QCharRef (0x7f95575bc000) 0
+
+Class QConstString
+ size=8 align=8
+ base size=8 base align=8
+QConstString (0x7f95575048c0) 0
+ QString (0x7f9557504930) 0
+
+Class QStringRef
+ size=16 align=8
+ base size=16 base align=8
+QStringRef (0x7f9557529310) 0
+
+Class QGenericArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericArgument (0x7f95575a4700) 0
+
+Class QGenericReturnArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericReturnArgument (0x7f95573ae2a0) 0
+ QGenericArgument (0x7f95573ae310) 0
+
+Class QMetaObject
+ size=32 align=8
+ base size=32 base align=8
+QMetaObject (0x7f95573aeb60) 0
+
+Class QMetaObjectExtraData
+ size=16 align=8
+ base size=16 base align=8
+QMetaObjectExtraData (0x7f95573d4bd0) 0
+
+Vtable for std::exception
+std::exception::_ZTVSt9exception: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9exception)
+16 std::exception::~exception
+24 std::exception::~exception
+32 std::exception::what
+
+Class std::exception
+ size=8 align=8
+ base size=8 base align=8
+std::exception (0x7f955742b1c0) 0 nearly-empty
+ vptr=((& std::exception::_ZTVSt9exception) + 16u)
+
+Vtable for std::bad_exception
+std::bad_exception::_ZTVSt13bad_exception: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13bad_exception)
+16 std::bad_exception::~bad_exception
+24 std::bad_exception::~bad_exception
+32 std::bad_exception::what
+
+Class std::bad_exception
+ size=8 align=8
+ base size=8 base align=8
+std::bad_exception (0x7f955742b770) 0 nearly-empty
+ vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 16u)
+ std::exception (0x7f955742b7e0) 0 nearly-empty
+ primary-for std::bad_exception (0x7f955742b770)
+
+Vtable for std::bad_alloc
+std::bad_alloc::_ZTVSt9bad_alloc: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9bad_alloc)
+16 std::bad_alloc::~bad_alloc
+24 std::bad_alloc::~bad_alloc
+32 std::bad_alloc::what
+
+Class std::bad_alloc
+ size=8 align=8
+ base size=8 base align=8
+std::bad_alloc (0x7f955742b930) 0 nearly-empty
+ vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 16u)
+ std::exception (0x7f9557441000) 0 nearly-empty
+ primary-for std::bad_alloc (0x7f955742b930)
+
+Class std::nothrow_t
+ size=1 align=1
+ base size=0 base align=1
+std::nothrow_t (0x7f9557441850) 0 empty
+
+Class QListData::Data
+ size=32 align=8
+ base size=32 base align=8
+QListData::Data (0x7f9557441d90) 0
+
+Class QListData
+ size=8 align=8
+ base size=8 base align=8
+QListData (0x7f9557441d20) 0
+
+Class QScopedPointerPodDeleter
+ size=1 align=1
+ base size=0 base align=1
+QScopedPointerPodDeleter (0x7f955736b850) 0 empty
+
+Vtable for QObjectData
+QObjectData::_ZTV11QObjectData: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QObjectData)
+16 __cxa_pure_virtual
+24 __cxa_pure_virtual
+
+Class QObjectData
+ size=48 align=8
+ base size=48 base align=8
+QObjectData (0x7f955738c2a0) 0
+ vptr=((& QObjectData::_ZTV11QObjectData) + 16u)
+
+Vtable for QObject
+QObject::_ZTV7QObject: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QObject)
+16 QObject::metaObject
+24 QObject::qt_metacast
+32 QObject::qt_metacall
+40 QObject::~QObject
+48 QObject::~QObject
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QObject
+ size=16 align=8
+ base size=16 base align=8
+QObject (0x7f955738c5b0) 0
+ vptr=((& QObject::_ZTV7QObject) + 16u)
+
+Vtable for QObjectUserData
+QObjectUserData::_ZTV15QObjectUserData: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QObjectUserData)
+16 QObjectUserData::~QObjectUserData
+24 QObjectUserData::~QObjectUserData
+
+Class QObjectUserData
+ size=8 align=8
+ base size=8 base align=8
+QObjectUserData (0x7f9557211b60) 0 nearly-empty
+ vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 16u)
+
+Vtable for QIODevice
+QIODevice::_ZTV9QIODevice: 30u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QIODevice)
+16 QIODevice::metaObject
+24 QIODevice::qt_metacast
+32 QIODevice::qt_metacall
+40 QIODevice::~QIODevice
+48 QIODevice::~QIODevice
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QIODevice::isSequential
+120 QIODevice::open
+128 QIODevice::close
+136 QIODevice::pos
+144 QIODevice::size
+152 QIODevice::seek
+160 QIODevice::atEnd
+168 QIODevice::reset
+176 QIODevice::bytesAvailable
+184 QIODevice::bytesToWrite
+192 QIODevice::canReadLine
+200 QIODevice::waitForReadyRead
+208 QIODevice::waitForBytesWritten
+216 __cxa_pure_virtual
+224 QIODevice::readLineData
+232 __cxa_pure_virtual
+
+Class QIODevice
+ size=16 align=8
+ base size=16 base align=8
+QIODevice (0x7f9557220150) 0
+ vptr=((& QIODevice::_ZTV9QIODevice) + 16u)
+ QObject (0x7f95572201c0) 0
+ primary-for QIODevice (0x7f9557220150)
+
+Class _IO_marker
+ size=24 align=8
+ base size=24 base align=8
+_IO_marker (0x7f9557282cb0) 0
+
+Class _IO_FILE
+ size=216 align=8
+ base size=216 base align=8
+_IO_FILE (0x7f9557282d20) 0
+
+Vtable for QFile
+QFile::_ZTV5QFile: 31u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QFile)
+16 QFile::metaObject
+24 QFile::qt_metacast
+32 QFile::qt_metacall
+40 QFile::~QFile
+48 QFile::~QFile
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QFile::isSequential
+120 QFile::open
+128 QFile::close
+136 QFile::pos
+144 QFile::size
+152 QFile::seek
+160 QFile::atEnd
+168 QIODevice::reset
+176 QIODevice::bytesAvailable
+184 QIODevice::bytesToWrite
+192 QIODevice::canReadLine
+200 QIODevice::waitForReadyRead
+208 QIODevice::waitForBytesWritten
+216 QFile::readData
+224 QFile::readLineData
+232 QFile::writeData
+240 QFile::fileEngine
+
+Class QFile
+ size=16 align=8
+ base size=16 base align=8
+QFile (0x7f9557282e00) 0
+ vptr=((& QFile::_ZTV5QFile) + 16u)
+ QIODevice (0x7f9557282e70) 0
+ primary-for QFile (0x7f9557282e00)
+ QObject (0x7f9557282ee0) 0
+ primary-for QIODevice (0x7f9557282e70)
+
+Class QFileInfo
+ size=8 align=8
+ base size=8 base align=8
+QFileInfo (0x7f9557124070) 0
+
+Vtable for QDataStream
+QDataStream::_ZTV11QDataStream: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QDataStream)
+16 QDataStream::~QDataStream
+24 QDataStream::~QDataStream
+
+Class QDataStream
+ size=40 align=8
+ base size=40 base align=8
+QDataStream (0x7f9557176a10) 0
+ vptr=((& QDataStream::_ZTV11QDataStream) + 16u)
+
+Class QRegExp
+ size=8 align=8
+ base size=8 base align=8
+QRegExp (0x7f9556fe1e70) 0
+
+Class QStringMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QStringMatcher::Data (0x7f955704a2a0) 0
+
+Class QStringMatcher
+ size=1048 align=8
+ base size=1048 base align=8
+QStringMatcher (0x7f955703dc40) 0
+
+Class QStringList
+ size=8 align=8
+ base size=8 base align=8
+QStringList (0x7f955704a850) 0
+ QList<QString> (0x7f955704a8c0) 0
+
+Class QDir
+ size=8 align=8
+ base size=8 base align=8
+QDir (0x7f9556ee84d0) 0
+
+Class QAbstractFileEngine::ExtensionOption
+ size=1 align=1
+ base size=0 base align=1
+QAbstractFileEngine::ExtensionOption (0x7f9556f8f8c0) 0 empty
+
+Class QAbstractFileEngine::ExtensionReturn
+ size=1 align=1
+ base size=0 base align=1
+QAbstractFileEngine::ExtensionReturn (0x7f9556f8f930) 0 empty
+
+Class QAbstractFileEngine::MapExtensionOption
+ size=24 align=8
+ base size=20 base align=8
+QAbstractFileEngine::MapExtensionOption (0x7f9556f8f9a0) 0
+ QAbstractFileEngine::ExtensionOption (0x7f9556f8fa10) 0 empty
+
+Class QAbstractFileEngine::MapExtensionReturn
+ size=8 align=8
+ base size=8 base align=8
+QAbstractFileEngine::MapExtensionReturn (0x7f9556f8fbd0) 0
+ QAbstractFileEngine::ExtensionReturn (0x7f9556f8fc40) 0 empty
+
+Class QAbstractFileEngine::UnMapExtensionOption
+ size=8 align=8
+ base size=8 base align=8
+QAbstractFileEngine::UnMapExtensionOption (0x7f9556f8fcb0) 0
+ QAbstractFileEngine::ExtensionOption (0x7f9556f8fd20) 0 empty
+
+Vtable for QAbstractFileEngine
+QAbstractFileEngine::_ZTV19QAbstractFileEngine: 36u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractFileEngine)
+16 QAbstractFileEngine::~QAbstractFileEngine
+24 QAbstractFileEngine::~QAbstractFileEngine
+32 QAbstractFileEngine::open
+40 QAbstractFileEngine::close
+48 QAbstractFileEngine::flush
+56 QAbstractFileEngine::size
+64 QAbstractFileEngine::pos
+72 QAbstractFileEngine::seek
+80 QAbstractFileEngine::isSequential
+88 QAbstractFileEngine::remove
+96 QAbstractFileEngine::copy
+104 QAbstractFileEngine::rename
+112 QAbstractFileEngine::link
+120 QAbstractFileEngine::mkdir
+128 QAbstractFileEngine::rmdir
+136 QAbstractFileEngine::setSize
+144 QAbstractFileEngine::caseSensitive
+152 QAbstractFileEngine::isRelativePath
+160 QAbstractFileEngine::entryList
+168 QAbstractFileEngine::fileFlags
+176 QAbstractFileEngine::setPermissions
+184 QAbstractFileEngine::fileName
+192 QAbstractFileEngine::ownerId
+200 QAbstractFileEngine::owner
+208 QAbstractFileEngine::fileTime
+216 QAbstractFileEngine::setFileName
+224 QAbstractFileEngine::handle
+232 QAbstractFileEngine::beginEntryList
+240 QAbstractFileEngine::endEntryList
+248 QAbstractFileEngine::read
+256 QAbstractFileEngine::readLine
+264 QAbstractFileEngine::write
+272 QAbstractFileEngine::extension
+280 QAbstractFileEngine::supportsExtension
+
+Class QAbstractFileEngine
+ size=16 align=8
+ base size=16 base align=8
+QAbstractFileEngine (0x7f9556f73850) 0
+ vptr=((& QAbstractFileEngine::_ZTV19QAbstractFileEngine) + 16u)
+
+Vtable for QAbstractFileEngineHandler
+QAbstractFileEngineHandler::_ZTV26QAbstractFileEngineHandler: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAbstractFileEngineHandler)
+16 QAbstractFileEngineHandler::~QAbstractFileEngineHandler
+24 QAbstractFileEngineHandler::~QAbstractFileEngineHandler
+32 __cxa_pure_virtual
+
+Class QAbstractFileEngineHandler
+ size=8 align=8
+ base size=8 base align=8
+QAbstractFileEngineHandler (0x7f9556dc4bd0) 0 nearly-empty
+ vptr=((& QAbstractFileEngineHandler::_ZTV26QAbstractFileEngineHandler) + 16u)
+
+Vtable for QAbstractFileEngineIterator
+QAbstractFileEngineIterator::_ZTV27QAbstractFileEngineIterator: 9u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAbstractFileEngineIterator)
+16 QAbstractFileEngineIterator::~QAbstractFileEngineIterator
+24 QAbstractFileEngineIterator::~QAbstractFileEngineIterator
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 QAbstractFileEngineIterator::currentFileInfo
+64 QAbstractFileEngineIterator::entryInfo
+
+Class QAbstractFileEngineIterator
+ size=16 align=8
+ base size=16 base align=8
+QAbstractFileEngineIterator (0x7f9556dc4d90) 0
+ vptr=((& QAbstractFileEngineIterator::_ZTV27QAbstractFileEngineIterator) + 16u)
+
+Vtable for QBuffer
+QBuffer::_ZTV7QBuffer: 30u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QBuffer)
+16 QBuffer::metaObject
+24 QBuffer::qt_metacast
+32 QBuffer::qt_metacall
+40 QBuffer::~QBuffer
+48 QBuffer::~QBuffer
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QBuffer::connectNotify
+104 QBuffer::disconnectNotify
+112 QIODevice::isSequential
+120 QBuffer::open
+128 QBuffer::close
+136 QBuffer::pos
+144 QBuffer::size
+152 QBuffer::seek
+160 QBuffer::atEnd
+168 QIODevice::reset
+176 QIODevice::bytesAvailable
+184 QIODevice::bytesToWrite
+192 QBuffer::canReadLine
+200 QIODevice::waitForReadyRead
+208 QIODevice::waitForBytesWritten
+216 QBuffer::readData
+224 QIODevice::readLineData
+232 QBuffer::writeData
+
+Class QBuffer
+ size=16 align=8
+ base size=16 base align=8
+QBuffer (0x7f9556dd7690) 0
+ vptr=((& QBuffer::_ZTV7QBuffer) + 16u)
+ QIODevice (0x7f9556dd7700) 0
+ primary-for QBuffer (0x7f9556dd7690)
+ QObject (0x7f9556dd7770) 0
+ primary-for QIODevice (0x7f9556dd7700)
+
+Class QHashData::Node
+ size=16 align=8
+ base size=16 base align=8
+QHashData::Node (0x7f9556e1be00) 0
+
+Class QHashData
+ size=40 align=8
+ base size=40 base align=8
+QHashData (0x7f9556e1bd90) 0
+
+Class QHashDummyValue
+ size=1 align=1
+ base size=0 base align=1
+QHashDummyValue (0x7f9556e3e150) 0 empty
+
+Class QMapData::Node
+ size=16 align=8
+ base size=16 base align=8
+QMapData::Node (0x7f9556d3fa80) 0
+
+Class QMapData
+ size=128 align=8
+ base size=128 base align=8
+QMapData (0x7f9556d3fa10) 0
+
+Vtable for QSystemLocale
+QSystemLocale::_ZTV13QSystemLocale: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSystemLocale)
+16 QSystemLocale::~QSystemLocale
+24 QSystemLocale::~QSystemLocale
+32 QSystemLocale::query
+40 QSystemLocale::fallbackLocale
+
+Class QSystemLocale
+ size=8 align=8
+ base size=8 base align=8
+QSystemLocale (0x7f9556c7a690) 0 nearly-empty
+ vptr=((& QSystemLocale::_ZTV13QSystemLocale) + 16u)
+
+Class QLocale::Data
+ size=4 align=2
+ base size=4 base align=2
+QLocale::Data (0x7f9556ac4d90) 0
+
+Class QLocale
+ size=8 align=8
+ base size=8 base align=8
+QLocale (0x7f9556c7aaf0) 0
+
+Class QTextCodec::ConverterState
+ size=32 align=8
+ base size=32 base align=8
+QTextCodec::ConverterState (0x7f9556b19bd0) 0
+
+Vtable for QTextCodec
+QTextCodec::_ZTV10QTextCodec: 9u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextCodec)
+16 __cxa_pure_virtual
+24 QTextCodec::aliases
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 QTextCodec::~QTextCodec
+64 QTextCodec::~QTextCodec
+
+Class QTextCodec
+ size=8 align=8
+ base size=8 base align=8
+QTextCodec (0x7f9556b0d460) 0 nearly-empty
+ vptr=((& QTextCodec::_ZTV10QTextCodec) + 16u)
+
+Class QTextEncoder
+ size=40 align=8
+ base size=40 base align=8
+QTextEncoder (0x7f9556b8c150) 0
+
+Class QTextDecoder
+ size=40 align=8
+ base size=40 base align=8
+QTextDecoder (0x7f9556b8cf50) 0
+
+Vtable for QTextStream
+QTextStream::_ZTV11QTextStream: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTextStream)
+16 QTextStream::~QTextStream
+24 QTextStream::~QTextStream
+
+Class QTextStream
+ size=16 align=8
+ base size=16 base align=8
+QTextStream (0x7f9556b94d90) 0
+ vptr=((& QTextStream::_ZTV11QTextStream) + 16u)
+
+Class QTextStreamManipulator
+ size=40 align=8
+ base size=38 base align=8
+QTextStreamManipulator (0x7f9556a0fa80) 0
+
+Vtable for QTextIStream
+QTextIStream::_ZTV12QTextIStream: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTextIStream)
+16 QTextIStream::~QTextIStream
+24 QTextIStream::~QTextIStream
+
+Class QTextIStream
+ size=16 align=8
+ base size=16 base align=8
+QTextIStream (0x7f9556a40070) 0
+ vptr=((& QTextIStream::_ZTV12QTextIStream) + 16u)
+ QTextStream (0x7f9556a400e0) 0
+ primary-for QTextIStream (0x7f9556a40070)
+
+Vtable for QTextOStream
+QTextOStream::_ZTV12QTextOStream: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTextOStream)
+16 QTextOStream::~QTextOStream
+24 QTextOStream::~QTextOStream
+
+Class QTextOStream
+ size=16 align=8
+ base size=16 base align=8
+QTextOStream (0x7f9556a4dee0) 0
+ vptr=((& QTextOStream::_ZTV12QTextOStream) + 16u)
+ QTextStream (0x7f9556a4df50) 0
+ primary-for QTextOStream (0x7f9556a4dee0)
+
+Class wait
+ size=4 align=4
+ base size=4 base align=4
+wait (0x7f9556a61d90) 0
+
+Class timespec
+ size=16 align=8
+ base size=16 base align=8
+timespec (0x7f9556a6f0e0) 0
+
+Class timeval
+ size=16 align=8
+ base size=16 base align=8
+timeval (0x7f9556a6f150) 0
+
+Class __pthread_internal_list
+ size=16 align=8
+ base size=16 base align=8
+__pthread_internal_list (0x7f9556a6f2a0) 0
+
+Class random_data
+ size=48 align=8
+ base size=48 base align=8
+random_data (0x7f9556a6f850) 0
+
+Class drand48_data
+ size=24 align=8
+ base size=24 base align=8
+drand48_data (0x7f9556a6f8c0) 0
+
+Class QVectorData
+ size=16 align=4
+ base size=16 base align=4
+QVectorData (0x7f9556a6f930) 0
+
+Class QContiguousCacheData
+ size=24 align=4
+ base size=24 base align=4
+QContiguousCacheData (0x7f955682a620) 0
+
+Class QDebug::Stream
+ size=40 align=8
+ base size=34 base align=8
+QDebug::Stream (0x7f955668c150) 0
+
+Class QDebug
+ size=8 align=8
+ base size=8 base align=8
+QDebug (0x7f955668c0e0) 0
+
+Class QNoDebug
+ size=1 align=1
+ base size=0 base align=1
+QNoDebug (0x7f95567390e0) 0 empty
+
+Vtable for QDirIterator
+QDirIterator::_ZTV12QDirIterator: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QDirIterator)
+16 QDirIterator::~QDirIterator
+24 QDirIterator::~QDirIterator
+
+Class QDirIterator
+ size=16 align=8
+ base size=16 base align=8
+QDirIterator (0x7f9556749700) 0
+ vptr=((& QDirIterator::_ZTV12QDirIterator) + 16u)
+
+Vtable for QFileSystemWatcher
+QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFileSystemWatcher)
+16 QFileSystemWatcher::metaObject
+24 QFileSystemWatcher::qt_metacast
+32 QFileSystemWatcher::qt_metacall
+40 QFileSystemWatcher::~QFileSystemWatcher
+48 QFileSystemWatcher::~QFileSystemWatcher
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QFileSystemWatcher
+ size=16 align=8
+ base size=16 base align=8
+QFileSystemWatcher (0x7f95565a5540) 0
+ vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 16u)
+ QObject (0x7f95565a55b0) 0
+ primary-for QFileSystemWatcher (0x7f95565a5540)
+
+Vtable for QFSFileEngine
+QFSFileEngine::_ZTV13QFSFileEngine: 36u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QFSFileEngine)
+16 QFSFileEngine::~QFSFileEngine
+24 QFSFileEngine::~QFSFileEngine
+32 QFSFileEngine::open
+40 QFSFileEngine::close
+48 QFSFileEngine::flush
+56 QFSFileEngine::size
+64 QFSFileEngine::pos
+72 QFSFileEngine::seek
+80 QFSFileEngine::isSequential
+88 QFSFileEngine::remove
+96 QFSFileEngine::copy
+104 QFSFileEngine::rename
+112 QFSFileEngine::link
+120 QFSFileEngine::mkdir
+128 QFSFileEngine::rmdir
+136 QFSFileEngine::setSize
+144 QFSFileEngine::caseSensitive
+152 QFSFileEngine::isRelativePath
+160 QFSFileEngine::entryList
+168 QFSFileEngine::fileFlags
+176 QFSFileEngine::setPermissions
+184 QFSFileEngine::fileName
+192 QFSFileEngine::ownerId
+200 QFSFileEngine::owner
+208 QFSFileEngine::fileTime
+216 QFSFileEngine::setFileName
+224 QFSFileEngine::handle
+232 QFSFileEngine::beginEntryList
+240 QFSFileEngine::endEntryList
+248 QFSFileEngine::read
+256 QFSFileEngine::readLine
+264 QFSFileEngine::write
+272 QFSFileEngine::extension
+280 QFSFileEngine::supportsExtension
+
+Class QFSFileEngine
+ size=16 align=8
+ base size=16 base align=8
+QFSFileEngine (0x7f95565b9a80) 0
+ vptr=((& QFSFileEngine::_ZTV13QFSFileEngine) + 16u)
+ QAbstractFileEngine (0x7f95565b9af0) 0
+ primary-for QFSFileEngine (0x7f95565b9a80)
+
+Class QSharedData
+ size=4 align=4
+ base size=4 base align=4
+QSharedData (0x7f95565c9e70) 0
+
+Class QProcessEnvironment
+ size=8 align=8
+ base size=8 base align=8
+QProcessEnvironment (0x7f95566101c0) 0
+
+Vtable for QProcess
+QProcess::_ZTV8QProcess: 31u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QProcess)
+16 QProcess::metaObject
+24 QProcess::qt_metacast
+32 QProcess::qt_metacall
+40 QProcess::~QProcess
+48 QProcess::~QProcess
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QProcess::isSequential
+120 QIODevice::open
+128 QProcess::close
+136 QIODevice::pos
+144 QIODevice::size
+152 QIODevice::seek
+160 QProcess::atEnd
+168 QIODevice::reset
+176 QProcess::bytesAvailable
+184 QProcess::bytesToWrite
+192 QProcess::canReadLine
+200 QProcess::waitForReadyRead
+208 QProcess::waitForBytesWritten
+216 QProcess::readData
+224 QIODevice::readLineData
+232 QProcess::writeData
+240 QProcess::setupChildProcess
+
+Class QProcess
+ size=16 align=8
+ base size=16 base align=8
+QProcess (0x7f9556610cb0) 0
+ vptr=((& QProcess::_ZTV8QProcess) + 16u)
+ QIODevice (0x7f9556610d20) 0
+ primary-for QProcess (0x7f9556610cb0)
+ QObject (0x7f9556610d90) 0
+ primary-for QIODevice (0x7f9556610d20)
+
+Class QResource
+ size=8 align=8
+ base size=8 base align=8
+QResource (0x7f955665a1c0) 0
+
+Class QMetaType
+ size=1 align=1
+ base size=0 base align=1
+QMetaType (0x7f955665ae70) 0 empty
+
+Class QVariant::PrivateShared
+ size=16 align=8
+ base size=12 base align=8
+QVariant::PrivateShared (0x7f9556556700) 0
+
+Class QVariant::Private::Data
+ size=8 align=8
+ base size=8 base align=8
+QVariant::Private::Data (0x7f9556556a10) 0
+
+Class QVariant::Private
+ size=16 align=8
+ base size=12 base align=8
+QVariant::Private (0x7f95565567e0) 0
+
+Class QVariant::Handler
+ size=72 align=8
+ base size=72 base align=8
+QVariant::Handler (0x7f9556564700) 0
+
+Class QVariant
+ size=16 align=8
+ base size=16 base align=8
+QVariant (0x7f95565257e0) 0
+
+Class QVariantComparisonHelper
+ size=8 align=8
+ base size=8 base align=8
+QVariantComparisonHelper (0x7f95564199a0) 0
+
+Vtable for QSettings
+QSettings::_ZTV9QSettings: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSettings)
+16 QSettings::metaObject
+24 QSettings::qt_metacast
+32 QSettings::qt_metacall
+40 QSettings::~QSettings
+48 QSettings::~QSettings
+56 QSettings::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QSettings
+ size=16 align=8
+ base size=16 base align=8
+QSettings (0x7f955643dee0) 0
+ vptr=((& QSettings::_ZTV9QSettings) + 16u)
+ QObject (0x7f955643df50) 0
+ primary-for QSettings (0x7f955643dee0)
+
+Vtable for QTemporaryFile
+QTemporaryFile::_ZTV14QTemporaryFile: 31u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QTemporaryFile)
+16 QTemporaryFile::metaObject
+24 QTemporaryFile::qt_metacast
+32 QTemporaryFile::qt_metacall
+40 QTemporaryFile::~QTemporaryFile
+48 QTemporaryFile::~QTemporaryFile
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QFile::isSequential
+120 QTemporaryFile::open
+128 QFile::close
+136 QFile::pos
+144 QFile::size
+152 QFile::seek
+160 QFile::atEnd
+168 QIODevice::reset
+176 QIODevice::bytesAvailable
+184 QIODevice::bytesToWrite
+192 QIODevice::canReadLine
+200 QIODevice::waitForReadyRead
+208 QIODevice::waitForBytesWritten
+216 QFile::readData
+224 QFile::readLineData
+232 QFile::writeData
+240 QTemporaryFile::fileEngine
+
+Class QTemporaryFile
+ size=16 align=8
+ base size=16 base align=8
+QTemporaryFile (0x7f95562bf2a0) 0
+ vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16u)
+ QFile (0x7f95562bf310) 0
+ primary-for QTemporaryFile (0x7f95562bf2a0)
+ QIODevice (0x7f95562bf380) 0
+ primary-for QFile (0x7f95562bf310)
+ QObject (0x7f95562bf3f0) 0
+ primary-for QIODevice (0x7f95562bf380)
+
+Class QUrl
+ size=8 align=8
+ base size=8 base align=8
+QUrl (0x7f95562dc9a0) 0
+
+Class QXmlStreamStringRef
+ size=16 align=8
+ base size=16 base align=8
+QXmlStreamStringRef (0x7f9556368070) 0
+
+Class QXmlStreamAttribute
+ size=80 align=8
+ base size=73 base align=8
+QXmlStreamAttribute (0x7f9556181850) 0
+
+Class QXmlStreamAttributes
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamAttributes (0x7f95561a9310) 0
+ QVector<QXmlStreamAttribute> (0x7f95561a9380) 0
+
+Class QXmlStreamNamespaceDeclaration
+ size=40 align=8
+ base size=40 base align=8
+QXmlStreamNamespaceDeclaration (0x7f95561a97e0) 0
+
+Class QXmlStreamNotationDeclaration
+ size=56 align=8
+ base size=56 base align=8
+QXmlStreamNotationDeclaration (0x7f95561ed1c0) 0
+
+Class QXmlStreamEntityDeclaration
+ size=88 align=8
+ base size=88 base align=8
+QXmlStreamEntityDeclaration (0x7f955620e070) 0
+
+Vtable for QXmlStreamEntityResolver
+QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QXmlStreamEntityResolver)
+16 QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+24 QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+32 QXmlStreamEntityResolver::resolveEntity
+40 QXmlStreamEntityResolver::resolveUndeclaredEntity
+
+Class QXmlStreamEntityResolver
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamEntityResolver (0x7f95562289a0) 0 nearly-empty
+ vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 16u)
+
+Class QXmlStreamReader
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamReader (0x7f9556228b60) 0
+
+Class QXmlStreamWriter
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamWriter (0x7f9556270c40) 0
+
+Vtable for QAbstractState
+QAbstractState::_ZTV14QAbstractState: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QAbstractState)
+16 QAbstractState::metaObject
+24 QAbstractState::qt_metacast
+32 QAbstractState::qt_metacall
+40 QAbstractState::~QAbstractState
+48 QAbstractState::~QAbstractState
+56 QAbstractState::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+
+Class QAbstractState
+ size=16 align=8
+ base size=16 base align=8
+QAbstractState (0x7f955607da80) 0
+ vptr=((& QAbstractState::_ZTV14QAbstractState) + 16u)
+ QObject (0x7f955607daf0) 0
+ primary-for QAbstractState (0x7f955607da80)
+
+Vtable for QAbstractTransition
+QAbstractTransition::_ZTV19QAbstractTransition: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTransition)
+16 QAbstractTransition::metaObject
+24 QAbstractTransition::qt_metacast
+32 QAbstractTransition::qt_metacall
+40 QAbstractTransition::~QAbstractTransition
+48 QAbstractTransition::~QAbstractTransition
+56 QAbstractTransition::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+
+Class QAbstractTransition
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTransition (0x7f95560a32a0) 0
+ vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 16u)
+ QObject (0x7f95560a3310) 0
+ primary-for QAbstractTransition (0x7f95560a32a0)
+
+Vtable for QEvent
+QEvent::_ZTV6QEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QEvent)
+16 QEvent::~QEvent
+24 QEvent::~QEvent
+
+Class QEvent
+ size=24 align=8
+ base size=20 base align=8
+QEvent (0x7f95560b7af0) 0
+ vptr=((& QEvent::_ZTV6QEvent) + 16u)
+
+Vtable for QTimerEvent
+QTimerEvent::_ZTV11QTimerEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTimerEvent)
+16 QTimerEvent::~QTimerEvent
+24 QTimerEvent::~QTimerEvent
+
+Class QTimerEvent
+ size=24 align=8
+ base size=24 base align=8
+QTimerEvent (0x7f95560d9700) 0
+ vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16u)
+ QEvent (0x7f95560d9770) 0
+ primary-for QTimerEvent (0x7f95560d9700)
+
+Vtable for QChildEvent
+QChildEvent::_ZTV11QChildEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QChildEvent)
+16 QChildEvent::~QChildEvent
+24 QChildEvent::~QChildEvent
+
+Class QChildEvent
+ size=32 align=8
+ base size=32 base align=8
+QChildEvent (0x7f95560d9b60) 0
+ vptr=((& QChildEvent::_ZTV11QChildEvent) + 16u)
+ QEvent (0x7f95560d9bd0) 0
+ primary-for QChildEvent (0x7f95560d9b60)
+
+Vtable for QCustomEvent
+QCustomEvent::_ZTV12QCustomEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QCustomEvent)
+16 QCustomEvent::~QCustomEvent
+24 QCustomEvent::~QCustomEvent
+
+Class QCustomEvent
+ size=24 align=8
+ base size=20 base align=8
+QCustomEvent (0x7f95560e2e00) 0
+ vptr=((& QCustomEvent::_ZTV12QCustomEvent) + 16u)
+ QEvent (0x7f95560e2e70) 0
+ primary-for QCustomEvent (0x7f95560e2e00)
+
+Vtable for QDynamicPropertyChangeEvent
+QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QDynamicPropertyChangeEvent)
+16 QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+24 QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+
+Class QDynamicPropertyChangeEvent
+ size=32 align=8
+ base size=32 base align=8
+QDynamicPropertyChangeEvent (0x7f95560f4620) 0
+ vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 16u)
+ QEvent (0x7f95560f4690) 0
+ primary-for QDynamicPropertyChangeEvent (0x7f95560f4620)
+
+Vtable for QEventTransition
+QEventTransition::_ZTV16QEventTransition: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QEventTransition)
+16 QEventTransition::metaObject
+24 QEventTransition::qt_metacast
+32 QEventTransition::qt_metacall
+40 QEventTransition::~QEventTransition
+48 QEventTransition::~QEventTransition
+56 QEventTransition::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QEventTransition::eventTest
+120 QEventTransition::onTransition
+
+Class QEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QEventTransition (0x7f95560f4af0) 0
+ vptr=((& QEventTransition::_ZTV16QEventTransition) + 16u)
+ QAbstractTransition (0x7f95560f4b60) 0
+ primary-for QEventTransition (0x7f95560f4af0)
+ QObject (0x7f95560f4bd0) 0
+ primary-for QAbstractTransition (0x7f95560f4b60)
+
+Vtable for QFinalState
+QFinalState::_ZTV11QFinalState: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFinalState)
+16 QFinalState::metaObject
+24 QFinalState::qt_metacast
+32 QFinalState::qt_metacall
+40 QFinalState::~QFinalState
+48 QFinalState::~QFinalState
+56 QFinalState::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QFinalState::onEntry
+120 QFinalState::onExit
+
+Class QFinalState
+ size=16 align=8
+ base size=16 base align=8
+QFinalState (0x7f955610e9a0) 0
+ vptr=((& QFinalState::_ZTV11QFinalState) + 16u)
+ QAbstractState (0x7f955610ea10) 0
+ primary-for QFinalState (0x7f955610e9a0)
+ QObject (0x7f955610ea80) 0
+ primary-for QAbstractState (0x7f955610ea10)
+
+Vtable for QHistoryState
+QHistoryState::_ZTV13QHistoryState: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QHistoryState)
+16 QHistoryState::metaObject
+24 QHistoryState::qt_metacast
+32 QHistoryState::qt_metacall
+40 QHistoryState::~QHistoryState
+48 QHistoryState::~QHistoryState
+56 QHistoryState::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QHistoryState::onEntry
+120 QHistoryState::onExit
+
+Class QHistoryState
+ size=16 align=8
+ base size=16 base align=8
+QHistoryState (0x7f9556127230) 0
+ vptr=((& QHistoryState::_ZTV13QHistoryState) + 16u)
+ QAbstractState (0x7f95561272a0) 0
+ primary-for QHistoryState (0x7f9556127230)
+ QObject (0x7f9556127310) 0
+ primary-for QAbstractState (0x7f95561272a0)
+
+Vtable for QSignalTransition
+QSignalTransition::_ZTV17QSignalTransition: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSignalTransition)
+16 QSignalTransition::metaObject
+24 QSignalTransition::qt_metacast
+32 QSignalTransition::qt_metacall
+40 QSignalTransition::~QSignalTransition
+48 QSignalTransition::~QSignalTransition
+56 QSignalTransition::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QSignalTransition::eventTest
+120 QSignalTransition::onTransition
+
+Class QSignalTransition
+ size=16 align=8
+ base size=16 base align=8
+QSignalTransition (0x7f955613af50) 0
+ vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16u)
+ QAbstractTransition (0x7f9556144000) 0
+ primary-for QSignalTransition (0x7f955613af50)
+ QObject (0x7f9556144070) 0
+ primary-for QAbstractTransition (0x7f9556144000)
+
+Vtable for QState
+QState::_ZTV6QState: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QState)
+16 QState::metaObject
+24 QState::qt_metacast
+32 QState::qt_metacall
+40 QState::~QState
+48 QState::~QState
+56 QState::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QState::onEntry
+120 QState::onExit
+
+Class QState
+ size=16 align=8
+ base size=16 base align=8
+QState (0x7f9556153af0) 0
+ vptr=((& QState::_ZTV6QState) + 16u)
+ QAbstractState (0x7f9556153b60) 0
+ primary-for QState (0x7f9556153af0)
+ QObject (0x7f9556153bd0) 0
+ primary-for QAbstractState (0x7f9556153b60)
+
+Vtable for QStateMachine::SignalEvent
+QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine11SignalEventE)
+16 QStateMachine::SignalEvent::~SignalEvent
+24 QStateMachine::SignalEvent::~SignalEvent
+
+Class QStateMachine::SignalEvent
+ size=48 align=8
+ base size=48 base align=8
+QStateMachine::SignalEvent (0x7f9555f79150) 0
+ vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 16u)
+ QEvent (0x7f9555f791c0) 0
+ primary-for QStateMachine::SignalEvent (0x7f9555f79150)
+
+Vtable for QStateMachine::WrappedEvent
+QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine12WrappedEventE)
+16 QStateMachine::WrappedEvent::~WrappedEvent
+24 QStateMachine::WrappedEvent::~WrappedEvent
+
+Class QStateMachine::WrappedEvent
+ size=40 align=8
+ base size=40 base align=8
+QStateMachine::WrappedEvent (0x7f9555f79700) 0
+ vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 16u)
+ QEvent (0x7f9555f79770) 0
+ primary-for QStateMachine::WrappedEvent (0x7f9555f79700)
+
+Vtable for QStateMachine
+QStateMachine::_ZTV13QStateMachine: 20u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QStateMachine)
+16 QStateMachine::metaObject
+24 QStateMachine::qt_metacast
+32 QStateMachine::qt_metacall
+40 QStateMachine::~QStateMachine
+48 QStateMachine::~QStateMachine
+56 QStateMachine::event
+64 QStateMachine::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QStateMachine::onEntry
+120 QStateMachine::onExit
+128 QStateMachine::beginSelectTransitions
+136 QStateMachine::endSelectTransitions
+144 QStateMachine::beginMicrostep
+152 QStateMachine::endMicrostep
+
+Class QStateMachine
+ size=16 align=8
+ base size=16 base align=8
+QStateMachine (0x7f9555f70ee0) 0
+ vptr=((& QStateMachine::_ZTV13QStateMachine) + 16u)
+ QState (0x7f9555f70f50) 0
+ primary-for QStateMachine (0x7f9555f70ee0)
+ QAbstractState (0x7f9555f79000) 0
+ primary-for QState (0x7f9555f70f50)
+ QObject (0x7f9555f79070) 0
+ primary-for QAbstractState (0x7f9555f79000)
+
+Class QBitArray
+ size=8 align=8
+ base size=8 base align=8
+QBitArray (0x7f9555fa9150) 0
+
+Class QBitRef
+ size=16 align=8
+ base size=12 base align=8
+QBitRef (0x7f9555fffe00) 0
+
+Class QByteArrayMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QByteArrayMatcher::Data (0x7f9556011af0) 0
+
+Class QByteArrayMatcher
+ size=1040 align=8
+ base size=1040 base align=8
+QByteArrayMatcher (0x7f95560114d0) 0
+
+Class QCryptographicHash
+ size=8 align=8
+ base size=8 base align=8
+QCryptographicHash (0x7f955604a150) 0
+
+Vtable for QtSharedPointer::ExternalRefCountData
+QtSharedPointer::ExternalRefCountData::_ZTVN15QtSharedPointer20ExternalRefCountDataE: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN15QtSharedPointer20ExternalRefCountDataE)
+16 QtSharedPointer::ExternalRefCountData::~ExternalRefCountData
+24 QtSharedPointer::ExternalRefCountData::~ExternalRefCountData
+32 QtSharedPointer::ExternalRefCountData::destroy
+
+Class QtSharedPointer::ExternalRefCountData
+ size=16 align=8
+ base size=16 base align=8
+QtSharedPointer::ExternalRefCountData (0x7f9555e74070) 0
+ vptr=((& QtSharedPointer::ExternalRefCountData::_ZTVN15QtSharedPointer20ExternalRefCountDataE) + 16u)
+
+Vtable for QtSharedPointer::ExternalRefCountWithDestroyFn
+QtSharedPointer::ExternalRefCountWithDestroyFn::_ZTVN15QtSharedPointer29ExternalRefCountWithDestroyFnE: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN15QtSharedPointer29ExternalRefCountWithDestroyFnE)
+16 QtSharedPointer::ExternalRefCountWithDestroyFn::~ExternalRefCountWithDestroyFn
+24 QtSharedPointer::ExternalRefCountWithDestroyFn::~ExternalRefCountWithDestroyFn
+32 QtSharedPointer::ExternalRefCountWithDestroyFn::destroy
+
+Class QtSharedPointer::ExternalRefCountWithDestroyFn
+ size=24 align=8
+ base size=24 base align=8
+QtSharedPointer::ExternalRefCountWithDestroyFn (0x7f9555e8c930) 0
+ vptr=((& QtSharedPointer::ExternalRefCountWithDestroyFn::_ZTVN15QtSharedPointer29ExternalRefCountWithDestroyFnE) + 16u)
+ QtSharedPointer::ExternalRefCountData (0x7f9555e8c9a0) 0
+ primary-for QtSharedPointer::ExternalRefCountWithDestroyFn (0x7f9555e8c930)
+
+Class QDate
+ size=4 align=4
+ base size=4 base align=4
+QDate (0x7f9555f145b0) 0
+
+Class QTime
+ size=4 align=4
+ base size=4 base align=4
+QTime (0x7f9555f45540) 0
+
+Class QDateTime
+ size=8 align=8
+ base size=8 base align=8
+QDateTime (0x7f9555f61af0) 0
+
+Class QEasingCurve
+ size=8 align=8
+ base size=8 base align=8
+QEasingCurve (0x7f9555da7000) 0
+
+Class QPoint
+ size=8 align=4
+ base size=8 base align=4
+QPoint (0x7f9555da7ee0) 0
+
+Class QPointF
+ size=16 align=8
+ base size=16 base align=8
+QPointF (0x7f9555de8af0) 0
+
+Class QLine
+ size=16 align=4
+ base size=16 base align=4
+QLine (0x7f9555e26af0) 0
+
+Class QLineF
+ size=32 align=8
+ base size=32 base align=8
+QLineF (0x7f9555e639a0) 0
+
+Class QLinkedListData
+ size=32 align=8
+ base size=32 base align=8
+QLinkedListData (0x7f9555cb8460) 0
+
+Class QMargins
+ size=16 align=4
+ base size=16 base align=4
+QMargins (0x7f9555b77380) 0
+
+Class QSize
+ size=8 align=4
+ base size=8 base align=4
+QSize (0x7f9555ba4150) 0
+
+Class QSizeF
+ size=16 align=8
+ base size=16 base align=8
+QSizeF (0x7f9555be4e00) 0
+
+Class QRect
+ size=16 align=4
+ base size=16 base align=4
+QRect (0x7f9555c37380) 0
+
+Class QRectF
+ size=32 align=8
+ base size=32 base align=8
+QRectF (0x7f9555ae4d20) 0
+
+Class QLatin1Literal
+ size=16 align=8
+ base size=16 base align=8
+QLatin1Literal (0x7f9555993ee0) 0
+
+Class QAbstractConcatenable
+ size=1 align=1
+ base size=0 base align=1
+QAbstractConcatenable (0x7f95559a43f0) 0 empty
+
+Class QTextBoundaryFinder
+ size=48 align=8
+ base size=48 base align=8
+QTextBoundaryFinder (0x7f95559dc380) 0
+
+Vtable for QTimeLine
+QTimeLine::_ZTV9QTimeLine: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTimeLine)
+16 QTimeLine::metaObject
+24 QTimeLine::qt_metacast
+32 QTimeLine::qt_metacall
+40 QTimeLine::~QTimeLine
+48 QTimeLine::~QTimeLine
+56 QObject::event
+64 QObject::eventFilter
+72 QTimeLine::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QTimeLine::valueForTime
+
+Class QTimeLine
+ size=16 align=8
+ base size=16 base align=8
+QTimeLine (0x7f95559ea700) 0
+ vptr=((& QTimeLine::_ZTV9QTimeLine) + 16u)
+ QObject (0x7f95559ea770) 0
+ primary-for QTimeLine (0x7f95559ea700)
+
+Vtable for QRunnable
+QRunnable::_ZTV9QRunnable: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QRunnable)
+16 __cxa_pure_virtual
+24 QRunnable::~QRunnable
+32 QRunnable::~QRunnable
+
+Class QRunnable
+ size=16 align=8
+ base size=12 base align=8
+QRunnable (0x7f9555a15f50) 0
+ vptr=((& QRunnable::_ZTV9QRunnable) + 16u)
+
+Class QMutex
+ size=8 align=8
+ base size=8 base align=8
+QMutex (0x7f9555a4c620) 0
+
+Class QMutexLocker
+ size=8 align=8
+ base size=8 base align=8
+QMutexLocker (0x7f9555a5b1c0) 0
+
+Vtable for QtConcurrent::Exception
+QtConcurrent::Exception::_ZTVN12QtConcurrent9ExceptionE: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN12QtConcurrent9ExceptionE)
+16 QtConcurrent::Exception::~Exception
+24 QtConcurrent::Exception::~Exception
+32 std::exception::what
+40 QtConcurrent::Exception::raise
+48 QtConcurrent::Exception::clone
+
+Class QtConcurrent::Exception
+ size=8 align=8
+ base size=8 base align=8
+QtConcurrent::Exception (0x7f95558704d0) 0 nearly-empty
+ vptr=((& QtConcurrent::Exception::_ZTVN12QtConcurrent9ExceptionE) + 16u)
+ std::exception (0x7f9555870540) 0 nearly-empty
+ primary-for QtConcurrent::Exception (0x7f95558704d0)
+
+Vtable for QtConcurrent::UnhandledException
+QtConcurrent::UnhandledException::_ZTVN12QtConcurrent18UnhandledExceptionE: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN12QtConcurrent18UnhandledExceptionE)
+16 QtConcurrent::UnhandledException::~UnhandledException
+24 QtConcurrent::UnhandledException::~UnhandledException
+32 std::exception::what
+40 QtConcurrent::UnhandledException::raise
+48 QtConcurrent::UnhandledException::clone
+
+Class QtConcurrent::UnhandledException
+ size=8 align=8
+ base size=8 base align=8
+QtConcurrent::UnhandledException (0x7f9555870770) 0 nearly-empty
+ vptr=((& QtConcurrent::UnhandledException::_ZTVN12QtConcurrent18UnhandledExceptionE) + 16u)
+ QtConcurrent::Exception (0x7f95558707e0) 0 nearly-empty
+ primary-for QtConcurrent::UnhandledException (0x7f9555870770)
+ std::exception (0x7f9555870850) 0 nearly-empty
+ primary-for QtConcurrent::Exception (0x7f95558707e0)
+
+Class QtConcurrent::internal::ExceptionHolder
+ size=8 align=8
+ base size=8 base align=8
+QtConcurrent::internal::ExceptionHolder (0x7f9555870a80) 0
+
+Class QtConcurrent::internal::ExceptionStore
+ size=8 align=8
+ base size=8 base align=8
+QtConcurrent::internal::ExceptionStore (0x7f9555870e00) 0
+
+Class QtConcurrent::ResultItem
+ size=16 align=8
+ base size=16 base align=8
+QtConcurrent::ResultItem (0x7f9555870e70) 0
+
+Class QtConcurrent::ResultIteratorBase
+ size=16 align=8
+ base size=12 base align=8
+QtConcurrent::ResultIteratorBase (0x7f9555888d90) 0
+
+Vtable for QtConcurrent::ResultStoreBase
+QtConcurrent::ResultStoreBase::_ZTVN12QtConcurrent15ResultStoreBaseE: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN12QtConcurrent15ResultStoreBaseE)
+16 QtConcurrent::ResultStoreBase::~ResultStoreBase
+24 QtConcurrent::ResultStoreBase::~ResultStoreBase
+
+Class QtConcurrent::ResultStoreBase
+ size=48 align=8
+ base size=44 base align=8
+QtConcurrent::ResultStoreBase (0x7f955588d930) 0
+ vptr=((& QtConcurrent::ResultStoreBase::_ZTVN12QtConcurrent15ResultStoreBaseE) + 16u)
+
+Vtable for QFutureInterfaceBase
+QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QFutureInterfaceBase)
+16 QFutureInterfaceBase::~QFutureInterfaceBase
+24 QFutureInterfaceBase::~QFutureInterfaceBase
+
+Class QFutureInterfaceBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureInterfaceBase (0x7f95558ccd90) 0
+ vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 16u)
+
+Vtable for QFutureWatcherBase
+QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFutureWatcherBase)
+16 QFutureWatcherBase::metaObject
+24 QFutureWatcherBase::qt_metacast
+32 QFutureWatcherBase::qt_metacall
+40 QFutureWatcherBase::~QFutureWatcherBase
+48 QFutureWatcherBase::~QFutureWatcherBase
+56 QFutureWatcherBase::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QFutureWatcherBase::connectNotify
+104 QFutureWatcherBase::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+
+Class QFutureWatcherBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureWatcherBase (0x7f95557b0690) 0
+ vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 16u)
+ QObject (0x7f95557b0700) 0
+ primary-for QFutureWatcherBase (0x7f95557b0690)
+
+Vtable for QThread
+QThread::_ZTV7QThread: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QThread)
+16 QThread::metaObject
+24 QThread::qt_metacast
+32 QThread::qt_metacall
+40 QThread::~QThread
+48 QThread::~QThread
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QThread::run
+
+Class QThread
+ size=16 align=8
+ base size=16 base align=8
+QThread (0x7f9555802a80) 0
+ vptr=((& QThread::_ZTV7QThread) + 16u)
+ QObject (0x7f9555802af0) 0
+ primary-for QThread (0x7f9555802a80)
+
+Vtable for QThreadPool
+QThreadPool::_ZTV11QThreadPool: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QThreadPool)
+16 QThreadPool::metaObject
+24 QThreadPool::qt_metacast
+32 QThreadPool::qt_metacall
+40 QThreadPool::~QThreadPool
+48 QThreadPool::~QThreadPool
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QThreadPool
+ size=16 align=8
+ base size=16 base align=8
+QThreadPool (0x7f9555829930) 0
+ vptr=((& QThreadPool::_ZTV11QThreadPool) + 16u)
+ QObject (0x7f95558299a0) 0
+ primary-for QThreadPool (0x7f9555829930)
+
+Class QWaitCondition
+ size=8 align=8
+ base size=8 base align=8
+QWaitCondition (0x7f955583aee0) 0
+
+Class QSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSemaphore (0x7f9555845460) 0
+
+Class QtConcurrent::ThreadEngineBarrier
+ size=24 align=8
+ base size=24 base align=8
+QtConcurrent::ThreadEngineBarrier (0x7f95558459a0) 0
+
+Vtable for QtConcurrent::ThreadEngineBase
+QtConcurrent::ThreadEngineBase::_ZTVN12QtConcurrent16ThreadEngineBaseE: 11u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN12QtConcurrent16ThreadEngineBaseE)
+16 QtConcurrent::ThreadEngineBase::run
+24 QtConcurrent::ThreadEngineBase::~ThreadEngineBase
+32 QtConcurrent::ThreadEngineBase::~ThreadEngineBase
+40 QtConcurrent::ThreadEngineBase::start
+48 QtConcurrent::ThreadEngineBase::finish
+56 QtConcurrent::ThreadEngineBase::threadFunction
+64 QtConcurrent::ThreadEngineBase::shouldStartThread
+72 QtConcurrent::ThreadEngineBase::shouldThrottleThread
+80 __cxa_pure_virtual
+
+Class QtConcurrent::ThreadEngineBase
+ size=64 align=8
+ base size=64 base align=8
+QtConcurrent::ThreadEngineBase (0x7f9555845a80) 0
+ vptr=((& QtConcurrent::ThreadEngineBase::_ZTVN12QtConcurrent16ThreadEngineBaseE) + 16u)
+ QRunnable (0x7f9555845af0) 0
+ primary-for QtConcurrent::ThreadEngineBase (0x7f9555845a80)
+
+VTT for QtConcurrent::ThreadEngine<void>
+QtConcurrent::ThreadEngine<void>::_ZTTN12QtConcurrent12ThreadEngineIvEE: 2u entries
+0 ((& QtConcurrent::ThreadEngine<void>::_ZTVN12QtConcurrent12ThreadEngineIvEE) + 24u)
+8 ((& QtConcurrent::ThreadEngine<void>::_ZTVN12QtConcurrent12ThreadEngineIvEE) + 136u)
+
+Class QtConcurrent::BlockSizeManager
+ size=96 align=8
+ base size=92 base align=8
+QtConcurrent::BlockSizeManager (0x7f955568fee0) 0
+
+Vtable for QFactoryInterface
+QFactoryInterface::_ZTV17QFactoryInterface: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QFactoryInterface)
+16 QFactoryInterface::~QFactoryInterface
+24 QFactoryInterface::~QFactoryInterface
+32 __cxa_pure_virtual
+
+Class QFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QFactoryInterface (0x7f9555339d20) 0 nearly-empty
+ vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 16u)
+
+Vtable for QTextCodecFactoryInterface
+QTextCodecFactoryInterface::_ZTV26QTextCodecFactoryInterface: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QTextCodecFactoryInterface)
+16 QTextCodecFactoryInterface::~QTextCodecFactoryInterface
+24 QTextCodecFactoryInterface::~QTextCodecFactoryInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QTextCodecFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QTextCodecFactoryInterface (0x7f955516d000) 0 nearly-empty
+ vptr=((& QTextCodecFactoryInterface::_ZTV26QTextCodecFactoryInterface) + 16u)
+ QFactoryInterface (0x7f955516d070) 0 nearly-empty
+ primary-for QTextCodecFactoryInterface (0x7f955516d000)
+
+Vtable for QTextCodecPlugin
+QTextCodecPlugin::_ZTV16QTextCodecPlugin: 27u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QTextCodecPlugin)
+16 QTextCodecPlugin::metaObject
+24 QTextCodecPlugin::qt_metacast
+32 QTextCodecPlugin::qt_metacall
+40 QTextCodecPlugin::~QTextCodecPlugin
+48 QTextCodecPlugin::~QTextCodecPlugin
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 QTextCodecPlugin::keys
+160 QTextCodecPlugin::create
+168 (int (*)(...))-0x00000000000000010
+176 (int (*)(...))(& _ZTI16QTextCodecPlugin)
+184 QTextCodecPlugin::_ZThn16_N16QTextCodecPluginD1Ev
+192 QTextCodecPlugin::_ZThn16_N16QTextCodecPluginD0Ev
+200 QTextCodecPlugin::_ZThn16_NK16QTextCodecPlugin4keysEv
+208 QTextCodecPlugin::_ZThn16_N16QTextCodecPlugin6createERK7QString
+
+Class QTextCodecPlugin
+ size=24 align=8
+ base size=24 base align=8
+QTextCodecPlugin (0x7f9555175580) 0
+ vptr=((& QTextCodecPlugin::_ZTV16QTextCodecPlugin) + 16u)
+ QObject (0x7f955516da80) 0
+ primary-for QTextCodecPlugin (0x7f9555175580)
+ QTextCodecFactoryInterface (0x7f955516daf0) 16 nearly-empty
+ vptr=((& QTextCodecPlugin::_ZTV16QTextCodecPlugin) + 184u)
+ QFactoryInterface (0x7f955516db60) 16 nearly-empty
+ primary-for QTextCodecFactoryInterface (0x7f955516daf0)
+
+Class QLibraryInfo
+ size=1 align=1
+ base size=0 base align=1
+QLibraryInfo (0x7f95551c5150) 0 empty
+
+Vtable for QEventLoop
+QEventLoop::_ZTV10QEventLoop: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QEventLoop)
+16 QEventLoop::metaObject
+24 QEventLoop::qt_metacast
+32 QEventLoop::qt_metacall
+40 QEventLoop::~QEventLoop
+48 QEventLoop::~QEventLoop
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QEventLoop
+ size=16 align=8
+ base size=16 base align=8
+QEventLoop (0x7f95551c52a0) 0
+ vptr=((& QEventLoop::_ZTV10QEventLoop) + 16u)
+ QObject (0x7f95551c5310) 0
+ primary-for QEventLoop (0x7f95551c52a0)
+
+Vtable for QAbstractEventDispatcher
+QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 27u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
+16 QAbstractEventDispatcher::metaObject
+24 QAbstractEventDispatcher::qt_metacast
+32 QAbstractEventDispatcher::qt_metacall
+40 QAbstractEventDispatcher::~QAbstractEventDispatcher
+48 QAbstractEventDispatcher::~QAbstractEventDispatcher
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 __cxa_pure_virtual
+160 __cxa_pure_virtual
+168 __cxa_pure_virtual
+176 __cxa_pure_virtual
+184 __cxa_pure_virtual
+192 __cxa_pure_virtual
+200 QAbstractEventDispatcher::startingUp
+208 QAbstractEventDispatcher::closingDown
+
+Class QAbstractEventDispatcher
+ size=16 align=8
+ base size=16 base align=8
+QAbstractEventDispatcher (0x7f95551fdbd0) 0
+ vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 16u)
+ QObject (0x7f95551fdc40) 0
+ primary-for QAbstractEventDispatcher (0x7f95551fdbd0)
+
+Class QModelIndex
+ size=24 align=8
+ base size=24 base align=8
+QModelIndex (0x7f9555225a80) 0
+
+Class QPersistentModelIndex
+ size=8 align=8
+ base size=8 base align=8
+QPersistentModelIndex (0x7f9555250540) 0
+
+Vtable for QAbstractItemModel
+QAbstractItemModel::_ZTV18QAbstractItemModel: 42u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractItemModel)
+16 QAbstractItemModel::metaObject
+24 QAbstractItemModel::qt_metacast
+32 QAbstractItemModel::qt_metacall
+40 QAbstractItemModel::~QAbstractItemModel
+48 QAbstractItemModel::~QAbstractItemModel
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 QAbstractItemModel::hasChildren
+152 __cxa_pure_virtual
+160 QAbstractItemModel::setData
+168 QAbstractItemModel::headerData
+176 QAbstractItemModel::setHeaderData
+184 QAbstractItemModel::itemData
+192 QAbstractItemModel::setItemData
+200 QAbstractItemModel::mimeTypes
+208 QAbstractItemModel::mimeData
+216 QAbstractItemModel::dropMimeData
+224 QAbstractItemModel::supportedDropActions
+232 QAbstractItemModel::insertRows
+240 QAbstractItemModel::insertColumns
+248 QAbstractItemModel::removeRows
+256 QAbstractItemModel::removeColumns
+264 QAbstractItemModel::fetchMore
+272 QAbstractItemModel::canFetchMore
+280 QAbstractItemModel::flags
+288 QAbstractItemModel::sort
+296 QAbstractItemModel::buddy
+304 QAbstractItemModel::match
+312 QAbstractItemModel::span
+320 QAbstractItemModel::submit
+328 QAbstractItemModel::revert
+
+Class QAbstractItemModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractItemModel (0x7f9555259850) 0
+ vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 16u)
+ QObject (0x7f95552598c0) 0
+ primary-for QAbstractItemModel (0x7f9555259850)
+
+Vtable for QAbstractTableModel
+QAbstractTableModel::_ZTV19QAbstractTableModel: 42u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTableModel)
+16 QAbstractTableModel::metaObject
+24 QAbstractTableModel::qt_metacast
+32 QAbstractTableModel::qt_metacall
+40 QAbstractTableModel::~QAbstractTableModel
+48 QAbstractTableModel::~QAbstractTableModel
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QAbstractTableModel::index
+120 QAbstractTableModel::parent
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 QAbstractTableModel::hasChildren
+152 __cxa_pure_virtual
+160 QAbstractItemModel::setData
+168 QAbstractItemModel::headerData
+176 QAbstractItemModel::setHeaderData
+184 QAbstractItemModel::itemData
+192 QAbstractItemModel::setItemData
+200 QAbstractItemModel::mimeTypes
+208 QAbstractItemModel::mimeData
+216 QAbstractTableModel::dropMimeData
+224 QAbstractItemModel::supportedDropActions
+232 QAbstractItemModel::insertRows
+240 QAbstractItemModel::insertColumns
+248 QAbstractItemModel::removeRows
+256 QAbstractItemModel::removeColumns
+264 QAbstractItemModel::fetchMore
+272 QAbstractItemModel::canFetchMore
+280 QAbstractItemModel::flags
+288 QAbstractItemModel::sort
+296 QAbstractItemModel::buddy
+304 QAbstractItemModel::match
+312 QAbstractItemModel::span
+320 QAbstractItemModel::submit
+328 QAbstractItemModel::revert
+
+Class QAbstractTableModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTableModel (0x7f95550b6b60) 0
+ vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16u)
+ QAbstractItemModel (0x7f95550b6bd0) 0
+ primary-for QAbstractTableModel (0x7f95550b6b60)
+ QObject (0x7f95550b6c40) 0
+ primary-for QAbstractItemModel (0x7f95550b6bd0)
+
+Vtable for QAbstractListModel
+QAbstractListModel::_ZTV18QAbstractListModel: 42u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractListModel)
+16 QAbstractListModel::metaObject
+24 QAbstractListModel::qt_metacast
+32 QAbstractListModel::qt_metacall
+40 QAbstractListModel::~QAbstractListModel
+48 QAbstractListModel::~QAbstractListModel
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QAbstractListModel::index
+120 QAbstractListModel::parent
+128 __cxa_pure_virtual
+136 QAbstractListModel::columnCount
+144 QAbstractListModel::hasChildren
+152 __cxa_pure_virtual
+160 QAbstractItemModel::setData
+168 QAbstractItemModel::headerData
+176 QAbstractItemModel::setHeaderData
+184 QAbstractItemModel::itemData
+192 QAbstractItemModel::setItemData
+200 QAbstractItemModel::mimeTypes
+208 QAbstractItemModel::mimeData
+216 QAbstractListModel::dropMimeData
+224 QAbstractItemModel::supportedDropActions
+232 QAbstractItemModel::insertRows
+240 QAbstractItemModel::insertColumns
+248 QAbstractItemModel::removeRows
+256 QAbstractItemModel::removeColumns
+264 QAbstractItemModel::fetchMore
+272 QAbstractItemModel::canFetchMore
+280 QAbstractItemModel::flags
+288 QAbstractItemModel::sort
+296 QAbstractItemModel::buddy
+304 QAbstractItemModel::match
+312 QAbstractItemModel::span
+320 QAbstractItemModel::submit
+328 QAbstractItemModel::revert
+
+Class QAbstractListModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractListModel (0x7f95550d10e0) 0
+ vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16u)
+ QAbstractItemModel (0x7f95550d1150) 0
+ primary-for QAbstractListModel (0x7f95550d10e0)
+ QObject (0x7f95550d11c0) 0
+ primary-for QAbstractItemModel (0x7f95550d1150)
+
+Class QBasicTimer
+ size=4 align=4
+ base size=4 base align=4
+QBasicTimer (0x7f9555103230) 0
+
+Vtable for QCoreApplication
+QCoreApplication::_ZTV16QCoreApplication: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QCoreApplication)
+16 QCoreApplication::metaObject
+24 QCoreApplication::qt_metacast
+32 QCoreApplication::qt_metacall
+40 QCoreApplication::~QCoreApplication
+48 QCoreApplication::~QCoreApplication
+56 QCoreApplication::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QCoreApplication::notify
+120 QCoreApplication::compressEvent
+
+Class QCoreApplication
+ size=16 align=8
+ base size=16 base align=8
+QCoreApplication (0x7f955510d620) 0
+ vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 16u)
+ QObject (0x7f955510d690) 0
+ primary-for QCoreApplication (0x7f955510d620)
+
+Class __exception
+ size=40 align=8
+ base size=40 base align=8
+__exception (0x7f9555142310) 0
+
+Class QMetaMethod
+ size=16 align=8
+ base size=12 base align=8
+QMetaMethod (0x7f9554faf770) 0
+
+Class QMetaEnum
+ size=16 align=8
+ base size=12 base align=8
+QMetaEnum (0x7f9554fc7bd0) 0
+
+Class QMetaProperty
+ size=32 align=8
+ base size=32 base align=8
+QMetaProperty (0x7f9554fd7930) 0
+
+Class QMetaClassInfo
+ size=16 align=8
+ base size=12 base align=8
+QMetaClassInfo (0x7f9554fe8000) 0
+
+Vtable for QMimeData
+QMimeData::_ZTV9QMimeData: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QMimeData)
+16 QMimeData::metaObject
+24 QMimeData::qt_metacast
+32 QMimeData::qt_metacall
+40 QMimeData::~QMimeData
+48 QMimeData::~QMimeData
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QMimeData::hasFormat
+120 QMimeData::formats
+128 QMimeData::retrieveData
+
+Class QMimeData
+ size=16 align=8
+ base size=16 base align=8
+QMimeData (0x7f9554fe8af0) 0
+ vptr=((& QMimeData::_ZTV9QMimeData) + 16u)
+ QObject (0x7f9554fe8b60) 0
+ primary-for QMimeData (0x7f9554fe8af0)
+
+Vtable for QObjectCleanupHandler
+QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QObjectCleanupHandler)
+16 QObjectCleanupHandler::metaObject
+24 QObjectCleanupHandler::qt_metacast
+32 QObjectCleanupHandler::qt_metacall
+40 QObjectCleanupHandler::~QObjectCleanupHandler
+48 QObjectCleanupHandler::~QObjectCleanupHandler
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QObjectCleanupHandler
+ size=24 align=8
+ base size=24 base align=8
+QObjectCleanupHandler (0x7f955500b380) 0
+ vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 16u)
+ QObject (0x7f955500b3f0) 0
+ primary-for QObjectCleanupHandler (0x7f955500b380)
+
+Vtable for QSharedMemory
+QSharedMemory::_ZTV13QSharedMemory: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSharedMemory)
+16 QSharedMemory::metaObject
+24 QSharedMemory::qt_metacast
+32 QSharedMemory::qt_metacall
+40 QSharedMemory::~QSharedMemory
+48 QSharedMemory::~QSharedMemory
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QSharedMemory
+ size=16 align=8
+ base size=16 base align=8
+QSharedMemory (0x7f955501e4d0) 0
+ vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 16u)
+ QObject (0x7f955501e540) 0
+ primary-for QSharedMemory (0x7f955501e4d0)
+
+Vtable for QSignalMapper
+QSignalMapper::_ZTV13QSignalMapper: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSignalMapper)
+16 QSignalMapper::metaObject
+24 QSignalMapper::qt_metacast
+32 QSignalMapper::qt_metacall
+40 QSignalMapper::~QSignalMapper
+48 QSignalMapper::~QSignalMapper
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QSignalMapper
+ size=16 align=8
+ base size=16 base align=8
+QSignalMapper (0x7f955503c2a0) 0
+ vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 16u)
+ QObject (0x7f955503c310) 0
+ primary-for QSignalMapper (0x7f955503c2a0)
+
+Vtable for QSocketNotifier
+QSocketNotifier::_ZTV15QSocketNotifier: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSocketNotifier)
+16 QSocketNotifier::metaObject
+24 QSocketNotifier::qt_metacast
+32 QSocketNotifier::qt_metacall
+40 QSocketNotifier::~QSocketNotifier
+48 QSocketNotifier::~QSocketNotifier
+56 QSocketNotifier::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QSocketNotifier
+ size=32 align=8
+ base size=25 base align=8
+QSocketNotifier (0x7f9555054690) 0
+ vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 16u)
+ QObject (0x7f9555054700) 0
+ primary-for QSocketNotifier (0x7f9555054690)
+
+Class QSystemSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSystemSemaphore (0x7f9554e6da10) 0
+
+Vtable for QTimer
+QTimer::_ZTV6QTimer: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QTimer)
+16 QTimer::metaObject
+24 QTimer::qt_metacast
+32 QTimer::qt_metacall
+40 QTimer::~QTimer
+48 QTimer::~QTimer
+56 QObject::event
+64 QObject::eventFilter
+72 QTimer::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QTimer
+ size=32 align=8
+ base size=29 base align=8
+QTimer (0x7f9554e77460) 0
+ vptr=((& QTimer::_ZTV6QTimer) + 16u)
+ QObject (0x7f9554e774d0) 0
+ primary-for QTimer (0x7f9554e77460)
+
+Vtable for QTranslator
+QTranslator::_ZTV11QTranslator: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTranslator)
+16 QTranslator::metaObject
+24 QTranslator::qt_metacast
+32 QTranslator::qt_metacall
+40 QTranslator::~QTranslator
+48 QTranslator::~QTranslator
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QTranslator::translate
+120 QTranslator::isEmpty
+
+Class QTranslator
+ size=16 align=8
+ base size=16 base align=8
+QTranslator (0x7f9554e9e9a0) 0
+ vptr=((& QTranslator::_ZTV11QTranslator) + 16u)
+ QObject (0x7f9554e9ea10) 0
+ primary-for QTranslator (0x7f9554e9e9a0)
+
+Vtable for QLibrary
+QLibrary::_ZTV8QLibrary: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QLibrary)
+16 QLibrary::metaObject
+24 QLibrary::qt_metacast
+32 QLibrary::qt_metacall
+40 QLibrary::~QLibrary
+48 QLibrary::~QLibrary
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QLibrary
+ size=32 align=8
+ base size=25 base align=8
+QLibrary (0x7f9554eb8930) 0
+ vptr=((& QLibrary::_ZTV8QLibrary) + 16u)
+ QObject (0x7f9554eb89a0) 0
+ primary-for QLibrary (0x7f9554eb8930)
+
+Vtable for QPluginLoader
+QPluginLoader::_ZTV13QPluginLoader: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QPluginLoader)
+16 QPluginLoader::metaObject
+24 QPluginLoader::qt_metacast
+32 QPluginLoader::qt_metacall
+40 QPluginLoader::~QPluginLoader
+48 QPluginLoader::~QPluginLoader
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QPluginLoader
+ size=32 align=8
+ base size=25 base align=8
+QPluginLoader (0x7f9554f053f0) 0
+ vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 16u)
+ QObject (0x7f9554f05460) 0
+ primary-for QPluginLoader (0x7f9554f053f0)
+
+Class QUuid
+ size=16 align=4
+ base size=16 base align=4
+QUuid (0x7f9554f13b60) 0
+
+Class QReadWriteLock
+ size=8 align=8
+ base size=8 base align=8
+QReadWriteLock (0x7f9554f3d4d0) 0
+
+Class QReadLocker
+ size=8 align=8
+ base size=8 base align=8
+QReadLocker (0x7f9554f3db60) 0
+
+Class QWriteLocker
+ size=8 align=8
+ base size=8 base align=8
+QWriteLocker (0x7f9554f5aee0) 0
+
+Class QThreadStorageData
+ size=4 align=4
+ base size=4 base align=4
+QThreadStorageData (0x7f9554d742a0) 0
+
+Vtable for QAbstractAnimation
+QAbstractAnimation::_ZTV18QAbstractAnimation: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractAnimation)
+16 QAbstractAnimation::metaObject
+24 QAbstractAnimation::qt_metacast
+32 QAbstractAnimation::qt_metacall
+40 QAbstractAnimation::~QAbstractAnimation
+48 QAbstractAnimation::~QAbstractAnimation
+56 QAbstractAnimation::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 QAbstractAnimation::updateState
+136 QAbstractAnimation::updateDirection
+
+Class QAbstractAnimation
+ size=16 align=8
+ base size=16 base align=8
+QAbstractAnimation (0x7f9554d74a10) 0
+ vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 16u)
+ QObject (0x7f9554d74a80) 0
+ primary-for QAbstractAnimation (0x7f9554d74a10)
+
+Vtable for QAnimationGroup
+QAnimationGroup::_ZTV15QAnimationGroup: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAnimationGroup)
+16 QAnimationGroup::metaObject
+24 QAnimationGroup::qt_metacast
+32 QAnimationGroup::qt_metacall
+40 QAnimationGroup::~QAnimationGroup
+48 QAnimationGroup::~QAnimationGroup
+56 QAnimationGroup::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 QAbstractAnimation::updateState
+136 QAbstractAnimation::updateDirection
+
+Class QAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QAnimationGroup (0x7f9554dac150) 0
+ vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16u)
+ QAbstractAnimation (0x7f9554dac1c0) 0
+ primary-for QAnimationGroup (0x7f9554dac150)
+ QObject (0x7f9554dac230) 0
+ primary-for QAbstractAnimation (0x7f9554dac1c0)
+
+Vtable for QParallelAnimationGroup
+QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QParallelAnimationGroup)
+16 QParallelAnimationGroup::metaObject
+24 QParallelAnimationGroup::qt_metacast
+32 QParallelAnimationGroup::qt_metacall
+40 QParallelAnimationGroup::~QParallelAnimationGroup
+48 QParallelAnimationGroup::~QParallelAnimationGroup
+56 QParallelAnimationGroup::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QParallelAnimationGroup::duration
+120 QParallelAnimationGroup::updateCurrentTime
+128 QParallelAnimationGroup::updateState
+136 QParallelAnimationGroup::updateDirection
+
+Class QParallelAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QParallelAnimationGroup (0x7f9554dc4000) 0
+ vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16u)
+ QAnimationGroup (0x7f9554dc4070) 0
+ primary-for QParallelAnimationGroup (0x7f9554dc4000)
+ QAbstractAnimation (0x7f9554dc40e0) 0
+ primary-for QAnimationGroup (0x7f9554dc4070)
+ QObject (0x7f9554dc4150) 0
+ primary-for QAbstractAnimation (0x7f9554dc40e0)
+
+Vtable for QPauseAnimation
+QPauseAnimation::_ZTV15QPauseAnimation: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QPauseAnimation)
+16 QPauseAnimation::metaObject
+24 QPauseAnimation::qt_metacast
+32 QPauseAnimation::qt_metacall
+40 QPauseAnimation::~QPauseAnimation
+48 QPauseAnimation::~QPauseAnimation
+56 QPauseAnimation::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QPauseAnimation::duration
+120 QPauseAnimation::updateCurrentTime
+128 QAbstractAnimation::updateState
+136 QAbstractAnimation::updateDirection
+
+Class QPauseAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPauseAnimation (0x7f9554dd2e70) 0
+ vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16u)
+ QAbstractAnimation (0x7f9554dd2ee0) 0
+ primary-for QPauseAnimation (0x7f9554dd2e70)
+ QObject (0x7f9554dd2f50) 0
+ primary-for QAbstractAnimation (0x7f9554dd2ee0)
+
+Vtable for QVariantAnimation
+QVariantAnimation::_ZTV17QVariantAnimation: 20u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QVariantAnimation)
+16 QVariantAnimation::metaObject
+24 QVariantAnimation::qt_metacast
+32 QVariantAnimation::qt_metacall
+40 QVariantAnimation::~QVariantAnimation
+48 QVariantAnimation::~QVariantAnimation
+56 QVariantAnimation::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QVariantAnimation::duration
+120 QVariantAnimation::updateCurrentTime
+128 QVariantAnimation::updateState
+136 QAbstractAnimation::updateDirection
+144 __cxa_pure_virtual
+152 QVariantAnimation::interpolated
+
+Class QVariantAnimation
+ size=16 align=8
+ base size=16 base align=8
+QVariantAnimation (0x7f9554def8c0) 0
+ vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16u)
+ QAbstractAnimation (0x7f9554def930) 0
+ primary-for QVariantAnimation (0x7f9554def8c0)
+ QObject (0x7f9554def9a0) 0
+ primary-for QAbstractAnimation (0x7f9554def930)
+
+Vtable for QPropertyAnimation
+QPropertyAnimation::_ZTV18QPropertyAnimation: 20u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QPropertyAnimation)
+16 QPropertyAnimation::metaObject
+24 QPropertyAnimation::qt_metacast
+32 QPropertyAnimation::qt_metacall
+40 QPropertyAnimation::~QPropertyAnimation
+48 QPropertyAnimation::~QPropertyAnimation
+56 QPropertyAnimation::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QVariantAnimation::duration
+120 QVariantAnimation::updateCurrentTime
+128 QPropertyAnimation::updateState
+136 QAbstractAnimation::updateDirection
+144 QPropertyAnimation::updateCurrentValue
+152 QVariantAnimation::interpolated
+
+Class QPropertyAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPropertyAnimation (0x7f9554e0fb60) 0
+ vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16u)
+ QVariantAnimation (0x7f9554e0fbd0) 0
+ primary-for QPropertyAnimation (0x7f9554e0fb60)
+ QAbstractAnimation (0x7f9554e0fc40) 0
+ primary-for QVariantAnimation (0x7f9554e0fbd0)
+ QObject (0x7f9554e0fcb0) 0
+ primary-for QAbstractAnimation (0x7f9554e0fc40)
+
+Vtable for QSequentialAnimationGroup
+QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QSequentialAnimationGroup)
+16 QSequentialAnimationGroup::metaObject
+24 QSequentialAnimationGroup::qt_metacast
+32 QSequentialAnimationGroup::qt_metacall
+40 QSequentialAnimationGroup::~QSequentialAnimationGroup
+48 QSequentialAnimationGroup::~QSequentialAnimationGroup
+56 QSequentialAnimationGroup::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QSequentialAnimationGroup::duration
+120 QSequentialAnimationGroup::updateCurrentTime
+128 QSequentialAnimationGroup::updateState
+136 QSequentialAnimationGroup::updateDirection
+
+Class QSequentialAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QSequentialAnimationGroup (0x7f9554e27b60) 0
+ vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16u)
+ QAnimationGroup (0x7f9554e27bd0) 0
+ primary-for QSequentialAnimationGroup (0x7f9554e27b60)
+ QAbstractAnimation (0x7f9554e27c40) 0
+ primary-for QAnimationGroup (0x7f9554e27bd0)
+ QObject (0x7f9554e27cb0) 0
+ primary-for QAbstractAnimation (0x7f9554e27c40)
+
+Class QColor
+ size=16 align=4
+ base size=14 base align=4
+QColor (0x7f9554e51620) 0
+
+Class QRegion::QRegionData
+ size=32 align=8
+ base size=32 base align=8
+QRegion::QRegionData (0x7f9554cc85b0) 0
+
+Class QRegion
+ size=8 align=8
+ base size=8 base align=8
+QRegion (0x7f9554ca4cb0) 0
+
+Class QKeySequence
+ size=8 align=8
+ base size=8 base align=8
+QKeySequence (0x7f9554cdee00) 0
+
+Vtable for QMimeSource
+QMimeSource::_ZTV11QMimeSource: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMimeSource)
+16 QMimeSource::~QMimeSource
+24 QMimeSource::~QMimeSource
+32 __cxa_pure_virtual
+40 QMimeSource::provides
+48 __cxa_pure_virtual
+
+Class QMimeSource
+ size=8 align=8
+ base size=8 base align=8
+QMimeSource (0x7f9554d1c770) 0 nearly-empty
+ vptr=((& QMimeSource::_ZTV11QMimeSource) + 16u)
+
+Vtable for QDrag
+QDrag::_ZTV5QDrag: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QDrag)
+16 QDrag::metaObject
+24 QDrag::qt_metacast
+32 QDrag::qt_metacall
+40 QDrag::~QDrag
+48 QDrag::~QDrag
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QDrag
+ size=16 align=8
+ base size=16 base align=8
+QDrag (0x7f9554d1c8c0) 0
+ vptr=((& QDrag::_ZTV5QDrag) + 16u)
+ QObject (0x7f9554d1c930) 0
+ primary-for QDrag (0x7f9554d1c8c0)
+
+Vtable for QInputEvent
+QInputEvent::_ZTV11QInputEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QInputEvent)
+16 QInputEvent::~QInputEvent
+24 QInputEvent::~QInputEvent
+
+Class QInputEvent
+ size=24 align=8
+ base size=24 base align=8
+QInputEvent (0x7f9554d43070) 0
+ vptr=((& QInputEvent::_ZTV11QInputEvent) + 16u)
+ QEvent (0x7f9554d430e0) 0
+ primary-for QInputEvent (0x7f9554d43070)
+
+Vtable for QMouseEvent
+QMouseEvent::_ZTV11QMouseEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMouseEvent)
+16 QMouseEvent::~QMouseEvent
+24 QMouseEvent::~QMouseEvent
+
+Class QMouseEvent
+ size=48 align=8
+ base size=48 base align=8
+QMouseEvent (0x7f9554d43930) 0
+ vptr=((& QMouseEvent::_ZTV11QMouseEvent) + 16u)
+ QInputEvent (0x7f9554d439a0) 0
+ primary-for QMouseEvent (0x7f9554d43930)
+ QEvent (0x7f9554d43a10) 0
+ primary-for QInputEvent (0x7f9554d439a0)
+
+Vtable for QHoverEvent
+QHoverEvent::_ZTV11QHoverEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QHoverEvent)
+16 QHoverEvent::~QHoverEvent
+24 QHoverEvent::~QHoverEvent
+
+Class QHoverEvent
+ size=40 align=8
+ base size=36 base align=8
+QHoverEvent (0x7f9554b71700) 0
+ vptr=((& QHoverEvent::_ZTV11QHoverEvent) + 16u)
+ QEvent (0x7f9554b71770) 0
+ primary-for QHoverEvent (0x7f9554b71700)
+
+Vtable for QWheelEvent
+QWheelEvent::_ZTV11QWheelEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QWheelEvent)
+16 QWheelEvent::~QWheelEvent
+24 QWheelEvent::~QWheelEvent
+
+Class QWheelEvent
+ size=56 align=8
+ base size=52 base align=8
+QWheelEvent (0x7f9554b71e70) 0
+ vptr=((& QWheelEvent::_ZTV11QWheelEvent) + 16u)
+ QInputEvent (0x7f9554b71ee0) 0
+ primary-for QWheelEvent (0x7f9554b71e70)
+ QEvent (0x7f9554b71f50) 0
+ primary-for QInputEvent (0x7f9554b71ee0)
+
+Vtable for QTabletEvent
+QTabletEvent::_ZTV12QTabletEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTabletEvent)
+16 QTabletEvent::~QTabletEvent
+24 QTabletEvent::~QTabletEvent
+
+Class QTabletEvent
+ size=120 align=8
+ base size=120 base align=8
+QTabletEvent (0x7f9554b8ac40) 0
+ vptr=((& QTabletEvent::_ZTV12QTabletEvent) + 16u)
+ QInputEvent (0x7f9554b8acb0) 0
+ primary-for QTabletEvent (0x7f9554b8ac40)
+ QEvent (0x7f9554b8ad20) 0
+ primary-for QInputEvent (0x7f9554b8acb0)
+
+Vtable for QKeyEvent
+QKeyEvent::_ZTV9QKeyEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QKeyEvent)
+16 QKeyEvent::~QKeyEvent
+24 QKeyEvent::~QKeyEvent
+
+Class QKeyEvent
+ size=40 align=8
+ base size=39 base align=8
+QKeyEvent (0x7f9554ba9f50) 0
+ vptr=((& QKeyEvent::_ZTV9QKeyEvent) + 16u)
+ QInputEvent (0x7f9554bae000) 0
+ primary-for QKeyEvent (0x7f9554ba9f50)
+ QEvent (0x7f9554bae070) 0
+ primary-for QInputEvent (0x7f9554bae000)
+
+Vtable for QFocusEvent
+QFocusEvent::_ZTV11QFocusEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFocusEvent)
+16 QFocusEvent::~QFocusEvent
+24 QFocusEvent::~QFocusEvent
+
+Class QFocusEvent
+ size=24 align=8
+ base size=24 base align=8
+QFocusEvent (0x7f9554bd1930) 0
+ vptr=((& QFocusEvent::_ZTV11QFocusEvent) + 16u)
+ QEvent (0x7f9554bd19a0) 0
+ primary-for QFocusEvent (0x7f9554bd1930)
+
+Vtable for QPaintEvent
+QPaintEvent::_ZTV11QPaintEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QPaintEvent)
+16 QPaintEvent::~QPaintEvent
+24 QPaintEvent::~QPaintEvent
+
+Class QPaintEvent
+ size=56 align=8
+ base size=49 base align=8
+QPaintEvent (0x7f9554bdf380) 0
+ vptr=((& QPaintEvent::_ZTV11QPaintEvent) + 16u)
+ QEvent (0x7f9554bdf3f0) 0
+ primary-for QPaintEvent (0x7f9554bdf380)
+
+Vtable for QUpdateLaterEvent
+QUpdateLaterEvent::_ZTV17QUpdateLaterEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QUpdateLaterEvent)
+16 QUpdateLaterEvent::~QUpdateLaterEvent
+24 QUpdateLaterEvent::~QUpdateLaterEvent
+
+Class QUpdateLaterEvent
+ size=32 align=8
+ base size=32 base align=8
+QUpdateLaterEvent (0x7f9554bea000) 0
+ vptr=((& QUpdateLaterEvent::_ZTV17QUpdateLaterEvent) + 16u)
+ QEvent (0x7f9554bea070) 0
+ primary-for QUpdateLaterEvent (0x7f9554bea000)
+
+Vtable for QMoveEvent
+QMoveEvent::_ZTV10QMoveEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QMoveEvent)
+16 QMoveEvent::~QMoveEvent
+24 QMoveEvent::~QMoveEvent
+
+Class QMoveEvent
+ size=40 align=8
+ base size=36 base align=8
+QMoveEvent (0x7f9554bea460) 0
+ vptr=((& QMoveEvent::_ZTV10QMoveEvent) + 16u)
+ QEvent (0x7f9554bea4d0) 0
+ primary-for QMoveEvent (0x7f9554bea460)
+
+Vtable for QResizeEvent
+QResizeEvent::_ZTV12QResizeEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QResizeEvent)
+16 QResizeEvent::~QResizeEvent
+24 QResizeEvent::~QResizeEvent
+
+Class QResizeEvent
+ size=40 align=8
+ base size=36 base align=8
+QResizeEvent (0x7f9554beaaf0) 0
+ vptr=((& QResizeEvent::_ZTV12QResizeEvent) + 16u)
+ QEvent (0x7f9554beab60) 0
+ primary-for QResizeEvent (0x7f9554beaaf0)
+
+Vtable for QCloseEvent
+QCloseEvent::_ZTV11QCloseEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QCloseEvent)
+16 QCloseEvent::~QCloseEvent
+24 QCloseEvent::~QCloseEvent
+
+Class QCloseEvent
+ size=24 align=8
+ base size=20 base align=8
+QCloseEvent (0x7f9554bfc070) 0
+ vptr=((& QCloseEvent::_ZTV11QCloseEvent) + 16u)
+ QEvent (0x7f9554bfc0e0) 0
+ primary-for QCloseEvent (0x7f9554bfc070)
+
+Vtable for QIconDragEvent
+QIconDragEvent::_ZTV14QIconDragEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QIconDragEvent)
+16 QIconDragEvent::~QIconDragEvent
+24 QIconDragEvent::~QIconDragEvent
+
+Class QIconDragEvent
+ size=24 align=8
+ base size=20 base align=8
+QIconDragEvent (0x7f9554bfc2a0) 0
+ vptr=((& QIconDragEvent::_ZTV14QIconDragEvent) + 16u)
+ QEvent (0x7f9554bfc310) 0
+ primary-for QIconDragEvent (0x7f9554bfc2a0)
+
+Vtable for QShowEvent
+QShowEvent::_ZTV10QShowEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QShowEvent)
+16 QShowEvent::~QShowEvent
+24 QShowEvent::~QShowEvent
+
+Class QShowEvent
+ size=24 align=8
+ base size=20 base align=8
+QShowEvent (0x7f9554bfc4d0) 0
+ vptr=((& QShowEvent::_ZTV10QShowEvent) + 16u)
+ QEvent (0x7f9554bfc540) 0
+ primary-for QShowEvent (0x7f9554bfc4d0)
+
+Vtable for QHideEvent
+QHideEvent::_ZTV10QHideEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QHideEvent)
+16 QHideEvent::~QHideEvent
+24 QHideEvent::~QHideEvent
+
+Class QHideEvent
+ size=24 align=8
+ base size=20 base align=8
+QHideEvent (0x7f9554bfc700) 0
+ vptr=((& QHideEvent::_ZTV10QHideEvent) + 16u)
+ QEvent (0x7f9554bfc770) 0
+ primary-for QHideEvent (0x7f9554bfc700)
+
+Vtable for QContextMenuEvent
+QContextMenuEvent::_ZTV17QContextMenuEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QContextMenuEvent)
+16 QContextMenuEvent::~QContextMenuEvent
+24 QContextMenuEvent::~QContextMenuEvent
+
+Class QContextMenuEvent
+ size=48 align=8
+ base size=41 base align=8
+QContextMenuEvent (0x7f9554bfc930) 0
+ vptr=((& QContextMenuEvent::_ZTV17QContextMenuEvent) + 16u)
+ QInputEvent (0x7f9554bfc9a0) 0
+ primary-for QContextMenuEvent (0x7f9554bfc930)
+ QEvent (0x7f9554bfca10) 0
+ primary-for QInputEvent (0x7f9554bfc9a0)
+
+Class QInputMethodEvent::Attribute
+ size=32 align=8
+ base size=32 base align=8
+QInputMethodEvent::Attribute (0x7f9554c174d0) 0
+
+Vtable for QInputMethodEvent
+QInputMethodEvent::_ZTV17QInputMethodEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QInputMethodEvent)
+16 QInputMethodEvent::~QInputMethodEvent
+24 QInputMethodEvent::~QInputMethodEvent
+
+Class QInputMethodEvent
+ size=56 align=8
+ base size=56 base align=8
+QInputMethodEvent (0x7f9554c173f0) 0
+ vptr=((& QInputMethodEvent::_ZTV17QInputMethodEvent) + 16u)
+ QEvent (0x7f9554c17460) 0
+ primary-for QInputMethodEvent (0x7f9554c173f0)
+
+Vtable for QDropEvent
+QDropEvent::_ZTV10QDropEvent: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QDropEvent)
+16 QDropEvent::~QDropEvent
+24 QDropEvent::~QDropEvent
+32 QDropEvent::format
+40 QDropEvent::encodedData
+48 QDropEvent::provides
+56 (int (*)(...))-0x00000000000000018
+64 (int (*)(...))(& _ZTI10QDropEvent)
+72 QDropEvent::_ZThn24_N10QDropEventD1Ev
+80 QDropEvent::_ZThn24_N10QDropEventD0Ev
+88 QDropEvent::_ZThn24_NK10QDropEvent6formatEi
+96 QDropEvent::_ZThn24_NK10QDropEvent8providesEPKc
+104 QDropEvent::_ZThn24_NK10QDropEvent11encodedDataEPKc
+
+Class QDropEvent
+ size=80 align=8
+ base size=80 base align=8
+QDropEvent (0x7f9554c52200) 0
+ vptr=((& QDropEvent::_ZTV10QDropEvent) + 16u)
+ QEvent (0x7f9554c4fbd0) 0
+ primary-for QDropEvent (0x7f9554c52200)
+ QMimeSource (0x7f9554c4fc40) 24 nearly-empty
+ vptr=((& QDropEvent::_ZTV10QDropEvent) + 72u)
+
+Vtable for QDragMoveEvent
+QDragMoveEvent::_ZTV14QDragMoveEvent: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QDragMoveEvent)
+16 QDragMoveEvent::~QDragMoveEvent
+24 QDragMoveEvent::~QDragMoveEvent
+32 QDropEvent::format
+40 QDropEvent::encodedData
+48 QDropEvent::provides
+56 (int (*)(...))-0x00000000000000018
+64 (int (*)(...))(& _ZTI14QDragMoveEvent)
+72 QDragMoveEvent::_ZThn24_N14QDragMoveEventD1Ev
+80 QDragMoveEvent::_ZThn24_N14QDragMoveEventD0Ev
+88 QDropEvent::_ZThn24_NK10QDropEvent6formatEi
+96 QDropEvent::_ZThn24_NK10QDropEvent8providesEPKc
+104 QDropEvent::_ZThn24_NK10QDropEvent11encodedDataEPKc
+
+Class QDragMoveEvent
+ size=96 align=8
+ base size=96 base align=8
+QDragMoveEvent (0x7f9554a6a930) 0
+ vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 16u)
+ QDropEvent (0x7f9554a68900) 0
+ primary-for QDragMoveEvent (0x7f9554a6a930)
+ QEvent (0x7f9554a6a9a0) 0
+ primary-for QDropEvent (0x7f9554a68900)
+ QMimeSource (0x7f9554a6aa10) 24 nearly-empty
+ vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 72u)
+
+Vtable for QDragEnterEvent
+QDragEnterEvent::_ZTV15QDragEnterEvent: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QDragEnterEvent)
+16 QDragEnterEvent::~QDragEnterEvent
+24 QDragEnterEvent::~QDragEnterEvent
+32 QDropEvent::format
+40 QDropEvent::encodedData
+48 QDropEvent::provides
+56 (int (*)(...))-0x00000000000000018
+64 (int (*)(...))(& _ZTI15QDragEnterEvent)
+72 QDragEnterEvent::_ZThn24_N15QDragEnterEventD1Ev
+80 QDragEnterEvent::_ZThn24_N15QDragEnterEventD0Ev
+88 QDropEvent::_ZThn24_NK10QDropEvent6formatEi
+96 QDropEvent::_ZThn24_NK10QDropEvent8providesEPKc
+104 QDropEvent::_ZThn24_NK10QDropEvent11encodedDataEPKc
+
+Class QDragEnterEvent
+ size=96 align=8
+ base size=96 base align=8
+QDragEnterEvent (0x7f9554a7a0e0) 0
+ vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 16u)
+ QDragMoveEvent (0x7f9554a7a150) 0
+ primary-for QDragEnterEvent (0x7f9554a7a0e0)
+ QDropEvent (0x7f9554a78280) 0
+ primary-for QDragMoveEvent (0x7f9554a7a150)
+ QEvent (0x7f9554a7a1c0) 0
+ primary-for QDropEvent (0x7f9554a78280)
+ QMimeSource (0x7f9554a7a230) 24 nearly-empty
+ vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 72u)
+
+Vtable for QDragResponseEvent
+QDragResponseEvent::_ZTV18QDragResponseEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QDragResponseEvent)
+16 QDragResponseEvent::~QDragResponseEvent
+24 QDragResponseEvent::~QDragResponseEvent
+
+Class QDragResponseEvent
+ size=24 align=8
+ base size=21 base align=8
+QDragResponseEvent (0x7f9554a7a3f0) 0
+ vptr=((& QDragResponseEvent::_ZTV18QDragResponseEvent) + 16u)
+ QEvent (0x7f9554a7a460) 0
+ primary-for QDragResponseEvent (0x7f9554a7a3f0)
+
+Vtable for QDragLeaveEvent
+QDragLeaveEvent::_ZTV15QDragLeaveEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QDragLeaveEvent)
+16 QDragLeaveEvent::~QDragLeaveEvent
+24 QDragLeaveEvent::~QDragLeaveEvent
+
+Class QDragLeaveEvent
+ size=24 align=8
+ base size=20 base align=8
+QDragLeaveEvent (0x7f9554a7a850) 0
+ vptr=((& QDragLeaveEvent::_ZTV15QDragLeaveEvent) + 16u)
+ QEvent (0x7f9554a7a8c0) 0
+ primary-for QDragLeaveEvent (0x7f9554a7a850)
+
+Vtable for QHelpEvent
+QHelpEvent::_ZTV10QHelpEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QHelpEvent)
+16 QHelpEvent::~QHelpEvent
+24 QHelpEvent::~QHelpEvent
+
+Class QHelpEvent
+ size=40 align=8
+ base size=36 base align=8
+QHelpEvent (0x7f9554a7aa80) 0
+ vptr=((& QHelpEvent::_ZTV10QHelpEvent) + 16u)
+ QEvent (0x7f9554a7aaf0) 0
+ primary-for QHelpEvent (0x7f9554a7aa80)
+
+Vtable for QStatusTipEvent
+QStatusTipEvent::_ZTV15QStatusTipEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QStatusTipEvent)
+16 QStatusTipEvent::~QStatusTipEvent
+24 QStatusTipEvent::~QStatusTipEvent
+
+Class QStatusTipEvent
+ size=32 align=8
+ base size=32 base align=8
+QStatusTipEvent (0x7f9554a8baf0) 0
+ vptr=((& QStatusTipEvent::_ZTV15QStatusTipEvent) + 16u)
+ QEvent (0x7f9554a8bb60) 0
+ primary-for QStatusTipEvent (0x7f9554a8baf0)
+
+Vtable for QWhatsThisClickedEvent
+QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QWhatsThisClickedEvent)
+16 QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+24 QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+
+Class QWhatsThisClickedEvent
+ size=32 align=8
+ base size=32 base align=8
+QWhatsThisClickedEvent (0x7f9554a8bcb0) 0
+ vptr=((& QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent) + 16u)
+ QEvent (0x7f9554a95000) 0
+ primary-for QWhatsThisClickedEvent (0x7f9554a8bcb0)
+
+Vtable for QActionEvent
+QActionEvent::_ZTV12QActionEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QActionEvent)
+16 QActionEvent::~QActionEvent
+24 QActionEvent::~QActionEvent
+
+Class QActionEvent
+ size=40 align=8
+ base size=40 base align=8
+QActionEvent (0x7f9554a95460) 0
+ vptr=((& QActionEvent::_ZTV12QActionEvent) + 16u)
+ QEvent (0x7f9554a954d0) 0
+ primary-for QActionEvent (0x7f9554a95460)
+
+Vtable for QFileOpenEvent
+QFileOpenEvent::_ZTV14QFileOpenEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QFileOpenEvent)
+16 QFileOpenEvent::~QFileOpenEvent
+24 QFileOpenEvent::~QFileOpenEvent
+
+Class QFileOpenEvent
+ size=32 align=8
+ base size=32 base align=8
+QFileOpenEvent (0x7f9554a95af0) 0
+ vptr=((& QFileOpenEvent::_ZTV14QFileOpenEvent) + 16u)
+ QEvent (0x7f9554a95b60) 0
+ primary-for QFileOpenEvent (0x7f9554a95af0)
+
+Vtable for QToolBarChangeEvent
+QToolBarChangeEvent::_ZTV19QToolBarChangeEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QToolBarChangeEvent)
+16 QToolBarChangeEvent::~QToolBarChangeEvent
+24 QToolBarChangeEvent::~QToolBarChangeEvent
+
+Class QToolBarChangeEvent
+ size=24 align=8
+ base size=21 base align=8
+QToolBarChangeEvent (0x7f9554a95620) 0
+ vptr=((& QToolBarChangeEvent::_ZTV19QToolBarChangeEvent) + 16u)
+ QEvent (0x7f9554a95d20) 0
+ primary-for QToolBarChangeEvent (0x7f9554a95620)
+
+Vtable for QShortcutEvent
+QShortcutEvent::_ZTV14QShortcutEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QShortcutEvent)
+16 QShortcutEvent::~QShortcutEvent
+24 QShortcutEvent::~QShortcutEvent
+
+Class QShortcutEvent
+ size=40 align=8
+ base size=40 base align=8
+QShortcutEvent (0x7f9554aa8460) 0
+ vptr=((& QShortcutEvent::_ZTV14QShortcutEvent) + 16u)
+ QEvent (0x7f9554aa84d0) 0
+ primary-for QShortcutEvent (0x7f9554aa8460)
+
+Vtable for QClipboardEvent
+QClipboardEvent::_ZTV15QClipboardEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QClipboardEvent)
+16 QClipboardEvent::~QClipboardEvent
+24 QClipboardEvent::~QClipboardEvent
+
+Class QClipboardEvent
+ size=24 align=8
+ base size=20 base align=8
+QClipboardEvent (0x7f9554ab3310) 0
+ vptr=((& QClipboardEvent::_ZTV15QClipboardEvent) + 16u)
+ QEvent (0x7f9554ab3380) 0
+ primary-for QClipboardEvent (0x7f9554ab3310)
+
+Vtable for QWindowStateChangeEvent
+QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QWindowStateChangeEvent)
+16 QWindowStateChangeEvent::~QWindowStateChangeEvent
+24 QWindowStateChangeEvent::~QWindowStateChangeEvent
+
+Class QWindowStateChangeEvent
+ size=24 align=8
+ base size=24 base align=8
+QWindowStateChangeEvent (0x7f9554ab3770) 0
+ vptr=((& QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent) + 16u)
+ QEvent (0x7f9554ab37e0) 0
+ primary-for QWindowStateChangeEvent (0x7f9554ab3770)
+
+Vtable for QMenubarUpdatedEvent
+QMenubarUpdatedEvent::_ZTV20QMenubarUpdatedEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QMenubarUpdatedEvent)
+16 QMenubarUpdatedEvent::~QMenubarUpdatedEvent
+24 QMenubarUpdatedEvent::~QMenubarUpdatedEvent
+
+Class QMenubarUpdatedEvent
+ size=32 align=8
+ base size=32 base align=8
+QMenubarUpdatedEvent (0x7f9554ab3cb0) 0
+ vptr=((& QMenubarUpdatedEvent::_ZTV20QMenubarUpdatedEvent) + 16u)
+ QEvent (0x7f9554ab3d20) 0
+ primary-for QMenubarUpdatedEvent (0x7f9554ab3cb0)
+
+Class QTouchEvent::TouchPoint
+ size=8 align=8
+ base size=8 base align=8
+QTouchEvent::TouchPoint (0x7f9554ac47e0) 0
+
+Vtable for QTouchEvent
+QTouchEvent::_ZTV11QTouchEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTouchEvent)
+16 QTouchEvent::~QTouchEvent
+24 QTouchEvent::~QTouchEvent
+
+Class QTouchEvent
+ size=48 align=8
+ base size=48 base align=8
+QTouchEvent (0x7f9554ac4690) 0
+ vptr=((& QTouchEvent::_ZTV11QTouchEvent) + 16u)
+ QInputEvent (0x7f9554ac4700) 0
+ primary-for QTouchEvent (0x7f9554ac4690)
+ QEvent (0x7f9554ac4770) 0
+ primary-for QInputEvent (0x7f9554ac4700)
+
+Vtable for QGestureEvent
+QGestureEvent::_ZTV13QGestureEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QGestureEvent)
+16 QGestureEvent::~QGestureEvent
+24 QGestureEvent::~QGestureEvent
+
+Class QGestureEvent
+ size=24 align=8
+ base size=20 base align=8
+QGestureEvent (0x7f9554b0ad20) 0
+ vptr=((& QGestureEvent::_ZTV13QGestureEvent) + 16u)
+ QEvent (0x7f9554b0ad90) 0
+ primary-for QGestureEvent (0x7f9554b0ad20)
+
+Class QFont
+ size=16 align=8
+ base size=12 base align=8
+QFont (0x7f9554b11310) 0
+
+Class QPolygon
+ size=8 align=8
+ base size=8 base align=8
+QPolygon (0x7f9554b600e0) 0
+ QVector<QPoint> (0x7f9554b60150) 0
+
+Class QPolygonF
+ size=8 align=8
+ base size=8 base align=8
+QPolygonF (0x7f955499f620) 0
+ QVector<QPointF> (0x7f955499f690) 0
+
+Class QMatrix
+ size=48 align=8
+ base size=48 base align=8
+QMatrix (0x7f95549e1770) 0
+
+Class QPainterPath::Element
+ size=24 align=8
+ base size=24 base align=8
+QPainterPath::Element (0x7f9554a278c0) 0
+
+Class QPainterPath
+ size=8 align=8
+ base size=8 base align=8
+QPainterPath (0x7f9554a27850) 0
+
+Class QPainterPathPrivate
+ size=16 align=8
+ base size=16 base align=8
+QPainterPathPrivate (0x7f955487f000) 0
+
+Class QPainterPathStroker
+ size=8 align=8
+ base size=8 base align=8
+QPainterPathStroker (0x7f955487faf0) 0
+
+Class QTransform
+ size=88 align=8
+ base size=88 base align=8
+QTransform (0x7f95548ecaf0) 0
+
+Vtable for QPaintDevice
+QPaintDevice::_ZTV12QPaintDevice: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QPaintDevice)
+16 QPaintDevice::~QPaintDevice
+24 QPaintDevice::~QPaintDevice
+32 QPaintDevice::devType
+40 __cxa_pure_virtual
+48 QPaintDevice::metric
+
+Class QPaintDevice
+ size=16 align=8
+ base size=10 base align=8
+QPaintDevice (0x7f9554798150) 0
+ vptr=((& QPaintDevice::_ZTV12QPaintDevice) + 16u)
+
+Class QImageTextKeyLang
+ size=16 align=8
+ base size=16 base align=8
+QImageTextKeyLang (0x7f95547be070) 0
+
+Vtable for QImage
+QImage::_ZTV6QImage: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QImage)
+16 QImage::~QImage
+24 QImage::~QImage
+32 QImage::devType
+40 QImage::paintEngine
+48 QImage::metric
+
+Class QImage
+ size=24 align=8
+ base size=24 base align=8
+QImage (0x7f95547e68c0) 0
+ vptr=((& QImage::_ZTV6QImage) + 16u)
+ QPaintDevice (0x7f95547e6930) 0
+ primary-for QImage (0x7f95547e68c0)
+
+Vtable for QPixmap
+QPixmap::_ZTV7QPixmap: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QPixmap)
+16 QPixmap::~QPixmap
+24 QPixmap::~QPixmap
+32 QPixmap::devType
+40 QPixmap::paintEngine
+48 QPixmap::metric
+
+Class QPixmap
+ size=24 align=8
+ base size=24 base align=8
+QPixmap (0x7f955468a070) 0
+ vptr=((& QPixmap::_ZTV7QPixmap) + 16u)
+ QPaintDevice (0x7f955468a0e0) 0
+ primary-for QPixmap (0x7f955468a070)
+
+Class QBrush
+ size=8 align=8
+ base size=8 base align=8
+QBrush (0x7f95546e8380) 0
+
+Class QBrushData
+ size=112 align=8
+ base size=112 base align=8
+QBrushData (0x7f9554704d90) 0
+
+Class QGradient
+ size=64 align=8
+ base size=64 base align=8
+QGradient (0x7f9554718f50) 0
+
+Class QLinearGradient
+ size=64 align=8
+ base size=64 base align=8
+QLinearGradient (0x7f9554759a10) 0
+ QGradient (0x7f9554759a80) 0
+
+Class QRadialGradient
+ size=64 align=8
+ base size=64 base align=8
+QRadialGradient (0x7f9554759ee0) 0
+ QGradient (0x7f9554759f50) 0
+
+Class QConicalGradient
+ size=64 align=8
+ base size=64 base align=8
+QConicalGradient (0x7f95545644d0) 0
+ QGradient (0x7f9554564540) 0
+
+Class QPen
+ size=8 align=8
+ base size=8 base align=8
+QPen (0x7f9554564850) 0
+
+Class QTextOption::Tab
+ size=16 align=8
+ base size=14 base align=8
+QTextOption::Tab (0x7f955457fe00) 0
+
+Class QTextOption
+ size=32 align=8
+ base size=32 base align=8
+QTextOption (0x7f955457fd90) 0
+
+Class QTextLength
+ size=16 align=8
+ base size=16 base align=8
+QTextLength (0x7f95545f1150) 0
+
+Class QTextFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextFormat (0x7f955460c4d0) 0
+
+Class QTextCharFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextCharFormat (0x7f95544c4540) 0
+ QTextFormat (0x7f95544c45b0) 0
+
+Class QTextBlockFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextBlockFormat (0x7f95545261c0) 0
+ QTextFormat (0x7f9554526230) 0
+
+Class QTextListFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextListFormat (0x7f95545467e0) 0
+ QTextFormat (0x7f9554546850) 0
+
+Class QTextImageFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextImageFormat (0x7f9554550d20) 0
+ QTextCharFormat (0x7f9554550d90) 0
+ QTextFormat (0x7f9554550e00) 0
+
+Class QTextFrameFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextFrameFormat (0x7f9554361460) 0
+ QTextFormat (0x7f95543614d0) 0
+
+Class QTextTableFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextTableFormat (0x7f9554398380) 0
+ QTextFrameFormat (0x7f95543983f0) 0
+ QTextFormat (0x7f9554398460) 0
+
+Class QTextTableCellFormat
+ size=16 align=8
+ base size=12 base align=8
+QTextTableCellFormat (0x7f95543b3230) 0
+ QTextCharFormat (0x7f95543b32a0) 0
+ QTextFormat (0x7f95543b3310) 0
+
+Class QTextInlineObject
+ size=16 align=8
+ base size=16 base align=8
+QTextInlineObject (0x7f95543c9700) 0
+
+Class QTextLayout::FormatRange
+ size=24 align=8
+ base size=24 base align=8
+QTextLayout::FormatRange (0x7f95543d3a10) 0
+
+Class QTextLayout
+ size=8 align=8
+ base size=8 base align=8
+QTextLayout (0x7f95543d3770) 0
+
+Class QTextLine
+ size=16 align=8
+ base size=16 base align=8
+QTextLine (0x7f95543ec770) 0
+
+Vtable for QAbstractUndoItem
+QAbstractUndoItem::_ZTV17QAbstractUndoItem: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAbstractUndoItem)
+16 __cxa_pure_virtual
+24 __cxa_pure_virtual
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QAbstractUndoItem
+ size=8 align=8
+ base size=8 base align=8
+QAbstractUndoItem (0x7f9554421070) 0 nearly-empty
+ vptr=((& QAbstractUndoItem::_ZTV17QAbstractUndoItem) + 16u)
+
+Vtable for QTextDocument
+QTextDocument::_ZTV13QTextDocument: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QTextDocument)
+16 QTextDocument::metaObject
+24 QTextDocument::qt_metacast
+32 QTextDocument::qt_metacall
+40 QTextDocument::~QTextDocument
+48 QTextDocument::~QTextDocument
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QTextDocument::clear
+120 QTextDocument::createObject
+128 QTextDocument::loadResource
+
+Class QTextDocument
+ size=16 align=8
+ base size=16 base align=8
+QTextDocument (0x7f9554421af0) 0
+ vptr=((& QTextDocument::_ZTV13QTextDocument) + 16u)
+ QObject (0x7f9554421b60) 0
+ primary-for QTextDocument (0x7f9554421af0)
+
+Class QTextCursor
+ size=8 align=8
+ base size=8 base align=8
+QTextCursor (0x7f955427fa80) 0
+
+Class QPalette
+ size=16 align=8
+ base size=12 base align=8
+QPalette (0x7f9554292f50) 0
+
+Class QColorGroup
+ size=16 align=8
+ base size=12 base align=8
+QColorGroup (0x7f9554305850) 0
+ QPalette (0x7f95543058c0) 0
+
+Class QAbstractTextDocumentLayout::Selection
+ size=24 align=8
+ base size=24 base align=8
+QAbstractTextDocumentLayout::Selection (0x7f955433cd90) 0
+
+Class QAbstractTextDocumentLayout::PaintContext
+ size=64 align=8
+ base size=64 base align=8
+QAbstractTextDocumentLayout::PaintContext (0x7f955433ce00) 0
+
+Vtable for QAbstractTextDocumentLayout
+QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout: 24u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAbstractTextDocumentLayout)
+16 QAbstractTextDocumentLayout::metaObject
+24 QAbstractTextDocumentLayout::qt_metacast
+32 QAbstractTextDocumentLayout::qt_metacall
+40 QAbstractTextDocumentLayout::~QAbstractTextDocumentLayout
+48 QAbstractTextDocumentLayout::~QAbstractTextDocumentLayout
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 __cxa_pure_virtual
+160 __cxa_pure_virtual
+168 QAbstractTextDocumentLayout::resizeInlineObject
+176 QAbstractTextDocumentLayout::positionInlineObject
+184 QAbstractTextDocumentLayout::drawInlineObject
+
+Class QAbstractTextDocumentLayout
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTextDocumentLayout (0x7f955433cb60) 0
+ vptr=((& QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout) + 16u)
+ QObject (0x7f955433cbd0) 0
+ primary-for QAbstractTextDocumentLayout (0x7f955433cb60)
+
+Vtable for QTextObjectInterface
+QTextObjectInterface::_ZTV20QTextObjectInterface: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTextObjectInterface)
+16 QTextObjectInterface::~QTextObjectInterface
+24 QTextObjectInterface::~QTextObjectInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QTextObjectInterface
+ size=8 align=8
+ base size=8 base align=8
+QTextObjectInterface (0x7f95541744d0) 0 nearly-empty
+ vptr=((& QTextObjectInterface::_ZTV20QTextObjectInterface) + 16u)
+
+Class QFontDatabase
+ size=8 align=8
+ base size=8 base align=8
+QFontDatabase (0x7f95541807e0) 0
+
+Class QFontInfo
+ size=8 align=8
+ base size=8 base align=8
+QFontInfo (0x7f95541907e0) 0
+
+Class QFontMetrics
+ size=8 align=8
+ base size=8 base align=8
+QFontMetrics (0x7f95541a2310) 0
+
+Class QFontMetricsF
+ size=8 align=8
+ base size=8 base align=8
+QFontMetricsF (0x7f95541b6770) 0
+
+Vtable for QTextObject
+QTextObject::_ZTV11QTextObject: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTextObject)
+16 QTextObject::metaObject
+24 QTextObject::qt_metacast
+32 QTextObject::qt_metacall
+40 QTextObject::~QTextObject
+48 QTextObject::~QTextObject
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QTextObject
+ size=16 align=8
+ base size=16 base align=8
+QTextObject (0x7f95541cc690) 0
+ vptr=((& QTextObject::_ZTV11QTextObject) + 16u)
+ QObject (0x7f95541cc700) 0
+ primary-for QTextObject (0x7f95541cc690)
+
+Vtable for QTextBlockGroup
+QTextBlockGroup::_ZTV15QTextBlockGroup: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QTextBlockGroup)
+16 QTextBlockGroup::metaObject
+24 QTextBlockGroup::qt_metacast
+32 QTextBlockGroup::qt_metacall
+40 QTextBlockGroup::~QTextBlockGroup
+48 QTextBlockGroup::~QTextBlockGroup
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QTextBlockGroup::blockInserted
+120 QTextBlockGroup::blockRemoved
+128 QTextBlockGroup::blockFormatChanged
+
+Class QTextBlockGroup
+ size=16 align=8
+ base size=16 base align=8
+QTextBlockGroup (0x7f95541ddee0) 0
+ vptr=((& QTextBlockGroup::_ZTV15QTextBlockGroup) + 16u)
+ QTextObject (0x7f95541ddf50) 0
+ primary-for QTextBlockGroup (0x7f95541ddee0)
+ QObject (0x7f95541e6000) 0
+ primary-for QTextObject (0x7f95541ddf50)
+
+Vtable for QTextFrameLayoutData
+QTextFrameLayoutData::_ZTV20QTextFrameLayoutData: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QTextFrameLayoutData)
+16 QTextFrameLayoutData::~QTextFrameLayoutData
+24 QTextFrameLayoutData::~QTextFrameLayoutData
+
+Class QTextFrameLayoutData
+ size=8 align=8
+ base size=8 base align=8
+QTextFrameLayoutData (0x7f95541fa7e0) 0 nearly-empty
+ vptr=((& QTextFrameLayoutData::_ZTV20QTextFrameLayoutData) + 16u)
+
+Class QTextFrame::iterator
+ size=32 align=8
+ base size=28 base align=8
+QTextFrame::iterator (0x7f9554204230) 0
+
+Vtable for QTextFrame
+QTextFrame::_ZTV10QTextFrame: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextFrame)
+16 QTextFrame::metaObject
+24 QTextFrame::qt_metacast
+32 QTextFrame::qt_metacall
+40 QTextFrame::~QTextFrame
+48 QTextFrame::~QTextFrame
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QTextFrame
+ size=16 align=8
+ base size=16 base align=8
+QTextFrame (0x7f95541fa930) 0
+ vptr=((& QTextFrame::_ZTV10QTextFrame) + 16u)
+ QTextObject (0x7f95541fa9a0) 0
+ primary-for QTextFrame (0x7f95541fa930)
+ QObject (0x7f95541faa10) 0
+ primary-for QTextObject (0x7f95541fa9a0)
+
+Vtable for QTextBlockUserData
+QTextBlockUserData::_ZTV18QTextBlockUserData: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QTextBlockUserData)
+16 QTextBlockUserData::~QTextBlockUserData
+24 QTextBlockUserData::~QTextBlockUserData
+
+Class QTextBlockUserData
+ size=8 align=8
+ base size=8 base align=8
+QTextBlockUserData (0x7f9554239380) 0 nearly-empty
+ vptr=((& QTextBlockUserData::_ZTV18QTextBlockUserData) + 16u)
+
+Class QTextBlock::iterator
+ size=24 align=8
+ base size=20 base align=8
+QTextBlock::iterator (0x7f9554239cb0) 0
+
+Class QTextBlock
+ size=16 align=8
+ base size=12 base align=8
+QTextBlock (0x7f95542394d0) 0
+
+Class QTextFragment
+ size=16 align=8
+ base size=16 base align=8
+QTextFragment (0x7f9554031e00) 0
+
+Vtable for QSyntaxHighlighter
+QSyntaxHighlighter::_ZTV18QSyntaxHighlighter: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QSyntaxHighlighter)
+16 QSyntaxHighlighter::metaObject
+24 QSyntaxHighlighter::qt_metacast
+32 QSyntaxHighlighter::qt_metacall
+40 QSyntaxHighlighter::~QSyntaxHighlighter
+48 QSyntaxHighlighter::~QSyntaxHighlighter
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+
+Class QSyntaxHighlighter
+ size=16 align=8
+ base size=16 base align=8
+QSyntaxHighlighter (0x7f955405c000) 0
+ vptr=((& QSyntaxHighlighter::_ZTV18QSyntaxHighlighter) + 16u)
+ QObject (0x7f955405c070) 0
+ primary-for QSyntaxHighlighter (0x7f955405c000)
+
+Class QTextDocumentFragment
+ size=8 align=8
+ base size=8 base align=8
+QTextDocumentFragment (0x7f95540729a0) 0
+
+Class QTextDocumentWriter
+ size=8 align=8
+ base size=8 base align=8
+QTextDocumentWriter (0x7f95540793f0) 0
+
+Vtable for QTextList
+QTextList::_ZTV9QTextList: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTextList)
+16 QTextList::metaObject
+24 QTextList::qt_metacast
+32 QTextList::qt_metacall
+40 QTextList::~QTextList
+48 QTextList::~QTextList
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QTextBlockGroup::blockInserted
+120 QTextBlockGroup::blockRemoved
+128 QTextBlockGroup::blockFormatChanged
+
+Class QTextList
+ size=16 align=8
+ base size=16 base align=8
+QTextList (0x7f9554079a80) 0
+ vptr=((& QTextList::_ZTV9QTextList) + 16u)
+ QTextBlockGroup (0x7f9554079af0) 0
+ primary-for QTextList (0x7f9554079a80)
+ QTextObject (0x7f9554079b60) 0
+ primary-for QTextBlockGroup (0x7f9554079af0)
+ QObject (0x7f9554079bd0) 0
+ primary-for QTextObject (0x7f9554079b60)
+
+Class QTextTableCell
+ size=16 align=8
+ base size=12 base align=8
+QTextTableCell (0x7f95540a4930) 0
+
+Vtable for QTextTable
+QTextTable::_ZTV10QTextTable: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextTable)
+16 QTextTable::metaObject
+24 QTextTable::qt_metacast
+32 QTextTable::qt_metacall
+40 QTextTable::~QTextTable
+48 QTextTable::~QTextTable
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QTextTable
+ size=16 align=8
+ base size=16 base align=8
+QTextTable (0x7f95540b9a80) 0
+ vptr=((& QTextTable::_ZTV10QTextTable) + 16u)
+ QTextFrame (0x7f95540b9af0) 0
+ primary-for QTextTable (0x7f95540b9a80)
+ QTextObject (0x7f95540b9b60) 0
+ primary-for QTextFrame (0x7f95540b9af0)
+ QObject (0x7f95540b9bd0) 0
+ primary-for QTextObject (0x7f95540b9b60)
+
+Vtable for QCompleter
+QCompleter::_ZTV10QCompleter: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QCompleter)
+16 QCompleter::metaObject
+24 QCompleter::qt_metacast
+32 QCompleter::qt_metacall
+40 QCompleter::~QCompleter
+48 QCompleter::~QCompleter
+56 QCompleter::event
+64 QCompleter::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QCompleter::pathFromIndex
+120 QCompleter::splitPath
+
+Class QCompleter
+ size=16 align=8
+ base size=16 base align=8
+QCompleter (0x7f95540e22a0) 0
+ vptr=((& QCompleter::_ZTV10QCompleter) + 16u)
+ QObject (0x7f95540e2310) 0
+ primary-for QCompleter (0x7f95540e22a0)
+
+Class QDesktopServices
+ size=1 align=1
+ base size=0 base align=1
+QDesktopServices (0x7f9554105230) 0 empty
+
+Class QIcon
+ size=8 align=8
+ base size=8 base align=8
+QIcon (0x7f9554105380) 0
+
+Vtable for QSystemTrayIcon
+QSystemTrayIcon::_ZTV15QSystemTrayIcon: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSystemTrayIcon)
+16 QSystemTrayIcon::metaObject
+24 QSystemTrayIcon::qt_metacast
+32 QSystemTrayIcon::qt_metacall
+40 QSystemTrayIcon::~QSystemTrayIcon
+48 QSystemTrayIcon::~QSystemTrayIcon
+56 QSystemTrayIcon::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QSystemTrayIcon
+ size=16 align=8
+ base size=16 base align=8
+QSystemTrayIcon (0x7f9553f2ef50) 0
+ vptr=((& QSystemTrayIcon::_ZTV15QSystemTrayIcon) + 16u)
+ QObject (0x7f9553f3e000) 0
+ primary-for QSystemTrayIcon (0x7f9553f2ef50)
+
+Vtable for QUndoGroup
+QUndoGroup::_ZTV10QUndoGroup: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QUndoGroup)
+16 QUndoGroup::metaObject
+24 QUndoGroup::qt_metacast
+32 QUndoGroup::qt_metacall
+40 QUndoGroup::~QUndoGroup
+48 QUndoGroup::~QUndoGroup
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QUndoGroup
+ size=16 align=8
+ base size=16 base align=8
+QUndoGroup (0x7f9553f5d1c0) 0
+ vptr=((& QUndoGroup::_ZTV10QUndoGroup) + 16u)
+ QObject (0x7f9553f5d230) 0
+ primary-for QUndoGroup (0x7f9553f5d1c0)
+
+Vtable for QUndoCommand
+QUndoCommand::_ZTV12QUndoCommand: 8u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QUndoCommand)
+16 QUndoCommand::~QUndoCommand
+24 QUndoCommand::~QUndoCommand
+32 QUndoCommand::undo
+40 QUndoCommand::redo
+48 QUndoCommand::id
+56 QUndoCommand::mergeWith
+
+Class QUndoCommand
+ size=16 align=8
+ base size=16 base align=8
+QUndoCommand (0x7f9553f71d20) 0
+ vptr=((& QUndoCommand::_ZTV12QUndoCommand) + 16u)
+
+Vtable for QUndoStack
+QUndoStack::_ZTV10QUndoStack: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QUndoStack)
+16 QUndoStack::metaObject
+24 QUndoStack::qt_metacast
+32 QUndoStack::qt_metacall
+40 QUndoStack::~QUndoStack
+48 QUndoStack::~QUndoStack
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QUndoStack
+ size=16 align=8
+ base size=16 base align=8
+QUndoStack (0x7f9553f7a690) 0
+ vptr=((& QUndoStack::_ZTV10QUndoStack) + 16u)
+ QObject (0x7f9553f7a700) 0
+ primary-for QUndoStack (0x7f9553f7a690)
+
+Class QSizePolicy
+ size=4 align=4
+ base size=4 base align=4
+QSizePolicy (0x7f9553fa01c0) 0
+
+Class QCursor
+ size=8 align=8
+ base size=8 base align=8
+QCursor (0x7f9553e6f1c0) 0
+
+Class QWidgetData
+ size=88 align=8
+ base size=88 base align=8
+QWidgetData (0x7f9553e6f9a0) 0
+
+Vtable for QWidget
+QWidget::_ZTV7QWidget: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QWidget)
+16 QWidget::metaObject
+24 QWidget::qt_metacast
+32 QWidget::qt_metacall
+40 QWidget::~QWidget
+48 QWidget::~QWidget
+56 QWidget::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI7QWidget)
+464 QWidget::_ZThn16_N7QWidgetD1Ev
+472 QWidget::_ZThn16_N7QWidgetD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWidget
+ size=40 align=8
+ base size=40 base align=8
+QWidget (0x7f9553e67a00) 0
+ vptr=((& QWidget::_ZTV7QWidget) + 16u)
+ QObject (0x7f9553e6fa10) 0
+ primary-for QWidget (0x7f9553e67a00)
+ QPaintDevice (0x7f9553e6fa80) 16
+ vptr=((& QWidget::_ZTV7QWidget) + 464u)
+
+Vtable for QFrame
+QFrame::_ZTV6QFrame: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QFrame)
+16 QFrame::metaObject
+24 QFrame::qt_metacast
+32 QFrame::qt_metacall
+40 QFrame::~QFrame
+48 QFrame::~QFrame
+56 QFrame::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QFrame::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QFrame::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI6QFrame)
+464 QFrame::_ZThn16_N6QFrameD1Ev
+472 QFrame::_ZThn16_N6QFrameD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFrame
+ size=40 align=8
+ base size=40 base align=8
+QFrame (0x7f9553df7a80) 0
+ vptr=((& QFrame::_ZTV6QFrame) + 16u)
+ QWidget (0x7f9553dfa680) 0
+ primary-for QFrame (0x7f9553df7a80)
+ QObject (0x7f9553df7af0) 0
+ primary-for QWidget (0x7f9553dfa680)
+ QPaintDevice (0x7f9553df7b60) 16
+ vptr=((& QFrame::_ZTV6QFrame) + 464u)
+
+Vtable for QAbstractScrollArea
+QAbstractScrollArea::_ZTV19QAbstractScrollArea: 65u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractScrollArea)
+16 QAbstractScrollArea::metaObject
+24 QAbstractScrollArea::qt_metacast
+32 QAbstractScrollArea::qt_metacall
+40 QAbstractScrollArea::~QAbstractScrollArea
+48 QAbstractScrollArea::~QAbstractScrollArea
+56 QAbstractScrollArea::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractScrollArea::mousePressEvent
+168 QAbstractScrollArea::mouseReleaseEvent
+176 QAbstractScrollArea::mouseDoubleClickEvent
+184 QAbstractScrollArea::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractScrollArea::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QAbstractScrollArea::paintEvent
+256 QWidget::moveEvent
+264 QAbstractScrollArea::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractScrollArea::dragEnterEvent
+312 QAbstractScrollArea::dragMoveEvent
+320 QAbstractScrollArea::dragLeaveEvent
+328 QAbstractScrollArea::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractScrollArea::viewportEvent
+456 QAbstractScrollArea::scrollContentsBy
+464 (int (*)(...))-0x00000000000000010
+472 (int (*)(...))(& _ZTI19QAbstractScrollArea)
+480 QAbstractScrollArea::_ZThn16_N19QAbstractScrollAreaD1Ev
+488 QAbstractScrollArea::_ZThn16_N19QAbstractScrollAreaD0Ev
+496 QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractScrollArea
+ size=40 align=8
+ base size=40 base align=8
+QAbstractScrollArea (0x7f9553c230e0) 0
+ vptr=((& QAbstractScrollArea::_ZTV19QAbstractScrollArea) + 16u)
+ QFrame (0x7f9553c23150) 0
+ primary-for QAbstractScrollArea (0x7f9553c230e0)
+ QWidget (0x7f9553e07a80) 0
+ primary-for QFrame (0x7f9553c23150)
+ QObject (0x7f9553c231c0) 0
+ primary-for QWidget (0x7f9553e07a80)
+ QPaintDevice (0x7f9553c23230) 16
+ vptr=((& QAbstractScrollArea::_ZTV19QAbstractScrollArea) + 480u)
+
+Class QItemSelectionRange
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionRange (0x7f9553c4a000) 0
+
+Vtable for QItemSelectionModel
+QItemSelectionModel::_ZTV19QItemSelectionModel: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QItemSelectionModel)
+16 QItemSelectionModel::metaObject
+24 QItemSelectionModel::qt_metacast
+32 QItemSelectionModel::qt_metacall
+40 QItemSelectionModel::~QItemSelectionModel
+48 QItemSelectionModel::~QItemSelectionModel
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QItemSelectionModel::select
+120 QItemSelectionModel::select
+128 QItemSelectionModel::clear
+136 QItemSelectionModel::reset
+
+Class QItemSelectionModel
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionModel (0x7f9553cb14d0) 0
+ vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 16u)
+ QObject (0x7f9553cb1540) 0
+ primary-for QItemSelectionModel (0x7f9553cb14d0)
+
+Class QItemSelection
+ size=8 align=8
+ base size=8 base align=8
+QItemSelection (0x7f9553cf39a0) 0
+ QList<QItemSelectionRange> (0x7f9553cf3a10) 0
+
+Vtable for QValidator
+QValidator::_ZTV10QValidator: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QValidator)
+16 QValidator::metaObject
+24 QValidator::qt_metacast
+32 QValidator::qt_metacall
+40 QValidator::~QValidator
+48 QValidator::~QValidator
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 QValidator::fixup
+
+Class QValidator
+ size=16 align=8
+ base size=16 base align=8
+QValidator (0x7f9553b312a0) 0
+ vptr=((& QValidator::_ZTV10QValidator) + 16u)
+ QObject (0x7f9553b31310) 0
+ primary-for QValidator (0x7f9553b312a0)
+
+Vtable for QIntValidator
+QIntValidator::_ZTV13QIntValidator: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QIntValidator)
+16 QIntValidator::metaObject
+24 QIntValidator::qt_metacast
+32 QIntValidator::qt_metacall
+40 QIntValidator::~QIntValidator
+48 QIntValidator::~QIntValidator
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QIntValidator::validate
+120 QValidator::fixup
+128 QIntValidator::setRange
+
+Class QIntValidator
+ size=24 align=8
+ base size=24 base align=8
+QIntValidator (0x7f9553b4d0e0) 0
+ vptr=((& QIntValidator::_ZTV13QIntValidator) + 16u)
+ QValidator (0x7f9553b4d150) 0
+ primary-for QIntValidator (0x7f9553b4d0e0)
+ QObject (0x7f9553b4d1c0) 0
+ primary-for QValidator (0x7f9553b4d150)
+
+Vtable for QDoubleValidator
+QDoubleValidator::_ZTV16QDoubleValidator: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QDoubleValidator)
+16 QDoubleValidator::metaObject
+24 QDoubleValidator::qt_metacast
+32 QDoubleValidator::qt_metacall
+40 QDoubleValidator::~QDoubleValidator
+48 QDoubleValidator::~QDoubleValidator
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QDoubleValidator::validate
+120 QValidator::fixup
+128 QDoubleValidator::setRange
+
+Class QDoubleValidator
+ size=40 align=8
+ base size=36 base align=8
+QDoubleValidator (0x7f9553b63070) 0
+ vptr=((& QDoubleValidator::_ZTV16QDoubleValidator) + 16u)
+ QValidator (0x7f9553b630e0) 0
+ primary-for QDoubleValidator (0x7f9553b63070)
+ QObject (0x7f9553b63150) 0
+ primary-for QValidator (0x7f9553b630e0)
+
+Vtable for QRegExpValidator
+QRegExpValidator::_ZTV16QRegExpValidator: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QRegExpValidator)
+16 QRegExpValidator::metaObject
+24 QRegExpValidator::qt_metacast
+32 QRegExpValidator::qt_metacall
+40 QRegExpValidator::~QRegExpValidator
+48 QRegExpValidator::~QRegExpValidator
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QRegExpValidator::validate
+120 QValidator::fixup
+
+Class QRegExpValidator
+ size=24 align=8
+ base size=24 base align=8
+QRegExpValidator (0x7f9553b7d930) 0
+ vptr=((& QRegExpValidator::_ZTV16QRegExpValidator) + 16u)
+ QValidator (0x7f9553b7d9a0) 0
+ primary-for QRegExpValidator (0x7f9553b7d930)
+ QObject (0x7f9553b7da10) 0
+ primary-for QValidator (0x7f9553b7d9a0)
+
+Vtable for QAbstractSpinBox
+QAbstractSpinBox::_ZTV16QAbstractSpinBox: 68u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAbstractSpinBox)
+16 QAbstractSpinBox::metaObject
+24 QAbstractSpinBox::qt_metacast
+32 QAbstractSpinBox::qt_metacall
+40 QAbstractSpinBox::~QAbstractSpinBox
+48 QAbstractSpinBox::~QAbstractSpinBox
+56 QAbstractSpinBox::event
+64 QObject::eventFilter
+72 QAbstractSpinBox::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractSpinBox::sizeHint
+136 QAbstractSpinBox::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractSpinBox::mousePressEvent
+168 QAbstractSpinBox::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QAbstractSpinBox::mouseMoveEvent
+192 QAbstractSpinBox::wheelEvent
+200 QAbstractSpinBox::keyPressEvent
+208 QAbstractSpinBox::keyReleaseEvent
+216 QAbstractSpinBox::focusInEvent
+224 QAbstractSpinBox::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QAbstractSpinBox::paintEvent
+256 QWidget::moveEvent
+264 QAbstractSpinBox::resizeEvent
+272 QAbstractSpinBox::closeEvent
+280 QAbstractSpinBox::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QAbstractSpinBox::showEvent
+344 QAbstractSpinBox::hideEvent
+352 QWidget::x11Event
+360 QAbstractSpinBox::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QAbstractSpinBox::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractSpinBox::validate
+456 QAbstractSpinBox::fixup
+464 QAbstractSpinBox::stepBy
+472 QAbstractSpinBox::clear
+480 QAbstractSpinBox::stepEnabled
+488 (int (*)(...))-0x00000000000000010
+496 (int (*)(...))(& _ZTI16QAbstractSpinBox)
+504 QAbstractSpinBox::_ZThn16_N16QAbstractSpinBoxD1Ev
+512 QAbstractSpinBox::_ZThn16_N16QAbstractSpinBoxD0Ev
+520 QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractSpinBox
+ size=40 align=8
+ base size=40 base align=8
+QAbstractSpinBox (0x7f9553b965b0) 0
+ vptr=((& QAbstractSpinBox::_ZTV16QAbstractSpinBox) + 16u)
+ QWidget (0x7f9553b7be80) 0
+ primary-for QAbstractSpinBox (0x7f9553b965b0)
+ QObject (0x7f9553b96620) 0
+ primary-for QWidget (0x7f9553b7be80)
+ QPaintDevice (0x7f9553b96690) 16
+ vptr=((& QAbstractSpinBox::_ZTV16QAbstractSpinBox) + 504u)
+
+Vtable for QAbstractSlider
+QAbstractSlider::_ZTV15QAbstractSlider: 64u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAbstractSlider)
+16 QAbstractSlider::metaObject
+24 QAbstractSlider::qt_metacast
+32 QAbstractSlider::qt_metacall
+40 QAbstractSlider::~QAbstractSlider
+48 QAbstractSlider::~QAbstractSlider
+56 QAbstractSlider::event
+64 QObject::eventFilter
+72 QAbstractSlider::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QAbstractSlider::wheelEvent
+200 QAbstractSlider::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QAbstractSlider::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractSlider::sliderChange
+456 (int (*)(...))-0x00000000000000010
+464 (int (*)(...))(& _ZTI15QAbstractSlider)
+472 QAbstractSlider::_ZThn16_N15QAbstractSliderD1Ev
+480 QAbstractSlider::_ZThn16_N15QAbstractSliderD0Ev
+488 QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractSlider
+ size=40 align=8
+ base size=40 base align=8
+QAbstractSlider (0x7f9553bf45b0) 0
+ vptr=((& QAbstractSlider::_ZTV15QAbstractSlider) + 16u)
+ QWidget (0x7f9553bf5200) 0
+ primary-for QAbstractSlider (0x7f9553bf45b0)
+ QObject (0x7f9553bf4620) 0
+ primary-for QWidget (0x7f9553bf5200)
+ QPaintDevice (0x7f9553bf4690) 16
+ vptr=((& QAbstractSlider::_ZTV15QAbstractSlider) + 472u)
+
+Vtable for QSlider
+QSlider::_ZTV7QSlider: 64u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QSlider)
+16 QSlider::metaObject
+24 QSlider::qt_metacast
+32 QSlider::qt_metacall
+40 QSlider::~QSlider
+48 QSlider::~QSlider
+56 QSlider::event
+64 QObject::eventFilter
+72 QAbstractSlider::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QSlider::sizeHint
+136 QSlider::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QSlider::mousePressEvent
+168 QSlider::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QSlider::mouseMoveEvent
+192 QAbstractSlider::wheelEvent
+200 QAbstractSlider::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QSlider::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QAbstractSlider::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractSlider::sliderChange
+456 (int (*)(...))-0x00000000000000010
+464 (int (*)(...))(& _ZTI7QSlider)
+472 QSlider::_ZThn16_N7QSliderD1Ev
+480 QSlider::_ZThn16_N7QSliderD0Ev
+488 QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSlider
+ size=40 align=8
+ base size=40 base align=8
+QSlider (0x7f9553a2a3f0) 0
+ vptr=((& QSlider::_ZTV7QSlider) + 16u)
+ QAbstractSlider (0x7f9553a2a460) 0
+ primary-for QSlider (0x7f9553a2a3f0)
+ QWidget (0x7f9553a28300) 0
+ primary-for QAbstractSlider (0x7f9553a2a460)
+ QObject (0x7f9553a2a4d0) 0
+ primary-for QWidget (0x7f9553a28300)
+ QPaintDevice (0x7f9553a2a540) 16
+ vptr=((& QSlider::_ZTV7QSlider) + 472u)
+
+Vtable for QStyle
+QStyle::_ZTV6QStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QStyle)
+16 QStyle::metaObject
+24 QStyle::qt_metacast
+32 QStyle::qt_metacall
+40 QStyle::~QStyle
+48 QStyle::~QStyle
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QStyle::polish
+120 QStyle::unpolish
+128 QStyle::polish
+136 QStyle::unpolish
+144 QStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QStyle::standardPalette
+192 __cxa_pure_virtual
+200 __cxa_pure_virtual
+208 __cxa_pure_virtual
+216 __cxa_pure_virtual
+224 __cxa_pure_virtual
+232 __cxa_pure_virtual
+240 __cxa_pure_virtual
+248 __cxa_pure_virtual
+256 __cxa_pure_virtual
+264 __cxa_pure_virtual
+272 __cxa_pure_virtual
+
+Class QStyle
+ size=16 align=8
+ base size=16 base align=8
+QStyle (0x7f9553a4f9a0) 0
+ vptr=((& QStyle::_ZTV6QStyle) + 16u)
+ QObject (0x7f9553a4fa10) 0
+ primary-for QStyle (0x7f9553a4f9a0)
+
+Vtable for QTabBar
+QTabBar::_ZTV7QTabBar: 67u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QTabBar)
+16 QTabBar::metaObject
+24 QTabBar::qt_metacast
+32 QTabBar::qt_metacall
+40 QTabBar::~QTabBar
+48 QTabBar::~QTabBar
+56 QTabBar::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QTabBar::sizeHint
+136 QTabBar::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QTabBar::mousePressEvent
+168 QTabBar::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QTabBar::mouseMoveEvent
+192 QTabBar::wheelEvent
+200 QTabBar::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QTabBar::paintEvent
+256 QWidget::moveEvent
+264 QTabBar::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QTabBar::showEvent
+344 QTabBar::hideEvent
+352 QWidget::x11Event
+360 QTabBar::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QTabBar::tabSizeHint
+456 QTabBar::tabInserted
+464 QTabBar::tabRemoved
+472 QTabBar::tabLayoutChange
+480 (int (*)(...))-0x00000000000000010
+488 (int (*)(...))(& _ZTI7QTabBar)
+496 QTabBar::_ZThn16_N7QTabBarD1Ev
+504 QTabBar::_ZThn16_N7QTabBarD0Ev
+512 QWidget::_ZThn16_NK7QWidget7devTypeEv
+520 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+528 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTabBar
+ size=40 align=8
+ base size=40 base align=8
+QTabBar (0x7f9553b01850) 0
+ vptr=((& QTabBar::_ZTV7QTabBar) + 16u)
+ QWidget (0x7f9553b02300) 0
+ primary-for QTabBar (0x7f9553b01850)
+ QObject (0x7f9553b018c0) 0
+ primary-for QWidget (0x7f9553b02300)
+ QPaintDevice (0x7f9553b01930) 16
+ vptr=((& QTabBar::_ZTV7QTabBar) + 496u)
+
+Vtable for QTabWidget
+QTabWidget::_ZTV10QTabWidget: 65u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTabWidget)
+16 QTabWidget::metaObject
+24 QTabWidget::qt_metacast
+32 QTabWidget::qt_metacall
+40 QTabWidget::~QTabWidget
+48 QTabWidget::~QTabWidget
+56 QTabWidget::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QTabWidget::sizeHint
+136 QTabWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QTabWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QTabWidget::paintEvent
+256 QWidget::moveEvent
+264 QTabWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QTabWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QTabWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QTabWidget::tabInserted
+456 QTabWidget::tabRemoved
+464 (int (*)(...))-0x00000000000000010
+472 (int (*)(...))(& _ZTI10QTabWidget)
+480 QTabWidget::_ZThn16_N10QTabWidgetD1Ev
+488 QTabWidget::_ZThn16_N10QTabWidgetD0Ev
+496 QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTabWidget
+ size=40 align=8
+ base size=40 base align=8
+QTabWidget (0x7f955392ee70) 0
+ vptr=((& QTabWidget::_ZTV10QTabWidget) + 16u)
+ QWidget (0x7f955392a700) 0
+ primary-for QTabWidget (0x7f955392ee70)
+ QObject (0x7f955392eee0) 0
+ primary-for QWidget (0x7f955392a700)
+ QPaintDevice (0x7f955392ef50) 16
+ vptr=((& QTabWidget::_ZTV10QTabWidget) + 480u)
+
+Vtable for QRubberBand
+QRubberBand::_ZTV11QRubberBand: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QRubberBand)
+16 QRubberBand::metaObject
+24 QRubberBand::qt_metacast
+32 QRubberBand::qt_metacall
+40 QRubberBand::~QRubberBand
+48 QRubberBand::~QRubberBand
+56 QRubberBand::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QRubberBand::paintEvent
+256 QRubberBand::moveEvent
+264 QRubberBand::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QRubberBand::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QRubberBand::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI11QRubberBand)
+464 QRubberBand::_ZThn16_N11QRubberBandD1Ev
+472 QRubberBand::_ZThn16_N11QRubberBandD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QRubberBand
+ size=40 align=8
+ base size=40 base align=8
+QRubberBand (0x7f9553981850) 0
+ vptr=((& QRubberBand::_ZTV11QRubberBand) + 16u)
+ QWidget (0x7f955397f880) 0
+ primary-for QRubberBand (0x7f9553981850)
+ QObject (0x7f95539818c0) 0
+ primary-for QWidget (0x7f955397f880)
+ QPaintDevice (0x7f9553981930) 16
+ vptr=((& QRubberBand::_ZTV11QRubberBand) + 464u)
+
+Class QStyleOption
+ size=56 align=8
+ base size=56 base align=8
+QStyleOption (0x7f95539a5b60) 0
+
+Class QStyleOptionFocusRect
+ size=72 align=8
+ base size=72 base align=8
+QStyleOptionFocusRect (0x7f95539b18c0) 0
+ QStyleOption (0x7f95539b1930) 0
+
+Class QStyleOptionFrame
+ size=64 align=8
+ base size=64 base align=8
+QStyleOptionFrame (0x7f95539bd8c0) 0
+ QStyleOption (0x7f95539bd930) 0
+
+Class QStyleOptionFrameV2
+ size=72 align=8
+ base size=68 base align=8
+QStyleOptionFrameV2 (0x7f95539cb850) 0
+ QStyleOptionFrame (0x7f95539cb8c0) 0
+ QStyleOption (0x7f95539cb930) 0
+
+Class QStyleOptionFrameV3
+ size=72 align=8
+ base size=72 base align=8
+QStyleOptionFrameV3 (0x7f9553813150) 0
+ QStyleOptionFrameV2 (0x7f95538131c0) 0
+ QStyleOptionFrame (0x7f9553813230) 0
+ QStyleOption (0x7f95538132a0) 0
+
+Class QStyleOptionTabWidgetFrame
+ size=96 align=8
+ base size=92 base align=8
+QStyleOptionTabWidgetFrame (0x7f955381ea10) 0
+ QStyleOption (0x7f955381ea80) 0
+
+Class QStyleOptionTabWidgetFrameV2
+ size=128 align=8
+ base size=124 base align=8
+QStyleOptionTabWidgetFrameV2 (0x7f95538341c0) 0
+ QStyleOptionTabWidgetFrame (0x7f9553834230) 0
+ QStyleOption (0x7f95538342a0) 0
+
+Class QStyleOptionTabBarBase
+ size=96 align=8
+ base size=92 base align=8
+QStyleOptionTabBarBase (0x7f955383daf0) 0
+ QStyleOption (0x7f955383db60) 0
+
+Class QStyleOptionTabBarBaseV2
+ size=96 align=8
+ base size=93 base align=8
+QStyleOptionTabBarBaseV2 (0x7f9553849ee0) 0
+ QStyleOptionTabBarBase (0x7f9553849f50) 0
+ QStyleOption (0x7f9553849310) 0
+
+Class QStyleOptionHeader
+ size=112 align=8
+ base size=108 base align=8
+QStyleOptionHeader (0x7f955385f540) 0
+ QStyleOption (0x7f955385f5b0) 0
+
+Class QStyleOptionButton
+ size=88 align=8
+ base size=88 base align=8
+QStyleOptionButton (0x7f9553877700) 0
+ QStyleOption (0x7f9553877770) 0
+
+Class QStyleOptionTab
+ size=96 align=8
+ base size=96 base align=8
+QStyleOptionTab (0x7f95538c50e0) 0
+ QStyleOption (0x7f95538c5150) 0
+
+Class QStyleOptionTabV2
+ size=104 align=8
+ base size=104 base align=8
+QStyleOptionTabV2 (0x7f9553713070) 0
+ QStyleOptionTab (0x7f95537130e0) 0
+ QStyleOption (0x7f9553713150) 0
+
+Class QStyleOptionTabV3
+ size=128 align=8
+ base size=124 base align=8
+QStyleOptionTabV3 (0x7f955371da80) 0
+ QStyleOptionTabV2 (0x7f955371daf0) 0
+ QStyleOptionTab (0x7f955371db60) 0
+ QStyleOption (0x7f955371dbd0) 0
+
+Class QStyleOptionToolBar
+ size=80 align=8
+ base size=80 base align=8
+QStyleOptionToolBar (0x7f955373c0e0) 0
+ QStyleOption (0x7f955373c150) 0
+
+Class QStyleOptionProgressBar
+ size=88 align=8
+ base size=85 base align=8
+QStyleOptionProgressBar (0x7f955376f8c0) 0
+ QStyleOption (0x7f955376f930) 0
+
+Class QStyleOptionProgressBarV2
+ size=96 align=8
+ base size=94 base align=8
+QStyleOptionProgressBarV2 (0x7f9553796070) 0
+ QStyleOptionProgressBar (0x7f95537960e0) 0
+ QStyleOption (0x7f9553796150) 0
+
+Class QStyleOptionMenuItem
+ size=128 align=8
+ base size=128 base align=8
+QStyleOptionMenuItem (0x7f9553796930) 0
+ QStyleOption (0x7f95537969a0) 0
+
+Class QStyleOptionQ3ListViewItem
+ size=80 align=8
+ base size=76 base align=8
+QStyleOptionQ3ListViewItem (0x7f95537b0b60) 0
+ QStyleOption (0x7f95537b0bd0) 0
+
+Class QStyleOptionQ3DockWindow
+ size=64 align=8
+ base size=58 base align=8
+QStyleOptionQ3DockWindow (0x7f95535ff000) 0
+ QStyleOption (0x7f95535ff070) 0
+
+Class QStyleOptionDockWidget
+ size=72 align=8
+ base size=67 base align=8
+QStyleOptionDockWidget (0x7f95535ff690) 0
+ QStyleOption (0x7f955360b000) 0
+
+Class QStyleOptionDockWidgetV2
+ size=72 align=8
+ base size=68 base align=8
+QStyleOptionDockWidgetV2 (0x7f9553619380) 0
+ QStyleOptionDockWidget (0x7f95536193f0) 0
+ QStyleOption (0x7f9553619460) 0
+
+Class QStyleOptionViewItem
+ size=104 align=8
+ base size=97 base align=8
+QStyleOptionViewItem (0x7f9553623b60) 0
+ QStyleOption (0x7f9553623bd0) 0
+
+Class QStyleOptionViewItemV2
+ size=104 align=8
+ base size=104 base align=8
+QStyleOptionViewItemV2 (0x7f955363c700) 0
+ QStyleOptionViewItem (0x7f955363c770) 0
+ QStyleOption (0x7f955363c7e0) 0
+
+Class QStyleOptionViewItemV3
+ size=120 align=8
+ base size=120 base align=8
+QStyleOptionViewItemV3 (0x7f955368a150) 0
+ QStyleOptionViewItemV2 (0x7f955368a1c0) 0
+ QStyleOptionViewItem (0x7f955368a230) 0
+ QStyleOption (0x7f955368a2a0) 0
+
+Class QStyleOptionViewItemV4
+ size=184 align=8
+ base size=184 base align=8
+QStyleOptionViewItemV4 (0x7f9553693a10) 0
+ QStyleOptionViewItemV3 (0x7f9553693a80) 0
+ QStyleOptionViewItemV2 (0x7f9553693af0) 0
+ QStyleOptionViewItem (0x7f9553693b60) 0
+ QStyleOption (0x7f9553693bd0) 0
+
+Class QStyleOptionToolBox
+ size=72 align=8
+ base size=72 base align=8
+QStyleOptionToolBox (0x7f95536b5150) 0
+ QStyleOption (0x7f95536b51c0) 0
+
+Class QStyleOptionToolBoxV2
+ size=80 align=8
+ base size=80 base align=8
+QStyleOptionToolBoxV2 (0x7f95536c2620) 0
+ QStyleOptionToolBox (0x7f95536c2690) 0
+ QStyleOption (0x7f95536c2700) 0
+
+Class QStyleOptionRubberBand
+ size=64 align=8
+ base size=61 base align=8
+QStyleOptionRubberBand (0x7f95536d8310) 0
+ QStyleOption (0x7f95536d8380) 0
+
+Class QStyleOptionComplex
+ size=64 align=8
+ base size=64 base align=8
+QStyleOptionComplex (0x7f95536e23f0) 0
+ QStyleOption (0x7f95536e2460) 0
+
+Class QStyleOptionSlider
+ size=120 align=8
+ base size=113 base align=8
+QStyleOptionSlider (0x7f95536ecbd0) 0
+ QStyleOptionComplex (0x7f95536ecc40) 0
+ QStyleOption (0x7f95536eccb0) 0
+
+Class QStyleOptionSpinBox
+ size=80 align=8
+ base size=73 base align=8
+QStyleOptionSpinBox (0x7f95535039a0) 0
+ QStyleOptionComplex (0x7f9553503a10) 0
+ QStyleOption (0x7f9553503a80) 0
+
+Class QStyleOptionQ3ListView
+ size=112 align=8
+ base size=105 base align=8
+QStyleOptionQ3ListView (0x7f955350aee0) 0
+ QStyleOptionComplex (0x7f955350af50) 0
+ QStyleOption (0x7f955350a380) 0
+
+Class QStyleOptionToolButton
+ size=128 align=8
+ base size=128 base align=8
+QStyleOptionToolButton (0x7f9553544af0) 0
+ QStyleOptionComplex (0x7f9553544b60) 0
+ QStyleOption (0x7f9553544bd0) 0
+
+Class QStyleOptionComboBox
+ size=112 align=8
+ base size=112 base align=8
+QStyleOptionComboBox (0x7f9553584d20) 0
+ QStyleOptionComplex (0x7f9553584d90) 0
+ QStyleOption (0x7f9553584e00) 0
+
+Class QStyleOptionTitleBar
+ size=88 align=8
+ base size=88 base align=8
+QStyleOptionTitleBar (0x7f95535ac850) 0
+ QStyleOptionComplex (0x7f95535ac8c0) 0
+ QStyleOption (0x7f95535ac930) 0
+
+Class QStyleOptionGroupBox
+ size=112 align=8
+ base size=108 base align=8
+QStyleOptionGroupBox (0x7f95535c40e0) 0
+ QStyleOptionComplex (0x7f95535c4150) 0
+ QStyleOption (0x7f95535c41c0) 0
+
+Class QStyleOptionSizeGrip
+ size=72 align=8
+ base size=68 base align=8
+QStyleOptionSizeGrip (0x7f95535d2cb0) 0
+ QStyleOptionComplex (0x7f95535d2d20) 0
+ QStyleOption (0x7f95535d2d90) 0
+
+Class QStyleOptionGraphicsItem
+ size=144 align=8
+ base size=144 base align=8
+QStyleOptionGraphicsItem (0x7f95535dbc40) 0
+ QStyleOption (0x7f95535dbcb0) 0
+
+Class QStyleHintReturn
+ size=8 align=4
+ base size=8 base align=4
+QStyleHintReturn (0x7f95535e92a0) 0
+
+Class QStyleHintReturnMask
+ size=16 align=8
+ base size=16 base align=8
+QStyleHintReturnMask (0x7f95534093f0) 0
+ QStyleHintReturn (0x7f9553409460) 0
+
+Class QStyleHintReturnVariant
+ size=24 align=8
+ base size=24 base align=8
+QStyleHintReturnVariant (0x7f9553409620) 0
+ QStyleHintReturn (0x7f9553409690) 0
+
+Vtable for QAbstractItemDelegate
+QAbstractItemDelegate::_ZTV21QAbstractItemDelegate: 21u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QAbstractItemDelegate)
+16 QAbstractItemDelegate::metaObject
+24 QAbstractItemDelegate::qt_metacast
+32 QAbstractItemDelegate::qt_metacall
+40 QAbstractItemDelegate::~QAbstractItemDelegate
+48 QAbstractItemDelegate::~QAbstractItemDelegate
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 QAbstractItemDelegate::createEditor
+136 QAbstractItemDelegate::setEditorData
+144 QAbstractItemDelegate::setModelData
+152 QAbstractItemDelegate::updateEditorGeometry
+160 QAbstractItemDelegate::editorEvent
+
+Class QAbstractItemDelegate
+ size=16 align=8
+ base size=16 base align=8
+QAbstractItemDelegate (0x7f9553409af0) 0
+ vptr=((& QAbstractItemDelegate::_ZTV21QAbstractItemDelegate) + 16u)
+ QObject (0x7f9553409b60) 0
+ primary-for QAbstractItemDelegate (0x7f9553409af0)
+
+Vtable for QAbstractItemView
+QAbstractItemView::_ZTV17QAbstractItemView: 103u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAbstractItemView)
+16 QAbstractItemView::metaObject
+24 QAbstractItemView::qt_metacast
+32 QAbstractItemView::qt_metacall
+40 QAbstractItemView::~QAbstractItemView
+48 QAbstractItemView::~QAbstractItemView
+56 QAbstractItemView::event
+64 QObject::eventFilter
+72 QAbstractItemView::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractItemView::mousePressEvent
+168 QAbstractItemView::mouseReleaseEvent
+176 QAbstractItemView::mouseDoubleClickEvent
+184 QAbstractItemView::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractItemView::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QAbstractItemView::focusInEvent
+224 QAbstractItemView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QAbstractScrollArea::paintEvent
+256 QWidget::moveEvent
+264 QAbstractItemView::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractItemView::dragEnterEvent
+312 QAbstractItemView::dragMoveEvent
+320 QAbstractItemView::dragLeaveEvent
+328 QAbstractItemView::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QAbstractItemView::inputMethodEvent
+384 QAbstractItemView::inputMethodQuery
+392 QAbstractItemView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractItemView::viewportEvent
+456 QAbstractScrollArea::scrollContentsBy
+464 QAbstractItemView::setModel
+472 QAbstractItemView::setSelectionModel
+480 QAbstractItemView::keyboardSearch
+488 __cxa_pure_virtual
+496 __cxa_pure_virtual
+504 __cxa_pure_virtual
+512 QAbstractItemView::sizeHintForRow
+520 QAbstractItemView::sizeHintForColumn
+528 QAbstractItemView::reset
+536 QAbstractItemView::setRootIndex
+544 QAbstractItemView::doItemsLayout
+552 QAbstractItemView::selectAll
+560 QAbstractItemView::dataChanged
+568 QAbstractItemView::rowsInserted
+576 QAbstractItemView::rowsAboutToBeRemoved
+584 QAbstractItemView::selectionChanged
+592 QAbstractItemView::currentChanged
+600 QAbstractItemView::updateEditorData
+608 QAbstractItemView::updateEditorGeometries
+616 QAbstractItemView::updateGeometries
+624 QAbstractItemView::verticalScrollbarAction
+632 QAbstractItemView::horizontalScrollbarAction
+640 QAbstractItemView::verticalScrollbarValueChanged
+648 QAbstractItemView::horizontalScrollbarValueChanged
+656 QAbstractItemView::closeEditor
+664 QAbstractItemView::commitData
+672 QAbstractItemView::editorDestroyed
+680 __cxa_pure_virtual
+688 __cxa_pure_virtual
+696 __cxa_pure_virtual
+704 __cxa_pure_virtual
+712 __cxa_pure_virtual
+720 __cxa_pure_virtual
+728 QAbstractItemView::selectedIndexes
+736 QAbstractItemView::edit
+744 QAbstractItemView::selectionCommand
+752 QAbstractItemView::startDrag
+760 QAbstractItemView::viewOptions
+768 (int (*)(...))-0x00000000000000010
+776 (int (*)(...))(& _ZTI17QAbstractItemView)
+784 QAbstractItemView::_ZThn16_N17QAbstractItemViewD1Ev
+792 QAbstractItemView::_ZThn16_N17QAbstractItemViewD0Ev
+800 QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractItemView
+ size=40 align=8
+ base size=40 base align=8
+QAbstractItemView (0x7f95534381c0) 0
+ vptr=((& QAbstractItemView::_ZTV17QAbstractItemView) + 16u)
+ QAbstractScrollArea (0x7f9553438230) 0
+ primary-for QAbstractItemView (0x7f95534381c0)
+ QFrame (0x7f95534382a0) 0
+ primary-for QAbstractScrollArea (0x7f9553438230)
+ QWidget (0x7f9553417d80) 0
+ primary-for QFrame (0x7f95534382a0)
+ QObject (0x7f9553438310) 0
+ primary-for QWidget (0x7f9553417d80)
+ QPaintDevice (0x7f9553438380) 16
+ vptr=((& QAbstractItemView::_ZTV17QAbstractItemView) + 784u)
+
+Vtable for QListView
+QListView::_ZTV9QListView: 103u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QListView)
+16 QListView::metaObject
+24 QListView::qt_metacast
+32 QListView::qt_metacall
+40 QListView::~QListView
+48 QListView::~QListView
+56 QListView::event
+64 QObject::eventFilter
+72 QListView::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractItemView::mousePressEvent
+168 QListView::mouseReleaseEvent
+176 QAbstractItemView::mouseDoubleClickEvent
+184 QListView::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractItemView::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QAbstractItemView::focusInEvent
+224 QAbstractItemView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QListView::paintEvent
+256 QWidget::moveEvent
+264 QListView::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractItemView::dragEnterEvent
+312 QListView::dragMoveEvent
+320 QListView::dragLeaveEvent
+328 QListView::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QAbstractItemView::inputMethodEvent
+384 QAbstractItemView::inputMethodQuery
+392 QAbstractItemView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractItemView::viewportEvent
+456 QListView::scrollContentsBy
+464 QAbstractItemView::setModel
+472 QAbstractItemView::setSelectionModel
+480 QAbstractItemView::keyboardSearch
+488 QListView::visualRect
+496 QListView::scrollTo
+504 QListView::indexAt
+512 QAbstractItemView::sizeHintForRow
+520 QAbstractItemView::sizeHintForColumn
+528 QListView::reset
+536 QListView::setRootIndex
+544 QListView::doItemsLayout
+552 QAbstractItemView::selectAll
+560 QListView::dataChanged
+568 QListView::rowsInserted
+576 QListView::rowsAboutToBeRemoved
+584 QListView::selectionChanged
+592 QListView::currentChanged
+600 QAbstractItemView::updateEditorData
+608 QAbstractItemView::updateEditorGeometries
+616 QListView::updateGeometries
+624 QAbstractItemView::verticalScrollbarAction
+632 QAbstractItemView::horizontalScrollbarAction
+640 QAbstractItemView::verticalScrollbarValueChanged
+648 QAbstractItemView::horizontalScrollbarValueChanged
+656 QAbstractItemView::closeEditor
+664 QAbstractItemView::commitData
+672 QAbstractItemView::editorDestroyed
+680 QListView::moveCursor
+688 QListView::horizontalOffset
+696 QListView::verticalOffset
+704 QListView::isIndexHidden
+712 QListView::setSelection
+720 QListView::visualRegionForSelection
+728 QListView::selectedIndexes
+736 QAbstractItemView::edit
+744 QAbstractItemView::selectionCommand
+752 QListView::startDrag
+760 QListView::viewOptions
+768 (int (*)(...))-0x00000000000000010
+776 (int (*)(...))(& _ZTI9QListView)
+784 QListView::_ZThn16_N9QListViewD1Ev
+792 QListView::_ZThn16_N9QListViewD0Ev
+800 QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QListView
+ size=40 align=8
+ base size=40 base align=8
+QListView (0x7f95534ae9a0) 0
+ vptr=((& QListView::_ZTV9QListView) + 16u)
+ QAbstractItemView (0x7f95534aea10) 0
+ primary-for QListView (0x7f95534ae9a0)
+ QAbstractScrollArea (0x7f95534aea80) 0
+ primary-for QAbstractItemView (0x7f95534aea10)
+ QFrame (0x7f95534aeaf0) 0
+ primary-for QAbstractScrollArea (0x7f95534aea80)
+ QWidget (0x7f9553498500) 0
+ primary-for QFrame (0x7f95534aeaf0)
+ QObject (0x7f95534aeb60) 0
+ primary-for QWidget (0x7f9553498500)
+ QPaintDevice (0x7f95534aebd0) 16
+ vptr=((& QListView::_ZTV9QListView) + 784u)
+
+Vtable for QUndoView
+QUndoView::_ZTV9QUndoView: 103u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QUndoView)
+16 QUndoView::metaObject
+24 QUndoView::qt_metacast
+32 QUndoView::qt_metacall
+40 QUndoView::~QUndoView
+48 QUndoView::~QUndoView
+56 QListView::event
+64 QObject::eventFilter
+72 QListView::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractItemView::mousePressEvent
+168 QListView::mouseReleaseEvent
+176 QAbstractItemView::mouseDoubleClickEvent
+184 QListView::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractItemView::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QAbstractItemView::focusInEvent
+224 QAbstractItemView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QListView::paintEvent
+256 QWidget::moveEvent
+264 QListView::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractItemView::dragEnterEvent
+312 QListView::dragMoveEvent
+320 QListView::dragLeaveEvent
+328 QListView::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QAbstractItemView::inputMethodEvent
+384 QAbstractItemView::inputMethodQuery
+392 QAbstractItemView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractItemView::viewportEvent
+456 QListView::scrollContentsBy
+464 QAbstractItemView::setModel
+472 QAbstractItemView::setSelectionModel
+480 QAbstractItemView::keyboardSearch
+488 QListView::visualRect
+496 QListView::scrollTo
+504 QListView::indexAt
+512 QAbstractItemView::sizeHintForRow
+520 QAbstractItemView::sizeHintForColumn
+528 QListView::reset
+536 QListView::setRootIndex
+544 QListView::doItemsLayout
+552 QAbstractItemView::selectAll
+560 QListView::dataChanged
+568 QListView::rowsInserted
+576 QListView::rowsAboutToBeRemoved
+584 QListView::selectionChanged
+592 QListView::currentChanged
+600 QAbstractItemView::updateEditorData
+608 QAbstractItemView::updateEditorGeometries
+616 QListView::updateGeometries
+624 QAbstractItemView::verticalScrollbarAction
+632 QAbstractItemView::horizontalScrollbarAction
+640 QAbstractItemView::verticalScrollbarValueChanged
+648 QAbstractItemView::horizontalScrollbarValueChanged
+656 QAbstractItemView::closeEditor
+664 QAbstractItemView::commitData
+672 QAbstractItemView::editorDestroyed
+680 QListView::moveCursor
+688 QListView::horizontalOffset
+696 QListView::verticalOffset
+704 QListView::isIndexHidden
+712 QListView::setSelection
+720 QListView::visualRegionForSelection
+728 QListView::selectedIndexes
+736 QAbstractItemView::edit
+744 QAbstractItemView::selectionCommand
+752 QListView::startDrag
+760 QListView::viewOptions
+768 (int (*)(...))-0x00000000000000010
+776 (int (*)(...))(& _ZTI9QUndoView)
+784 QUndoView::_ZThn16_N9QUndoViewD1Ev
+792 QUndoView::_ZThn16_N9QUndoViewD0Ev
+800 QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QUndoView
+ size=40 align=8
+ base size=40 base align=8
+QUndoView (0x7f95532fb070) 0
+ vptr=((& QUndoView::_ZTV9QUndoView) + 16u)
+ QListView (0x7f95532fb0e0) 0
+ primary-for QUndoView (0x7f95532fb070)
+ QAbstractItemView (0x7f95532fb150) 0
+ primary-for QListView (0x7f95532fb0e0)
+ QAbstractScrollArea (0x7f95532fb1c0) 0
+ primary-for QAbstractItemView (0x7f95532fb150)
+ QFrame (0x7f95532fb230) 0
+ primary-for QAbstractScrollArea (0x7f95532fb1c0)
+ QWidget (0x7f95532f5500) 0
+ primary-for QFrame (0x7f95532fb230)
+ QObject (0x7f95532fb2a0) 0
+ primary-for QWidget (0x7f95532f5500)
+ QPaintDevice (0x7f95532fb310) 16
+ vptr=((& QUndoView::_ZTV9QUndoView) + 784u)
+
+Vtable for QDialog
+QDialog::_ZTV7QDialog: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QDialog)
+16 QDialog::metaObject
+24 QDialog::qt_metacast
+32 QDialog::qt_metacall
+40 QDialog::~QDialog
+48 QDialog::~QDialog
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QDialog::setVisible
+128 QDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QDialog::done
+456 QDialog::accept
+464 QDialog::reject
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI7QDialog)
+488 QDialog::_ZThn16_N7QDialogD1Ev
+496 QDialog::_ZThn16_N7QDialogD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDialog
+ size=40 align=8
+ base size=40 base align=8
+QDialog (0x7f9553315d20) 0
+ vptr=((& QDialog::_ZTV7QDialog) + 16u)
+ QWidget (0x7f95532f5f00) 0
+ primary-for QDialog (0x7f9553315d20)
+ QObject (0x7f9553315d90) 0
+ primary-for QWidget (0x7f95532f5f00)
+ QPaintDevice (0x7f9553315e00) 16
+ vptr=((& QDialog::_ZTV7QDialog) + 488u)
+
+Vtable for QAbstractPageSetupDialog
+QAbstractPageSetupDialog::_ZTV24QAbstractPageSetupDialog: 67u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractPageSetupDialog)
+16 QAbstractPageSetupDialog::metaObject
+24 QAbstractPageSetupDialog::qt_metacast
+32 QAbstractPageSetupDialog::qt_metacall
+40 QAbstractPageSetupDialog::~QAbstractPageSetupDialog
+48 QAbstractPageSetupDialog::~QAbstractPageSetupDialog
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QDialog::setVisible
+128 QDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractPageSetupDialog::done
+456 QDialog::accept
+464 QDialog::reject
+472 __cxa_pure_virtual
+480 (int (*)(...))-0x00000000000000010
+488 (int (*)(...))(& _ZTI24QAbstractPageSetupDialog)
+496 QAbstractPageSetupDialog::_ZThn16_N24QAbstractPageSetupDialogD1Ev
+504 QAbstractPageSetupDialog::_ZThn16_N24QAbstractPageSetupDialogD0Ev
+512 QWidget::_ZThn16_NK7QWidget7devTypeEv
+520 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+528 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractPageSetupDialog
+ size=40 align=8
+ base size=40 base align=8
+QAbstractPageSetupDialog (0x7f955333ab60) 0
+ vptr=((& QAbstractPageSetupDialog::_ZTV24QAbstractPageSetupDialog) + 16u)
+ QDialog (0x7f955333abd0) 0
+ primary-for QAbstractPageSetupDialog (0x7f955333ab60)
+ QWidget (0x7f955331ba00) 0
+ primary-for QDialog (0x7f955333abd0)
+ QObject (0x7f955333ac40) 0
+ primary-for QWidget (0x7f955331ba00)
+ QPaintDevice (0x7f955333acb0) 16
+ vptr=((& QAbstractPageSetupDialog::_ZTV24QAbstractPageSetupDialog) + 496u)
+
+Vtable for QAbstractPrintDialog
+QAbstractPrintDialog::_ZTV20QAbstractPrintDialog: 67u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QAbstractPrintDialog)
+16 QAbstractPrintDialog::metaObject
+24 QAbstractPrintDialog::qt_metacast
+32 QAbstractPrintDialog::qt_metacall
+40 QAbstractPrintDialog::~QAbstractPrintDialog
+48 QAbstractPrintDialog::~QAbstractPrintDialog
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QDialog::setVisible
+128 QDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QDialog::done
+456 QDialog::accept
+464 QDialog::reject
+472 __cxa_pure_virtual
+480 (int (*)(...))-0x00000000000000010
+488 (int (*)(...))(& _ZTI20QAbstractPrintDialog)
+496 QAbstractPrintDialog::_ZThn16_N20QAbstractPrintDialogD1Ev
+504 QAbstractPrintDialog::_ZThn16_N20QAbstractPrintDialogD0Ev
+512 QWidget::_ZThn16_NK7QWidget7devTypeEv
+520 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+528 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractPrintDialog
+ size=40 align=8
+ base size=40 base align=8
+QAbstractPrintDialog (0x7f955335a150) 0
+ vptr=((& QAbstractPrintDialog::_ZTV20QAbstractPrintDialog) + 16u)
+ QDialog (0x7f955335a1c0) 0
+ primary-for QAbstractPrintDialog (0x7f955335a150)
+ QWidget (0x7f9553351400) 0
+ primary-for QDialog (0x7f955335a1c0)
+ QObject (0x7f955335a230) 0
+ primary-for QWidget (0x7f9553351400)
+ QPaintDevice (0x7f955335a2a0) 16
+ vptr=((& QAbstractPrintDialog::_ZTV20QAbstractPrintDialog) + 496u)
+
+Vtable for QColorDialog
+QColorDialog::_ZTV12QColorDialog: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QColorDialog)
+16 QColorDialog::metaObject
+24 QColorDialog::qt_metacast
+32 QColorDialog::qt_metacall
+40 QColorDialog::~QColorDialog
+48 QColorDialog::~QColorDialog
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QColorDialog::setVisible
+128 QDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QColorDialog::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QColorDialog::done
+456 QDialog::accept
+464 QDialog::reject
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI12QColorDialog)
+488 QColorDialog::_ZThn16_N12QColorDialogD1Ev
+496 QColorDialog::_ZThn16_N12QColorDialogD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QColorDialog
+ size=40 align=8
+ base size=40 base align=8
+QColorDialog (0x7f95533b6230) 0
+ vptr=((& QColorDialog::_ZTV12QColorDialog) + 16u)
+ QDialog (0x7f95533b62a0) 0
+ primary-for QColorDialog (0x7f95533b6230)
+ QWidget (0x7f9553377880) 0
+ primary-for QDialog (0x7f95533b62a0)
+ QObject (0x7f95533b6310) 0
+ primary-for QWidget (0x7f9553377880)
+ QPaintDevice (0x7f95533b6380) 16
+ vptr=((& QColorDialog::_ZTV12QColorDialog) + 488u)
+
+Vtable for QErrorMessage
+QErrorMessage::_ZTV13QErrorMessage: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QErrorMessage)
+16 QErrorMessage::metaObject
+24 QErrorMessage::qt_metacast
+32 QErrorMessage::qt_metacall
+40 QErrorMessage::~QErrorMessage
+48 QErrorMessage::~QErrorMessage
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QDialog::setVisible
+128 QDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QErrorMessage::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QErrorMessage::done
+456 QDialog::accept
+464 QDialog::reject
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI13QErrorMessage)
+488 QErrorMessage::_ZThn16_N13QErrorMessageD1Ev
+496 QErrorMessage::_ZThn16_N13QErrorMessageD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QErrorMessage
+ size=40 align=8
+ base size=40 base align=8
+QErrorMessage (0x7f95532165b0) 0
+ vptr=((& QErrorMessage::_ZTV13QErrorMessage) + 16u)
+ QDialog (0x7f9553216620) 0
+ primary-for QErrorMessage (0x7f95532165b0)
+ QWidget (0x7f95533dfc00) 0
+ primary-for QDialog (0x7f9553216620)
+ QObject (0x7f9553216690) 0
+ primary-for QWidget (0x7f95533dfc00)
+ QPaintDevice (0x7f9553216700) 16
+ vptr=((& QErrorMessage::_ZTV13QErrorMessage) + 488u)
+
+Vtable for QFileDialog
+QFileDialog::_ZTV11QFileDialog: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFileDialog)
+16 QFileDialog::metaObject
+24 QFileDialog::qt_metacast
+32 QFileDialog::qt_metacall
+40 QFileDialog::~QFileDialog
+48 QFileDialog::~QFileDialog
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QFileDialog::setVisible
+128 QDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFileDialog::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QFileDialog::done
+456 QFileDialog::accept
+464 QDialog::reject
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI11QFileDialog)
+488 QFileDialog::_ZThn16_N11QFileDialogD1Ev
+496 QFileDialog::_ZThn16_N11QFileDialogD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFileDialog
+ size=40 align=8
+ base size=40 base align=8
+QFileDialog (0x7f95532331c0) 0
+ vptr=((& QFileDialog::_ZTV11QFileDialog) + 16u)
+ QDialog (0x7f9553233230) 0
+ primary-for QFileDialog (0x7f95532331c0)
+ QWidget (0x7f955322b780) 0
+ primary-for QDialog (0x7f9553233230)
+ QObject (0x7f95532332a0) 0
+ primary-for QWidget (0x7f955322b780)
+ QPaintDevice (0x7f9553233310) 16
+ vptr=((& QFileDialog::_ZTV11QFileDialog) + 488u)
+
+Vtable for QFileSystemModel
+QFileSystemModel::_ZTV16QFileSystemModel: 42u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QFileSystemModel)
+16 QFileSystemModel::metaObject
+24 QFileSystemModel::qt_metacast
+32 QFileSystemModel::qt_metacall
+40 QFileSystemModel::~QFileSystemModel
+48 QFileSystemModel::~QFileSystemModel
+56 QFileSystemModel::event
+64 QObject::eventFilter
+72 QFileSystemModel::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QFileSystemModel::index
+120 QFileSystemModel::parent
+128 QFileSystemModel::rowCount
+136 QFileSystemModel::columnCount
+144 QFileSystemModel::hasChildren
+152 QFileSystemModel::data
+160 QFileSystemModel::setData
+168 QFileSystemModel::headerData
+176 QAbstractItemModel::setHeaderData
+184 QAbstractItemModel::itemData
+192 QAbstractItemModel::setItemData
+200 QFileSystemModel::mimeTypes
+208 QFileSystemModel::mimeData
+216 QFileSystemModel::dropMimeData
+224 QFileSystemModel::supportedDropActions
+232 QAbstractItemModel::insertRows
+240 QAbstractItemModel::insertColumns
+248 QAbstractItemModel::removeRows
+256 QAbstractItemModel::removeColumns
+264 QFileSystemModel::fetchMore
+272 QFileSystemModel::canFetchMore
+280 QFileSystemModel::flags
+288 QFileSystemModel::sort
+296 QAbstractItemModel::buddy
+304 QAbstractItemModel::match
+312 QAbstractItemModel::span
+320 QAbstractItemModel::submit
+328 QAbstractItemModel::revert
+
+Class QFileSystemModel
+ size=16 align=8
+ base size=16 base align=8
+QFileSystemModel (0x7f95532af770) 0
+ vptr=((& QFileSystemModel::_ZTV16QFileSystemModel) + 16u)
+ QAbstractItemModel (0x7f95532af7e0) 0
+ primary-for QFileSystemModel (0x7f95532af770)
+ QObject (0x7f95532af850) 0
+ primary-for QAbstractItemModel (0x7f95532af7e0)
+
+Vtable for QFontDialog
+QFontDialog::_ZTV11QFontDialog: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFontDialog)
+16 QFontDialog::metaObject
+24 QFontDialog::qt_metacast
+32 QFontDialog::qt_metacall
+40 QFontDialog::~QFontDialog
+48 QFontDialog::~QFontDialog
+56 QWidget::event
+64 QFontDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QFontDialog::setVisible
+128 QDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFontDialog::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QFontDialog::done
+456 QDialog::accept
+464 QDialog::reject
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI11QFontDialog)
+488 QFontDialog::_ZThn16_N11QFontDialogD1Ev
+496 QFontDialog::_ZThn16_N11QFontDialogD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFontDialog
+ size=40 align=8
+ base size=40 base align=8
+QFontDialog (0x7f95530f2e70) 0
+ vptr=((& QFontDialog::_ZTV11QFontDialog) + 16u)
+ QDialog (0x7f95530f2ee0) 0
+ primary-for QFontDialog (0x7f95530f2e70)
+ QWidget (0x7f95530fc500) 0
+ primary-for QDialog (0x7f95530f2ee0)
+ QObject (0x7f95530f2f50) 0
+ primary-for QWidget (0x7f95530fc500)
+ QPaintDevice (0x7f9553101000) 16
+ vptr=((& QFontDialog::_ZTV11QFontDialog) + 488u)
+
+Vtable for QLineEdit
+QLineEdit::_ZTV9QLineEdit: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QLineEdit)
+16 QLineEdit::metaObject
+24 QLineEdit::qt_metacast
+32 QLineEdit::qt_metacall
+40 QLineEdit::~QLineEdit
+48 QLineEdit::~QLineEdit
+56 QLineEdit::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QLineEdit::sizeHint
+136 QLineEdit::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QLineEdit::mousePressEvent
+168 QLineEdit::mouseReleaseEvent
+176 QLineEdit::mouseDoubleClickEvent
+184 QLineEdit::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QLineEdit::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QLineEdit::focusInEvent
+224 QLineEdit::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QLineEdit::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QLineEdit::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QLineEdit::dragEnterEvent
+312 QLineEdit::dragMoveEvent
+320 QLineEdit::dragLeaveEvent
+328 QLineEdit::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QLineEdit::changeEvent
+368 QWidget::metric
+376 QLineEdit::inputMethodEvent
+384 QLineEdit::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI9QLineEdit)
+464 QLineEdit::_ZThn16_N9QLineEditD1Ev
+472 QLineEdit::_ZThn16_N9QLineEditD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QLineEdit
+ size=40 align=8
+ base size=40 base align=8
+QLineEdit (0x7f9553163310) 0
+ vptr=((& QLineEdit::_ZTV9QLineEdit) + 16u)
+ QWidget (0x7f9553126800) 0
+ primary-for QLineEdit (0x7f9553163310)
+ QObject (0x7f9553163380) 0
+ primary-for QWidget (0x7f9553126800)
+ QPaintDevice (0x7f95531633f0) 16
+ vptr=((& QLineEdit::_ZTV9QLineEdit) + 464u)
+
+Vtable for QInputDialog
+QInputDialog::_ZTV12QInputDialog: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QInputDialog)
+16 QInputDialog::metaObject
+24 QInputDialog::qt_metacast
+32 QInputDialog::qt_metacall
+40 QInputDialog::~QInputDialog
+48 QInputDialog::~QInputDialog
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QInputDialog::setVisible
+128 QInputDialog::sizeHint
+136 QInputDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QInputDialog::done
+456 QDialog::accept
+464 QDialog::reject
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI12QInputDialog)
+488 QInputDialog::_ZThn16_N12QInputDialogD1Ev
+496 QInputDialog::_ZThn16_N12QInputDialogD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QInputDialog
+ size=40 align=8
+ base size=40 base align=8
+QInputDialog (0x7f95531b5070) 0
+ vptr=((& QInputDialog::_ZTV12QInputDialog) + 16u)
+ QDialog (0x7f95531b50e0) 0
+ primary-for QInputDialog (0x7f95531b5070)
+ QWidget (0x7f95531ae780) 0
+ primary-for QDialog (0x7f95531b50e0)
+ QObject (0x7f95531b5150) 0
+ primary-for QWidget (0x7f95531ae780)
+ QPaintDevice (0x7f95531b51c0) 16
+ vptr=((& QInputDialog::_ZTV12QInputDialog) + 488u)
+
+Vtable for QMessageBox
+QMessageBox::_ZTV11QMessageBox: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMessageBox)
+16 QMessageBox::metaObject
+24 QMessageBox::qt_metacast
+32 QMessageBox::qt_metacall
+40 QMessageBox::~QMessageBox
+48 QMessageBox::~QMessageBox
+56 QMessageBox::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QDialog::setVisible
+128 QMessageBox::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QMessageBox::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QMessageBox::resizeEvent
+272 QMessageBox::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QMessageBox::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QMessageBox::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QDialog::done
+456 QDialog::accept
+464 QDialog::reject
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI11QMessageBox)
+488 QMessageBox::_ZThn16_N11QMessageBoxD1Ev
+496 QMessageBox::_ZThn16_N11QMessageBoxD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMessageBox
+ size=40 align=8
+ base size=40 base align=8
+QMessageBox (0x7f9553012ee0) 0
+ vptr=((& QMessageBox::_ZTV11QMessageBox) + 16u)
+ QDialog (0x7f9553012f50) 0
+ primary-for QMessageBox (0x7f9553012ee0)
+ QWidget (0x7f955302b100) 0
+ primary-for QDialog (0x7f9553012f50)
+ QObject (0x7f955302c000) 0
+ primary-for QWidget (0x7f955302b100)
+ QPaintDevice (0x7f955302c070) 16
+ vptr=((& QMessageBox::_ZTV11QMessageBox) + 488u)
+
+Vtable for QPageSetupDialog
+QPageSetupDialog::_ZTV16QPageSetupDialog: 67u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QPageSetupDialog)
+16 QPageSetupDialog::metaObject
+24 QPageSetupDialog::qt_metacast
+32 QPageSetupDialog::qt_metacall
+40 QPageSetupDialog::~QPageSetupDialog
+48 QPageSetupDialog::~QPageSetupDialog
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QDialog::setVisible
+128 QDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractPageSetupDialog::done
+456 QDialog::accept
+464 QDialog::reject
+472 QPageSetupDialog::exec
+480 (int (*)(...))-0x00000000000000010
+488 (int (*)(...))(& _ZTI16QPageSetupDialog)
+496 QPageSetupDialog::_ZThn16_N16QPageSetupDialogD1Ev
+504 QPageSetupDialog::_ZThn16_N16QPageSetupDialogD0Ev
+512 QWidget::_ZThn16_NK7QWidget7devTypeEv
+520 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+528 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPageSetupDialog
+ size=40 align=8
+ base size=40 base align=8
+QPageSetupDialog (0x7f95530ad850) 0
+ vptr=((& QPageSetupDialog::_ZTV16QPageSetupDialog) + 16u)
+ QAbstractPageSetupDialog (0x7f95530ad8c0) 0
+ primary-for QPageSetupDialog (0x7f95530ad850)
+ QDialog (0x7f95530ad930) 0
+ primary-for QAbstractPageSetupDialog (0x7f95530ad8c0)
+ QWidget (0x7f9553092800) 0
+ primary-for QDialog (0x7f95530ad930)
+ QObject (0x7f95530ad9a0) 0
+ primary-for QWidget (0x7f9553092800)
+ QPaintDevice (0x7f95530ada10) 16
+ vptr=((& QPageSetupDialog::_ZTV16QPageSetupDialog) + 496u)
+
+Vtable for QUnixPrintWidget
+QUnixPrintWidget::_ZTV16QUnixPrintWidget: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QUnixPrintWidget)
+16 QUnixPrintWidget::metaObject
+24 QUnixPrintWidget::qt_metacast
+32 QUnixPrintWidget::qt_metacall
+40 QUnixPrintWidget::~QUnixPrintWidget
+48 QUnixPrintWidget::~QUnixPrintWidget
+56 QWidget::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI16QUnixPrintWidget)
+464 QUnixPrintWidget::_ZThn16_N16QUnixPrintWidgetD1Ev
+472 QUnixPrintWidget::_ZThn16_N16QUnixPrintWidgetD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QUnixPrintWidget
+ size=48 align=8
+ base size=48 base align=8
+QUnixPrintWidget (0x7f95530e17e0) 0
+ vptr=((& QUnixPrintWidget::_ZTV16QUnixPrintWidget) + 16u)
+ QWidget (0x7f95530e0380) 0
+ primary-for QUnixPrintWidget (0x7f95530e17e0)
+ QObject (0x7f95530e1850) 0
+ primary-for QWidget (0x7f95530e0380)
+ QPaintDevice (0x7f95530e18c0) 16
+ vptr=((& QUnixPrintWidget::_ZTV16QUnixPrintWidget) + 464u)
+
+Vtable for QPrintDialog
+QPrintDialog::_ZTV12QPrintDialog: 67u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QPrintDialog)
+16 QPrintDialog::metaObject
+24 QPrintDialog::qt_metacast
+32 QPrintDialog::qt_metacall
+40 QPrintDialog::~QPrintDialog
+48 QPrintDialog::~QPrintDialog
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QPrintDialog::setVisible
+128 QDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QPrintDialog::done
+456 QPrintDialog::accept
+464 QDialog::reject
+472 QPrintDialog::exec
+480 (int (*)(...))-0x00000000000000010
+488 (int (*)(...))(& _ZTI12QPrintDialog)
+496 QPrintDialog::_ZThn16_N12QPrintDialogD1Ev
+504 QPrintDialog::_ZThn16_N12QPrintDialogD0Ev
+512 QWidget::_ZThn16_NK7QWidget7devTypeEv
+520 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+528 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPrintDialog
+ size=40 align=8
+ base size=40 base align=8
+QPrintDialog (0x7f9552ef8700) 0
+ vptr=((& QPrintDialog::_ZTV12QPrintDialog) + 16u)
+ QAbstractPrintDialog (0x7f9552ef8770) 0
+ primary-for QPrintDialog (0x7f9552ef8700)
+ QDialog (0x7f9552ef87e0) 0
+ primary-for QAbstractPrintDialog (0x7f9552ef8770)
+ QWidget (0x7f95530e0a80) 0
+ primary-for QDialog (0x7f9552ef87e0)
+ QObject (0x7f9552ef8850) 0
+ primary-for QWidget (0x7f95530e0a80)
+ QPaintDevice (0x7f9552ef88c0) 16
+ vptr=((& QPrintDialog::_ZTV12QPrintDialog) + 496u)
+
+Vtable for QPrintPreviewDialog
+QPrintPreviewDialog::_ZTV19QPrintPreviewDialog: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QPrintPreviewDialog)
+16 QPrintPreviewDialog::metaObject
+24 QPrintPreviewDialog::qt_metacast
+32 QPrintPreviewDialog::qt_metacall
+40 QPrintPreviewDialog::~QPrintPreviewDialog
+48 QPrintPreviewDialog::~QPrintPreviewDialog
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QPrintPreviewDialog::setVisible
+128 QDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDialog::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QPrintPreviewDialog::done
+456 QDialog::accept
+464 QDialog::reject
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI19QPrintPreviewDialog)
+488 QPrintPreviewDialog::_ZThn16_N19QPrintPreviewDialogD1Ev
+496 QPrintPreviewDialog::_ZThn16_N19QPrintPreviewDialogD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPrintPreviewDialog
+ size=48 align=8
+ base size=48 base align=8
+QPrintPreviewDialog (0x7f9552f162a0) 0
+ vptr=((& QPrintPreviewDialog::_ZTV19QPrintPreviewDialog) + 16u)
+ QDialog (0x7f9552f16310) 0
+ primary-for QPrintPreviewDialog (0x7f9552f162a0)
+ QWidget (0x7f9552f10480) 0
+ primary-for QDialog (0x7f9552f16310)
+ QObject (0x7f9552f16380) 0
+ primary-for QWidget (0x7f9552f10480)
+ QPaintDevice (0x7f9552f163f0) 16
+ vptr=((& QPrintPreviewDialog::_ZTV19QPrintPreviewDialog) + 488u)
+
+Vtable for QProgressDialog
+QProgressDialog::_ZTV15QProgressDialog: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QProgressDialog)
+16 QProgressDialog::metaObject
+24 QProgressDialog::qt_metacast
+32 QProgressDialog::qt_metacall
+40 QProgressDialog::~QProgressDialog
+48 QProgressDialog::~QProgressDialog
+56 QWidget::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QDialog::setVisible
+128 QProgressDialog::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QProgressDialog::resizeEvent
+272 QProgressDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QProgressDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QProgressDialog::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QDialog::done
+456 QDialog::accept
+464 QDialog::reject
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI15QProgressDialog)
+488 QProgressDialog::_ZThn16_N15QProgressDialogD1Ev
+496 QProgressDialog::_ZThn16_N15QProgressDialogD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QProgressDialog
+ size=40 align=8
+ base size=40 base align=8
+QProgressDialog (0x7f9552f2da10) 0
+ vptr=((& QProgressDialog::_ZTV15QProgressDialog) + 16u)
+ QDialog (0x7f9552f2da80) 0
+ primary-for QProgressDialog (0x7f9552f2da10)
+ QWidget (0x7f9552f10e80) 0
+ primary-for QDialog (0x7f9552f2da80)
+ QObject (0x7f9552f2daf0) 0
+ primary-for QWidget (0x7f9552f10e80)
+ QPaintDevice (0x7f9552f2db60) 16
+ vptr=((& QProgressDialog::_ZTV15QProgressDialog) + 488u)
+
+Vtable for QWizard
+QWizard::_ZTV7QWizard: 70u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QWizard)
+16 QWizard::metaObject
+24 QWizard::qt_metacast
+32 QWizard::qt_metacall
+40 QWizard::~QWizard
+48 QWizard::~QWizard
+56 QWizard::event
+64 QDialog::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWizard::setVisible
+128 QWizard::sizeHint
+136 QDialog::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QDialog::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWizard::paintEvent
+256 QWidget::moveEvent
+264 QWizard::resizeEvent
+272 QDialog::closeEvent
+280 QDialog::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QDialog::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QWizard::done
+456 QDialog::accept
+464 QDialog::reject
+472 QWizard::validateCurrentPage
+480 QWizard::nextId
+488 QWizard::initializePage
+496 QWizard::cleanupPage
+504 (int (*)(...))-0x00000000000000010
+512 (int (*)(...))(& _ZTI7QWizard)
+520 QWizard::_ZThn16_N7QWizardD1Ev
+528 QWizard::_ZThn16_N7QWizardD0Ev
+536 QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWizard
+ size=40 align=8
+ base size=40 base align=8
+QWizard (0x7f9552f53620) 0
+ vptr=((& QWizard::_ZTV7QWizard) + 16u)
+ QDialog (0x7f9552f53690) 0
+ primary-for QWizard (0x7f9552f53620)
+ QWidget (0x7f9552f4d880) 0
+ primary-for QDialog (0x7f9552f53690)
+ QObject (0x7f9552f53700) 0
+ primary-for QWidget (0x7f9552f4d880)
+ QPaintDevice (0x7f9552f53770) 16
+ vptr=((& QWizard::_ZTV7QWizard) + 520u)
+
+Vtable for QWizardPage
+QWizardPage::_ZTV11QWizardPage: 68u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QWizardPage)
+16 QWizardPage::metaObject
+24 QWizardPage::qt_metacast
+32 QWizardPage::qt_metacall
+40 QWizardPage::~QWizardPage
+48 QWizardPage::~QWizardPage
+56 QWidget::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QWizardPage::initializePage
+456 QWizardPage::cleanupPage
+464 QWizardPage::validatePage
+472 QWizardPage::isComplete
+480 QWizardPage::nextId
+488 (int (*)(...))-0x00000000000000010
+496 (int (*)(...))(& _ZTI11QWizardPage)
+504 QWizardPage::_ZThn16_N11QWizardPageD1Ev
+512 QWizardPage::_ZThn16_N11QWizardPageD0Ev
+520 QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWizardPage
+ size=40 align=8
+ base size=40 base align=8
+QWizardPage (0x7f9552faa9a0) 0
+ vptr=((& QWizardPage::_ZTV11QWizardPage) + 16u)
+ QWidget (0x7f9552f7fb80) 0
+ primary-for QWizardPage (0x7f9552faa9a0)
+ QObject (0x7f9552faaa10) 0
+ primary-for QWidget (0x7f9552f7fb80)
+ QPaintDevice (0x7f9552faaa80) 16
+ vptr=((& QWizardPage::_ZTV11QWizardPage) + 504u)
+
+Vtable for QKeyEventTransition
+QKeyEventTransition::_ZTV19QKeyEventTransition: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QKeyEventTransition)
+16 QKeyEventTransition::metaObject
+24 QKeyEventTransition::qt_metacast
+32 QKeyEventTransition::qt_metacall
+40 QKeyEventTransition::~QKeyEventTransition
+48 QKeyEventTransition::~QKeyEventTransition
+56 QEventTransition::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QKeyEventTransition::eventTest
+120 QKeyEventTransition::onTransition
+
+Class QKeyEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QKeyEventTransition (0x7f9552fe34d0) 0
+ vptr=((& QKeyEventTransition::_ZTV19QKeyEventTransition) + 16u)
+ QEventTransition (0x7f9552fe3540) 0
+ primary-for QKeyEventTransition (0x7f9552fe34d0)
+ QAbstractTransition (0x7f9552fe35b0) 0
+ primary-for QEventTransition (0x7f9552fe3540)
+ QObject (0x7f9552fe3620) 0
+ primary-for QAbstractTransition (0x7f9552fe35b0)
+
+Vtable for QMouseEventTransition
+QMouseEventTransition::_ZTV21QMouseEventTransition: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QMouseEventTransition)
+16 QMouseEventTransition::metaObject
+24 QMouseEventTransition::qt_metacast
+32 QMouseEventTransition::qt_metacall
+40 QMouseEventTransition::~QMouseEventTransition
+48 QMouseEventTransition::~QMouseEventTransition
+56 QEventTransition::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QMouseEventTransition::eventTest
+120 QMouseEventTransition::onTransition
+
+Class QMouseEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QMouseEventTransition (0x7f9552df6f50) 0
+ vptr=((& QMouseEventTransition::_ZTV21QMouseEventTransition) + 16u)
+ QEventTransition (0x7f9552dfd000) 0
+ primary-for QMouseEventTransition (0x7f9552df6f50)
+ QAbstractTransition (0x7f9552dfd070) 0
+ primary-for QEventTransition (0x7f9552dfd000)
+ QObject (0x7f9552dfd0e0) 0
+ primary-for QAbstractTransition (0x7f9552dfd070)
+
+Vtable for QBitmap
+QBitmap::_ZTV7QBitmap: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QBitmap)
+16 QBitmap::~QBitmap
+24 QBitmap::~QBitmap
+32 QPixmap::devType
+40 QPixmap::paintEngine
+48 QPixmap::metric
+
+Class QBitmap
+ size=24 align=8
+ base size=24 base align=8
+QBitmap (0x7f9552e13a10) 0
+ vptr=((& QBitmap::_ZTV7QBitmap) + 16u)
+ QPixmap (0x7f9552e13a80) 0
+ primary-for QBitmap (0x7f9552e13a10)
+ QPaintDevice (0x7f9552e13af0) 0
+ primary-for QPixmap (0x7f9552e13a80)
+
+Vtable for QIconEngine
+QIconEngine::_ZTV11QIconEngine: 9u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QIconEngine)
+16 QIconEngine::~QIconEngine
+24 QIconEngine::~QIconEngine
+32 __cxa_pure_virtual
+40 QIconEngine::actualSize
+48 QIconEngine::pixmap
+56 QIconEngine::addPixmap
+64 QIconEngine::addFile
+
+Class QIconEngine
+ size=8 align=8
+ base size=8 base align=8
+QIconEngine (0x7f9552e458c0) 0 nearly-empty
+ vptr=((& QIconEngine::_ZTV11QIconEngine) + 16u)
+
+Class QIconEngineV2::AvailableSizesArgument
+ size=16 align=8
+ base size=16 base align=8
+QIconEngineV2::AvailableSizesArgument (0x7f9552e51070) 0
+
+Vtable for QIconEngineV2
+QIconEngineV2::_ZTV13QIconEngineV2: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QIconEngineV2)
+16 QIconEngineV2::~QIconEngineV2
+24 QIconEngineV2::~QIconEngineV2
+32 __cxa_pure_virtual
+40 QIconEngine::actualSize
+48 QIconEngine::pixmap
+56 QIconEngine::addPixmap
+64 QIconEngine::addFile
+72 QIconEngineV2::key
+80 QIconEngineV2::clone
+88 QIconEngineV2::read
+96 QIconEngineV2::write
+104 QIconEngineV2::virtual_hook
+
+Class QIconEngineV2
+ size=8 align=8
+ base size=8 base align=8
+QIconEngineV2 (0x7f9552e45e70) 0 nearly-empty
+ vptr=((& QIconEngineV2::_ZTV13QIconEngineV2) + 16u)
+ QIconEngine (0x7f9552e45ee0) 0 nearly-empty
+ primary-for QIconEngineV2 (0x7f9552e45e70)
+
+Vtable for QIconEngineFactoryInterface
+QIconEngineFactoryInterface::_ZTV27QIconEngineFactoryInterface: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QIconEngineFactoryInterface)
+16 QIconEngineFactoryInterface::~QIconEngineFactoryInterface
+24 QIconEngineFactoryInterface::~QIconEngineFactoryInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QIconEngineFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QIconEngineFactoryInterface (0x7f9552e51850) 0 nearly-empty
+ vptr=((& QIconEngineFactoryInterface::_ZTV27QIconEngineFactoryInterface) + 16u)
+ QFactoryInterface (0x7f9552e518c0) 0 nearly-empty
+ primary-for QIconEngineFactoryInterface (0x7f9552e51850)
+
+Vtable for QIconEnginePlugin
+QIconEnginePlugin::_ZTV17QIconEnginePlugin: 22u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QIconEnginePlugin)
+16 QIconEnginePlugin::metaObject
+24 QIconEnginePlugin::qt_metacast
+32 QIconEnginePlugin::qt_metacall
+40 QIconEnginePlugin::~QIconEnginePlugin
+48 QIconEnginePlugin::~QIconEnginePlugin
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 (int (*)(...))-0x00000000000000010
+136 (int (*)(...))(& _ZTI17QIconEnginePlugin)
+144 QIconEnginePlugin::_ZThn16_N17QIconEnginePluginD1Ev
+152 QIconEnginePlugin::_ZThn16_N17QIconEnginePluginD0Ev
+160 __cxa_pure_virtual
+168 __cxa_pure_virtual
+
+Class QIconEnginePlugin
+ size=24 align=8
+ base size=24 base align=8
+QIconEnginePlugin (0x7f9552e4bf80) 0
+ vptr=((& QIconEnginePlugin::_ZTV17QIconEnginePlugin) + 16u)
+ QObject (0x7f9552e851c0) 0
+ primary-for QIconEnginePlugin (0x7f9552e4bf80)
+ QIconEngineFactoryInterface (0x7f9552e85230) 16 nearly-empty
+ vptr=((& QIconEnginePlugin::_ZTV17QIconEnginePlugin) + 144u)
+ QFactoryInterface (0x7f9552e852a0) 16 nearly-empty
+ primary-for QIconEngineFactoryInterface (0x7f9552e85230)
+
+Vtable for QIconEngineFactoryInterfaceV2
+QIconEngineFactoryInterfaceV2::_ZTV29QIconEngineFactoryInterfaceV2: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QIconEngineFactoryInterfaceV2)
+16 QIconEngineFactoryInterfaceV2::~QIconEngineFactoryInterfaceV2
+24 QIconEngineFactoryInterfaceV2::~QIconEngineFactoryInterfaceV2
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QIconEngineFactoryInterfaceV2
+ size=8 align=8
+ base size=8 base align=8
+QIconEngineFactoryInterfaceV2 (0x7f9552e99150) 0 nearly-empty
+ vptr=((& QIconEngineFactoryInterfaceV2::_ZTV29QIconEngineFactoryInterfaceV2) + 16u)
+ QFactoryInterface (0x7f9552e991c0) 0 nearly-empty
+ primary-for QIconEngineFactoryInterfaceV2 (0x7f9552e99150)
+
+Vtable for QIconEnginePluginV2
+QIconEnginePluginV2::_ZTV19QIconEnginePluginV2: 22u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QIconEnginePluginV2)
+16 QIconEnginePluginV2::metaObject
+24 QIconEnginePluginV2::qt_metacast
+32 QIconEnginePluginV2::qt_metacall
+40 QIconEnginePluginV2::~QIconEnginePluginV2
+48 QIconEnginePluginV2::~QIconEnginePluginV2
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 (int (*)(...))-0x00000000000000010
+136 (int (*)(...))(& _ZTI19QIconEnginePluginV2)
+144 QIconEnginePluginV2::_ZThn16_N19QIconEnginePluginV2D1Ev
+152 QIconEnginePluginV2::_ZThn16_N19QIconEnginePluginV2D0Ev
+160 __cxa_pure_virtual
+168 __cxa_pure_virtual
+
+Class QIconEnginePluginV2
+ size=24 align=8
+ base size=24 base align=8
+QIconEnginePluginV2 (0x7f9552ea3000) 0
+ vptr=((& QIconEnginePluginV2::_ZTV19QIconEnginePluginV2) + 16u)
+ QObject (0x7f9552e99c40) 0
+ primary-for QIconEnginePluginV2 (0x7f9552ea3000)
+ QIconEngineFactoryInterfaceV2 (0x7f9552e99cb0) 16 nearly-empty
+ vptr=((& QIconEnginePluginV2::_ZTV19QIconEnginePluginV2) + 144u)
+ QFactoryInterface (0x7f9552e99d20) 16 nearly-empty
+ primary-for QIconEngineFactoryInterfaceV2 (0x7f9552e99cb0)
+
+Vtable for QImageIOHandler
+QImageIOHandler::_ZTV15QImageIOHandler: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QImageIOHandler)
+16 QImageIOHandler::~QImageIOHandler
+24 QImageIOHandler::~QImageIOHandler
+32 QImageIOHandler::name
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 QImageIOHandler::write
+64 QImageIOHandler::option
+72 QImageIOHandler::setOption
+80 QImageIOHandler::supportsOption
+88 QImageIOHandler::jumpToNextImage
+96 QImageIOHandler::jumpToImage
+104 QImageIOHandler::loopCount
+112 QImageIOHandler::imageCount
+120 QImageIOHandler::nextImageDelay
+128 QImageIOHandler::currentImageNumber
+136 QImageIOHandler::currentImageRect
+
+Class QImageIOHandler
+ size=16 align=8
+ base size=16 base align=8
+QImageIOHandler (0x7f9552eabbd0) 0
+ vptr=((& QImageIOHandler::_ZTV15QImageIOHandler) + 16u)
+
+Vtable for QImageIOHandlerFactoryInterface
+QImageIOHandlerFactoryInterface::_ZTV31QImageIOHandlerFactoryInterface: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI31QImageIOHandlerFactoryInterface)
+16 QImageIOHandlerFactoryInterface::~QImageIOHandlerFactoryInterface
+24 QImageIOHandlerFactoryInterface::~QImageIOHandlerFactoryInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QImageIOHandlerFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QImageIOHandlerFactoryInterface (0x7f9552ec89a0) 0 nearly-empty
+ vptr=((& QImageIOHandlerFactoryInterface::_ZTV31QImageIOHandlerFactoryInterface) + 16u)
+ QFactoryInterface (0x7f9552ec8a10) 0 nearly-empty
+ primary-for QImageIOHandlerFactoryInterface (0x7f9552ec89a0)
+
+Vtable for QImageIOPlugin
+QImageIOPlugin::_ZTV14QImageIOPlugin: 23u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QImageIOPlugin)
+16 QImageIOPlugin::metaObject
+24 QImageIOPlugin::qt_metacast
+32 QImageIOPlugin::qt_metacall
+40 QImageIOPlugin::~QImageIOPlugin
+48 QImageIOPlugin::~QImageIOPlugin
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 (int (*)(...))-0x00000000000000010
+144 (int (*)(...))(& _ZTI14QImageIOPlugin)
+152 QImageIOPlugin::_ZThn16_N14QImageIOPluginD1Ev
+160 QImageIOPlugin::_ZThn16_N14QImageIOPluginD0Ev
+168 __cxa_pure_virtual
+176 __cxa_pure_virtual
+
+Class QImageIOPlugin
+ size=24 align=8
+ base size=24 base align=8
+QImageIOPlugin (0x7f9552ecec00) 0
+ vptr=((& QImageIOPlugin::_ZTV14QImageIOPlugin) + 16u)
+ QObject (0x7f9552ed83f0) 0
+ primary-for QImageIOPlugin (0x7f9552ecec00)
+ QImageIOHandlerFactoryInterface (0x7f9552ed8460) 16 nearly-empty
+ vptr=((& QImageIOPlugin::_ZTV14QImageIOPlugin) + 152u)
+ QFactoryInterface (0x7f9552ed84d0) 16 nearly-empty
+ primary-for QImageIOHandlerFactoryInterface (0x7f9552ed8460)
+
+Class QImageReader
+ size=8 align=8
+ base size=8 base align=8
+QImageReader (0x7f9552d2d4d0) 0
+
+Class QImageWriter
+ size=8 align=8
+ base size=8 base align=8
+QImageWriter (0x7f9552d2dee0) 0
+
+Vtable for QMovie
+QMovie::_ZTV6QMovie: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QMovie)
+16 QMovie::metaObject
+24 QMovie::qt_metacast
+32 QMovie::qt_metacall
+40 QMovie::~QMovie
+48 QMovie::~QMovie
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QMovie
+ size=16 align=8
+ base size=16 base align=8
+QMovie (0x7f9552d43770) 0
+ vptr=((& QMovie::_ZTV6QMovie) + 16u)
+ QObject (0x7f9552d437e0) 0
+ primary-for QMovie (0x7f9552d43770)
+
+Vtable for QPicture
+QPicture::_ZTV8QPicture: 8u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QPicture)
+16 QPicture::~QPicture
+24 QPicture::~QPicture
+32 QPicture::devType
+40 QPicture::paintEngine
+48 QPicture::metric
+56 QPicture::setData
+
+Class QPicture
+ size=24 align=8
+ base size=24 base align=8
+QPicture (0x7f9552d887e0) 0
+ vptr=((& QPicture::_ZTV8QPicture) + 16u)
+ QPaintDevice (0x7f9552d88850) 0
+ primary-for QPicture (0x7f9552d887e0)
+
+Class QPictureIO
+ size=8 align=8
+ base size=8 base align=8
+QPictureIO (0x7f9552dab310) 0
+
+Vtable for QPictureFormatInterface
+QPictureFormatInterface::_ZTV23QPictureFormatInterface: 8u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QPictureFormatInterface)
+16 QPictureFormatInterface::~QPictureFormatInterface
+24 QPictureFormatInterface::~QPictureFormatInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+
+Class QPictureFormatInterface
+ size=8 align=8
+ base size=8 base align=8
+QPictureFormatInterface (0x7f9552dab930) 0 nearly-empty
+ vptr=((& QPictureFormatInterface::_ZTV23QPictureFormatInterface) + 16u)
+ QFactoryInterface (0x7f9552dab9a0) 0 nearly-empty
+ primary-for QPictureFormatInterface (0x7f9552dab930)
+
+Vtable for QPictureFormatPlugin
+QPictureFormatPlugin::_ZTV20QPictureFormatPlugin: 26u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QPictureFormatPlugin)
+16 QPictureFormatPlugin::metaObject
+24 QPictureFormatPlugin::qt_metacast
+32 QPictureFormatPlugin::qt_metacall
+40 QPictureFormatPlugin::~QPictureFormatPlugin
+48 QPictureFormatPlugin::~QPictureFormatPlugin
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 QPictureFormatPlugin::loadPicture
+128 QPictureFormatPlugin::savePicture
+136 __cxa_pure_virtual
+144 (int (*)(...))-0x00000000000000010
+152 (int (*)(...))(& _ZTI20QPictureFormatPlugin)
+160 QPictureFormatPlugin::_ZThn16_N20QPictureFormatPluginD1Ev
+168 QPictureFormatPlugin::_ZThn16_N20QPictureFormatPluginD0Ev
+176 __cxa_pure_virtual
+184 QPictureFormatPlugin::_ZThn16_N20QPictureFormatPlugin11loadPictureERK7QStringS2_P8QPicture
+192 QPictureFormatPlugin::_ZThn16_N20QPictureFormatPlugin11savePictureERK7QStringS2_RK8QPicture
+200 __cxa_pure_virtual
+
+Class QPictureFormatPlugin
+ size=24 align=8
+ base size=24 base align=8
+QPictureFormatPlugin (0x7f9552dc6300) 0
+ vptr=((& QPictureFormatPlugin::_ZTV20QPictureFormatPlugin) + 16u)
+ QObject (0x7f9552dc7310) 0
+ primary-for QPictureFormatPlugin (0x7f9552dc6300)
+ QPictureFormatInterface (0x7f9552dc7380) 16 nearly-empty
+ vptr=((& QPictureFormatPlugin::_ZTV20QPictureFormatPlugin) + 160u)
+ QFactoryInterface (0x7f9552dc73f0) 16 nearly-empty
+ primary-for QPictureFormatInterface (0x7f9552dc7380)
+
+Class QPixmapCache::Key
+ size=8 align=8
+ base size=8 base align=8
+QPixmapCache::Key (0x7f9552dd8310) 0
+
+Class QPixmapCache
+ size=1 align=1
+ base size=0 base align=1
+QPixmapCache (0x7f9552dd82a0) 0 empty
+
+Vtable for QGraphicsEffect
+QGraphicsEffect::_ZTV15QGraphicsEffect: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsEffect)
+16 QGraphicsEffect::metaObject
+24 QGraphicsEffect::qt_metacast
+32 QGraphicsEffect::qt_metacall
+40 QGraphicsEffect::~QGraphicsEffect
+48 QGraphicsEffect::~QGraphicsEffect
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsEffect::boundingRectFor
+120 __cxa_pure_virtual
+128 QGraphicsEffect::sourceChanged
+
+Class QGraphicsEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsEffect (0x7f9552de0150) 0
+ vptr=((& QGraphicsEffect::_ZTV15QGraphicsEffect) + 16u)
+ QObject (0x7f9552de01c0) 0
+ primary-for QGraphicsEffect (0x7f9552de0150)
+
+Vtable for QGraphicsColorizeEffect
+QGraphicsColorizeEffect::_ZTV23QGraphicsColorizeEffect: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsColorizeEffect)
+16 QGraphicsColorizeEffect::metaObject
+24 QGraphicsColorizeEffect::qt_metacast
+32 QGraphicsColorizeEffect::qt_metacall
+40 QGraphicsColorizeEffect::~QGraphicsColorizeEffect
+48 QGraphicsColorizeEffect::~QGraphicsColorizeEffect
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsEffect::boundingRectFor
+120 QGraphicsColorizeEffect::draw
+128 QGraphicsEffect::sourceChanged
+
+Class QGraphicsColorizeEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsColorizeEffect (0x7f9552c27c40) 0
+ vptr=((& QGraphicsColorizeEffect::_ZTV23QGraphicsColorizeEffect) + 16u)
+ QGraphicsEffect (0x7f9552c27cb0) 0
+ primary-for QGraphicsColorizeEffect (0x7f9552c27c40)
+ QObject (0x7f9552c27d20) 0
+ primary-for QGraphicsEffect (0x7f9552c27cb0)
+
+Vtable for QGraphicsBlurEffect
+QGraphicsBlurEffect::_ZTV19QGraphicsBlurEffect: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsBlurEffect)
+16 QGraphicsBlurEffect::metaObject
+24 QGraphicsBlurEffect::qt_metacast
+32 QGraphicsBlurEffect::qt_metacall
+40 QGraphicsBlurEffect::~QGraphicsBlurEffect
+48 QGraphicsBlurEffect::~QGraphicsBlurEffect
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsBlurEffect::boundingRectFor
+120 QGraphicsBlurEffect::draw
+128 QGraphicsEffect::sourceChanged
+
+Class QGraphicsBlurEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsBlurEffect (0x7f9552c565b0) 0
+ vptr=((& QGraphicsBlurEffect::_ZTV19QGraphicsBlurEffect) + 16u)
+ QGraphicsEffect (0x7f9552c56620) 0
+ primary-for QGraphicsBlurEffect (0x7f9552c565b0)
+ QObject (0x7f9552c56690) 0
+ primary-for QGraphicsEffect (0x7f9552c56620)
+
+Vtable for QGraphicsDropShadowEffect
+QGraphicsDropShadowEffect::_ZTV25QGraphicsDropShadowEffect: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QGraphicsDropShadowEffect)
+16 QGraphicsDropShadowEffect::metaObject
+24 QGraphicsDropShadowEffect::qt_metacast
+32 QGraphicsDropShadowEffect::qt_metacall
+40 QGraphicsDropShadowEffect::~QGraphicsDropShadowEffect
+48 QGraphicsDropShadowEffect::~QGraphicsDropShadowEffect
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsDropShadowEffect::boundingRectFor
+120 QGraphicsDropShadowEffect::draw
+128 QGraphicsEffect::sourceChanged
+
+Class QGraphicsDropShadowEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsDropShadowEffect (0x7f9552cb50e0) 0
+ vptr=((& QGraphicsDropShadowEffect::_ZTV25QGraphicsDropShadowEffect) + 16u)
+ QGraphicsEffect (0x7f9552cb5150) 0
+ primary-for QGraphicsDropShadowEffect (0x7f9552cb50e0)
+ QObject (0x7f9552cb51c0) 0
+ primary-for QGraphicsEffect (0x7f9552cb5150)
+
+Vtable for QGraphicsOpacityEffect
+QGraphicsOpacityEffect::_ZTV22QGraphicsOpacityEffect: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QGraphicsOpacityEffect)
+16 QGraphicsOpacityEffect::metaObject
+24 QGraphicsOpacityEffect::qt_metacast
+32 QGraphicsOpacityEffect::qt_metacall
+40 QGraphicsOpacityEffect::~QGraphicsOpacityEffect
+48 QGraphicsOpacityEffect::~QGraphicsOpacityEffect
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsEffect::boundingRectFor
+120 QGraphicsOpacityEffect::draw
+128 QGraphicsEffect::sourceChanged
+
+Class QGraphicsOpacityEffect
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsOpacityEffect (0x7f9552cd45b0) 0
+ vptr=((& QGraphicsOpacityEffect::_ZTV22QGraphicsOpacityEffect) + 16u)
+ QGraphicsEffect (0x7f9552cd4620) 0
+ primary-for QGraphicsOpacityEffect (0x7f9552cd45b0)
+ QObject (0x7f9552cd4690) 0
+ primary-for QGraphicsEffect (0x7f9552cd4620)
+
+Class QVFbHeader
+ size=1088 align=8
+ base size=1088 base align=8
+QVFbHeader (0x7f9552ce4ee0) 0
+
+Class QVFbKeyData
+ size=12 align=4
+ base size=12 base align=4
+QVFbKeyData (0x7f9552ce4f50) 0
+
+Vtable for QWSEmbedWidget
+QWSEmbedWidget::_ZTV14QWSEmbedWidget: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QWSEmbedWidget)
+16 QWSEmbedWidget::metaObject
+24 QWSEmbedWidget::qt_metacast
+32 QWSEmbedWidget::qt_metacall
+40 QWSEmbedWidget::~QWSEmbedWidget
+48 QWSEmbedWidget::~QWSEmbedWidget
+56 QWidget::event
+64 QWSEmbedWidget::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWSEmbedWidget::moveEvent
+264 QWSEmbedWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWSEmbedWidget::showEvent
+344 QWSEmbedWidget::hideEvent
+352 QWidget::x11Event
+360 QWSEmbedWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI14QWSEmbedWidget)
+464 QWSEmbedWidget::_ZThn16_N14QWSEmbedWidgetD1Ev
+472 QWSEmbedWidget::_ZThn16_N14QWSEmbedWidgetD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWSEmbedWidget
+ size=40 align=8
+ base size=40 base align=8
+QWSEmbedWidget (0x7f9552aef000) 0
+ vptr=((& QWSEmbedWidget::_ZTV14QWSEmbedWidget) + 16u)
+ QWidget (0x7f9552ce2900) 0
+ primary-for QWSEmbedWidget (0x7f9552aef000)
+ QObject (0x7f9552aef070) 0
+ primary-for QWidget (0x7f9552ce2900)
+ QPaintDevice (0x7f9552aef0e0) 16
+ vptr=((& QWSEmbedWidget::_ZTV14QWSEmbedWidget) + 464u)
+
+Class QColormap
+ size=8 align=8
+ base size=8 base align=8
+QColormap (0x7f9552b064d0) 0
+
+Class QTileRules
+ size=8 align=4
+ base size=8 base align=4
+QTileRules (0x7f9552b06cb0) 0
+
+Class QDrawPixmaps::Data
+ size=80 align=8
+ base size=80 base align=8
+QDrawPixmaps::Data (0x7f9552b1ed20) 0
+
+Class QPainter
+ size=8 align=8
+ base size=8 base align=8
+QPainter (0x7f9552b1ee00) 0
+
+Class QTextItem
+ size=1 align=1
+ base size=0 base align=1
+QTextItem (0x7f955294c8c0) 0 empty
+
+Vtable for QPaintEngine
+QPaintEngine::_ZTV12QPaintEngine: 24u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QPaintEngine)
+16 QPaintEngine::~QPaintEngine
+24 QPaintEngine::~QPaintEngine
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 QPaintEngine::drawRects
+64 QPaintEngine::drawRects
+72 QPaintEngine::drawLines
+80 QPaintEngine::drawLines
+88 QPaintEngine::drawEllipse
+96 QPaintEngine::drawEllipse
+104 QPaintEngine::drawPath
+112 QPaintEngine::drawPoints
+120 QPaintEngine::drawPoints
+128 QPaintEngine::drawPolygon
+136 QPaintEngine::drawPolygon
+144 __cxa_pure_virtual
+152 QPaintEngine::drawTextItem
+160 QPaintEngine::drawTiledPixmap
+168 QPaintEngine::drawImage
+176 QPaintEngine::coordinateOffset
+184 __cxa_pure_virtual
+
+Class QPaintEngine
+ size=32 align=8
+ base size=32 base align=8
+QPaintEngine (0x7f955294cee0) 0
+ vptr=((& QPaintEngine::_ZTV12QPaintEngine) + 16u)
+
+Class QPaintEngineState
+ size=4 align=4
+ base size=4 base align=4
+QPaintEngineState (0x7f9552999b60) 0
+
+Vtable for QPrinter
+QPrinter::_ZTV8QPrinter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QPrinter)
+16 QPrinter::~QPrinter
+24 QPrinter::~QPrinter
+32 QPrinter::devType
+40 QPrinter::paintEngine
+48 QPrinter::metric
+
+Class QPrinter
+ size=24 align=8
+ base size=24 base align=8
+QPrinter (0x7f9552864e70) 0
+ vptr=((& QPrinter::_ZTV8QPrinter) + 16u)
+ QPaintDevice (0x7f9552864ee0) 0
+ primary-for QPrinter (0x7f9552864e70)
+
+Vtable for QPrintEngine
+QPrintEngine::_ZTV12QPrintEngine: 10u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QPrintEngine)
+16 QPrintEngine::~QPrintEngine
+24 QPrintEngine::~QPrintEngine
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+72 __cxa_pure_virtual
+
+Class QPrintEngine
+ size=8 align=8
+ base size=8 base align=8
+QPrintEngine (0x7f95528cd540) 0 nearly-empty
+ vptr=((& QPrintEngine::_ZTV12QPrintEngine) + 16u)
+
+Class QPrinterInfo
+ size=8 align=8
+ base size=8 base align=8
+QPrinterInfo (0x7f95528da2a0) 0
+
+Class QStylePainter
+ size=24 align=8
+ base size=24 base align=8
+QStylePainter (0x7f95528e09a0) 0
+ QPainter (0x7f95528e0a10) 0
+
+Vtable for QAbstractProxyModel
+QAbstractProxyModel::_ZTV19QAbstractProxyModel: 47u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractProxyModel)
+16 QAbstractProxyModel::metaObject
+24 QAbstractProxyModel::qt_metacast
+32 QAbstractProxyModel::qt_metacall
+40 QAbstractProxyModel::~QAbstractProxyModel
+48 QAbstractProxyModel::~QAbstractProxyModel
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 QAbstractItemModel::hasChildren
+152 QAbstractProxyModel::data
+160 QAbstractProxyModel::setData
+168 QAbstractProxyModel::headerData
+176 QAbstractProxyModel::setHeaderData
+184 QAbstractProxyModel::itemData
+192 QAbstractItemModel::setItemData
+200 QAbstractItemModel::mimeTypes
+208 QAbstractItemModel::mimeData
+216 QAbstractItemModel::dropMimeData
+224 QAbstractItemModel::supportedDropActions
+232 QAbstractItemModel::insertRows
+240 QAbstractItemModel::insertColumns
+248 QAbstractItemModel::removeRows
+256 QAbstractItemModel::removeColumns
+264 QAbstractItemModel::fetchMore
+272 QAbstractItemModel::canFetchMore
+280 QAbstractProxyModel::flags
+288 QAbstractItemModel::sort
+296 QAbstractItemModel::buddy
+304 QAbstractItemModel::match
+312 QAbstractItemModel::span
+320 QAbstractProxyModel::submit
+328 QAbstractProxyModel::revert
+336 QAbstractProxyModel::setSourceModel
+344 __cxa_pure_virtual
+352 __cxa_pure_virtual
+360 QAbstractProxyModel::mapSelectionToSource
+368 QAbstractProxyModel::mapSelectionFromSource
+
+Class QAbstractProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractProxyModel (0x7f955270eee0) 0
+ vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16u)
+ QAbstractItemModel (0x7f955270ef50) 0
+ primary-for QAbstractProxyModel (0x7f955270eee0)
+ QObject (0x7f9552715000) 0
+ primary-for QAbstractItemModel (0x7f955270ef50)
+
+Vtable for QColumnView
+QColumnView::_ZTV11QColumnView: 104u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QColumnView)
+16 QColumnView::metaObject
+24 QColumnView::qt_metacast
+32 QColumnView::qt_metacall
+40 QColumnView::~QColumnView
+48 QColumnView::~QColumnView
+56 QAbstractItemView::event
+64 QObject::eventFilter
+72 QAbstractItemView::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QColumnView::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractItemView::mousePressEvent
+168 QAbstractItemView::mouseReleaseEvent
+176 QAbstractItemView::mouseDoubleClickEvent
+184 QAbstractItemView::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractItemView::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QAbstractItemView::focusInEvent
+224 QAbstractItemView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QAbstractScrollArea::paintEvent
+256 QWidget::moveEvent
+264 QColumnView::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractItemView::dragEnterEvent
+312 QAbstractItemView::dragMoveEvent
+320 QAbstractItemView::dragLeaveEvent
+328 QAbstractItemView::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QAbstractItemView::inputMethodEvent
+384 QAbstractItemView::inputMethodQuery
+392 QAbstractItemView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractItemView::viewportEvent
+456 QColumnView::scrollContentsBy
+464 QColumnView::setModel
+472 QColumnView::setSelectionModel
+480 QAbstractItemView::keyboardSearch
+488 QColumnView::visualRect
+496 QColumnView::scrollTo
+504 QColumnView::indexAt
+512 QAbstractItemView::sizeHintForRow
+520 QAbstractItemView::sizeHintForColumn
+528 QAbstractItemView::reset
+536 QColumnView::setRootIndex
+544 QAbstractItemView::doItemsLayout
+552 QColumnView::selectAll
+560 QAbstractItemView::dataChanged
+568 QColumnView::rowsInserted
+576 QAbstractItemView::rowsAboutToBeRemoved
+584 QAbstractItemView::selectionChanged
+592 QColumnView::currentChanged
+600 QAbstractItemView::updateEditorData
+608 QAbstractItemView::updateEditorGeometries
+616 QAbstractItemView::updateGeometries
+624 QAbstractItemView::verticalScrollbarAction
+632 QAbstractItemView::horizontalScrollbarAction
+640 QAbstractItemView::verticalScrollbarValueChanged
+648 QAbstractItemView::horizontalScrollbarValueChanged
+656 QAbstractItemView::closeEditor
+664 QAbstractItemView::commitData
+672 QAbstractItemView::editorDestroyed
+680 QColumnView::moveCursor
+688 QColumnView::horizontalOffset
+696 QColumnView::verticalOffset
+704 QColumnView::isIndexHidden
+712 QColumnView::setSelection
+720 QColumnView::visualRegionForSelection
+728 QAbstractItemView::selectedIndexes
+736 QAbstractItemView::edit
+744 QAbstractItemView::selectionCommand
+752 QAbstractItemView::startDrag
+760 QAbstractItemView::viewOptions
+768 QColumnView::createColumn
+776 (int (*)(...))-0x00000000000000010
+784 (int (*)(...))(& _ZTI11QColumnView)
+792 QColumnView::_ZThn16_N11QColumnViewD1Ev
+800 QColumnView::_ZThn16_N11QColumnViewD0Ev
+808 QWidget::_ZThn16_NK7QWidget7devTypeEv
+816 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+824 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QColumnView
+ size=40 align=8
+ base size=40 base align=8
+QColumnView (0x7f955272baf0) 0
+ vptr=((& QColumnView::_ZTV11QColumnView) + 16u)
+ QAbstractItemView (0x7f955272bb60) 0
+ primary-for QColumnView (0x7f955272baf0)
+ QAbstractScrollArea (0x7f955272bbd0) 0
+ primary-for QAbstractItemView (0x7f955272bb60)
+ QFrame (0x7f955272bc40) 0
+ primary-for QAbstractScrollArea (0x7f955272bbd0)
+ QWidget (0x7f9552730200) 0
+ primary-for QFrame (0x7f955272bc40)
+ QObject (0x7f955272bcb0) 0
+ primary-for QWidget (0x7f9552730200)
+ QPaintDevice (0x7f955272bd20) 16
+ vptr=((& QColumnView::_ZTV11QColumnView) + 792u)
+
+Vtable for QDataWidgetMapper
+QDataWidgetMapper::_ZTV17QDataWidgetMapper: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QDataWidgetMapper)
+16 QDataWidgetMapper::metaObject
+24 QDataWidgetMapper::qt_metacast
+32 QDataWidgetMapper::qt_metacall
+40 QDataWidgetMapper::~QDataWidgetMapper
+48 QDataWidgetMapper::~QDataWidgetMapper
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QDataWidgetMapper::setCurrentIndex
+
+Class QDataWidgetMapper
+ size=16 align=8
+ base size=16 base align=8
+QDataWidgetMapper (0x7f9552751c40) 0
+ vptr=((& QDataWidgetMapper::_ZTV17QDataWidgetMapper) + 16u)
+ QObject (0x7f9552751cb0) 0
+ primary-for QDataWidgetMapper (0x7f9552751c40)
+
+Vtable for QFileIconProvider
+QFileIconProvider::_ZTV17QFileIconProvider: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QFileIconProvider)
+16 QFileIconProvider::~QFileIconProvider
+24 QFileIconProvider::~QFileIconProvider
+32 QFileIconProvider::icon
+40 QFileIconProvider::icon
+48 QFileIconProvider::type
+
+Class QFileIconProvider
+ size=16 align=8
+ base size=16 base align=8
+QFileIconProvider (0x7f9552771700) 0
+ vptr=((& QFileIconProvider::_ZTV17QFileIconProvider) + 16u)
+
+Vtable for QDirModel
+QDirModel::_ZTV9QDirModel: 42u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QDirModel)
+16 QDirModel::metaObject
+24 QDirModel::qt_metacast
+32 QDirModel::qt_metacall
+40 QDirModel::~QDirModel
+48 QDirModel::~QDirModel
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QDirModel::index
+120 QDirModel::parent
+128 QDirModel::rowCount
+136 QDirModel::columnCount
+144 QDirModel::hasChildren
+152 QDirModel::data
+160 QDirModel::setData
+168 QDirModel::headerData
+176 QAbstractItemModel::setHeaderData
+184 QAbstractItemModel::itemData
+192 QAbstractItemModel::setItemData
+200 QDirModel::mimeTypes
+208 QDirModel::mimeData
+216 QDirModel::dropMimeData
+224 QDirModel::supportedDropActions
+232 QAbstractItemModel::insertRows
+240 QAbstractItemModel::insertColumns
+248 QAbstractItemModel::removeRows
+256 QAbstractItemModel::removeColumns
+264 QAbstractItemModel::fetchMore
+272 QAbstractItemModel::canFetchMore
+280 QDirModel::flags
+288 QDirModel::sort
+296 QAbstractItemModel::buddy
+304 QAbstractItemModel::match
+312 QAbstractItemModel::span
+320 QAbstractItemModel::submit
+328 QAbstractItemModel::revert
+
+Class QDirModel
+ size=16 align=8
+ base size=16 base align=8
+QDirModel (0x7f9552785380) 0
+ vptr=((& QDirModel::_ZTV9QDirModel) + 16u)
+ QAbstractItemModel (0x7f95527853f0) 0
+ primary-for QDirModel (0x7f9552785380)
+ QObject (0x7f9552785460) 0
+ primary-for QAbstractItemModel (0x7f95527853f0)
+
+Vtable for QHeaderView
+QHeaderView::_ZTV11QHeaderView: 105u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QHeaderView)
+16 QHeaderView::metaObject
+24 QHeaderView::qt_metacast
+32 QHeaderView::qt_metacall
+40 QHeaderView::~QHeaderView
+48 QHeaderView::~QHeaderView
+56 QHeaderView::event
+64 QObject::eventFilter
+72 QAbstractItemView::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QHeaderView::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QHeaderView::mousePressEvent
+168 QHeaderView::mouseReleaseEvent
+176 QHeaderView::mouseDoubleClickEvent
+184 QHeaderView::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractItemView::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QAbstractItemView::focusInEvent
+224 QAbstractItemView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QHeaderView::paintEvent
+256 QWidget::moveEvent
+264 QAbstractItemView::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractItemView::dragEnterEvent
+312 QAbstractItemView::dragMoveEvent
+320 QAbstractItemView::dragLeaveEvent
+328 QAbstractItemView::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QAbstractItemView::inputMethodEvent
+384 QAbstractItemView::inputMethodQuery
+392 QAbstractItemView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QHeaderView::viewportEvent
+456 QHeaderView::scrollContentsBy
+464 QHeaderView::setModel
+472 QAbstractItemView::setSelectionModel
+480 QAbstractItemView::keyboardSearch
+488 QHeaderView::visualRect
+496 QHeaderView::scrollTo
+504 QHeaderView::indexAt
+512 QAbstractItemView::sizeHintForRow
+520 QAbstractItemView::sizeHintForColumn
+528 QHeaderView::reset
+536 QAbstractItemView::setRootIndex
+544 QHeaderView::doItemsLayout
+552 QAbstractItemView::selectAll
+560 QHeaderView::dataChanged
+568 QHeaderView::rowsInserted
+576 QAbstractItemView::rowsAboutToBeRemoved
+584 QAbstractItemView::selectionChanged
+592 QHeaderView::currentChanged
+600 QAbstractItemView::updateEditorData
+608 QAbstractItemView::updateEditorGeometries
+616 QHeaderView::updateGeometries
+624 QAbstractItemView::verticalScrollbarAction
+632 QAbstractItemView::horizontalScrollbarAction
+640 QAbstractItemView::verticalScrollbarValueChanged
+648 QAbstractItemView::horizontalScrollbarValueChanged
+656 QAbstractItemView::closeEditor
+664 QAbstractItemView::commitData
+672 QAbstractItemView::editorDestroyed
+680 QHeaderView::moveCursor
+688 QHeaderView::horizontalOffset
+696 QHeaderView::verticalOffset
+704 QHeaderView::isIndexHidden
+712 QHeaderView::setSelection
+720 QHeaderView::visualRegionForSelection
+728 QAbstractItemView::selectedIndexes
+736 QAbstractItemView::edit
+744 QAbstractItemView::selectionCommand
+752 QAbstractItemView::startDrag
+760 QAbstractItemView::viewOptions
+768 QHeaderView::paintSection
+776 QHeaderView::sectionSizeFromContents
+784 (int (*)(...))-0x00000000000000010
+792 (int (*)(...))(& _ZTI11QHeaderView)
+800 QHeaderView::_ZThn16_N11QHeaderViewD1Ev
+808 QHeaderView::_ZThn16_N11QHeaderViewD0Ev
+816 QWidget::_ZThn16_NK7QWidget7devTypeEv
+824 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+832 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QHeaderView
+ size=40 align=8
+ base size=40 base align=8
+QHeaderView (0x7f95527b0620) 0
+ vptr=((& QHeaderView::_ZTV11QHeaderView) + 16u)
+ QAbstractItemView (0x7f95527b0690) 0
+ primary-for QHeaderView (0x7f95527b0620)
+ QAbstractScrollArea (0x7f95527b0700) 0
+ primary-for QAbstractItemView (0x7f95527b0690)
+ QFrame (0x7f95527b0770) 0
+ primary-for QAbstractScrollArea (0x7f95527b0700)
+ QWidget (0x7f955278c980) 0
+ primary-for QFrame (0x7f95527b0770)
+ QObject (0x7f95527b07e0) 0
+ primary-for QWidget (0x7f955278c980)
+ QPaintDevice (0x7f95527b0850) 16
+ vptr=((& QHeaderView::_ZTV11QHeaderView) + 800u)
+
+Vtable for QItemDelegate
+QItemDelegate::_ZTV13QItemDelegate: 25u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QItemDelegate)
+16 QItemDelegate::metaObject
+24 QItemDelegate::qt_metacast
+32 QItemDelegate::qt_metacall
+40 QItemDelegate::~QItemDelegate
+48 QItemDelegate::~QItemDelegate
+56 QObject::event
+64 QItemDelegate::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QItemDelegate::paint
+120 QItemDelegate::sizeHint
+128 QItemDelegate::createEditor
+136 QItemDelegate::setEditorData
+144 QItemDelegate::setModelData
+152 QItemDelegate::updateEditorGeometry
+160 QItemDelegate::editorEvent
+168 QItemDelegate::drawDisplay
+176 QItemDelegate::drawDecoration
+184 QItemDelegate::drawFocus
+192 QItemDelegate::drawCheck
+
+Class QItemDelegate
+ size=16 align=8
+ base size=16 base align=8
+QItemDelegate (0x7f95525f5230) 0
+ vptr=((& QItemDelegate::_ZTV13QItemDelegate) + 16u)
+ QAbstractItemDelegate (0x7f95525f52a0) 0
+ primary-for QItemDelegate (0x7f95525f5230)
+ QObject (0x7f95525f5310) 0
+ primary-for QAbstractItemDelegate (0x7f95525f52a0)
+
+Vtable for QItemEditorCreatorBase
+QItemEditorCreatorBase::_ZTV22QItemEditorCreatorBase: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QItemEditorCreatorBase)
+16 QItemEditorCreatorBase::~QItemEditorCreatorBase
+24 QItemEditorCreatorBase::~QItemEditorCreatorBase
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QItemEditorCreatorBase
+ size=8 align=8
+ base size=8 base align=8
+QItemEditorCreatorBase (0x7f9552610bd0) 0 nearly-empty
+ vptr=((& QItemEditorCreatorBase::_ZTV22QItemEditorCreatorBase) + 16u)
+
+Vtable for QItemEditorFactory
+QItemEditorFactory::_ZTV18QItemEditorFactory: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QItemEditorFactory)
+16 QItemEditorFactory::~QItemEditorFactory
+24 QItemEditorFactory::~QItemEditorFactory
+32 QItemEditorFactory::createEditor
+40 QItemEditorFactory::valuePropertyName
+
+Class QItemEditorFactory
+ size=16 align=8
+ base size=16 base align=8
+QItemEditorFactory (0x7f955261ca80) 0
+ vptr=((& QItemEditorFactory::_ZTV18QItemEditorFactory) + 16u)
+
+Vtable for QListWidgetItem
+QListWidgetItem::_ZTV15QListWidgetItem: 11u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QListWidgetItem)
+16 QListWidgetItem::~QListWidgetItem
+24 QListWidgetItem::~QListWidgetItem
+32 QListWidgetItem::clone
+40 QListWidgetItem::setBackgroundColor
+48 QListWidgetItem::data
+56 QListWidgetItem::setData
+64 QListWidgetItem::operator<
+72 QListWidgetItem::read
+80 QListWidgetItem::write
+
+Class QListWidgetItem
+ size=48 align=8
+ base size=44 base align=8
+QListWidgetItem (0x7f9552628d20) 0
+ vptr=((& QListWidgetItem::_ZTV15QListWidgetItem) + 16u)
+
+Vtable for QListWidget
+QListWidget::_ZTV11QListWidget: 107u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QListWidget)
+16 QListWidget::metaObject
+24 QListWidget::qt_metacast
+32 QListWidget::qt_metacall
+40 QListWidget::~QListWidget
+48 QListWidget::~QListWidget
+56 QListWidget::event
+64 QObject::eventFilter
+72 QListView::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractItemView::mousePressEvent
+168 QListView::mouseReleaseEvent
+176 QAbstractItemView::mouseDoubleClickEvent
+184 QListView::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractItemView::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QAbstractItemView::focusInEvent
+224 QAbstractItemView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QListView::paintEvent
+256 QWidget::moveEvent
+264 QListView::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractItemView::dragEnterEvent
+312 QListView::dragMoveEvent
+320 QListView::dragLeaveEvent
+328 QListWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QAbstractItemView::inputMethodEvent
+384 QAbstractItemView::inputMethodQuery
+392 QAbstractItemView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractItemView::viewportEvent
+456 QListView::scrollContentsBy
+464 QListWidget::setModel
+472 QAbstractItemView::setSelectionModel
+480 QAbstractItemView::keyboardSearch
+488 QListView::visualRect
+496 QListView::scrollTo
+504 QListView::indexAt
+512 QAbstractItemView::sizeHintForRow
+520 QAbstractItemView::sizeHintForColumn
+528 QListView::reset
+536 QListView::setRootIndex
+544 QListView::doItemsLayout
+552 QAbstractItemView::selectAll
+560 QListView::dataChanged
+568 QListView::rowsInserted
+576 QListView::rowsAboutToBeRemoved
+584 QListView::selectionChanged
+592 QListView::currentChanged
+600 QAbstractItemView::updateEditorData
+608 QAbstractItemView::updateEditorGeometries
+616 QListView::updateGeometries
+624 QAbstractItemView::verticalScrollbarAction
+632 QAbstractItemView::horizontalScrollbarAction
+640 QAbstractItemView::verticalScrollbarValueChanged
+648 QAbstractItemView::horizontalScrollbarValueChanged
+656 QAbstractItemView::closeEditor
+664 QAbstractItemView::commitData
+672 QAbstractItemView::editorDestroyed
+680 QListView::moveCursor
+688 QListView::horizontalOffset
+696 QListView::verticalOffset
+704 QListView::isIndexHidden
+712 QListView::setSelection
+720 QListView::visualRegionForSelection
+728 QListView::selectedIndexes
+736 QAbstractItemView::edit
+744 QAbstractItemView::selectionCommand
+752 QListView::startDrag
+760 QListView::viewOptions
+768 QListWidget::mimeTypes
+776 QListWidget::mimeData
+784 QListWidget::dropMimeData
+792 QListWidget::supportedDropActions
+800 (int (*)(...))-0x00000000000000010
+808 (int (*)(...))(& _ZTI11QListWidget)
+816 QListWidget::_ZThn16_N11QListWidgetD1Ev
+824 QListWidget::_ZThn16_N11QListWidgetD0Ev
+832 QWidget::_ZThn16_NK7QWidget7devTypeEv
+840 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+848 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QListWidget
+ size=40 align=8
+ base size=40 base align=8
+QListWidget (0x7f95526bc3f0) 0
+ vptr=((& QListWidget::_ZTV11QListWidget) + 16u)
+ QListView (0x7f95526bc460) 0
+ primary-for QListWidget (0x7f95526bc3f0)
+ QAbstractItemView (0x7f95526bc4d0) 0
+ primary-for QListView (0x7f95526bc460)
+ QAbstractScrollArea (0x7f95526bc540) 0
+ primary-for QAbstractItemView (0x7f95526bc4d0)
+ QFrame (0x7f95526bc5b0) 0
+ primary-for QAbstractScrollArea (0x7f95526bc540)
+ QWidget (0x7f95526b4a00) 0
+ primary-for QFrame (0x7f95526bc5b0)
+ QObject (0x7f95526bc620) 0
+ primary-for QWidget (0x7f95526b4a00)
+ QPaintDevice (0x7f95526bc690) 16
+ vptr=((& QListWidget::_ZTV11QListWidget) + 816u)
+
+Vtable for QProxyModel
+QProxyModel::_ZTV11QProxyModel: 43u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QProxyModel)
+16 QProxyModel::metaObject
+24 QProxyModel::qt_metacast
+32 QProxyModel::qt_metacall
+40 QProxyModel::~QProxyModel
+48 QProxyModel::~QProxyModel
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QProxyModel::index
+120 QProxyModel::parent
+128 QProxyModel::rowCount
+136 QProxyModel::columnCount
+144 QProxyModel::hasChildren
+152 QProxyModel::data
+160 QProxyModel::setData
+168 QProxyModel::headerData
+176 QProxyModel::setHeaderData
+184 QAbstractItemModel::itemData
+192 QAbstractItemModel::setItemData
+200 QProxyModel::mimeTypes
+208 QProxyModel::mimeData
+216 QProxyModel::dropMimeData
+224 QProxyModel::supportedDropActions
+232 QProxyModel::insertRows
+240 QProxyModel::insertColumns
+248 QAbstractItemModel::removeRows
+256 QAbstractItemModel::removeColumns
+264 QProxyModel::fetchMore
+272 QAbstractItemModel::canFetchMore
+280 QProxyModel::flags
+288 QProxyModel::sort
+296 QAbstractItemModel::buddy
+304 QProxyModel::match
+312 QProxyModel::span
+320 QProxyModel::submit
+328 QProxyModel::revert
+336 QProxyModel::setModel
+
+Class QProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QProxyModel (0x7f95524f5850) 0
+ vptr=((& QProxyModel::_ZTV11QProxyModel) + 16u)
+ QAbstractItemModel (0x7f95524f58c0) 0
+ primary-for QProxyModel (0x7f95524f5850)
+ QObject (0x7f95524f5930) 0
+ primary-for QAbstractItemModel (0x7f95524f58c0)
+
+Vtable for QSortFilterProxyModel
+QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 50u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QSortFilterProxyModel)
+16 QSortFilterProxyModel::metaObject
+24 QSortFilterProxyModel::qt_metacast
+32 QSortFilterProxyModel::qt_metacall
+40 QSortFilterProxyModel::~QSortFilterProxyModel
+48 QSortFilterProxyModel::~QSortFilterProxyModel
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QSortFilterProxyModel::index
+120 QSortFilterProxyModel::parent
+128 QSortFilterProxyModel::rowCount
+136 QSortFilterProxyModel::columnCount
+144 QSortFilterProxyModel::hasChildren
+152 QSortFilterProxyModel::data
+160 QSortFilterProxyModel::setData
+168 QSortFilterProxyModel::headerData
+176 QSortFilterProxyModel::setHeaderData
+184 QAbstractProxyModel::itemData
+192 QAbstractItemModel::setItemData
+200 QSortFilterProxyModel::mimeTypes
+208 QSortFilterProxyModel::mimeData
+216 QSortFilterProxyModel::dropMimeData
+224 QSortFilterProxyModel::supportedDropActions
+232 QSortFilterProxyModel::insertRows
+240 QSortFilterProxyModel::insertColumns
+248 QSortFilterProxyModel::removeRows
+256 QSortFilterProxyModel::removeColumns
+264 QSortFilterProxyModel::fetchMore
+272 QSortFilterProxyModel::canFetchMore
+280 QSortFilterProxyModel::flags
+288 QSortFilterProxyModel::sort
+296 QSortFilterProxyModel::buddy
+304 QSortFilterProxyModel::match
+312 QSortFilterProxyModel::span
+320 QAbstractProxyModel::submit
+328 QAbstractProxyModel::revert
+336 QSortFilterProxyModel::setSourceModel
+344 QSortFilterProxyModel::mapToSource
+352 QSortFilterProxyModel::mapFromSource
+360 QSortFilterProxyModel::mapSelectionToSource
+368 QSortFilterProxyModel::mapSelectionFromSource
+376 QSortFilterProxyModel::filterAcceptsRow
+384 QSortFilterProxyModel::filterAcceptsColumn
+392 QSortFilterProxyModel::lessThan
+
+Class QSortFilterProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QSortFilterProxyModel (0x7f9552517700) 0
+ vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16u)
+ QAbstractProxyModel (0x7f9552517770) 0
+ primary-for QSortFilterProxyModel (0x7f9552517700)
+ QAbstractItemModel (0x7f95525177e0) 0
+ primary-for QAbstractProxyModel (0x7f9552517770)
+ QObject (0x7f9552517850) 0
+ primary-for QAbstractItemModel (0x7f95525177e0)
+
+Vtable for QStandardItem
+QStandardItem::_ZTV13QStandardItem: 11u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QStandardItem)
+16 QStandardItem::~QStandardItem
+24 QStandardItem::~QStandardItem
+32 QStandardItem::data
+40 QStandardItem::setData
+48 QStandardItem::clone
+56 QStandardItem::type
+64 QStandardItem::read
+72 QStandardItem::write
+80 QStandardItem::operator<
+
+Class QStandardItem
+ size=16 align=8
+ base size=16 base align=8
+QStandardItem (0x7f9552548620) 0
+ vptr=((& QStandardItem::_ZTV13QStandardItem) + 16u)
+
+Vtable for QStandardItemModel
+QStandardItemModel::_ZTV18QStandardItemModel: 42u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QStandardItemModel)
+16 QStandardItemModel::metaObject
+24 QStandardItemModel::qt_metacast
+32 QStandardItemModel::qt_metacall
+40 QStandardItemModel::~QStandardItemModel
+48 QStandardItemModel::~QStandardItemModel
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QStandardItemModel::index
+120 QStandardItemModel::parent
+128 QStandardItemModel::rowCount
+136 QStandardItemModel::columnCount
+144 QStandardItemModel::hasChildren
+152 QStandardItemModel::data
+160 QStandardItemModel::setData
+168 QStandardItemModel::headerData
+176 QStandardItemModel::setHeaderData
+184 QStandardItemModel::itemData
+192 QStandardItemModel::setItemData
+200 QStandardItemModel::mimeTypes
+208 QStandardItemModel::mimeData
+216 QStandardItemModel::dropMimeData
+224 QStandardItemModel::supportedDropActions
+232 QStandardItemModel::insertRows
+240 QStandardItemModel::insertColumns
+248 QStandardItemModel::removeRows
+256 QStandardItemModel::removeColumns
+264 QAbstractItemModel::fetchMore
+272 QAbstractItemModel::canFetchMore
+280 QStandardItemModel::flags
+288 QStandardItemModel::sort
+296 QAbstractItemModel::buddy
+304 QAbstractItemModel::match
+312 QAbstractItemModel::span
+320 QAbstractItemModel::submit
+328 QAbstractItemModel::revert
+
+Class QStandardItemModel
+ size=16 align=8
+ base size=16 base align=8
+QStandardItemModel (0x7f95524353f0) 0
+ vptr=((& QStandardItemModel::_ZTV18QStandardItemModel) + 16u)
+ QAbstractItemModel (0x7f9552435460) 0
+ primary-for QStandardItemModel (0x7f95524353f0)
+ QObject (0x7f95524354d0) 0
+ primary-for QAbstractItemModel (0x7f9552435460)
+
+Vtable for QStringListModel
+QStringListModel::_ZTV16QStringListModel: 42u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QStringListModel)
+16 QStringListModel::metaObject
+24 QStringListModel::qt_metacast
+32 QStringListModel::qt_metacall
+40 QStringListModel::~QStringListModel
+48 QStringListModel::~QStringListModel
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QAbstractListModel::index
+120 QAbstractListModel::parent
+128 QStringListModel::rowCount
+136 QAbstractListModel::columnCount
+144 QAbstractListModel::hasChildren
+152 QStringListModel::data
+160 QStringListModel::setData
+168 QAbstractItemModel::headerData
+176 QAbstractItemModel::setHeaderData
+184 QAbstractItemModel::itemData
+192 QAbstractItemModel::setItemData
+200 QAbstractItemModel::mimeTypes
+208 QAbstractItemModel::mimeData
+216 QAbstractListModel::dropMimeData
+224 QStringListModel::supportedDropActions
+232 QStringListModel::insertRows
+240 QAbstractItemModel::insertColumns
+248 QStringListModel::removeRows
+256 QAbstractItemModel::removeColumns
+264 QAbstractItemModel::fetchMore
+272 QAbstractItemModel::canFetchMore
+280 QStringListModel::flags
+288 QStringListModel::sort
+296 QAbstractItemModel::buddy
+304 QAbstractItemModel::match
+312 QAbstractItemModel::span
+320 QAbstractItemModel::submit
+328 QAbstractItemModel::revert
+
+Class QStringListModel
+ size=24 align=8
+ base size=24 base align=8
+QStringListModel (0x7f955246ef50) 0
+ vptr=((& QStringListModel::_ZTV16QStringListModel) + 16u)
+ QAbstractListModel (0x7f9552482000) 0
+ primary-for QStringListModel (0x7f955246ef50)
+ QAbstractItemModel (0x7f9552482070) 0
+ primary-for QAbstractListModel (0x7f9552482000)
+ QObject (0x7f95524820e0) 0
+ primary-for QAbstractItemModel (0x7f9552482070)
+
+Vtable for QStyledItemDelegate
+QStyledItemDelegate::_ZTV19QStyledItemDelegate: 23u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QStyledItemDelegate)
+16 QStyledItemDelegate::metaObject
+24 QStyledItemDelegate::qt_metacast
+32 QStyledItemDelegate::qt_metacall
+40 QStyledItemDelegate::~QStyledItemDelegate
+48 QStyledItemDelegate::~QStyledItemDelegate
+56 QObject::event
+64 QStyledItemDelegate::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QStyledItemDelegate::paint
+120 QStyledItemDelegate::sizeHint
+128 QStyledItemDelegate::createEditor
+136 QStyledItemDelegate::setEditorData
+144 QStyledItemDelegate::setModelData
+152 QStyledItemDelegate::updateEditorGeometry
+160 QStyledItemDelegate::editorEvent
+168 QStyledItemDelegate::displayText
+176 QStyledItemDelegate::initStyleOption
+
+Class QStyledItemDelegate
+ size=16 align=8
+ base size=16 base align=8
+QStyledItemDelegate (0x7f95524985b0) 0
+ vptr=((& QStyledItemDelegate::_ZTV19QStyledItemDelegate) + 16u)
+ QAbstractItemDelegate (0x7f9552498620) 0
+ primary-for QStyledItemDelegate (0x7f95524985b0)
+ QObject (0x7f9552498690) 0
+ primary-for QAbstractItemDelegate (0x7f9552498620)
+
+Vtable for QTableView
+QTableView::_ZTV10QTableView: 103u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTableView)
+16 QTableView::metaObject
+24 QTableView::qt_metacast
+32 QTableView::qt_metacall
+40 QTableView::~QTableView
+48 QTableView::~QTableView
+56 QAbstractItemView::event
+64 QObject::eventFilter
+72 QTableView::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractItemView::mousePressEvent
+168 QAbstractItemView::mouseReleaseEvent
+176 QAbstractItemView::mouseDoubleClickEvent
+184 QAbstractItemView::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractItemView::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QAbstractItemView::focusInEvent
+224 QAbstractItemView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QTableView::paintEvent
+256 QWidget::moveEvent
+264 QAbstractItemView::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractItemView::dragEnterEvent
+312 QAbstractItemView::dragMoveEvent
+320 QAbstractItemView::dragLeaveEvent
+328 QAbstractItemView::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QAbstractItemView::inputMethodEvent
+384 QAbstractItemView::inputMethodQuery
+392 QAbstractItemView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractItemView::viewportEvent
+456 QTableView::scrollContentsBy
+464 QTableView::setModel
+472 QTableView::setSelectionModel
+480 QAbstractItemView::keyboardSearch
+488 QTableView::visualRect
+496 QTableView::scrollTo
+504 QTableView::indexAt
+512 QTableView::sizeHintForRow
+520 QTableView::sizeHintForColumn
+528 QAbstractItemView::reset
+536 QTableView::setRootIndex
+544 QAbstractItemView::doItemsLayout
+552 QAbstractItemView::selectAll
+560 QAbstractItemView::dataChanged
+568 QAbstractItemView::rowsInserted
+576 QAbstractItemView::rowsAboutToBeRemoved
+584 QTableView::selectionChanged
+592 QTableView::currentChanged
+600 QAbstractItemView::updateEditorData
+608 QAbstractItemView::updateEditorGeometries
+616 QTableView::updateGeometries
+624 QTableView::verticalScrollbarAction
+632 QTableView::horizontalScrollbarAction
+640 QAbstractItemView::verticalScrollbarValueChanged
+648 QAbstractItemView::horizontalScrollbarValueChanged
+656 QAbstractItemView::closeEditor
+664 QAbstractItemView::commitData
+672 QAbstractItemView::editorDestroyed
+680 QTableView::moveCursor
+688 QTableView::horizontalOffset
+696 QTableView::verticalOffset
+704 QTableView::isIndexHidden
+712 QTableView::setSelection
+720 QTableView::visualRegionForSelection
+728 QTableView::selectedIndexes
+736 QAbstractItemView::edit
+744 QAbstractItemView::selectionCommand
+752 QAbstractItemView::startDrag
+760 QTableView::viewOptions
+768 (int (*)(...))-0x00000000000000010
+776 (int (*)(...))(& _ZTI10QTableView)
+784 QTableView::_ZThn16_N10QTableViewD1Ev
+792 QTableView::_ZThn16_N10QTableViewD0Ev
+800 QWidget::_ZThn16_NK7QWidget7devTypeEv
+808 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+816 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTableView
+ size=40 align=8
+ base size=40 base align=8
+QTableView (0x7f95524aff50) 0
+ vptr=((& QTableView::_ZTV10QTableView) + 16u)
+ QAbstractItemView (0x7f95524b8000) 0
+ primary-for QTableView (0x7f95524aff50)
+ QAbstractScrollArea (0x7f95524b8070) 0
+ primary-for QAbstractItemView (0x7f95524b8000)
+ QFrame (0x7f95524b80e0) 0
+ primary-for QAbstractScrollArea (0x7f95524b8070)
+ QWidget (0x7f9552497b00) 0
+ primary-for QFrame (0x7f95524b80e0)
+ QObject (0x7f95524b8150) 0
+ primary-for QWidget (0x7f9552497b00)
+ QPaintDevice (0x7f95524b81c0) 16
+ vptr=((& QTableView::_ZTV10QTableView) + 784u)
+
+Class QTableWidgetSelectionRange
+ size=16 align=4
+ base size=16 base align=4
+QTableWidgetSelectionRange (0x7f95524e2d20) 0
+
+Vtable for QTableWidgetItem
+QTableWidgetItem::_ZTV16QTableWidgetItem: 10u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QTableWidgetItem)
+16 QTableWidgetItem::~QTableWidgetItem
+24 QTableWidgetItem::~QTableWidgetItem
+32 QTableWidgetItem::clone
+40 QTableWidgetItem::data
+48 QTableWidgetItem::setData
+56 QTableWidgetItem::operator<
+64 QTableWidgetItem::read
+72 QTableWidgetItem::write
+
+Class QTableWidgetItem
+ size=48 align=8
+ base size=44 base align=8
+QTableWidgetItem (0x7f95522f3230) 0
+ vptr=((& QTableWidgetItem::_ZTV16QTableWidgetItem) + 16u)
+
+Vtable for QTableWidget
+QTableWidget::_ZTV12QTableWidget: 107u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTableWidget)
+16 QTableWidget::metaObject
+24 QTableWidget::qt_metacast
+32 QTableWidget::qt_metacall
+40 QTableWidget::~QTableWidget
+48 QTableWidget::~QTableWidget
+56 QTableWidget::event
+64 QObject::eventFilter
+72 QTableView::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractItemView::mousePressEvent
+168 QAbstractItemView::mouseReleaseEvent
+176 QAbstractItemView::mouseDoubleClickEvent
+184 QAbstractItemView::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractItemView::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QAbstractItemView::focusInEvent
+224 QAbstractItemView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QTableView::paintEvent
+256 QWidget::moveEvent
+264 QAbstractItemView::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractItemView::dragEnterEvent
+312 QAbstractItemView::dragMoveEvent
+320 QAbstractItemView::dragLeaveEvent
+328 QTableWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QAbstractItemView::inputMethodEvent
+384 QAbstractItemView::inputMethodQuery
+392 QAbstractItemView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractItemView::viewportEvent
+456 QTableView::scrollContentsBy
+464 QTableWidget::setModel
+472 QTableView::setSelectionModel
+480 QAbstractItemView::keyboardSearch
+488 QTableView::visualRect
+496 QTableView::scrollTo
+504 QTableView::indexAt
+512 QTableView::sizeHintForRow
+520 QTableView::sizeHintForColumn
+528 QAbstractItemView::reset
+536 QTableView::setRootIndex
+544 QAbstractItemView::doItemsLayout
+552 QAbstractItemView::selectAll
+560 QAbstractItemView::dataChanged
+568 QAbstractItemView::rowsInserted
+576 QAbstractItemView::rowsAboutToBeRemoved
+584 QTableView::selectionChanged
+592 QTableView::currentChanged
+600 QAbstractItemView::updateEditorData
+608 QAbstractItemView::updateEditorGeometries
+616 QTableView::updateGeometries
+624 QTableView::verticalScrollbarAction
+632 QTableView::horizontalScrollbarAction
+640 QAbstractItemView::verticalScrollbarValueChanged
+648 QAbstractItemView::horizontalScrollbarValueChanged
+656 QAbstractItemView::closeEditor
+664 QAbstractItemView::commitData
+672 QAbstractItemView::editorDestroyed
+680 QTableView::moveCursor
+688 QTableView::horizontalOffset
+696 QTableView::verticalOffset
+704 QTableView::isIndexHidden
+712 QTableView::setSelection
+720 QTableView::visualRegionForSelection
+728 QTableView::selectedIndexes
+736 QAbstractItemView::edit
+744 QAbstractItemView::selectionCommand
+752 QAbstractItemView::startDrag
+760 QTableView::viewOptions
+768 QTableWidget::mimeTypes
+776 QTableWidget::mimeData
+784 QTableWidget::dropMimeData
+792 QTableWidget::supportedDropActions
+800 (int (*)(...))-0x00000000000000010
+808 (int (*)(...))(& _ZTI12QTableWidget)
+816 QTableWidget::_ZThn16_N12QTableWidgetD1Ev
+824 QTableWidget::_ZThn16_N12QTableWidgetD0Ev
+832 QWidget::_ZThn16_NK7QWidget7devTypeEv
+840 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+848 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTableWidget
+ size=40 align=8
+ base size=40 base align=8
+QTableWidget (0x7f95523657e0) 0
+ vptr=((& QTableWidget::_ZTV12QTableWidget) + 16u)
+ QTableView (0x7f9552365850) 0
+ primary-for QTableWidget (0x7f95523657e0)
+ QAbstractItemView (0x7f95523658c0) 0
+ primary-for QTableView (0x7f9552365850)
+ QAbstractScrollArea (0x7f9552365930) 0
+ primary-for QAbstractItemView (0x7f95523658c0)
+ QFrame (0x7f95523659a0) 0
+ primary-for QAbstractScrollArea (0x7f9552365930)
+ QWidget (0x7f955235bc80) 0
+ primary-for QFrame (0x7f95523659a0)
+ QObject (0x7f9552365a10) 0
+ primary-for QWidget (0x7f955235bc80)
+ QPaintDevice (0x7f9552365a80) 16
+ vptr=((& QTableWidget::_ZTV12QTableWidget) + 816u)
+
+Vtable for QTreeView
+QTreeView::_ZTV9QTreeView: 105u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTreeView)
+16 QTreeView::metaObject
+24 QTreeView::qt_metacast
+32 QTreeView::qt_metacall
+40 QTreeView::~QTreeView
+48 QTreeView::~QTreeView
+56 QAbstractItemView::event
+64 QObject::eventFilter
+72 QTreeView::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QTreeView::mousePressEvent
+168 QTreeView::mouseReleaseEvent
+176 QTreeView::mouseDoubleClickEvent
+184 QTreeView::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QTreeView::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QAbstractItemView::focusInEvent
+224 QAbstractItemView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QTreeView::paintEvent
+256 QWidget::moveEvent
+264 QAbstractItemView::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractItemView::dragEnterEvent
+312 QTreeView::dragMoveEvent
+320 QAbstractItemView::dragLeaveEvent
+328 QAbstractItemView::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QAbstractItemView::inputMethodEvent
+384 QAbstractItemView::inputMethodQuery
+392 QAbstractItemView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QTreeView::viewportEvent
+456 QTreeView::scrollContentsBy
+464 QTreeView::setModel
+472 QTreeView::setSelectionModel
+480 QTreeView::keyboardSearch
+488 QTreeView::visualRect
+496 QTreeView::scrollTo
+504 QTreeView::indexAt
+512 QAbstractItemView::sizeHintForRow
+520 QTreeView::sizeHintForColumn
+528 QTreeView::reset
+536 QTreeView::setRootIndex
+544 QTreeView::doItemsLayout
+552 QTreeView::selectAll
+560 QTreeView::dataChanged
+568 QTreeView::rowsInserted
+576 QTreeView::rowsAboutToBeRemoved
+584 QTreeView::selectionChanged
+592 QTreeView::currentChanged
+600 QAbstractItemView::updateEditorData
+608 QAbstractItemView::updateEditorGeometries
+616 QTreeView::updateGeometries
+624 QAbstractItemView::verticalScrollbarAction
+632 QTreeView::horizontalScrollbarAction
+640 QAbstractItemView::verticalScrollbarValueChanged
+648 QAbstractItemView::horizontalScrollbarValueChanged
+656 QAbstractItemView::closeEditor
+664 QAbstractItemView::commitData
+672 QAbstractItemView::editorDestroyed
+680 QTreeView::moveCursor
+688 QTreeView::horizontalOffset
+696 QTreeView::verticalOffset
+704 QTreeView::isIndexHidden
+712 QTreeView::setSelection
+720 QTreeView::visualRegionForSelection
+728 QTreeView::selectedIndexes
+736 QAbstractItemView::edit
+744 QAbstractItemView::selectionCommand
+752 QAbstractItemView::startDrag
+760 QAbstractItemView::viewOptions
+768 QTreeView::drawRow
+776 QTreeView::drawBranches
+784 (int (*)(...))-0x00000000000000010
+792 (int (*)(...))(& _ZTI9QTreeView)
+800 QTreeView::_ZThn16_N9QTreeViewD1Ev
+808 QTreeView::_ZThn16_N9QTreeViewD0Ev
+816 QWidget::_ZThn16_NK7QWidget7devTypeEv
+824 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+832 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTreeView
+ size=40 align=8
+ base size=40 base align=8
+QTreeView (0x7f95523a4770) 0
+ vptr=((& QTreeView::_ZTV9QTreeView) + 16u)
+ QAbstractItemView (0x7f95523a47e0) 0
+ primary-for QTreeView (0x7f95523a4770)
+ QAbstractScrollArea (0x7f95523a4850) 0
+ primary-for QAbstractItemView (0x7f95523a47e0)
+ QFrame (0x7f95523a48c0) 0
+ primary-for QAbstractScrollArea (0x7f95523a4850)
+ QWidget (0x7f95523a2600) 0
+ primary-for QFrame (0x7f95523a48c0)
+ QObject (0x7f95523a4930) 0
+ primary-for QWidget (0x7f95523a2600)
+ QPaintDevice (0x7f95523a49a0) 16
+ vptr=((& QTreeView::_ZTV9QTreeView) + 800u)
+
+Class QTreeWidgetItemIterator
+ size=24 align=8
+ base size=20 base align=8
+QTreeWidgetItemIterator (0x7f95523dd540) 0
+
+Vtable for QTreeWidgetItem
+QTreeWidgetItem::_ZTV15QTreeWidgetItem: 10u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QTreeWidgetItem)
+16 QTreeWidgetItem::~QTreeWidgetItem
+24 QTreeWidgetItem::~QTreeWidgetItem
+32 QTreeWidgetItem::clone
+40 QTreeWidgetItem::data
+48 QTreeWidgetItem::setData
+56 QTreeWidgetItem::operator<
+64 QTreeWidgetItem::read
+72 QTreeWidgetItem::write
+
+Class QTreeWidgetItem
+ size=64 align=8
+ base size=60 base align=8
+QTreeWidgetItem (0x7f95522492a0) 0
+ vptr=((& QTreeWidgetItem::_ZTV15QTreeWidgetItem) + 16u)
+
+Vtable for QTreeWidget
+QTreeWidget::_ZTV11QTreeWidget: 109u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTreeWidget)
+16 QTreeWidget::metaObject
+24 QTreeWidget::qt_metacast
+32 QTreeWidget::qt_metacall
+40 QTreeWidget::~QTreeWidget
+48 QTreeWidget::~QTreeWidget
+56 QTreeWidget::event
+64 QObject::eventFilter
+72 QTreeView::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QTreeView::mousePressEvent
+168 QTreeView::mouseReleaseEvent
+176 QTreeView::mouseDoubleClickEvent
+184 QTreeView::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QTreeView::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QAbstractItemView::focusInEvent
+224 QAbstractItemView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QTreeView::paintEvent
+256 QWidget::moveEvent
+264 QAbstractItemView::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractItemView::dragEnterEvent
+312 QTreeView::dragMoveEvent
+320 QAbstractItemView::dragLeaveEvent
+328 QTreeWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QAbstractItemView::inputMethodEvent
+384 QAbstractItemView::inputMethodQuery
+392 QAbstractItemView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QTreeView::viewportEvent
+456 QTreeView::scrollContentsBy
+464 QTreeWidget::setModel
+472 QTreeWidget::setSelectionModel
+480 QTreeView::keyboardSearch
+488 QTreeView::visualRect
+496 QTreeView::scrollTo
+504 QTreeView::indexAt
+512 QAbstractItemView::sizeHintForRow
+520 QTreeView::sizeHintForColumn
+528 QTreeView::reset
+536 QTreeView::setRootIndex
+544 QTreeView::doItemsLayout
+552 QTreeView::selectAll
+560 QTreeView::dataChanged
+568 QTreeView::rowsInserted
+576 QTreeView::rowsAboutToBeRemoved
+584 QTreeView::selectionChanged
+592 QTreeView::currentChanged
+600 QAbstractItemView::updateEditorData
+608 QAbstractItemView::updateEditorGeometries
+616 QTreeView::updateGeometries
+624 QAbstractItemView::verticalScrollbarAction
+632 QTreeView::horizontalScrollbarAction
+640 QAbstractItemView::verticalScrollbarValueChanged
+648 QAbstractItemView::horizontalScrollbarValueChanged
+656 QAbstractItemView::closeEditor
+664 QAbstractItemView::commitData
+672 QAbstractItemView::editorDestroyed
+680 QTreeView::moveCursor
+688 QTreeView::horizontalOffset
+696 QTreeView::verticalOffset
+704 QTreeView::isIndexHidden
+712 QTreeView::setSelection
+720 QTreeView::visualRegionForSelection
+728 QTreeView::selectedIndexes
+736 QAbstractItemView::edit
+744 QAbstractItemView::selectionCommand
+752 QAbstractItemView::startDrag
+760 QAbstractItemView::viewOptions
+768 QTreeView::drawRow
+776 QTreeView::drawBranches
+784 QTreeWidget::mimeTypes
+792 QTreeWidget::mimeData
+800 QTreeWidget::dropMimeData
+808 QTreeWidget::supportedDropActions
+816 (int (*)(...))-0x00000000000000010
+824 (int (*)(...))(& _ZTI11QTreeWidget)
+832 QTreeWidget::_ZThn16_N11QTreeWidgetD1Ev
+840 QTreeWidget::_ZThn16_N11QTreeWidgetD0Ev
+848 QWidget::_ZThn16_NK7QWidget7devTypeEv
+856 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+864 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTreeWidget
+ size=40 align=8
+ base size=40 base align=8
+QTreeWidget (0x7f95520f78c0) 0
+ vptr=((& QTreeWidget::_ZTV11QTreeWidget) + 16u)
+ QTreeView (0x7f95520f7930) 0
+ primary-for QTreeWidget (0x7f95520f78c0)
+ QAbstractItemView (0x7f95520f79a0) 0
+ primary-for QTreeView (0x7f95520f7930)
+ QAbstractScrollArea (0x7f95520f7a10) 0
+ primary-for QAbstractItemView (0x7f95520f79a0)
+ QFrame (0x7f95520f7a80) 0
+ primary-for QAbstractScrollArea (0x7f95520f7a10)
+ QWidget (0x7f95520fa200) 0
+ primary-for QFrame (0x7f95520f7a80)
+ QObject (0x7f95520f7af0) 0
+ primary-for QWidget (0x7f95520fa200)
+ QPaintDevice (0x7f95520f7b60) 16
+ vptr=((& QTreeWidget::_ZTV11QTreeWidget) + 832u)
+
+Class QAccessible
+ size=1 align=1
+ base size=0 base align=1
+QAccessible (0x7f9552140c40) 0 empty
+
+Vtable for QAccessibleInterface
+QAccessibleInterface::_ZTV20QAccessibleInterface: 19u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QAccessibleInterface)
+16 QAccessibleInterface::~QAccessibleInterface
+24 QAccessibleInterface::~QAccessibleInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+72 __cxa_pure_virtual
+80 __cxa_pure_virtual
+88 __cxa_pure_virtual
+96 __cxa_pure_virtual
+104 __cxa_pure_virtual
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+
+Class QAccessibleInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleInterface (0x7f9551feae00) 0 nearly-empty
+ vptr=((& QAccessibleInterface::_ZTV20QAccessibleInterface) + 16u)
+ QAccessible (0x7f9551feae70) 0 empty
+
+Vtable for QAccessibleInterfaceEx
+QAccessibleInterfaceEx::_ZTV22QAccessibleInterfaceEx: 22u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QAccessibleInterfaceEx)
+16 QAccessibleInterfaceEx::~QAccessibleInterfaceEx
+24 QAccessibleInterfaceEx::~QAccessibleInterfaceEx
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+72 __cxa_pure_virtual
+80 __cxa_pure_virtual
+88 __cxa_pure_virtual
+96 __cxa_pure_virtual
+104 __cxa_pure_virtual
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 __cxa_pure_virtual
+160 QAccessibleInterfaceEx::virtual_hook
+168 QAccessibleInterfaceEx::interface_cast
+
+Class QAccessibleInterfaceEx
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleInterfaceEx (0x7f9552066b60) 0 nearly-empty
+ vptr=((& QAccessibleInterfaceEx::_ZTV22QAccessibleInterfaceEx) + 16u)
+ QAccessibleInterface (0x7f9552066bd0) 0 nearly-empty
+ primary-for QAccessibleInterfaceEx (0x7f9552066b60)
+ QAccessible (0x7f9552066c40) 0 empty
+
+Vtable for QAccessibleEvent
+QAccessibleEvent::_ZTV16QAccessibleEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAccessibleEvent)
+16 QAccessibleEvent::~QAccessibleEvent
+24 QAccessibleEvent::~QAccessibleEvent
+
+Class QAccessibleEvent
+ size=32 align=8
+ base size=32 base align=8
+QAccessibleEvent (0x7f9552066ee0) 0
+ vptr=((& QAccessibleEvent::_ZTV16QAccessibleEvent) + 16u)
+ QEvent (0x7f9552066f50) 0
+ primary-for QAccessibleEvent (0x7f9552066ee0)
+
+Vtable for QAccessible2Interface
+QAccessible2Interface::_ZTV21QAccessible2Interface: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QAccessible2Interface)
+16 QAccessible2Interface::~QAccessible2Interface
+24 QAccessible2Interface::~QAccessible2Interface
+
+Class QAccessible2Interface
+ size=8 align=8
+ base size=8 base align=8
+QAccessible2Interface (0x7f955207cf50) 0 nearly-empty
+ vptr=((& QAccessible2Interface::_ZTV21QAccessible2Interface) + 16u)
+
+Vtable for QAccessibleTextInterface
+QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
+16 QAccessibleTextInterface::~QAccessibleTextInterface
+24 QAccessibleTextInterface::~QAccessibleTextInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+72 __cxa_pure_virtual
+80 __cxa_pure_virtual
+88 __cxa_pure_virtual
+96 __cxa_pure_virtual
+104 __cxa_pure_virtual
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 __cxa_pure_virtual
+
+Class QAccessibleTextInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTextInterface (0x7f95520921c0) 0 nearly-empty
+ vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 16u)
+ QAccessible2Interface (0x7f9552092230) 0 nearly-empty
+ primary-for QAccessibleTextInterface (0x7f95520921c0)
+
+Vtable for QAccessibleEditableTextInterface
+QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 11u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
+16 QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
+24 QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+72 __cxa_pure_virtual
+80 __cxa_pure_virtual
+
+Class QAccessibleEditableTextInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleEditableTextInterface (0x7f95520a4070) 0 nearly-empty
+ vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 16u)
+ QAccessible2Interface (0x7f95520a40e0) 0 nearly-empty
+ primary-for QAccessibleEditableTextInterface (0x7f95520a4070)
+
+Vtable for QAccessibleSimpleEditableTextInterface
+QAccessibleSimpleEditableTextInterface::_ZTV38QAccessibleSimpleEditableTextInterface: 11u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI38QAccessibleSimpleEditableTextInterface)
+16 QAccessibleSimpleEditableTextInterface::~QAccessibleSimpleEditableTextInterface
+24 QAccessibleSimpleEditableTextInterface::~QAccessibleSimpleEditableTextInterface
+32 QAccessibleSimpleEditableTextInterface::copyText
+40 QAccessibleSimpleEditableTextInterface::deleteText
+48 QAccessibleSimpleEditableTextInterface::insertText
+56 QAccessibleSimpleEditableTextInterface::cutText
+64 QAccessibleSimpleEditableTextInterface::pasteText
+72 QAccessibleSimpleEditableTextInterface::replaceText
+80 QAccessibleSimpleEditableTextInterface::setAttributes
+
+Class QAccessibleSimpleEditableTextInterface
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleSimpleEditableTextInterface (0x7f95520a4f50) 0
+ vptr=((& QAccessibleSimpleEditableTextInterface::_ZTV38QAccessibleSimpleEditableTextInterface) + 16u)
+ QAccessibleEditableTextInterface (0x7f95520a4310) 0 nearly-empty
+ primary-for QAccessibleSimpleEditableTextInterface (0x7f95520a4f50)
+ QAccessible2Interface (0x7f95520b0000) 0 nearly-empty
+ primary-for QAccessibleEditableTextInterface (0x7f95520a4310)
+
+Vtable for QAccessibleValueInterface
+QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 8u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
+16 QAccessibleValueInterface::~QAccessibleValueInterface
+24 QAccessibleValueInterface::~QAccessibleValueInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+
+Class QAccessibleValueInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleValueInterface (0x7f95520b0230) 0 nearly-empty
+ vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 16u)
+ QAccessible2Interface (0x7f95520b02a0) 0 nearly-empty
+ primary-for QAccessibleValueInterface (0x7f95520b0230)
+
+Vtable for QAccessibleTableInterface
+QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 30u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
+16 QAccessibleTableInterface::~QAccessibleTableInterface
+24 QAccessibleTableInterface::~QAccessibleTableInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+72 __cxa_pure_virtual
+80 __cxa_pure_virtual
+88 __cxa_pure_virtual
+96 __cxa_pure_virtual
+104 __cxa_pure_virtual
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 __cxa_pure_virtual
+160 __cxa_pure_virtual
+168 __cxa_pure_virtual
+176 __cxa_pure_virtual
+184 __cxa_pure_virtual
+192 __cxa_pure_virtual
+200 __cxa_pure_virtual
+208 __cxa_pure_virtual
+216 __cxa_pure_virtual
+224 __cxa_pure_virtual
+232 __cxa_pure_virtual
+
+Class QAccessibleTableInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleTableInterface (0x7f95520c0070) 0 nearly-empty
+ vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 16u)
+ QAccessible2Interface (0x7f95520c00e0) 0 nearly-empty
+ primary-for QAccessibleTableInterface (0x7f95520c0070)
+
+Vtable for QAccessibleActionInterface
+QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 10u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
+16 QAccessibleActionInterface::~QAccessibleActionInterface
+24 QAccessibleActionInterface::~QAccessibleActionInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+72 __cxa_pure_virtual
+
+Class QAccessibleActionInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleActionInterface (0x7f95520c0460) 0 nearly-empty
+ vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 16u)
+ QAccessible2Interface (0x7f95520c04d0) 0 nearly-empty
+ primary-for QAccessibleActionInterface (0x7f95520c0460)
+
+Vtable for QAccessibleImageInterface
+QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
+16 QAccessibleImageInterface::~QAccessibleImageInterface
+24 QAccessibleImageInterface::~QAccessibleImageInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+
+Class QAccessibleImageInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleImageInterface (0x7f95520c0850) 0 nearly-empty
+ vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 16u)
+ QAccessible2Interface (0x7f95520c08c0) 0 nearly-empty
+ primary-for QAccessibleImageInterface (0x7f95520c0850)
+
+Vtable for QAccessibleBridge
+QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleBridge)
+16 QAccessibleBridge::~QAccessibleBridge
+24 QAccessibleBridge::~QAccessibleBridge
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QAccessibleBridge
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleBridge (0x7f95520c0c40) 0 nearly-empty
+ vptr=((& QAccessibleBridge::_ZTV17QAccessibleBridge) + 16u)
+
+Vtable for QAccessibleBridgeFactoryInterface
+QAccessibleBridgeFactoryInterface::_ZTV33QAccessibleBridgeFactoryInterface: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI33QAccessibleBridgeFactoryInterface)
+16 QAccessibleBridgeFactoryInterface::~QAccessibleBridgeFactoryInterface
+24 QAccessibleBridgeFactoryInterface::~QAccessibleBridgeFactoryInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QAccessibleBridgeFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleBridgeFactoryInterface (0x7f95520d8540) 0 nearly-empty
+ vptr=((& QAccessibleBridgeFactoryInterface::_ZTV33QAccessibleBridgeFactoryInterface) + 16u)
+ QFactoryInterface (0x7f95520d85b0) 0 nearly-empty
+ primary-for QAccessibleBridgeFactoryInterface (0x7f95520d8540)
+
+Vtable for QAccessibleBridgePlugin
+QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin: 22u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QAccessibleBridgePlugin)
+16 QAccessibleBridgePlugin::metaObject
+24 QAccessibleBridgePlugin::qt_metacast
+32 QAccessibleBridgePlugin::qt_metacall
+40 QAccessibleBridgePlugin::~QAccessibleBridgePlugin
+48 QAccessibleBridgePlugin::~QAccessibleBridgePlugin
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 (int (*)(...))-0x00000000000000010
+136 (int (*)(...))(& _ZTI23QAccessibleBridgePlugin)
+144 QAccessibleBridgePlugin::_ZThn16_N23QAccessibleBridgePluginD1Ev
+152 QAccessibleBridgePlugin::_ZThn16_N23QAccessibleBridgePluginD0Ev
+160 __cxa_pure_virtual
+168 __cxa_pure_virtual
+
+Class QAccessibleBridgePlugin
+ size=24 align=8
+ base size=24 base align=8
+QAccessibleBridgePlugin (0x7f9551ee4580) 0
+ vptr=((& QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin) + 16u)
+ QObject (0x7f95520d8620) 0
+ primary-for QAccessibleBridgePlugin (0x7f9551ee4580)
+ QAccessibleBridgeFactoryInterface (0x7f9551ee8000) 16 nearly-empty
+ vptr=((& QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin) + 144u)
+ QFactoryInterface (0x7f9551ee8070) 16 nearly-empty
+ primary-for QAccessibleBridgeFactoryInterface (0x7f9551ee8000)
+
+Vtable for QAccessibleObject
+QAccessibleObject::_ZTV17QAccessibleObject: 19u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleObject)
+16 QAccessibleObject::~QAccessibleObject
+24 QAccessibleObject::~QAccessibleObject
+32 QAccessibleObject::isValid
+40 QAccessibleObject::object
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+72 __cxa_pure_virtual
+80 __cxa_pure_virtual
+88 __cxa_pure_virtual
+96 QAccessibleObject::setText
+104 QAccessibleObject::rect
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 QAccessibleObject::userActionCount
+136 QAccessibleObject::actionText
+144 QAccessibleObject::doAction
+
+Class QAccessibleObject
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleObject (0x7f9551ee8f50) 0
+ vptr=((& QAccessibleObject::_ZTV17QAccessibleObject) + 16u)
+ QAccessibleInterface (0x7f9551ee8310) 0 nearly-empty
+ primary-for QAccessibleObject (0x7f9551ee8f50)
+ QAccessible (0x7f9551efb000) 0 empty
+
+Vtable for QAccessibleObjectEx
+QAccessibleObjectEx::_ZTV19QAccessibleObjectEx: 22u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAccessibleObjectEx)
+16 QAccessibleObjectEx::~QAccessibleObjectEx
+24 QAccessibleObjectEx::~QAccessibleObjectEx
+32 QAccessibleObjectEx::isValid
+40 QAccessibleObjectEx::object
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+72 __cxa_pure_virtual
+80 __cxa_pure_virtual
+88 __cxa_pure_virtual
+96 QAccessibleObjectEx::setText
+104 QAccessibleObjectEx::rect
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 QAccessibleObjectEx::userActionCount
+136 QAccessibleObjectEx::actionText
+144 QAccessibleObjectEx::doAction
+152 __cxa_pure_virtual
+160 QAccessibleInterfaceEx::virtual_hook
+168 QAccessibleInterfaceEx::interface_cast
+
+Class QAccessibleObjectEx
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleObjectEx (0x7f9551efb700) 0
+ vptr=((& QAccessibleObjectEx::_ZTV19QAccessibleObjectEx) + 16u)
+ QAccessibleInterfaceEx (0x7f9551efb770) 0 nearly-empty
+ primary-for QAccessibleObjectEx (0x7f9551efb700)
+ QAccessibleInterface (0x7f9551efb7e0) 0 nearly-empty
+ primary-for QAccessibleInterfaceEx (0x7f9551efb770)
+ QAccessible (0x7f9551efb850) 0 empty
+
+Vtable for QAccessibleApplication
+QAccessibleApplication::_ZTV22QAccessibleApplication: 19u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QAccessibleApplication)
+16 QAccessibleApplication::~QAccessibleApplication
+24 QAccessibleApplication::~QAccessibleApplication
+32 QAccessibleObject::isValid
+40 QAccessibleObject::object
+48 QAccessibleApplication::childCount
+56 QAccessibleApplication::indexOfChild
+64 QAccessibleApplication::relationTo
+72 QAccessibleApplication::childAt
+80 QAccessibleApplication::navigate
+88 QAccessibleApplication::text
+96 QAccessibleObject::setText
+104 QAccessibleObject::rect
+112 QAccessibleApplication::role
+120 QAccessibleApplication::state
+128 QAccessibleApplication::userActionCount
+136 QAccessibleApplication::actionText
+144 QAccessibleApplication::doAction
+
+Class QAccessibleApplication
+ size=16 align=8
+ base size=16 base align=8
+QAccessibleApplication (0x7f9551efbf50) 0
+ vptr=((& QAccessibleApplication::_ZTV22QAccessibleApplication) + 16u)
+ QAccessibleObject (0x7f9551efb690) 0
+ primary-for QAccessibleApplication (0x7f9551efbf50)
+ QAccessibleInterface (0x7f9551efbee0) 0 nearly-empty
+ primary-for QAccessibleObject (0x7f9551efb690)
+ QAccessible (0x7f9551f0d000) 0 empty
+
+Vtable for QAccessibleFactoryInterface
+QAccessibleFactoryInterface::_ZTV27QAccessibleFactoryInterface: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QAccessibleFactoryInterface)
+16 QAccessibleFactoryInterface::~QAccessibleFactoryInterface
+24 QAccessibleFactoryInterface::~QAccessibleFactoryInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QAccessibleFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QAccessibleFactoryInterface (0x7f9551ee4e00) 0 nearly-empty
+ vptr=((& QAccessibleFactoryInterface::_ZTV27QAccessibleFactoryInterface) + 16u)
+ QAccessible (0x7f9551f0d8c0) 0 empty
+ QFactoryInterface (0x7f9551f0d930) 0 nearly-empty
+ primary-for QAccessibleFactoryInterface (0x7f9551ee4e00)
+
+Vtable for QAccessiblePlugin
+QAccessiblePlugin::_ZTV17QAccessiblePlugin: 22u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessiblePlugin)
+16 QAccessiblePlugin::metaObject
+24 QAccessiblePlugin::qt_metacast
+32 QAccessiblePlugin::qt_metacall
+40 QAccessiblePlugin::~QAccessiblePlugin
+48 QAccessiblePlugin::~QAccessiblePlugin
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 (int (*)(...))-0x00000000000000010
+136 (int (*)(...))(& _ZTI17QAccessiblePlugin)
+144 QAccessiblePlugin::_ZThn16_N17QAccessiblePluginD1Ev
+152 QAccessiblePlugin::_ZThn16_N17QAccessiblePluginD0Ev
+160 __cxa_pure_virtual
+168 __cxa_pure_virtual
+
+Class QAccessiblePlugin
+ size=24 align=8
+ base size=24 base align=8
+QAccessiblePlugin (0x7f9551f18800) 0
+ vptr=((& QAccessiblePlugin::_ZTV17QAccessiblePlugin) + 16u)
+ QObject (0x7f9551f1e2a0) 0
+ primary-for QAccessiblePlugin (0x7f9551f18800)
+ QAccessibleFactoryInterface (0x7f9551f18880) 16 nearly-empty
+ vptr=((& QAccessiblePlugin::_ZTV17QAccessiblePlugin) + 144u)
+ QAccessible (0x7f9551f1e310) 16 empty
+ QFactoryInterface (0x7f9551f1e380) 16 nearly-empty
+ primary-for QAccessibleFactoryInterface (0x7f9551f18880)
+
+Vtable for QAccessibleWidget
+QAccessibleWidget::_ZTV17QAccessibleWidget: 19u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAccessibleWidget)
+16 QAccessibleWidget::~QAccessibleWidget
+24 QAccessibleWidget::~QAccessibleWidget
+32 QAccessibleObject::isValid
+40 QAccessibleObject::object
+48 QAccessibleWidget::childCount
+56 QAccessibleWidget::indexOfChild
+64 QAccessibleWidget::relationTo
+72 QAccessibleWidget::childAt
+80 QAccessibleWidget::navigate
+88 QAccessibleWidget::text
+96 QAccessibleObject::setText
+104 QAccessibleWidget::rect
+112 QAccessibleWidget::role
+120 QAccessibleWidget::state
+128 QAccessibleWidget::userActionCount
+136 QAccessibleWidget::actionText
+144 QAccessibleWidget::doAction
+
+Class QAccessibleWidget
+ size=24 align=8
+ base size=24 base align=8
+QAccessibleWidget (0x7f9551f2e310) 0
+ vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 16u)
+ QAccessibleObject (0x7f9551f2e380) 0
+ primary-for QAccessibleWidget (0x7f9551f2e310)
+ QAccessibleInterface (0x7f9551f2e3f0) 0 nearly-empty
+ primary-for QAccessibleObject (0x7f9551f2e380)
+ QAccessible (0x7f9551f2e460) 0 empty
+
+Vtable for QAccessibleWidgetEx
+QAccessibleWidgetEx::_ZTV19QAccessibleWidgetEx: 22u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAccessibleWidgetEx)
+16 QAccessibleWidgetEx::~QAccessibleWidgetEx
+24 QAccessibleWidgetEx::~QAccessibleWidgetEx
+32 QAccessibleObjectEx::isValid
+40 QAccessibleObjectEx::object
+48 QAccessibleWidgetEx::childCount
+56 QAccessibleWidgetEx::indexOfChild
+64 QAccessibleWidgetEx::relationTo
+72 QAccessibleWidgetEx::childAt
+80 QAccessibleWidgetEx::navigate
+88 QAccessibleWidgetEx::text
+96 QAccessibleObjectEx::setText
+104 QAccessibleWidgetEx::rect
+112 QAccessibleWidgetEx::role
+120 QAccessibleWidgetEx::state
+128 QAccessibleObjectEx::userActionCount
+136 QAccessibleWidgetEx::actionText
+144 QAccessibleWidgetEx::doAction
+152 QAccessibleWidgetEx::invokeMethodEx
+160 QAccessibleInterfaceEx::virtual_hook
+168 QAccessibleInterfaceEx::interface_cast
+
+Class QAccessibleWidgetEx
+ size=24 align=8
+ base size=24 base align=8
+QAccessibleWidgetEx (0x7f9551f3b3f0) 0
+ vptr=((& QAccessibleWidgetEx::_ZTV19QAccessibleWidgetEx) + 16u)
+ QAccessibleObjectEx (0x7f9551f3b460) 0
+ primary-for QAccessibleWidgetEx (0x7f9551f3b3f0)
+ QAccessibleInterfaceEx (0x7f9551f3b4d0) 0 nearly-empty
+ primary-for QAccessibleObjectEx (0x7f9551f3b460)
+ QAccessibleInterface (0x7f9551f3b540) 0 nearly-empty
+ primary-for QAccessibleInterfaceEx (0x7f9551f3b4d0)
+ QAccessible (0x7f9551f3b5b0) 0 empty
+
+Vtable for QAction
+QAction::_ZTV7QAction: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QAction)
+16 QAction::metaObject
+24 QAction::qt_metacast
+32 QAction::qt_metacall
+40 QAction::~QAction
+48 QAction::~QAction
+56 QAction::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QAction
+ size=16 align=8
+ base size=16 base align=8
+QAction (0x7f9551f4a540) 0
+ vptr=((& QAction::_ZTV7QAction) + 16u)
+ QObject (0x7f9551f4a5b0) 0
+ primary-for QAction (0x7f9551f4a540)
+
+Vtable for QActionGroup
+QActionGroup::_ZTV12QActionGroup: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QActionGroup)
+16 QActionGroup::metaObject
+24 QActionGroup::qt_metacast
+32 QActionGroup::qt_metacall
+40 QActionGroup::~QActionGroup
+48 QActionGroup::~QActionGroup
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QActionGroup
+ size=16 align=8
+ base size=16 base align=8
+QActionGroup (0x7f9551f92070) 0
+ vptr=((& QActionGroup::_ZTV12QActionGroup) + 16u)
+ QObject (0x7f9551f920e0) 0
+ primary-for QActionGroup (0x7f9551f92070)
+
+Vtable for QApplication
+QApplication::_ZTV12QApplication: 20u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QApplication)
+16 QApplication::metaObject
+24 QApplication::qt_metacast
+32 QApplication::qt_metacall
+40 QApplication::~QApplication
+48 QApplication::~QApplication
+56 QApplication::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QApplication::notify
+120 QApplication::compressEvent
+128 QApplication::x11EventFilter
+136 QApplication::x11ClientMessage
+144 QApplication::commitData
+152 QApplication::saveState
+
+Class QApplication
+ size=16 align=8
+ base size=16 base align=8
+QApplication (0x7f9551fd4460) 0
+ vptr=((& QApplication::_ZTV12QApplication) + 16u)
+ QCoreApplication (0x7f9551fd44d0) 0
+ primary-for QApplication (0x7f9551fd4460)
+ QObject (0x7f9551fd4540) 0
+ primary-for QCoreApplication (0x7f9551fd44d0)
+
+Vtable for QLayoutItem
+QLayoutItem::_ZTV11QLayoutItem: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QLayoutItem)
+16 QLayoutItem::~QLayoutItem
+24 QLayoutItem::~QLayoutItem
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+72 __cxa_pure_virtual
+80 __cxa_pure_virtual
+88 QLayoutItem::hasHeightForWidth
+96 QLayoutItem::heightForWidth
+104 QLayoutItem::minimumHeightForWidth
+112 QLayoutItem::invalidate
+120 QLayoutItem::widget
+128 QLayoutItem::layout
+136 QLayoutItem::spacerItem
+
+Class QLayoutItem
+ size=16 align=8
+ base size=12 base align=8
+QLayoutItem (0x7f9551e260e0) 0
+ vptr=((& QLayoutItem::_ZTV11QLayoutItem) + 16u)
+
+Vtable for QSpacerItem
+QSpacerItem::_ZTV11QSpacerItem: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QSpacerItem)
+16 QSpacerItem::~QSpacerItem
+24 QSpacerItem::~QSpacerItem
+32 QSpacerItem::sizeHint
+40 QSpacerItem::minimumSize
+48 QSpacerItem::maximumSize
+56 QSpacerItem::expandingDirections
+64 QSpacerItem::setGeometry
+72 QSpacerItem::geometry
+80 QSpacerItem::isEmpty
+88 QLayoutItem::hasHeightForWidth
+96 QLayoutItem::heightForWidth
+104 QLayoutItem::minimumHeightForWidth
+112 QLayoutItem::invalidate
+120 QLayoutItem::widget
+128 QLayoutItem::layout
+136 QSpacerItem::spacerItem
+
+Class QSpacerItem
+ size=40 align=8
+ base size=40 base align=8
+QSpacerItem (0x7f9551e26cb0) 0
+ vptr=((& QSpacerItem::_ZTV11QSpacerItem) + 16u)
+ QLayoutItem (0x7f9551e26d20) 0
+ primary-for QSpacerItem (0x7f9551e26cb0)
+
+Vtable for QWidgetItem
+QWidgetItem::_ZTV11QWidgetItem: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QWidgetItem)
+16 QWidgetItem::~QWidgetItem
+24 QWidgetItem::~QWidgetItem
+32 QWidgetItem::sizeHint
+40 QWidgetItem::minimumSize
+48 QWidgetItem::maximumSize
+56 QWidgetItem::expandingDirections
+64 QWidgetItem::setGeometry
+72 QWidgetItem::geometry
+80 QWidgetItem::isEmpty
+88 QWidgetItem::hasHeightForWidth
+96 QWidgetItem::heightForWidth
+104 QLayoutItem::minimumHeightForWidth
+112 QLayoutItem::invalidate
+120 QWidgetItem::widget
+128 QLayoutItem::layout
+136 QLayoutItem::spacerItem
+
+Class QWidgetItem
+ size=24 align=8
+ base size=24 base align=8
+QWidgetItem (0x7f9551e431c0) 0
+ vptr=((& QWidgetItem::_ZTV11QWidgetItem) + 16u)
+ QLayoutItem (0x7f9551e43230) 0
+ primary-for QWidgetItem (0x7f9551e431c0)
+
+Vtable for QWidgetItemV2
+QWidgetItemV2::_ZTV13QWidgetItemV2: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QWidgetItemV2)
+16 QWidgetItemV2::~QWidgetItemV2
+24 QWidgetItemV2::~QWidgetItemV2
+32 QWidgetItemV2::sizeHint
+40 QWidgetItemV2::minimumSize
+48 QWidgetItemV2::maximumSize
+56 QWidgetItem::expandingDirections
+64 QWidgetItem::setGeometry
+72 QWidgetItem::geometry
+80 QWidgetItem::isEmpty
+88 QWidgetItem::hasHeightForWidth
+96 QWidgetItemV2::heightForWidth
+104 QLayoutItem::minimumHeightForWidth
+112 QLayoutItem::invalidate
+120 QWidgetItem::widget
+128 QLayoutItem::layout
+136 QLayoutItem::spacerItem
+
+Class QWidgetItemV2
+ size=88 align=8
+ base size=88 base align=8
+QWidgetItemV2 (0x7f9551e53000) 0
+ vptr=((& QWidgetItemV2::_ZTV13QWidgetItemV2) + 16u)
+ QWidgetItem (0x7f9551e53070) 0
+ primary-for QWidgetItemV2 (0x7f9551e53000)
+ QLayoutItem (0x7f9551e530e0) 0
+ primary-for QWidgetItem (0x7f9551e53070)
+
+Class QLayoutIterator
+ size=16 align=8
+ base size=12 base align=8
+QLayoutIterator (0x7f9551e53e70) 0
+
+Vtable for QLayout
+QLayout::_ZTV7QLayout: 45u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QLayout)
+16 QLayout::metaObject
+24 QLayout::qt_metacast
+32 QLayout::qt_metacall
+40 QLayout::~QLayout
+48 QLayout::~QLayout
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QLayout::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QLayout::invalidate
+120 QLayout::geometry
+128 __cxa_pure_virtual
+136 QLayout::expandingDirections
+144 QLayout::minimumSize
+152 QLayout::maximumSize
+160 QLayout::setGeometry
+168 __cxa_pure_virtual
+176 __cxa_pure_virtual
+184 QLayout::indexOf
+192 __cxa_pure_virtual
+200 QLayout::isEmpty
+208 QLayout::layout
+216 (int (*)(...))-0x00000000000000010
+224 (int (*)(...))(& _ZTI7QLayout)
+232 QLayout::_ZThn16_N7QLayoutD1Ev
+240 QLayout::_ZThn16_N7QLayoutD0Ev
+248 __cxa_pure_virtual
+256 QLayout::_ZThn16_NK7QLayout11minimumSizeEv
+264 QLayout::_ZThn16_NK7QLayout11maximumSizeEv
+272 QLayout::_ZThn16_NK7QLayout19expandingDirectionsEv
+280 QLayout::_ZThn16_N7QLayout11setGeometryERK5QRect
+288 QLayout::_ZThn16_NK7QLayout8geometryEv
+296 QLayout::_ZThn16_NK7QLayout7isEmptyEv
+304 QLayoutItem::hasHeightForWidth
+312 QLayoutItem::heightForWidth
+320 QLayoutItem::minimumHeightForWidth
+328 QLayout::_ZThn16_N7QLayout10invalidateEv
+336 QLayoutItem::widget
+344 QLayout::_ZThn16_N7QLayout6layoutEv
+352 QLayoutItem::spacerItem
+
+Class QLayout
+ size=32 align=8
+ base size=28 base align=8
+QLayout (0x7f9551e67380) 0
+ vptr=((& QLayout::_ZTV7QLayout) + 16u)
+ QObject (0x7f9551e66f50) 0
+ primary-for QLayout (0x7f9551e67380)
+ QLayoutItem (0x7f9551e69000) 16
+ vptr=((& QLayout::_ZTV7QLayout) + 232u)
+
+Vtable for QGridLayout
+QGridLayout::_ZTV11QGridLayout: 49u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QGridLayout)
+16 QGridLayout::metaObject
+24 QGridLayout::qt_metacast
+32 QGridLayout::qt_metacall
+40 QGridLayout::~QGridLayout
+48 QGridLayout::~QGridLayout
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QLayout::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGridLayout::invalidate
+120 QLayout::geometry
+128 QGridLayout::addItem
+136 QGridLayout::expandingDirections
+144 QGridLayout::minimumSize
+152 QGridLayout::maximumSize
+160 QGridLayout::setGeometry
+168 QGridLayout::itemAt
+176 QGridLayout::takeAt
+184 QLayout::indexOf
+192 QGridLayout::count
+200 QLayout::isEmpty
+208 QLayout::layout
+216 QGridLayout::sizeHint
+224 QGridLayout::hasHeightForWidth
+232 QGridLayout::heightForWidth
+240 QGridLayout::minimumHeightForWidth
+248 (int (*)(...))-0x00000000000000010
+256 (int (*)(...))(& _ZTI11QGridLayout)
+264 QGridLayout::_ZThn16_N11QGridLayoutD1Ev
+272 QGridLayout::_ZThn16_N11QGridLayoutD0Ev
+280 QGridLayout::_ZThn16_NK11QGridLayout8sizeHintEv
+288 QGridLayout::_ZThn16_NK11QGridLayout11minimumSizeEv
+296 QGridLayout::_ZThn16_NK11QGridLayout11maximumSizeEv
+304 QGridLayout::_ZThn16_NK11QGridLayout19expandingDirectionsEv
+312 QGridLayout::_ZThn16_N11QGridLayout11setGeometryERK5QRect
+320 QLayout::_ZThn16_NK7QLayout8geometryEv
+328 QLayout::_ZThn16_NK7QLayout7isEmptyEv
+336 QGridLayout::_ZThn16_NK11QGridLayout17hasHeightForWidthEv
+344 QGridLayout::_ZThn16_NK11QGridLayout14heightForWidthEi
+352 QGridLayout::_ZThn16_NK11QGridLayout21minimumHeightForWidthEi
+360 QGridLayout::_ZThn16_N11QGridLayout10invalidateEv
+368 QLayoutItem::widget
+376 QLayout::_ZThn16_N7QLayout6layoutEv
+384 QLayoutItem::spacerItem
+
+Class QGridLayout
+ size=32 align=8
+ base size=28 base align=8
+QGridLayout (0x7f9551eaa4d0) 0
+ vptr=((& QGridLayout::_ZTV11QGridLayout) + 16u)
+ QLayout (0x7f9551ea6500) 0
+ primary-for QGridLayout (0x7f9551eaa4d0)
+ QObject (0x7f9551eaa540) 0
+ primary-for QLayout (0x7f9551ea6500)
+ QLayoutItem (0x7f9551eaa5b0) 16
+ vptr=((& QGridLayout::_ZTV11QGridLayout) + 264u)
+
+Vtable for QBoxLayout
+QBoxLayout::_ZTV10QBoxLayout: 49u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QBoxLayout)
+16 QBoxLayout::metaObject
+24 QBoxLayout::qt_metacast
+32 QBoxLayout::qt_metacall
+40 QBoxLayout::~QBoxLayout
+48 QBoxLayout::~QBoxLayout
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QLayout::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QBoxLayout::invalidate
+120 QLayout::geometry
+128 QBoxLayout::addItem
+136 QBoxLayout::expandingDirections
+144 QBoxLayout::minimumSize
+152 QBoxLayout::maximumSize
+160 QBoxLayout::setGeometry
+168 QBoxLayout::itemAt
+176 QBoxLayout::takeAt
+184 QLayout::indexOf
+192 QBoxLayout::count
+200 QLayout::isEmpty
+208 QLayout::layout
+216 QBoxLayout::sizeHint
+224 QBoxLayout::hasHeightForWidth
+232 QBoxLayout::heightForWidth
+240 QBoxLayout::minimumHeightForWidth
+248 (int (*)(...))-0x00000000000000010
+256 (int (*)(...))(& _ZTI10QBoxLayout)
+264 QBoxLayout::_ZThn16_N10QBoxLayoutD1Ev
+272 QBoxLayout::_ZThn16_N10QBoxLayoutD0Ev
+280 QBoxLayout::_ZThn16_NK10QBoxLayout8sizeHintEv
+288 QBoxLayout::_ZThn16_NK10QBoxLayout11minimumSizeEv
+296 QBoxLayout::_ZThn16_NK10QBoxLayout11maximumSizeEv
+304 QBoxLayout::_ZThn16_NK10QBoxLayout19expandingDirectionsEv
+312 QBoxLayout::_ZThn16_N10QBoxLayout11setGeometryERK5QRect
+320 QLayout::_ZThn16_NK7QLayout8geometryEv
+328 QLayout::_ZThn16_NK7QLayout7isEmptyEv
+336 QBoxLayout::_ZThn16_NK10QBoxLayout17hasHeightForWidthEv
+344 QBoxLayout::_ZThn16_NK10QBoxLayout14heightForWidthEi
+352 QBoxLayout::_ZThn16_NK10QBoxLayout21minimumHeightForWidthEi
+360 QBoxLayout::_ZThn16_N10QBoxLayout10invalidateEv
+368 QLayoutItem::widget
+376 QLayout::_ZThn16_N7QLayout6layoutEv
+384 QLayoutItem::spacerItem
+
+Class QBoxLayout
+ size=32 align=8
+ base size=28 base align=8
+QBoxLayout (0x7f9551cf4540) 0
+ vptr=((& QBoxLayout::_ZTV10QBoxLayout) + 16u)
+ QLayout (0x7f9551cf3400) 0
+ primary-for QBoxLayout (0x7f9551cf4540)
+ QObject (0x7f9551cf45b0) 0
+ primary-for QLayout (0x7f9551cf3400)
+ QLayoutItem (0x7f9551cf4620) 16
+ vptr=((& QBoxLayout::_ZTV10QBoxLayout) + 264u)
+
+Vtable for QHBoxLayout
+QHBoxLayout::_ZTV11QHBoxLayout: 49u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QHBoxLayout)
+16 QHBoxLayout::metaObject
+24 QHBoxLayout::qt_metacast
+32 QHBoxLayout::qt_metacall
+40 QHBoxLayout::~QHBoxLayout
+48 QHBoxLayout::~QHBoxLayout
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QLayout::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QBoxLayout::invalidate
+120 QLayout::geometry
+128 QBoxLayout::addItem
+136 QBoxLayout::expandingDirections
+144 QBoxLayout::minimumSize
+152 QBoxLayout::maximumSize
+160 QBoxLayout::setGeometry
+168 QBoxLayout::itemAt
+176 QBoxLayout::takeAt
+184 QLayout::indexOf
+192 QBoxLayout::count
+200 QLayout::isEmpty
+208 QLayout::layout
+216 QBoxLayout::sizeHint
+224 QBoxLayout::hasHeightForWidth
+232 QBoxLayout::heightForWidth
+240 QBoxLayout::minimumHeightForWidth
+248 (int (*)(...))-0x00000000000000010
+256 (int (*)(...))(& _ZTI11QHBoxLayout)
+264 QHBoxLayout::_ZThn16_N11QHBoxLayoutD1Ev
+272 QHBoxLayout::_ZThn16_N11QHBoxLayoutD0Ev
+280 QBoxLayout::_ZThn16_NK10QBoxLayout8sizeHintEv
+288 QBoxLayout::_ZThn16_NK10QBoxLayout11minimumSizeEv
+296 QBoxLayout::_ZThn16_NK10QBoxLayout11maximumSizeEv
+304 QBoxLayout::_ZThn16_NK10QBoxLayout19expandingDirectionsEv
+312 QBoxLayout::_ZThn16_N10QBoxLayout11setGeometryERK5QRect
+320 QLayout::_ZThn16_NK7QLayout8geometryEv
+328 QLayout::_ZThn16_NK7QLayout7isEmptyEv
+336 QBoxLayout::_ZThn16_NK10QBoxLayout17hasHeightForWidthEv
+344 QBoxLayout::_ZThn16_NK10QBoxLayout14heightForWidthEi
+352 QBoxLayout::_ZThn16_NK10QBoxLayout21minimumHeightForWidthEi
+360 QBoxLayout::_ZThn16_N10QBoxLayout10invalidateEv
+368 QLayoutItem::widget
+376 QLayout::_ZThn16_N7QLayout6layoutEv
+384 QLayoutItem::spacerItem
+
+Class QHBoxLayout
+ size=32 align=8
+ base size=28 base align=8
+QHBoxLayout (0x7f9551d19f50) 0
+ vptr=((& QHBoxLayout::_ZTV11QHBoxLayout) + 16u)
+ QBoxLayout (0x7f9551d23000) 0
+ primary-for QHBoxLayout (0x7f9551d19f50)
+ QLayout (0x7f9551d22280) 0
+ primary-for QBoxLayout (0x7f9551d23000)
+ QObject (0x7f9551d23070) 0
+ primary-for QLayout (0x7f9551d22280)
+ QLayoutItem (0x7f9551d230e0) 16
+ vptr=((& QHBoxLayout::_ZTV11QHBoxLayout) + 264u)
+
+Vtable for QVBoxLayout
+QVBoxLayout::_ZTV11QVBoxLayout: 49u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QVBoxLayout)
+16 QVBoxLayout::metaObject
+24 QVBoxLayout::qt_metacast
+32 QVBoxLayout::qt_metacall
+40 QVBoxLayout::~QVBoxLayout
+48 QVBoxLayout::~QVBoxLayout
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QLayout::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QBoxLayout::invalidate
+120 QLayout::geometry
+128 QBoxLayout::addItem
+136 QBoxLayout::expandingDirections
+144 QBoxLayout::minimumSize
+152 QBoxLayout::maximumSize
+160 QBoxLayout::setGeometry
+168 QBoxLayout::itemAt
+176 QBoxLayout::takeAt
+184 QLayout::indexOf
+192 QBoxLayout::count
+200 QLayout::isEmpty
+208 QLayout::layout
+216 QBoxLayout::sizeHint
+224 QBoxLayout::hasHeightForWidth
+232 QBoxLayout::heightForWidth
+240 QBoxLayout::minimumHeightForWidth
+248 (int (*)(...))-0x00000000000000010
+256 (int (*)(...))(& _ZTI11QVBoxLayout)
+264 QVBoxLayout::_ZThn16_N11QVBoxLayoutD1Ev
+272 QVBoxLayout::_ZThn16_N11QVBoxLayoutD0Ev
+280 QBoxLayout::_ZThn16_NK10QBoxLayout8sizeHintEv
+288 QBoxLayout::_ZThn16_NK10QBoxLayout11minimumSizeEv
+296 QBoxLayout::_ZThn16_NK10QBoxLayout11maximumSizeEv
+304 QBoxLayout::_ZThn16_NK10QBoxLayout19expandingDirectionsEv
+312 QBoxLayout::_ZThn16_N10QBoxLayout11setGeometryERK5QRect
+320 QLayout::_ZThn16_NK7QLayout8geometryEv
+328 QLayout::_ZThn16_NK7QLayout7isEmptyEv
+336 QBoxLayout::_ZThn16_NK10QBoxLayout17hasHeightForWidthEv
+344 QBoxLayout::_ZThn16_NK10QBoxLayout14heightForWidthEi
+352 QBoxLayout::_ZThn16_NK10QBoxLayout21minimumHeightForWidthEi
+360 QBoxLayout::_ZThn16_N10QBoxLayout10invalidateEv
+368 QLayoutItem::widget
+376 QLayout::_ZThn16_N7QLayout6layoutEv
+384 QLayoutItem::spacerItem
+
+Class QVBoxLayout
+ size=32 align=8
+ base size=28 base align=8
+QVBoxLayout (0x7f9551d365b0) 0
+ vptr=((& QVBoxLayout::_ZTV11QVBoxLayout) + 16u)
+ QBoxLayout (0x7f9551d36620) 0
+ primary-for QVBoxLayout (0x7f9551d365b0)
+ QLayout (0x7f9551d22980) 0
+ primary-for QBoxLayout (0x7f9551d36620)
+ QObject (0x7f9551d36690) 0
+ primary-for QLayout (0x7f9551d22980)
+ QLayoutItem (0x7f9551d36700) 16
+ vptr=((& QVBoxLayout::_ZTV11QVBoxLayout) + 264u)
+
+Vtable for QClipboard
+QClipboard::_ZTV10QClipboard: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QClipboard)
+16 QClipboard::metaObject
+24 QClipboard::qt_metacast
+32 QClipboard::qt_metacall
+40 QClipboard::~QClipboard
+48 QClipboard::~QClipboard
+56 QClipboard::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QClipboard::connectNotify
+104 QObject::disconnectNotify
+
+Class QClipboard
+ size=16 align=8
+ base size=16 base align=8
+QClipboard (0x7f9551d46c40) 0
+ vptr=((& QClipboard::_ZTV10QClipboard) + 16u)
+ QObject (0x7f9551d46cb0) 0
+ primary-for QClipboard (0x7f9551d46c40)
+
+Vtable for QDesktopWidget
+QDesktopWidget::_ZTV14QDesktopWidget: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QDesktopWidget)
+16 QDesktopWidget::metaObject
+24 QDesktopWidget::qt_metacast
+32 QDesktopWidget::qt_metacall
+40 QDesktopWidget::~QDesktopWidget
+48 QDesktopWidget::~QDesktopWidget
+56 QWidget::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QDesktopWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI14QDesktopWidget)
+464 QDesktopWidget::_ZThn16_N14QDesktopWidgetD1Ev
+472 QDesktopWidget::_ZThn16_N14QDesktopWidgetD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDesktopWidget
+ size=40 align=8
+ base size=40 base align=8
+QDesktopWidget (0x7f9551d6f930) 0
+ vptr=((& QDesktopWidget::_ZTV14QDesktopWidget) + 16u)
+ QWidget (0x7f9551d51c00) 0
+ primary-for QDesktopWidget (0x7f9551d6f930)
+ QObject (0x7f9551d6f9a0) 0
+ primary-for QWidget (0x7f9551d51c00)
+ QPaintDevice (0x7f9551d6fa10) 16
+ vptr=((& QDesktopWidget::_ZTV14QDesktopWidget) + 464u)
+
+Vtable for QFormLayout
+QFormLayout::_ZTV11QFormLayout: 48u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFormLayout)
+16 QFormLayout::metaObject
+24 QFormLayout::qt_metacast
+32 QFormLayout::qt_metacall
+40 QFormLayout::~QFormLayout
+48 QFormLayout::~QFormLayout
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QLayout::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QFormLayout::invalidate
+120 QLayout::geometry
+128 QFormLayout::addItem
+136 QFormLayout::expandingDirections
+144 QFormLayout::minimumSize
+152 QLayout::maximumSize
+160 QFormLayout::setGeometry
+168 QFormLayout::itemAt
+176 QFormLayout::takeAt
+184 QLayout::indexOf
+192 QFormLayout::count
+200 QLayout::isEmpty
+208 QLayout::layout
+216 QFormLayout::sizeHint
+224 QFormLayout::hasHeightForWidth
+232 QFormLayout::heightForWidth
+240 (int (*)(...))-0x00000000000000010
+248 (int (*)(...))(& _ZTI11QFormLayout)
+256 QFormLayout::_ZThn16_N11QFormLayoutD1Ev
+264 QFormLayout::_ZThn16_N11QFormLayoutD0Ev
+272 QFormLayout::_ZThn16_NK11QFormLayout8sizeHintEv
+280 QFormLayout::_ZThn16_NK11QFormLayout11minimumSizeEv
+288 QLayout::_ZThn16_NK7QLayout11maximumSizeEv
+296 QFormLayout::_ZThn16_NK11QFormLayout19expandingDirectionsEv
+304 QFormLayout::_ZThn16_N11QFormLayout11setGeometryERK5QRect
+312 QLayout::_ZThn16_NK7QLayout8geometryEv
+320 QLayout::_ZThn16_NK7QLayout7isEmptyEv
+328 QFormLayout::_ZThn16_NK11QFormLayout17hasHeightForWidthEv
+336 QFormLayout::_ZThn16_NK11QFormLayout14heightForWidthEi
+344 QLayoutItem::minimumHeightForWidth
+352 QFormLayout::_ZThn16_N11QFormLayout10invalidateEv
+360 QLayoutItem::widget
+368 QLayout::_ZThn16_N7QLayout6layoutEv
+376 QLayoutItem::spacerItem
+
+Class QFormLayout
+ size=32 align=8
+ base size=28 base align=8
+QFormLayout (0x7f9551d8f9a0) 0
+ vptr=((& QFormLayout::_ZTV11QFormLayout) + 16u)
+ QLayout (0x7f9551d89b80) 0
+ primary-for QFormLayout (0x7f9551d8f9a0)
+ QObject (0x7f9551d8fa10) 0
+ primary-for QLayout (0x7f9551d89b80)
+ QLayoutItem (0x7f9551d8fa80) 16
+ vptr=((& QFormLayout::_ZTV11QFormLayout) + 256u)
+
+Vtable for QGesture
+QGesture::_ZTV8QGesture: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QGesture)
+16 QGesture::metaObject
+24 QGesture::qt_metacast
+32 QGesture::qt_metacall
+40 QGesture::~QGesture
+48 QGesture::~QGesture
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QGesture
+ size=16 align=8
+ base size=16 base align=8
+QGesture (0x7f9551dc5150) 0
+ vptr=((& QGesture::_ZTV8QGesture) + 16u)
+ QObject (0x7f9551dc51c0) 0
+ primary-for QGesture (0x7f9551dc5150)
+
+Vtable for QPanGesture
+QPanGesture::_ZTV11QPanGesture: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QPanGesture)
+16 QPanGesture::metaObject
+24 QPanGesture::qt_metacast
+32 QPanGesture::qt_metacall
+40 QPanGesture::~QPanGesture
+48 QPanGesture::~QPanGesture
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QPanGesture
+ size=16 align=8
+ base size=16 base align=8
+QPanGesture (0x7f9551ddc850) 0
+ vptr=((& QPanGesture::_ZTV11QPanGesture) + 16u)
+ QGesture (0x7f9551ddc8c0) 0
+ primary-for QPanGesture (0x7f9551ddc850)
+ QObject (0x7f9551ddc930) 0
+ primary-for QGesture (0x7f9551ddc8c0)
+
+Vtable for QPinchGesture
+QPinchGesture::_ZTV13QPinchGesture: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QPinchGesture)
+16 QPinchGesture::metaObject
+24 QPinchGesture::qt_metacast
+32 QPinchGesture::qt_metacall
+40 QPinchGesture::~QPinchGesture
+48 QPinchGesture::~QPinchGesture
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QPinchGesture
+ size=16 align=8
+ base size=16 base align=8
+QPinchGesture (0x7f9551beecb0) 0
+ vptr=((& QPinchGesture::_ZTV13QPinchGesture) + 16u)
+ QGesture (0x7f9551beed20) 0
+ primary-for QPinchGesture (0x7f9551beecb0)
+ QObject (0x7f9551beed90) 0
+ primary-for QGesture (0x7f9551beed20)
+
+Vtable for QSwipeGesture
+QSwipeGesture::_ZTV13QSwipeGesture: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSwipeGesture)
+16 QSwipeGesture::metaObject
+24 QSwipeGesture::qt_metacast
+32 QSwipeGesture::qt_metacall
+40 QSwipeGesture::~QSwipeGesture
+48 QSwipeGesture::~QSwipeGesture
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QSwipeGesture
+ size=16 align=8
+ base size=16 base align=8
+QSwipeGesture (0x7f9551c0ed20) 0
+ vptr=((& QSwipeGesture::_ZTV13QSwipeGesture) + 16u)
+ QGesture (0x7f9551c0ed90) 0
+ primary-for QSwipeGesture (0x7f9551c0ed20)
+ QObject (0x7f9551c0ee00) 0
+ primary-for QGesture (0x7f9551c0ed90)
+
+Vtable for QTapGesture
+QTapGesture::_ZTV11QTapGesture: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTapGesture)
+16 QTapGesture::metaObject
+24 QTapGesture::qt_metacast
+32 QTapGesture::qt_metacall
+40 QTapGesture::~QTapGesture
+48 QTapGesture::~QTapGesture
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QTapGesture
+ size=16 align=8
+ base size=16 base align=8
+QTapGesture (0x7f9551c2e460) 0
+ vptr=((& QTapGesture::_ZTV11QTapGesture) + 16u)
+ QGesture (0x7f9551c2e4d0) 0
+ primary-for QTapGesture (0x7f9551c2e460)
+ QObject (0x7f9551c2e540) 0
+ primary-for QGesture (0x7f9551c2e4d0)
+
+Vtable for QTapAndHoldGesture
+QTapAndHoldGesture::_ZTV18QTapAndHoldGesture: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QTapAndHoldGesture)
+16 QTapAndHoldGesture::metaObject
+24 QTapAndHoldGesture::qt_metacast
+32 QTapAndHoldGesture::qt_metacall
+40 QTapAndHoldGesture::~QTapAndHoldGesture
+48 QTapAndHoldGesture::~QTapAndHoldGesture
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QTapAndHoldGesture
+ size=16 align=8
+ base size=16 base align=8
+QTapAndHoldGesture (0x7f9551c3e8c0) 0
+ vptr=((& QTapAndHoldGesture::_ZTV18QTapAndHoldGesture) + 16u)
+ QGesture (0x7f9551c3e930) 0
+ primary-for QTapAndHoldGesture (0x7f9551c3e8c0)
+ QObject (0x7f9551c3e9a0) 0
+ primary-for QGesture (0x7f9551c3e930)
+
+Vtable for QGestureRecognizer
+QGestureRecognizer::_ZTV18QGestureRecognizer: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QGestureRecognizer)
+16 QGestureRecognizer::~QGestureRecognizer
+24 QGestureRecognizer::~QGestureRecognizer
+32 QGestureRecognizer::create
+40 __cxa_pure_virtual
+48 QGestureRecognizer::reset
+
+Class QGestureRecognizer
+ size=8 align=8
+ base size=8 base align=8
+QGestureRecognizer (0x7f9551c5b310) 0 nearly-empty
+ vptr=((& QGestureRecognizer::_ZTV18QGestureRecognizer) + 16u)
+
+Vtable for QSessionManager
+QSessionManager::_ZTV15QSessionManager: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSessionManager)
+16 QSessionManager::metaObject
+24 QSessionManager::qt_metacast
+32 QSessionManager::qt_metacall
+40 QSessionManager::~QSessionManager
+48 QSessionManager::~QSessionManager
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QSessionManager
+ size=16 align=8
+ base size=16 base align=8
+QSessionManager (0x7f9551c8f620) 0
+ vptr=((& QSessionManager::_ZTV15QSessionManager) + 16u)
+ QObject (0x7f9551c8f690) 0
+ primary-for QSessionManager (0x7f9551c8f620)
+
+Vtable for QShortcut
+QShortcut::_ZTV9QShortcut: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QShortcut)
+16 QShortcut::metaObject
+24 QShortcut::qt_metacast
+32 QShortcut::qt_metacall
+40 QShortcut::~QShortcut
+48 QShortcut::~QShortcut
+56 QShortcut::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QShortcut
+ size=16 align=8
+ base size=16 base align=8
+QShortcut (0x7f9551cc0b60) 0
+ vptr=((& QShortcut::_ZTV9QShortcut) + 16u)
+ QObject (0x7f9551cc0bd0) 0
+ primary-for QShortcut (0x7f9551cc0b60)
+
+Vtable for QSound
+QSound::_ZTV6QSound: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QSound)
+16 QSound::metaObject
+24 QSound::qt_metacast
+32 QSound::qt_metacall
+40 QSound::~QSound
+48 QSound::~QSound
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QSound
+ size=16 align=8
+ base size=16 base align=8
+QSound (0x7f9551cdc310) 0
+ vptr=((& QSound::_ZTV6QSound) + 16u)
+ QObject (0x7f9551cdc380) 0
+ primary-for QSound (0x7f9551cdc310)
+
+Vtable for QStackedLayout
+QStackedLayout::_ZTV14QStackedLayout: 46u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QStackedLayout)
+16 QStackedLayout::metaObject
+24 QStackedLayout::qt_metacast
+32 QStackedLayout::qt_metacall
+40 QStackedLayout::~QStackedLayout
+48 QStackedLayout::~QStackedLayout
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QLayout::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QLayout::invalidate
+120 QLayout::geometry
+128 QStackedLayout::addItem
+136 QLayout::expandingDirections
+144 QStackedLayout::minimumSize
+152 QLayout::maximumSize
+160 QStackedLayout::setGeometry
+168 QStackedLayout::itemAt
+176 QStackedLayout::takeAt
+184 QLayout::indexOf
+192 QStackedLayout::count
+200 QLayout::isEmpty
+208 QLayout::layout
+216 QStackedLayout::sizeHint
+224 (int (*)(...))-0x00000000000000010
+232 (int (*)(...))(& _ZTI14QStackedLayout)
+240 QStackedLayout::_ZThn16_N14QStackedLayoutD1Ev
+248 QStackedLayout::_ZThn16_N14QStackedLayoutD0Ev
+256 QStackedLayout::_ZThn16_NK14QStackedLayout8sizeHintEv
+264 QStackedLayout::_ZThn16_NK14QStackedLayout11minimumSizeEv
+272 QLayout::_ZThn16_NK7QLayout11maximumSizeEv
+280 QLayout::_ZThn16_NK7QLayout19expandingDirectionsEv
+288 QStackedLayout::_ZThn16_N14QStackedLayout11setGeometryERK5QRect
+296 QLayout::_ZThn16_NK7QLayout8geometryEv
+304 QLayout::_ZThn16_NK7QLayout7isEmptyEv
+312 QLayoutItem::hasHeightForWidth
+320 QLayoutItem::heightForWidth
+328 QLayoutItem::minimumHeightForWidth
+336 QLayout::_ZThn16_N7QLayout10invalidateEv
+344 QLayoutItem::widget
+352 QLayout::_ZThn16_N7QLayout6layoutEv
+360 QLayoutItem::spacerItem
+
+Class QStackedLayout
+ size=32 align=8
+ base size=28 base align=8
+QStackedLayout (0x7f9551af0a80) 0
+ vptr=((& QStackedLayout::_ZTV14QStackedLayout) + 16u)
+ QLayout (0x7f9551ae9880) 0
+ primary-for QStackedLayout (0x7f9551af0a80)
+ QObject (0x7f9551af0af0) 0
+ primary-for QLayout (0x7f9551ae9880)
+ QLayoutItem (0x7f9551af0b60) 16
+ vptr=((& QStackedLayout::_ZTV14QStackedLayout) + 240u)
+
+Class QToolTip
+ size=1 align=1
+ base size=0 base align=1
+QToolTip (0x7f9551b11a80) 0 empty
+
+Class QWhatsThis
+ size=1 align=1
+ base size=0 base align=1
+QWhatsThis (0x7f9551b1f070) 0 empty
+
+Vtable for QWidgetAction
+QWidgetAction::_ZTV13QWidgetAction: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QWidgetAction)
+16 QWidgetAction::metaObject
+24 QWidgetAction::qt_metacast
+32 QWidgetAction::qt_metacall
+40 QWidgetAction::~QWidgetAction
+48 QWidgetAction::~QWidgetAction
+56 QWidgetAction::event
+64 QWidgetAction::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidgetAction::createWidget
+120 QWidgetAction::deleteWidget
+
+Class QWidgetAction
+ size=16 align=8
+ base size=16 base align=8
+QWidgetAction (0x7f9551b1f150) 0
+ vptr=((& QWidgetAction::_ZTV13QWidgetAction) + 16u)
+ QAction (0x7f9551b1f1c0) 0
+ primary-for QWidgetAction (0x7f9551b1f150)
+ QObject (0x7f9551b1f230) 0
+ primary-for QAction (0x7f9551b1f1c0)
+
+Class QVector3D
+ size=12 align=4
+ base size=12 base align=4
+QVector3D (0x7f95519ed1c0) 0
+
+Class QVector4D
+ size=16 align=4
+ base size=16 base align=4
+QVector4D (0x7f9551a50cb0) 0
+
+Class QQuaternion
+ size=32 align=8
+ base size=32 base align=8
+QQuaternion (0x7f9551ac6d20) 0
+
+Class QMatrix4x4
+ size=136 align=8
+ base size=132 base align=8
+QMatrix4x4 (0x7f9551944b60) 0
+
+Class QVector2D
+ size=8 align=4
+ base size=8 base align=4
+QVector2D (0x7f9551791d90) 0
+
+Vtable for QCommonStyle
+QCommonStyle::_ZTV12QCommonStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QCommonStyle)
+16 QCommonStyle::metaObject
+24 QCommonStyle::qt_metacast
+32 QCommonStyle::qt_metacall
+40 QCommonStyle::~QCommonStyle
+48 QCommonStyle::~QCommonStyle
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QCommonStyle::polish
+120 QCommonStyle::unpolish
+128 QCommonStyle::polish
+136 QCommonStyle::unpolish
+144 QCommonStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QStyle::standardPalette
+192 QCommonStyle::drawPrimitive
+200 QCommonStyle::drawControl
+208 QCommonStyle::subElementRect
+216 QCommonStyle::drawComplexControl
+224 QCommonStyle::hitTestComplexControl
+232 QCommonStyle::subControlRect
+240 QCommonStyle::pixelMetric
+248 QCommonStyle::sizeFromContents
+256 QCommonStyle::styleHint
+264 QCommonStyle::standardPixmap
+272 QCommonStyle::generatedIconPixmap
+
+Class QCommonStyle
+ size=16 align=8
+ base size=16 base align=8
+QCommonStyle (0x7f95515f32a0) 0
+ vptr=((& QCommonStyle::_ZTV12QCommonStyle) + 16u)
+ QStyle (0x7f95515f3310) 0
+ primary-for QCommonStyle (0x7f95515f32a0)
+ QObject (0x7f95515f3380) 0
+ primary-for QStyle (0x7f95515f3310)
+
+Vtable for QMotifStyle
+QMotifStyle::_ZTV11QMotifStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMotifStyle)
+16 QMotifStyle::metaObject
+24 QMotifStyle::qt_metacast
+32 QMotifStyle::qt_metacall
+40 QMotifStyle::~QMotifStyle
+48 QMotifStyle::~QMotifStyle
+56 QMotifStyle::event
+64 QMotifStyle::eventFilter
+72 QMotifStyle::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QMotifStyle::polish
+120 QMotifStyle::unpolish
+128 QMotifStyle::polish
+136 QMotifStyle::unpolish
+144 QMotifStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QMotifStyle::standardPalette
+192 QMotifStyle::drawPrimitive
+200 QMotifStyle::drawControl
+208 QMotifStyle::subElementRect
+216 QMotifStyle::drawComplexControl
+224 QCommonStyle::hitTestComplexControl
+232 QMotifStyle::subControlRect
+240 QMotifStyle::pixelMetric
+248 QMotifStyle::sizeFromContents
+256 QMotifStyle::styleHint
+264 QMotifStyle::standardPixmap
+272 QCommonStyle::generatedIconPixmap
+
+Class QMotifStyle
+ size=32 align=8
+ base size=25 base align=8
+QMotifStyle (0x7f95516172a0) 0
+ vptr=((& QMotifStyle::_ZTV11QMotifStyle) + 16u)
+ QCommonStyle (0x7f9551617310) 0
+ primary-for QMotifStyle (0x7f95516172a0)
+ QStyle (0x7f9551617380) 0
+ primary-for QCommonStyle (0x7f9551617310)
+ QObject (0x7f95516173f0) 0
+ primary-for QStyle (0x7f9551617380)
+
+Vtable for QCDEStyle
+QCDEStyle::_ZTV9QCDEStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QCDEStyle)
+16 QCDEStyle::metaObject
+24 QCDEStyle::qt_metacast
+32 QCDEStyle::qt_metacall
+40 QCDEStyle::~QCDEStyle
+48 QCDEStyle::~QCDEStyle
+56 QMotifStyle::event
+64 QMotifStyle::eventFilter
+72 QMotifStyle::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QMotifStyle::polish
+120 QMotifStyle::unpolish
+128 QMotifStyle::polish
+136 QMotifStyle::unpolish
+144 QMotifStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QCDEStyle::standardPalette
+192 QCDEStyle::drawPrimitive
+200 QCDEStyle::drawControl
+208 QMotifStyle::subElementRect
+216 QMotifStyle::drawComplexControl
+224 QCommonStyle::hitTestComplexControl
+232 QMotifStyle::subControlRect
+240 QCDEStyle::pixelMetric
+248 QMotifStyle::sizeFromContents
+256 QMotifStyle::styleHint
+264 QMotifStyle::standardPixmap
+272 QCommonStyle::generatedIconPixmap
+
+Class QCDEStyle
+ size=32 align=8
+ base size=25 base align=8
+QCDEStyle (0x7f95516401c0) 0
+ vptr=((& QCDEStyle::_ZTV9QCDEStyle) + 16u)
+ QMotifStyle (0x7f9551640230) 0
+ primary-for QCDEStyle (0x7f95516401c0)
+ QCommonStyle (0x7f95516402a0) 0
+ primary-for QMotifStyle (0x7f9551640230)
+ QStyle (0x7f9551640310) 0
+ primary-for QCommonStyle (0x7f95516402a0)
+ QObject (0x7f9551640380) 0
+ primary-for QStyle (0x7f9551640310)
+
+Vtable for QWindowsStyle
+QWindowsStyle::_ZTV13QWindowsStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QWindowsStyle)
+16 QWindowsStyle::metaObject
+24 QWindowsStyle::qt_metacast
+32 QWindowsStyle::qt_metacall
+40 QWindowsStyle::~QWindowsStyle
+48 QWindowsStyle::~QWindowsStyle
+56 QObject::event
+64 QWindowsStyle::eventFilter
+72 QWindowsStyle::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWindowsStyle::polish
+120 QWindowsStyle::unpolish
+128 QWindowsStyle::polish
+136 QWindowsStyle::unpolish
+144 QWindowsStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QStyle::standardPalette
+192 QWindowsStyle::drawPrimitive
+200 QWindowsStyle::drawControl
+208 QWindowsStyle::subElementRect
+216 QWindowsStyle::drawComplexControl
+224 QCommonStyle::hitTestComplexControl
+232 QCommonStyle::subControlRect
+240 QWindowsStyle::pixelMetric
+248 QWindowsStyle::sizeFromContents
+256 QWindowsStyle::styleHint
+264 QWindowsStyle::standardPixmap
+272 QCommonStyle::generatedIconPixmap
+
+Class QWindowsStyle
+ size=24 align=8
+ base size=24 base align=8
+QWindowsStyle (0x7f9551652310) 0
+ vptr=((& QWindowsStyle::_ZTV13QWindowsStyle) + 16u)
+ QCommonStyle (0x7f9551652380) 0
+ primary-for QWindowsStyle (0x7f9551652310)
+ QStyle (0x7f95516523f0) 0
+ primary-for QCommonStyle (0x7f9551652380)
+ QObject (0x7f9551652460) 0
+ primary-for QStyle (0x7f95516523f0)
+
+Vtable for QCleanlooksStyle
+QCleanlooksStyle::_ZTV16QCleanlooksStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QCleanlooksStyle)
+16 QCleanlooksStyle::metaObject
+24 QCleanlooksStyle::qt_metacast
+32 QCleanlooksStyle::qt_metacall
+40 QCleanlooksStyle::~QCleanlooksStyle
+48 QCleanlooksStyle::~QCleanlooksStyle
+56 QObject::event
+64 QWindowsStyle::eventFilter
+72 QWindowsStyle::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QCleanlooksStyle::polish
+120 QCleanlooksStyle::unpolish
+128 QCleanlooksStyle::polish
+136 QCleanlooksStyle::unpolish
+144 QCleanlooksStyle::polish
+152 QStyle::itemTextRect
+160 QCleanlooksStyle::itemPixmapRect
+168 QCleanlooksStyle::drawItemText
+176 QCleanlooksStyle::drawItemPixmap
+184 QCleanlooksStyle::standardPalette
+192 QCleanlooksStyle::drawPrimitive
+200 QCleanlooksStyle::drawControl
+208 QCleanlooksStyle::subElementRect
+216 QCleanlooksStyle::drawComplexControl
+224 QCleanlooksStyle::hitTestComplexControl
+232 QCleanlooksStyle::subControlRect
+240 QCleanlooksStyle::pixelMetric
+248 QCleanlooksStyle::sizeFromContents
+256 QCleanlooksStyle::styleHint
+264 QCleanlooksStyle::standardPixmap
+272 QCleanlooksStyle::generatedIconPixmap
+
+Class QCleanlooksStyle
+ size=24 align=8
+ base size=24 base align=8
+QCleanlooksStyle (0x7f95516750e0) 0
+ vptr=((& QCleanlooksStyle::_ZTV16QCleanlooksStyle) + 16u)
+ QWindowsStyle (0x7f9551675150) 0
+ primary-for QCleanlooksStyle (0x7f95516750e0)
+ QCommonStyle (0x7f95516751c0) 0
+ primary-for QWindowsStyle (0x7f9551675150)
+ QStyle (0x7f9551675230) 0
+ primary-for QCommonStyle (0x7f95516751c0)
+ QObject (0x7f95516752a0) 0
+ primary-for QStyle (0x7f9551675230)
+
+Vtable for QPlastiqueStyle
+QPlastiqueStyle::_ZTV15QPlastiqueStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QPlastiqueStyle)
+16 QPlastiqueStyle::metaObject
+24 QPlastiqueStyle::qt_metacast
+32 QPlastiqueStyle::qt_metacall
+40 QPlastiqueStyle::~QPlastiqueStyle
+48 QPlastiqueStyle::~QPlastiqueStyle
+56 QObject::event
+64 QPlastiqueStyle::eventFilter
+72 QPlastiqueStyle::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QPlastiqueStyle::polish
+120 QPlastiqueStyle::unpolish
+128 QPlastiqueStyle::polish
+136 QPlastiqueStyle::unpolish
+144 QPlastiqueStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QPlastiqueStyle::standardPalette
+192 QPlastiqueStyle::drawPrimitive
+200 QPlastiqueStyle::drawControl
+208 QPlastiqueStyle::subElementRect
+216 QPlastiqueStyle::drawComplexControl
+224 QPlastiqueStyle::hitTestComplexControl
+232 QPlastiqueStyle::subControlRect
+240 QPlastiqueStyle::pixelMetric
+248 QPlastiqueStyle::sizeFromContents
+256 QPlastiqueStyle::styleHint
+264 QPlastiqueStyle::standardPixmap
+272 QCommonStyle::generatedIconPixmap
+
+Class QPlastiqueStyle
+ size=32 align=8
+ base size=32 base align=8
+QPlastiqueStyle (0x7f955168fe70) 0
+ vptr=((& QPlastiqueStyle::_ZTV15QPlastiqueStyle) + 16u)
+ QWindowsStyle (0x7f955168fee0) 0
+ primary-for QPlastiqueStyle (0x7f955168fe70)
+ QCommonStyle (0x7f955168ff50) 0
+ primary-for QWindowsStyle (0x7f955168fee0)
+ QStyle (0x7f9551695000) 0
+ primary-for QCommonStyle (0x7f955168ff50)
+ QObject (0x7f9551695070) 0
+ primary-for QStyle (0x7f9551695000)
+
+Vtable for QProxyStyle
+QProxyStyle::_ZTV11QProxyStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QProxyStyle)
+16 QProxyStyle::metaObject
+24 QProxyStyle::qt_metacast
+32 QProxyStyle::qt_metacall
+40 QProxyStyle::~QProxyStyle
+48 QProxyStyle::~QProxyStyle
+56 QProxyStyle::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QProxyStyle::polish
+120 QProxyStyle::unpolish
+128 QProxyStyle::polish
+136 QProxyStyle::unpolish
+144 QProxyStyle::polish
+152 QProxyStyle::itemTextRect
+160 QProxyStyle::itemPixmapRect
+168 QProxyStyle::drawItemText
+176 QProxyStyle::drawItemPixmap
+184 QProxyStyle::standardPalette
+192 QProxyStyle::drawPrimitive
+200 QProxyStyle::drawControl
+208 QProxyStyle::subElementRect
+216 QProxyStyle::drawComplexControl
+224 QProxyStyle::hitTestComplexControl
+232 QProxyStyle::subControlRect
+240 QProxyStyle::pixelMetric
+248 QProxyStyle::sizeFromContents
+256 QProxyStyle::styleHint
+264 QProxyStyle::standardPixmap
+272 QProxyStyle::generatedIconPixmap
+
+Class QProxyStyle
+ size=16 align=8
+ base size=16 base align=8
+QProxyStyle (0x7f95516b9000) 0
+ vptr=((& QProxyStyle::_ZTV11QProxyStyle) + 16u)
+ QCommonStyle (0x7f95516b9070) 0
+ primary-for QProxyStyle (0x7f95516b9000)
+ QStyle (0x7f95516b90e0) 0
+ primary-for QCommonStyle (0x7f95516b9070)
+ QObject (0x7f95516b9150) 0
+ primary-for QStyle (0x7f95516b90e0)
+
+Vtable for QS60Style
+QS60Style::_ZTV9QS60Style: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QS60Style)
+16 QS60Style::metaObject
+24 QS60Style::qt_metacast
+32 QS60Style::qt_metacall
+40 QS60Style::~QS60Style
+48 QS60Style::~QS60Style
+56 QS60Style::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QS60Style::polish
+120 QS60Style::unpolish
+128 QS60Style::polish
+136 QS60Style::unpolish
+144 QCommonStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QStyle::standardPalette
+192 QS60Style::drawPrimitive
+200 QS60Style::drawControl
+208 QS60Style::subElementRect
+216 QS60Style::drawComplexControl
+224 QCommonStyle::hitTestComplexControl
+232 QS60Style::subControlRect
+240 QS60Style::pixelMetric
+248 QS60Style::sizeFromContents
+256 QS60Style::styleHint
+264 QCommonStyle::standardPixmap
+272 QCommonStyle::generatedIconPixmap
+
+Class QS60Style
+ size=16 align=8
+ base size=16 base align=8
+QS60Style (0x7f95516d74d0) 0
+ vptr=((& QS60Style::_ZTV9QS60Style) + 16u)
+ QCommonStyle (0x7f95516d7540) 0
+ primary-for QS60Style (0x7f95516d74d0)
+ QStyle (0x7f95516d75b0) 0
+ primary-for QCommonStyle (0x7f95516d7540)
+ QObject (0x7f95516d7620) 0
+ primary-for QStyle (0x7f95516d75b0)
+
+Class QStyleFactory
+ size=1 align=1
+ base size=0 base align=1
+QStyleFactory (0x7f95514fe310) 0 empty
+
+Vtable for QStyleFactoryInterface
+QStyleFactoryInterface::_ZTV22QStyleFactoryInterface: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QStyleFactoryInterface)
+16 QStyleFactoryInterface::~QStyleFactoryInterface
+24 QStyleFactoryInterface::~QStyleFactoryInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QStyleFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QStyleFactoryInterface (0x7f95514fe380) 0 nearly-empty
+ vptr=((& QStyleFactoryInterface::_ZTV22QStyleFactoryInterface) + 16u)
+ QFactoryInterface (0x7f95514fe3f0) 0 nearly-empty
+ primary-for QStyleFactoryInterface (0x7f95514fe380)
+
+Vtable for QStylePlugin
+QStylePlugin::_ZTV12QStylePlugin: 22u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QStylePlugin)
+16 QStylePlugin::metaObject
+24 QStylePlugin::qt_metacast
+32 QStylePlugin::qt_metacall
+40 QStylePlugin::~QStylePlugin
+48 QStylePlugin::~QStylePlugin
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 (int (*)(...))-0x00000000000000010
+136 (int (*)(...))(& _ZTI12QStylePlugin)
+144 QStylePlugin::_ZThn16_N12QStylePluginD1Ev
+152 QStylePlugin::_ZThn16_N12QStylePluginD0Ev
+160 __cxa_pure_virtual
+168 __cxa_pure_virtual
+
+Class QStylePlugin
+ size=24 align=8
+ base size=24 base align=8
+QStylePlugin (0x7f9551509000) 0
+ vptr=((& QStylePlugin::_ZTV12QStylePlugin) + 16u)
+ QObject (0x7f95514fee00) 0
+ primary-for QStylePlugin (0x7f9551509000)
+ QStyleFactoryInterface (0x7f95514fee70) 16 nearly-empty
+ vptr=((& QStylePlugin::_ZTV12QStylePlugin) + 144u)
+ QFactoryInterface (0x7f95514feee0) 16 nearly-empty
+ primary-for QStyleFactoryInterface (0x7f95514fee70)
+
+Vtable for QWindowsCEStyle
+QWindowsCEStyle::_ZTV15QWindowsCEStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QWindowsCEStyle)
+16 QWindowsCEStyle::metaObject
+24 QWindowsCEStyle::qt_metacast
+32 QWindowsCEStyle::qt_metacall
+40 QWindowsCEStyle::~QWindowsCEStyle
+48 QWindowsCEStyle::~QWindowsCEStyle
+56 QObject::event
+64 QWindowsStyle::eventFilter
+72 QWindowsStyle::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWindowsCEStyle::polish
+120 QWindowsStyle::unpolish
+128 QWindowsCEStyle::polish
+136 QWindowsStyle::unpolish
+144 QWindowsCEStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QWindowsCEStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QWindowsCEStyle::standardPalette
+192 QWindowsCEStyle::drawPrimitive
+200 QWindowsCEStyle::drawControl
+208 QWindowsCEStyle::subElementRect
+216 QWindowsCEStyle::drawComplexControl
+224 QWindowsCEStyle::hitTestComplexControl
+232 QWindowsCEStyle::subControlRect
+240 QWindowsCEStyle::pixelMetric
+248 QWindowsCEStyle::sizeFromContents
+256 QWindowsCEStyle::styleHint
+264 QWindowsCEStyle::standardPixmap
+272 QCommonStyle::generatedIconPixmap
+
+Class QWindowsCEStyle
+ size=24 align=8
+ base size=24 base align=8
+QWindowsCEStyle (0x7f955150cd90) 0
+ vptr=((& QWindowsCEStyle::_ZTV15QWindowsCEStyle) + 16u)
+ QWindowsStyle (0x7f955150ce00) 0
+ primary-for QWindowsCEStyle (0x7f955150cd90)
+ QCommonStyle (0x7f955150ce70) 0
+ primary-for QWindowsStyle (0x7f955150ce00)
+ QStyle (0x7f955150cee0) 0
+ primary-for QCommonStyle (0x7f955150ce70)
+ QObject (0x7f955150cf50) 0
+ primary-for QStyle (0x7f955150cee0)
+
+Vtable for QWindowsMobileStyle
+QWindowsMobileStyle::_ZTV19QWindowsMobileStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QWindowsMobileStyle)
+16 QWindowsMobileStyle::metaObject
+24 QWindowsMobileStyle::qt_metacast
+32 QWindowsMobileStyle::qt_metacall
+40 QWindowsMobileStyle::~QWindowsMobileStyle
+48 QWindowsMobileStyle::~QWindowsMobileStyle
+56 QObject::event
+64 QWindowsStyle::eventFilter
+72 QWindowsStyle::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWindowsMobileStyle::polish
+120 QWindowsMobileStyle::unpolish
+128 QWindowsMobileStyle::polish
+136 QWindowsMobileStyle::unpolish
+144 QWindowsMobileStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QWindowsMobileStyle::standardPalette
+192 QWindowsMobileStyle::drawPrimitive
+200 QWindowsMobileStyle::drawControl
+208 QWindowsMobileStyle::subElementRect
+216 QWindowsMobileStyle::drawComplexControl
+224 QCommonStyle::hitTestComplexControl
+232 QWindowsMobileStyle::subControlRect
+240 QWindowsMobileStyle::pixelMetric
+248 QWindowsMobileStyle::sizeFromContents
+256 QWindowsMobileStyle::styleHint
+264 QWindowsMobileStyle::standardPixmap
+272 QWindowsMobileStyle::generatedIconPixmap
+
+Class QWindowsMobileStyle
+ size=24 align=8
+ base size=24 base align=8
+QWindowsMobileStyle (0x7f95515313f0) 0
+ vptr=((& QWindowsMobileStyle::_ZTV19QWindowsMobileStyle) + 16u)
+ QWindowsStyle (0x7f9551531460) 0
+ primary-for QWindowsMobileStyle (0x7f95515313f0)
+ QCommonStyle (0x7f95515314d0) 0
+ primary-for QWindowsStyle (0x7f9551531460)
+ QStyle (0x7f9551531540) 0
+ primary-for QCommonStyle (0x7f95515314d0)
+ QObject (0x7f95515315b0) 0
+ primary-for QStyle (0x7f9551531540)
+
+Vtable for QWindowsXPStyle
+QWindowsXPStyle::_ZTV15QWindowsXPStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QWindowsXPStyle)
+16 QWindowsXPStyle::metaObject
+24 QWindowsXPStyle::qt_metacast
+32 QWindowsXPStyle::qt_metacall
+40 QWindowsXPStyle::~QWindowsXPStyle
+48 QWindowsXPStyle::~QWindowsXPStyle
+56 QObject::event
+64 QWindowsStyle::eventFilter
+72 QWindowsStyle::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWindowsXPStyle::polish
+120 QWindowsXPStyle::unpolish
+128 QWindowsXPStyle::polish
+136 QWindowsXPStyle::unpolish
+144 QWindowsXPStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QWindowsXPStyle::standardPalette
+192 QWindowsXPStyle::drawPrimitive
+200 QWindowsXPStyle::drawControl
+208 QWindowsXPStyle::subElementRect
+216 QWindowsXPStyle::drawComplexControl
+224 QCommonStyle::hitTestComplexControl
+232 QWindowsXPStyle::subControlRect
+240 QWindowsXPStyle::pixelMetric
+248 QWindowsXPStyle::sizeFromContents
+256 QWindowsXPStyle::styleHint
+264 QWindowsXPStyle::standardPixmap
+272 QCommonStyle::generatedIconPixmap
+
+Class QWindowsXPStyle
+ size=32 align=8
+ base size=32 base align=8
+QWindowsXPStyle (0x7f955154cd90) 0
+ vptr=((& QWindowsXPStyle::_ZTV15QWindowsXPStyle) + 16u)
+ QWindowsStyle (0x7f955154ce00) 0
+ primary-for QWindowsXPStyle (0x7f955154cd90)
+ QCommonStyle (0x7f955154ce70) 0
+ primary-for QWindowsStyle (0x7f955154ce00)
+ QStyle (0x7f955154cee0) 0
+ primary-for QCommonStyle (0x7f955154ce70)
+ QObject (0x7f955154cf50) 0
+ primary-for QStyle (0x7f955154cee0)
+
+Vtable for QWindowsVistaStyle
+QWindowsVistaStyle::_ZTV18QWindowsVistaStyle: 35u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QWindowsVistaStyle)
+16 QWindowsVistaStyle::metaObject
+24 QWindowsVistaStyle::qt_metacast
+32 QWindowsVistaStyle::qt_metacall
+40 QWindowsVistaStyle::~QWindowsVistaStyle
+48 QWindowsVistaStyle::~QWindowsVistaStyle
+56 QWindowsVistaStyle::event
+64 QWindowsStyle::eventFilter
+72 QWindowsStyle::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWindowsVistaStyle::polish
+120 QWindowsVistaStyle::unpolish
+128 QWindowsVistaStyle::polish
+136 QWindowsVistaStyle::unpolish
+144 QWindowsVistaStyle::polish
+152 QStyle::itemTextRect
+160 QStyle::itemPixmapRect
+168 QStyle::drawItemText
+176 QStyle::drawItemPixmap
+184 QWindowsVistaStyle::standardPalette
+192 QWindowsVistaStyle::drawPrimitive
+200 QWindowsVistaStyle::drawControl
+208 QWindowsVistaStyle::subElementRect
+216 QWindowsVistaStyle::drawComplexControl
+224 QWindowsVistaStyle::hitTestComplexControl
+232 QWindowsVistaStyle::subControlRect
+240 QWindowsVistaStyle::pixelMetric
+248 QWindowsVistaStyle::sizeFromContents
+256 QWindowsVistaStyle::styleHint
+264 QWindowsVistaStyle::standardPixmap
+272 QCommonStyle::generatedIconPixmap
+
+Class QWindowsVistaStyle
+ size=32 align=8
+ base size=32 base align=8
+QWindowsVistaStyle (0x7f955156cc40) 0
+ vptr=((& QWindowsVistaStyle::_ZTV18QWindowsVistaStyle) + 16u)
+ QWindowsXPStyle (0x7f955156ccb0) 0
+ primary-for QWindowsVistaStyle (0x7f955156cc40)
+ QWindowsStyle (0x7f955156cd20) 0
+ primary-for QWindowsXPStyle (0x7f955156ccb0)
+ QCommonStyle (0x7f955156cd90) 0
+ primary-for QWindowsStyle (0x7f955156cd20)
+ QStyle (0x7f955156ce00) 0
+ primary-for QCommonStyle (0x7f955156cd90)
+ QObject (0x7f955156ce70) 0
+ primary-for QStyle (0x7f955156ce00)
+
+Vtable for QInputContext
+QInputContext::_ZTV13QInputContext: 26u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QInputContext)
+16 QInputContext::metaObject
+24 QInputContext::qt_metacast
+32 QInputContext::qt_metacall
+40 QInputContext::~QInputContext
+48 QInputContext::~QInputContext
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 QInputContext::update
+144 QInputContext::mouseHandler
+152 QInputContext::font
+160 __cxa_pure_virtual
+168 QInputContext::setFocusWidget
+176 QInputContext::widgetDestroyed
+184 QInputContext::actions
+192 QInputContext::x11FilterEvent
+200 QInputContext::filterEvent
+
+Class QInputContext
+ size=16 align=8
+ base size=16 base align=8
+QInputContext (0x7f955158cc40) 0
+ vptr=((& QInputContext::_ZTV13QInputContext) + 16u)
+ QObject (0x7f955158ccb0) 0
+ primary-for QInputContext (0x7f955158cc40)
+
+Class QInputContextFactory
+ size=1 align=1
+ base size=0 base align=1
+QInputContextFactory (0x7f95515ac5b0) 0 empty
+
+Vtable for QInputContextFactoryInterface
+QInputContextFactoryInterface::_ZTV29QInputContextFactoryInterface: 9u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QInputContextFactoryInterface)
+16 QInputContextFactoryInterface::~QInputContextFactoryInterface
+24 QInputContextFactoryInterface::~QInputContextFactoryInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+
+Class QInputContextFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QInputContextFactoryInterface (0x7f95515ac620) 0 nearly-empty
+ vptr=((& QInputContextFactoryInterface::_ZTV29QInputContextFactoryInterface) + 16u)
+ QFactoryInterface (0x7f95515ac690) 0 nearly-empty
+ primary-for QInputContextFactoryInterface (0x7f95515ac620)
+
+Vtable for QInputContextPlugin
+QInputContextPlugin::_ZTV19QInputContextPlugin: 28u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QInputContextPlugin)
+16 QInputContextPlugin::metaObject
+24 QInputContextPlugin::qt_metacast
+32 QInputContextPlugin::qt_metacall
+40 QInputContextPlugin::~QInputContextPlugin
+48 QInputContextPlugin::~QInputContextPlugin
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 (int (*)(...))-0x00000000000000010
+160 (int (*)(...))(& _ZTI19QInputContextPlugin)
+168 QInputContextPlugin::_ZThn16_N19QInputContextPluginD1Ev
+176 QInputContextPlugin::_ZThn16_N19QInputContextPluginD0Ev
+184 __cxa_pure_virtual
+192 __cxa_pure_virtual
+200 __cxa_pure_virtual
+208 __cxa_pure_virtual
+216 __cxa_pure_virtual
+
+Class QInputContextPlugin
+ size=24 align=8
+ base size=24 base align=8
+QInputContextPlugin (0x7f95515a8e80) 0
+ vptr=((& QInputContextPlugin::_ZTV19QInputContextPlugin) + 16u)
+ QObject (0x7f95515ba000) 0
+ primary-for QInputContextPlugin (0x7f95515a8e80)
+ QInputContextFactoryInterface (0x7f95515ba070) 16 nearly-empty
+ vptr=((& QInputContextPlugin::_ZTV19QInputContextPlugin) + 168u)
+ QFactoryInterface (0x7f95515ba0e0) 16 nearly-empty
+ primary-for QInputContextFactoryInterface (0x7f95515ba070)
+
+Vtable for QGraphicsItem
+QGraphicsItem::_ZTV13QGraphicsItem: 39u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QGraphicsItem)
+16 QGraphicsItem::~QGraphicsItem
+24 QGraphicsItem::~QGraphicsItem
+32 QGraphicsItem::advance
+40 __cxa_pure_virtual
+48 QGraphicsItem::shape
+56 QGraphicsItem::contains
+64 QGraphicsItem::collidesWithItem
+72 QGraphicsItem::collidesWithPath
+80 QGraphicsItem::isObscuredBy
+88 QGraphicsItem::opaqueArea
+96 __cxa_pure_virtual
+104 QGraphicsItem::type
+112 QGraphicsItem::sceneEventFilter
+120 QGraphicsItem::sceneEvent
+128 QGraphicsItem::contextMenuEvent
+136 QGraphicsItem::dragEnterEvent
+144 QGraphicsItem::dragLeaveEvent
+152 QGraphicsItem::dragMoveEvent
+160 QGraphicsItem::dropEvent
+168 QGraphicsItem::focusInEvent
+176 QGraphicsItem::focusOutEvent
+184 QGraphicsItem::hoverEnterEvent
+192 QGraphicsItem::hoverMoveEvent
+200 QGraphicsItem::hoverLeaveEvent
+208 QGraphicsItem::keyPressEvent
+216 QGraphicsItem::keyReleaseEvent
+224 QGraphicsItem::mousePressEvent
+232 QGraphicsItem::mouseMoveEvent
+240 QGraphicsItem::mouseReleaseEvent
+248 QGraphicsItem::mouseDoubleClickEvent
+256 QGraphicsItem::wheelEvent
+264 QGraphicsItem::inputMethodEvent
+272 QGraphicsItem::inputMethodQuery
+280 QGraphicsItem::itemChange
+288 QGraphicsItem::supportsExtension
+296 QGraphicsItem::setExtension
+304 QGraphicsItem::extension
+
+Class QGraphicsItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsItem (0x7f95515ba380) 0
+ vptr=((& QGraphicsItem::_ZTV13QGraphicsItem) + 16u)
+
+Vtable for QGraphicsObject
+QGraphicsObject::_ZTV15QGraphicsObject: 53u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsObject)
+16 QGraphicsObject::metaObject
+24 QGraphicsObject::qt_metacast
+32 QGraphicsObject::qt_metacall
+40 QGraphicsObject::~QGraphicsObject
+48 QGraphicsObject::~QGraphicsObject
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 (int (*)(...))-0x00000000000000010
+120 (int (*)(...))(& _ZTI15QGraphicsObject)
+128 QGraphicsObject::_ZThn16_N15QGraphicsObjectD1Ev
+136 QGraphicsObject::_ZThn16_N15QGraphicsObjectD0Ev
+144 QGraphicsItem::advance
+152 __cxa_pure_virtual
+160 QGraphicsItem::shape
+168 QGraphicsItem::contains
+176 QGraphicsItem::collidesWithItem
+184 QGraphicsItem::collidesWithPath
+192 QGraphicsItem::isObscuredBy
+200 QGraphicsItem::opaqueArea
+208 __cxa_pure_virtual
+216 QGraphicsItem::type
+224 QGraphicsItem::sceneEventFilter
+232 QGraphicsItem::sceneEvent
+240 QGraphicsItem::contextMenuEvent
+248 QGraphicsItem::dragEnterEvent
+256 QGraphicsItem::dragLeaveEvent
+264 QGraphicsItem::dragMoveEvent
+272 QGraphicsItem::dropEvent
+280 QGraphicsItem::focusInEvent
+288 QGraphicsItem::focusOutEvent
+296 QGraphicsItem::hoverEnterEvent
+304 QGraphicsItem::hoverMoveEvent
+312 QGraphicsItem::hoverLeaveEvent
+320 QGraphicsItem::keyPressEvent
+328 QGraphicsItem::keyReleaseEvent
+336 QGraphicsItem::mousePressEvent
+344 QGraphicsItem::mouseMoveEvent
+352 QGraphicsItem::mouseReleaseEvent
+360 QGraphicsItem::mouseDoubleClickEvent
+368 QGraphicsItem::wheelEvent
+376 QGraphicsItem::inputMethodEvent
+384 QGraphicsItem::inputMethodQuery
+392 QGraphicsItem::itemChange
+400 QGraphicsItem::supportsExtension
+408 QGraphicsItem::setExtension
+416 QGraphicsItem::extension
+
+Class QGraphicsObject
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsObject (0x7f95514b5c80) 0
+ vptr=((& QGraphicsObject::_ZTV15QGraphicsObject) + 16u)
+ QObject (0x7f95514bcf50) 0
+ primary-for QGraphicsObject (0x7f95514b5c80)
+ QGraphicsItem (0x7f95514c5000) 16
+ vptr=((& QGraphicsObject::_ZTV15QGraphicsObject) + 128u)
+
+Vtable for QAbstractGraphicsShapeItem
+QAbstractGraphicsShapeItem::_ZTV26QAbstractGraphicsShapeItem: 39u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAbstractGraphicsShapeItem)
+16 QAbstractGraphicsShapeItem::~QAbstractGraphicsShapeItem
+24 QAbstractGraphicsShapeItem::~QAbstractGraphicsShapeItem
+32 QGraphicsItem::advance
+40 __cxa_pure_virtual
+48 QGraphicsItem::shape
+56 QGraphicsItem::contains
+64 QGraphicsItem::collidesWithItem
+72 QGraphicsItem::collidesWithPath
+80 QAbstractGraphicsShapeItem::isObscuredBy
+88 QAbstractGraphicsShapeItem::opaqueArea
+96 __cxa_pure_virtual
+104 QGraphicsItem::type
+112 QGraphicsItem::sceneEventFilter
+120 QGraphicsItem::sceneEvent
+128 QGraphicsItem::contextMenuEvent
+136 QGraphicsItem::dragEnterEvent
+144 QGraphicsItem::dragLeaveEvent
+152 QGraphicsItem::dragMoveEvent
+160 QGraphicsItem::dropEvent
+168 QGraphicsItem::focusInEvent
+176 QGraphicsItem::focusOutEvent
+184 QGraphicsItem::hoverEnterEvent
+192 QGraphicsItem::hoverMoveEvent
+200 QGraphicsItem::hoverLeaveEvent
+208 QGraphicsItem::keyPressEvent
+216 QGraphicsItem::keyReleaseEvent
+224 QGraphicsItem::mousePressEvent
+232 QGraphicsItem::mouseMoveEvent
+240 QGraphicsItem::mouseReleaseEvent
+248 QGraphicsItem::mouseDoubleClickEvent
+256 QGraphicsItem::wheelEvent
+264 QGraphicsItem::inputMethodEvent
+272 QGraphicsItem::inputMethodQuery
+280 QGraphicsItem::itemChange
+288 QGraphicsItem::supportsExtension
+296 QGraphicsItem::setExtension
+304 QGraphicsItem::extension
+
+Class QAbstractGraphicsShapeItem
+ size=16 align=8
+ base size=16 base align=8
+QAbstractGraphicsShapeItem (0x7f95514dd070) 0
+ vptr=((& QAbstractGraphicsShapeItem::_ZTV26QAbstractGraphicsShapeItem) + 16u)
+ QGraphicsItem (0x7f95514dd0e0) 0
+ primary-for QAbstractGraphicsShapeItem (0x7f95514dd070)
+
+Vtable for QGraphicsPathItem
+QGraphicsPathItem::_ZTV17QGraphicsPathItem: 39u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsPathItem)
+16 QGraphicsPathItem::~QGraphicsPathItem
+24 QGraphicsPathItem::~QGraphicsPathItem
+32 QGraphicsItem::advance
+40 QGraphicsPathItem::boundingRect
+48 QGraphicsPathItem::shape
+56 QGraphicsPathItem::contains
+64 QGraphicsItem::collidesWithItem
+72 QGraphicsItem::collidesWithPath
+80 QGraphicsPathItem::isObscuredBy
+88 QGraphicsPathItem::opaqueArea
+96 QGraphicsPathItem::paint
+104 QGraphicsPathItem::type
+112 QGraphicsItem::sceneEventFilter
+120 QGraphicsItem::sceneEvent
+128 QGraphicsItem::contextMenuEvent
+136 QGraphicsItem::dragEnterEvent
+144 QGraphicsItem::dragLeaveEvent
+152 QGraphicsItem::dragMoveEvent
+160 QGraphicsItem::dropEvent
+168 QGraphicsItem::focusInEvent
+176 QGraphicsItem::focusOutEvent
+184 QGraphicsItem::hoverEnterEvent
+192 QGraphicsItem::hoverMoveEvent
+200 QGraphicsItem::hoverLeaveEvent
+208 QGraphicsItem::keyPressEvent
+216 QGraphicsItem::keyReleaseEvent
+224 QGraphicsItem::mousePressEvent
+232 QGraphicsItem::mouseMoveEvent
+240 QGraphicsItem::mouseReleaseEvent
+248 QGraphicsItem::mouseDoubleClickEvent
+256 QGraphicsItem::wheelEvent
+264 QGraphicsItem::inputMethodEvent
+272 QGraphicsItem::inputMethodQuery
+280 QGraphicsItem::itemChange
+288 QGraphicsPathItem::supportsExtension
+296 QGraphicsPathItem::setExtension
+304 QGraphicsPathItem::extension
+
+Class QGraphicsPathItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsPathItem (0x7f95514ddee0) 0
+ vptr=((& QGraphicsPathItem::_ZTV17QGraphicsPathItem) + 16u)
+ QAbstractGraphicsShapeItem (0x7f95514ddf50) 0
+ primary-for QGraphicsPathItem (0x7f95514ddee0)
+ QGraphicsItem (0x7f95514dd930) 0
+ primary-for QAbstractGraphicsShapeItem (0x7f95514ddf50)
+
+Vtable for QGraphicsRectItem
+QGraphicsRectItem::_ZTV17QGraphicsRectItem: 39u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsRectItem)
+16 QGraphicsRectItem::~QGraphicsRectItem
+24 QGraphicsRectItem::~QGraphicsRectItem
+32 QGraphicsItem::advance
+40 QGraphicsRectItem::boundingRect
+48 QGraphicsRectItem::shape
+56 QGraphicsRectItem::contains
+64 QGraphicsItem::collidesWithItem
+72 QGraphicsItem::collidesWithPath
+80 QGraphicsRectItem::isObscuredBy
+88 QGraphicsRectItem::opaqueArea
+96 QGraphicsRectItem::paint
+104 QGraphicsRectItem::type
+112 QGraphicsItem::sceneEventFilter
+120 QGraphicsItem::sceneEvent
+128 QGraphicsItem::contextMenuEvent
+136 QGraphicsItem::dragEnterEvent
+144 QGraphicsItem::dragLeaveEvent
+152 QGraphicsItem::dragMoveEvent
+160 QGraphicsItem::dropEvent
+168 QGraphicsItem::focusInEvent
+176 QGraphicsItem::focusOutEvent
+184 QGraphicsItem::hoverEnterEvent
+192 QGraphicsItem::hoverMoveEvent
+200 QGraphicsItem::hoverLeaveEvent
+208 QGraphicsItem::keyPressEvent
+216 QGraphicsItem::keyReleaseEvent
+224 QGraphicsItem::mousePressEvent
+232 QGraphicsItem::mouseMoveEvent
+240 QGraphicsItem::mouseReleaseEvent
+248 QGraphicsItem::mouseDoubleClickEvent
+256 QGraphicsItem::wheelEvent
+264 QGraphicsItem::inputMethodEvent
+272 QGraphicsItem::inputMethodQuery
+280 QGraphicsItem::itemChange
+288 QGraphicsRectItem::supportsExtension
+296 QGraphicsRectItem::setExtension
+304 QGraphicsRectItem::extension
+
+Class QGraphicsRectItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsRectItem (0x7f95512e3e70) 0
+ vptr=((& QGraphicsRectItem::_ZTV17QGraphicsRectItem) + 16u)
+ QAbstractGraphicsShapeItem (0x7f95512e3ee0) 0
+ primary-for QGraphicsRectItem (0x7f95512e3e70)
+ QGraphicsItem (0x7f95512e3f50) 0
+ primary-for QAbstractGraphicsShapeItem (0x7f95512e3ee0)
+
+Vtable for QGraphicsEllipseItem
+QGraphicsEllipseItem::_ZTV20QGraphicsEllipseItem: 39u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QGraphicsEllipseItem)
+16 QGraphicsEllipseItem::~QGraphicsEllipseItem
+24 QGraphicsEllipseItem::~QGraphicsEllipseItem
+32 QGraphicsItem::advance
+40 QGraphicsEllipseItem::boundingRect
+48 QGraphicsEllipseItem::shape
+56 QGraphicsEllipseItem::contains
+64 QGraphicsItem::collidesWithItem
+72 QGraphicsItem::collidesWithPath
+80 QGraphicsEllipseItem::isObscuredBy
+88 QGraphicsEllipseItem::opaqueArea
+96 QGraphicsEllipseItem::paint
+104 QGraphicsEllipseItem::type
+112 QGraphicsItem::sceneEventFilter
+120 QGraphicsItem::sceneEvent
+128 QGraphicsItem::contextMenuEvent
+136 QGraphicsItem::dragEnterEvent
+144 QGraphicsItem::dragLeaveEvent
+152 QGraphicsItem::dragMoveEvent
+160 QGraphicsItem::dropEvent
+168 QGraphicsItem::focusInEvent
+176 QGraphicsItem::focusOutEvent
+184 QGraphicsItem::hoverEnterEvent
+192 QGraphicsItem::hoverMoveEvent
+200 QGraphicsItem::hoverLeaveEvent
+208 QGraphicsItem::keyPressEvent
+216 QGraphicsItem::keyReleaseEvent
+224 QGraphicsItem::mousePressEvent
+232 QGraphicsItem::mouseMoveEvent
+240 QGraphicsItem::mouseReleaseEvent
+248 QGraphicsItem::mouseDoubleClickEvent
+256 QGraphicsItem::wheelEvent
+264 QGraphicsItem::inputMethodEvent
+272 QGraphicsItem::inputMethodQuery
+280 QGraphicsItem::itemChange
+288 QGraphicsEllipseItem::supportsExtension
+296 QGraphicsEllipseItem::setExtension
+304 QGraphicsEllipseItem::extension
+
+Class QGraphicsEllipseItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsEllipseItem (0x7f9551308150) 0
+ vptr=((& QGraphicsEllipseItem::_ZTV20QGraphicsEllipseItem) + 16u)
+ QAbstractGraphicsShapeItem (0x7f95513081c0) 0
+ primary-for QGraphicsEllipseItem (0x7f9551308150)
+ QGraphicsItem (0x7f9551308230) 0
+ primary-for QAbstractGraphicsShapeItem (0x7f95513081c0)
+
+Vtable for QGraphicsPolygonItem
+QGraphicsPolygonItem::_ZTV20QGraphicsPolygonItem: 39u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QGraphicsPolygonItem)
+16 QGraphicsPolygonItem::~QGraphicsPolygonItem
+24 QGraphicsPolygonItem::~QGraphicsPolygonItem
+32 QGraphicsItem::advance
+40 QGraphicsPolygonItem::boundingRect
+48 QGraphicsPolygonItem::shape
+56 QGraphicsPolygonItem::contains
+64 QGraphicsItem::collidesWithItem
+72 QGraphicsItem::collidesWithPath
+80 QGraphicsPolygonItem::isObscuredBy
+88 QGraphicsPolygonItem::opaqueArea
+96 QGraphicsPolygonItem::paint
+104 QGraphicsPolygonItem::type
+112 QGraphicsItem::sceneEventFilter
+120 QGraphicsItem::sceneEvent
+128 QGraphicsItem::contextMenuEvent
+136 QGraphicsItem::dragEnterEvent
+144 QGraphicsItem::dragLeaveEvent
+152 QGraphicsItem::dragMoveEvent
+160 QGraphicsItem::dropEvent
+168 QGraphicsItem::focusInEvent
+176 QGraphicsItem::focusOutEvent
+184 QGraphicsItem::hoverEnterEvent
+192 QGraphicsItem::hoverMoveEvent
+200 QGraphicsItem::hoverLeaveEvent
+208 QGraphicsItem::keyPressEvent
+216 QGraphicsItem::keyReleaseEvent
+224 QGraphicsItem::mousePressEvent
+232 QGraphicsItem::mouseMoveEvent
+240 QGraphicsItem::mouseReleaseEvent
+248 QGraphicsItem::mouseDoubleClickEvent
+256 QGraphicsItem::wheelEvent
+264 QGraphicsItem::inputMethodEvent
+272 QGraphicsItem::inputMethodQuery
+280 QGraphicsItem::itemChange
+288 QGraphicsPolygonItem::supportsExtension
+296 QGraphicsPolygonItem::setExtension
+304 QGraphicsPolygonItem::extension
+
+Class QGraphicsPolygonItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsPolygonItem (0x7f955131b460) 0
+ vptr=((& QGraphicsPolygonItem::_ZTV20QGraphicsPolygonItem) + 16u)
+ QAbstractGraphicsShapeItem (0x7f955131b4d0) 0
+ primary-for QGraphicsPolygonItem (0x7f955131b460)
+ QGraphicsItem (0x7f955131b540) 0
+ primary-for QAbstractGraphicsShapeItem (0x7f955131b4d0)
+
+Vtable for QGraphicsLineItem
+QGraphicsLineItem::_ZTV17QGraphicsLineItem: 39u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsLineItem)
+16 QGraphicsLineItem::~QGraphicsLineItem
+24 QGraphicsLineItem::~QGraphicsLineItem
+32 QGraphicsItem::advance
+40 QGraphicsLineItem::boundingRect
+48 QGraphicsLineItem::shape
+56 QGraphicsLineItem::contains
+64 QGraphicsItem::collidesWithItem
+72 QGraphicsItem::collidesWithPath
+80 QGraphicsLineItem::isObscuredBy
+88 QGraphicsLineItem::opaqueArea
+96 QGraphicsLineItem::paint
+104 QGraphicsLineItem::type
+112 QGraphicsItem::sceneEventFilter
+120 QGraphicsItem::sceneEvent
+128 QGraphicsItem::contextMenuEvent
+136 QGraphicsItem::dragEnterEvent
+144 QGraphicsItem::dragLeaveEvent
+152 QGraphicsItem::dragMoveEvent
+160 QGraphicsItem::dropEvent
+168 QGraphicsItem::focusInEvent
+176 QGraphicsItem::focusOutEvent
+184 QGraphicsItem::hoverEnterEvent
+192 QGraphicsItem::hoverMoveEvent
+200 QGraphicsItem::hoverLeaveEvent
+208 QGraphicsItem::keyPressEvent
+216 QGraphicsItem::keyReleaseEvent
+224 QGraphicsItem::mousePressEvent
+232 QGraphicsItem::mouseMoveEvent
+240 QGraphicsItem::mouseReleaseEvent
+248 QGraphicsItem::mouseDoubleClickEvent
+256 QGraphicsItem::wheelEvent
+264 QGraphicsItem::inputMethodEvent
+272 QGraphicsItem::inputMethodQuery
+280 QGraphicsItem::itemChange
+288 QGraphicsLineItem::supportsExtension
+296 QGraphicsLineItem::setExtension
+304 QGraphicsLineItem::extension
+
+Class QGraphicsLineItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLineItem (0x7f955132e3f0) 0
+ vptr=((& QGraphicsLineItem::_ZTV17QGraphicsLineItem) + 16u)
+ QGraphicsItem (0x7f955132e460) 0
+ primary-for QGraphicsLineItem (0x7f955132e3f0)
+
+Vtable for QGraphicsPixmapItem
+QGraphicsPixmapItem::_ZTV19QGraphicsPixmapItem: 39u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsPixmapItem)
+16 QGraphicsPixmapItem::~QGraphicsPixmapItem
+24 QGraphicsPixmapItem::~QGraphicsPixmapItem
+32 QGraphicsItem::advance
+40 QGraphicsPixmapItem::boundingRect
+48 QGraphicsPixmapItem::shape
+56 QGraphicsPixmapItem::contains
+64 QGraphicsItem::collidesWithItem
+72 QGraphicsItem::collidesWithPath
+80 QGraphicsPixmapItem::isObscuredBy
+88 QGraphicsPixmapItem::opaqueArea
+96 QGraphicsPixmapItem::paint
+104 QGraphicsPixmapItem::type
+112 QGraphicsItem::sceneEventFilter
+120 QGraphicsItem::sceneEvent
+128 QGraphicsItem::contextMenuEvent
+136 QGraphicsItem::dragEnterEvent
+144 QGraphicsItem::dragLeaveEvent
+152 QGraphicsItem::dragMoveEvent
+160 QGraphicsItem::dropEvent
+168 QGraphicsItem::focusInEvent
+176 QGraphicsItem::focusOutEvent
+184 QGraphicsItem::hoverEnterEvent
+192 QGraphicsItem::hoverMoveEvent
+200 QGraphicsItem::hoverLeaveEvent
+208 QGraphicsItem::keyPressEvent
+216 QGraphicsItem::keyReleaseEvent
+224 QGraphicsItem::mousePressEvent
+232 QGraphicsItem::mouseMoveEvent
+240 QGraphicsItem::mouseReleaseEvent
+248 QGraphicsItem::mouseDoubleClickEvent
+256 QGraphicsItem::wheelEvent
+264 QGraphicsItem::inputMethodEvent
+272 QGraphicsItem::inputMethodQuery
+280 QGraphicsItem::itemChange
+288 QGraphicsPixmapItem::supportsExtension
+296 QGraphicsPixmapItem::setExtension
+304 QGraphicsPixmapItem::extension
+
+Class QGraphicsPixmapItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsPixmapItem (0x7f9551341690) 0
+ vptr=((& QGraphicsPixmapItem::_ZTV19QGraphicsPixmapItem) + 16u)
+ QGraphicsItem (0x7f9551341700) 0
+ primary-for QGraphicsPixmapItem (0x7f9551341690)
+
+Vtable for QGraphicsTextItem
+QGraphicsTextItem::_ZTV17QGraphicsTextItem: 82u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsTextItem)
+16 QGraphicsTextItem::metaObject
+24 QGraphicsTextItem::qt_metacast
+32 QGraphicsTextItem::qt_metacall
+40 QGraphicsTextItem::~QGraphicsTextItem
+48 QGraphicsTextItem::~QGraphicsTextItem
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsTextItem::boundingRect
+120 QGraphicsTextItem::shape
+128 QGraphicsTextItem::contains
+136 QGraphicsTextItem::paint
+144 QGraphicsTextItem::isObscuredBy
+152 QGraphicsTextItem::opaqueArea
+160 QGraphicsTextItem::type
+168 QGraphicsTextItem::sceneEvent
+176 QGraphicsTextItem::mousePressEvent
+184 QGraphicsTextItem::mouseMoveEvent
+192 QGraphicsTextItem::mouseReleaseEvent
+200 QGraphicsTextItem::mouseDoubleClickEvent
+208 QGraphicsTextItem::contextMenuEvent
+216 QGraphicsTextItem::keyPressEvent
+224 QGraphicsTextItem::keyReleaseEvent
+232 QGraphicsTextItem::focusInEvent
+240 QGraphicsTextItem::focusOutEvent
+248 QGraphicsTextItem::dragEnterEvent
+256 QGraphicsTextItem::dragLeaveEvent
+264 QGraphicsTextItem::dragMoveEvent
+272 QGraphicsTextItem::dropEvent
+280 QGraphicsTextItem::inputMethodEvent
+288 QGraphicsTextItem::hoverEnterEvent
+296 QGraphicsTextItem::hoverMoveEvent
+304 QGraphicsTextItem::hoverLeaveEvent
+312 QGraphicsTextItem::inputMethodQuery
+320 QGraphicsTextItem::supportsExtension
+328 QGraphicsTextItem::setExtension
+336 QGraphicsTextItem::extension
+344 (int (*)(...))-0x00000000000000010
+352 (int (*)(...))(& _ZTI17QGraphicsTextItem)
+360 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItemD1Ev
+368 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItemD0Ev
+376 QGraphicsItem::advance
+384 QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem12boundingRectEv
+392 QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem5shapeEv
+400 QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem8containsERK7QPointF
+408 QGraphicsItem::collidesWithItem
+416 QGraphicsItem::collidesWithPath
+424 QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem12isObscuredByEPK13QGraphicsItem
+432 QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem10opaqueAreaEv
+440 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+448 QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem4typeEv
+456 QGraphicsItem::sceneEventFilter
+464 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem10sceneEventEP6QEvent
+472 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem16contextMenuEventEP30QGraphicsSceneContextMenuEvent
+480 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14dragEnterEventEP27QGraphicsSceneDragDropEvent
+488 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14dragLeaveEventEP27QGraphicsSceneDragDropEvent
+496 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem13dragMoveEventEP27QGraphicsSceneDragDropEvent
+504 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem9dropEventEP27QGraphicsSceneDragDropEvent
+512 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem12focusInEventEP11QFocusEvent
+520 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem13focusOutEventEP11QFocusEvent
+528 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15hoverEnterEventEP24QGraphicsSceneHoverEvent
+536 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14hoverMoveEventEP24QGraphicsSceneHoverEvent
+544 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+552 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem13keyPressEventEP9QKeyEvent
+560 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15keyReleaseEventEP9QKeyEvent
+568 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem15mousePressEventEP24QGraphicsSceneMouseEvent
+576 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem14mouseMoveEventEP24QGraphicsSceneMouseEvent
+584 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem17mouseReleaseEventEP24QGraphicsSceneMouseEvent
+592 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent
+600 QGraphicsItem::wheelEvent
+608 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem16inputMethodEventEP17QInputMethodEvent
+616 QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem16inputMethodQueryEN2Qt16InputMethodQueryE
+624 QGraphicsItem::itemChange
+632 QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem17supportsExtensionEN13QGraphicsItem9ExtensionE
+640 QGraphicsTextItem::_ZThn16_N17QGraphicsTextItem12setExtensionEN13QGraphicsItem9ExtensionERK8QVariant
+648 QGraphicsTextItem::_ZThn16_NK17QGraphicsTextItem9extensionERK8QVariant
+
+Class QGraphicsTextItem
+ size=40 align=8
+ base size=40 base align=8
+QGraphicsTextItem (0x7f9551352930) 0
+ vptr=((& QGraphicsTextItem::_ZTV17QGraphicsTextItem) + 16u)
+ QGraphicsObject (0x7f9551346700) 0
+ primary-for QGraphicsTextItem (0x7f9551352930)
+ QObject (0x7f95513529a0) 0
+ primary-for QGraphicsObject (0x7f9551346700)
+ QGraphicsItem (0x7f9551352a10) 16
+ vptr=((& QGraphicsTextItem::_ZTV17QGraphicsTextItem) + 360u)
+
+Vtable for QGraphicsSimpleTextItem
+QGraphicsSimpleTextItem::_ZTV23QGraphicsSimpleTextItem: 39u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsSimpleTextItem)
+16 QGraphicsSimpleTextItem::~QGraphicsSimpleTextItem
+24 QGraphicsSimpleTextItem::~QGraphicsSimpleTextItem
+32 QGraphicsItem::advance
+40 QGraphicsSimpleTextItem::boundingRect
+48 QGraphicsSimpleTextItem::shape
+56 QGraphicsSimpleTextItem::contains
+64 QGraphicsItem::collidesWithItem
+72 QGraphicsItem::collidesWithPath
+80 QGraphicsSimpleTextItem::isObscuredBy
+88 QGraphicsSimpleTextItem::opaqueArea
+96 QGraphicsSimpleTextItem::paint
+104 QGraphicsSimpleTextItem::type
+112 QGraphicsItem::sceneEventFilter
+120 QGraphicsItem::sceneEvent
+128 QGraphicsItem::contextMenuEvent
+136 QGraphicsItem::dragEnterEvent
+144 QGraphicsItem::dragLeaveEvent
+152 QGraphicsItem::dragMoveEvent
+160 QGraphicsItem::dropEvent
+168 QGraphicsItem::focusInEvent
+176 QGraphicsItem::focusOutEvent
+184 QGraphicsItem::hoverEnterEvent
+192 QGraphicsItem::hoverMoveEvent
+200 QGraphicsItem::hoverLeaveEvent
+208 QGraphicsItem::keyPressEvent
+216 QGraphicsItem::keyReleaseEvent
+224 QGraphicsItem::mousePressEvent
+232 QGraphicsItem::mouseMoveEvent
+240 QGraphicsItem::mouseReleaseEvent
+248 QGraphicsItem::mouseDoubleClickEvent
+256 QGraphicsItem::wheelEvent
+264 QGraphicsItem::inputMethodEvent
+272 QGraphicsItem::inputMethodQuery
+280 QGraphicsItem::itemChange
+288 QGraphicsSimpleTextItem::supportsExtension
+296 QGraphicsSimpleTextItem::setExtension
+304 QGraphicsSimpleTextItem::extension
+
+Class QGraphicsSimpleTextItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsSimpleTextItem (0x7f9551372380) 0
+ vptr=((& QGraphicsSimpleTextItem::_ZTV23QGraphicsSimpleTextItem) + 16u)
+ QAbstractGraphicsShapeItem (0x7f9551388000) 0
+ primary-for QGraphicsSimpleTextItem (0x7f9551372380)
+ QGraphicsItem (0x7f9551388070) 0
+ primary-for QAbstractGraphicsShapeItem (0x7f9551388000)
+
+Vtable for QGraphicsItemGroup
+QGraphicsItemGroup::_ZTV18QGraphicsItemGroup: 39u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QGraphicsItemGroup)
+16 QGraphicsItemGroup::~QGraphicsItemGroup
+24 QGraphicsItemGroup::~QGraphicsItemGroup
+32 QGraphicsItem::advance
+40 QGraphicsItemGroup::boundingRect
+48 QGraphicsItem::shape
+56 QGraphicsItem::contains
+64 QGraphicsItem::collidesWithItem
+72 QGraphicsItem::collidesWithPath
+80 QGraphicsItemGroup::isObscuredBy
+88 QGraphicsItemGroup::opaqueArea
+96 QGraphicsItemGroup::paint
+104 QGraphicsItemGroup::type
+112 QGraphicsItem::sceneEventFilter
+120 QGraphicsItem::sceneEvent
+128 QGraphicsItem::contextMenuEvent
+136 QGraphicsItem::dragEnterEvent
+144 QGraphicsItem::dragLeaveEvent
+152 QGraphicsItem::dragMoveEvent
+160 QGraphicsItem::dropEvent
+168 QGraphicsItem::focusInEvent
+176 QGraphicsItem::focusOutEvent
+184 QGraphicsItem::hoverEnterEvent
+192 QGraphicsItem::hoverMoveEvent
+200 QGraphicsItem::hoverLeaveEvent
+208 QGraphicsItem::keyPressEvent
+216 QGraphicsItem::keyReleaseEvent
+224 QGraphicsItem::mousePressEvent
+232 QGraphicsItem::mouseMoveEvent
+240 QGraphicsItem::mouseReleaseEvent
+248 QGraphicsItem::mouseDoubleClickEvent
+256 QGraphicsItem::wheelEvent
+264 QGraphicsItem::inputMethodEvent
+272 QGraphicsItem::inputMethodQuery
+280 QGraphicsItem::itemChange
+288 QGraphicsItem::supportsExtension
+296 QGraphicsItem::setExtension
+304 QGraphicsItem::extension
+
+Class QGraphicsItemGroup
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsItemGroup (0x7f9551388f50) 0
+ vptr=((& QGraphicsItemGroup::_ZTV18QGraphicsItemGroup) + 16u)
+ QGraphicsItem (0x7f95513889a0) 0
+ primary-for QGraphicsItemGroup (0x7f9551388f50)
+
+Vtable for QGraphicsLayoutItem
+QGraphicsLayoutItem::_ZTV19QGraphicsLayoutItem: 8u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsLayoutItem)
+16 QGraphicsLayoutItem::~QGraphicsLayoutItem
+24 QGraphicsLayoutItem::~QGraphicsLayoutItem
+32 QGraphicsLayoutItem::setGeometry
+40 QGraphicsLayoutItem::getContentsMargins
+48 QGraphicsLayoutItem::updateGeometry
+56 __cxa_pure_virtual
+
+Class QGraphicsLayoutItem
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLayoutItem (0x7f95513aa850) 0
+ vptr=((& QGraphicsLayoutItem::_ZTV19QGraphicsLayoutItem) + 16u)
+
+Vtable for QGraphicsLayout
+QGraphicsLayout::_ZTV15QGraphicsLayout: 13u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsLayout)
+16 QGraphicsLayout::~QGraphicsLayout
+24 QGraphicsLayout::~QGraphicsLayout
+32 QGraphicsLayoutItem::setGeometry
+40 QGraphicsLayout::getContentsMargins
+48 QGraphicsLayout::updateGeometry
+56 __cxa_pure_virtual
+64 QGraphicsLayout::invalidate
+72 QGraphicsLayout::widgetEvent
+80 __cxa_pure_virtual
+88 __cxa_pure_virtual
+96 __cxa_pure_virtual
+
+Class QGraphicsLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLayout (0x7f95511ee070) 0
+ vptr=((& QGraphicsLayout::_ZTV15QGraphicsLayout) + 16u)
+ QGraphicsLayoutItem (0x7f95511ee0e0) 0
+ primary-for QGraphicsLayout (0x7f95511ee070)
+
+Vtable for QGraphicsAnchor
+QGraphicsAnchor::_ZTV15QGraphicsAnchor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsAnchor)
+16 QGraphicsAnchor::metaObject
+24 QGraphicsAnchor::qt_metacast
+32 QGraphicsAnchor::qt_metacall
+40 QGraphicsAnchor::~QGraphicsAnchor
+48 QGraphicsAnchor::~QGraphicsAnchor
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QGraphicsAnchor
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsAnchor (0x7f95511fc850) 0
+ vptr=((& QGraphicsAnchor::_ZTV15QGraphicsAnchor) + 16u)
+ QObject (0x7f95511fc8c0) 0
+ primary-for QGraphicsAnchor (0x7f95511fc850)
+
+Vtable for QGraphicsAnchorLayout
+QGraphicsAnchorLayout::_ZTV21QGraphicsAnchorLayout: 13u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QGraphicsAnchorLayout)
+16 QGraphicsAnchorLayout::~QGraphicsAnchorLayout
+24 QGraphicsAnchorLayout::~QGraphicsAnchorLayout
+32 QGraphicsAnchorLayout::setGeometry
+40 QGraphicsLayout::getContentsMargins
+48 QGraphicsLayout::updateGeometry
+56 QGraphicsAnchorLayout::sizeHint
+64 QGraphicsAnchorLayout::invalidate
+72 QGraphicsLayout::widgetEvent
+80 QGraphicsAnchorLayout::count
+88 QGraphicsAnchorLayout::itemAt
+96 QGraphicsAnchorLayout::removeAt
+
+Class QGraphicsAnchorLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsAnchorLayout (0x7f9551210d90) 0
+ vptr=((& QGraphicsAnchorLayout::_ZTV21QGraphicsAnchorLayout) + 16u)
+ QGraphicsLayout (0x7f9551210e00) 0
+ primary-for QGraphicsAnchorLayout (0x7f9551210d90)
+ QGraphicsLayoutItem (0x7f9551210e70) 0
+ primary-for QGraphicsLayout (0x7f9551210e00)
+
+Vtable for QGraphicsGridLayout
+QGraphicsGridLayout::_ZTV19QGraphicsGridLayout: 13u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsGridLayout)
+16 QGraphicsGridLayout::~QGraphicsGridLayout
+24 QGraphicsGridLayout::~QGraphicsGridLayout
+32 QGraphicsGridLayout::setGeometry
+40 QGraphicsLayout::getContentsMargins
+48 QGraphicsLayout::updateGeometry
+56 QGraphicsGridLayout::sizeHint
+64 QGraphicsGridLayout::invalidate
+72 QGraphicsLayout::widgetEvent
+80 QGraphicsGridLayout::count
+88 QGraphicsGridLayout::itemAt
+96 QGraphicsGridLayout::removeAt
+
+Class QGraphicsGridLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsGridLayout (0x7f95512280e0) 0
+ vptr=((& QGraphicsGridLayout::_ZTV19QGraphicsGridLayout) + 16u)
+ QGraphicsLayout (0x7f9551228150) 0
+ primary-for QGraphicsGridLayout (0x7f95512280e0)
+ QGraphicsLayoutItem (0x7f95512281c0) 0
+ primary-for QGraphicsLayout (0x7f9551228150)
+
+Vtable for QGraphicsItemAnimation
+QGraphicsItemAnimation::_ZTV22QGraphicsItemAnimation: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QGraphicsItemAnimation)
+16 QGraphicsItemAnimation::metaObject
+24 QGraphicsItemAnimation::qt_metacast
+32 QGraphicsItemAnimation::qt_metacall
+40 QGraphicsItemAnimation::~QGraphicsItemAnimation
+48 QGraphicsItemAnimation::~QGraphicsItemAnimation
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsItemAnimation::beforeAnimationStep
+120 QGraphicsItemAnimation::afterAnimationStep
+
+Class QGraphicsItemAnimation
+ size=24 align=8
+ base size=24 base align=8
+QGraphicsItemAnimation (0x7f95512444d0) 0
+ vptr=((& QGraphicsItemAnimation::_ZTV22QGraphicsItemAnimation) + 16u)
+ QObject (0x7f9551244540) 0
+ primary-for QGraphicsItemAnimation (0x7f95512444d0)
+
+Vtable for QGraphicsLinearLayout
+QGraphicsLinearLayout::_ZTV21QGraphicsLinearLayout: 13u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QGraphicsLinearLayout)
+16 QGraphicsLinearLayout::~QGraphicsLinearLayout
+24 QGraphicsLinearLayout::~QGraphicsLinearLayout
+32 QGraphicsLinearLayout::setGeometry
+40 QGraphicsLayout::getContentsMargins
+48 QGraphicsLayout::updateGeometry
+56 QGraphicsLinearLayout::sizeHint
+64 QGraphicsLinearLayout::invalidate
+72 QGraphicsLayout::widgetEvent
+80 QGraphicsLinearLayout::count
+88 QGraphicsLinearLayout::itemAt
+96 QGraphicsLinearLayout::removeAt
+
+Class QGraphicsLinearLayout
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsLinearLayout (0x7f955125f850) 0
+ vptr=((& QGraphicsLinearLayout::_ZTV21QGraphicsLinearLayout) + 16u)
+ QGraphicsLayout (0x7f955125f8c0) 0
+ primary-for QGraphicsLinearLayout (0x7f955125f850)
+ QGraphicsLayoutItem (0x7f955125f930) 0
+ primary-for QGraphicsLayout (0x7f955125f8c0)
+
+Vtable for QGraphicsWidget
+QGraphicsWidget::_ZTV15QGraphicsWidget: 92u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QGraphicsWidget)
+16 QGraphicsWidget::metaObject
+24 QGraphicsWidget::qt_metacast
+32 QGraphicsWidget::qt_metacall
+40 QGraphicsWidget::~QGraphicsWidget
+48 QGraphicsWidget::~QGraphicsWidget
+56 QGraphicsWidget::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsWidget::setGeometry
+120 QGraphicsWidget::getContentsMargins
+128 QGraphicsWidget::type
+136 QGraphicsWidget::paint
+144 QGraphicsWidget::paintWindowFrame
+152 QGraphicsWidget::boundingRect
+160 QGraphicsWidget::shape
+168 QGraphicsWidget::initStyleOption
+176 QGraphicsWidget::sizeHint
+184 QGraphicsWidget::updateGeometry
+192 QGraphicsWidget::itemChange
+200 QGraphicsWidget::propertyChange
+208 QGraphicsWidget::sceneEvent
+216 QGraphicsWidget::windowFrameEvent
+224 QGraphicsWidget::windowFrameSectionAt
+232 QGraphicsWidget::changeEvent
+240 QGraphicsWidget::closeEvent
+248 QGraphicsWidget::focusInEvent
+256 QGraphicsWidget::focusNextPrevChild
+264 QGraphicsWidget::focusOutEvent
+272 QGraphicsWidget::hideEvent
+280 QGraphicsWidget::moveEvent
+288 QGraphicsWidget::polishEvent
+296 QGraphicsWidget::resizeEvent
+304 QGraphicsWidget::showEvent
+312 QGraphicsWidget::hoverMoveEvent
+320 QGraphicsWidget::hoverLeaveEvent
+328 QGraphicsWidget::grabMouseEvent
+336 QGraphicsWidget::ungrabMouseEvent
+344 QGraphicsWidget::grabKeyboardEvent
+352 QGraphicsWidget::ungrabKeyboardEvent
+360 (int (*)(...))-0x00000000000000010
+368 (int (*)(...))(& _ZTI15QGraphicsWidget)
+376 QGraphicsWidget::_ZThn16_N15QGraphicsWidgetD1Ev
+384 QGraphicsWidget::_ZThn16_N15QGraphicsWidgetD0Ev
+392 QGraphicsItem::advance
+400 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget12boundingRectEv
+408 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget5shapeEv
+416 QGraphicsItem::contains
+424 QGraphicsItem::collidesWithItem
+432 QGraphicsItem::collidesWithPath
+440 QGraphicsItem::isObscuredBy
+448 QGraphicsItem::opaqueArea
+456 QGraphicsWidget::_ZThn16_N15QGraphicsWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+464 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget4typeEv
+472 QGraphicsItem::sceneEventFilter
+480 QGraphicsWidget::_ZThn16_N15QGraphicsWidget10sceneEventEP6QEvent
+488 QGraphicsItem::contextMenuEvent
+496 QGraphicsItem::dragEnterEvent
+504 QGraphicsItem::dragLeaveEvent
+512 QGraphicsItem::dragMoveEvent
+520 QGraphicsItem::dropEvent
+528 QGraphicsWidget::_ZThn16_N15QGraphicsWidget12focusInEventEP11QFocusEvent
+536 QGraphicsWidget::_ZThn16_N15QGraphicsWidget13focusOutEventEP11QFocusEvent
+544 QGraphicsItem::hoverEnterEvent
+552 QGraphicsWidget::_ZThn16_N15QGraphicsWidget14hoverMoveEventEP24QGraphicsSceneHoverEvent
+560 QGraphicsWidget::_ZThn16_N15QGraphicsWidget15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+568 QGraphicsItem::keyPressEvent
+576 QGraphicsItem::keyReleaseEvent
+584 QGraphicsItem::mousePressEvent
+592 QGraphicsItem::mouseMoveEvent
+600 QGraphicsItem::mouseReleaseEvent
+608 QGraphicsItem::mouseDoubleClickEvent
+616 QGraphicsItem::wheelEvent
+624 QGraphicsItem::inputMethodEvent
+632 QGraphicsItem::inputMethodQuery
+640 QGraphicsWidget::_ZThn16_N15QGraphicsWidget10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant
+648 QGraphicsItem::supportsExtension
+656 QGraphicsItem::setExtension
+664 QGraphicsItem::extension
+672 (int (*)(...))-0x00000000000000020
+680 (int (*)(...))(& _ZTI15QGraphicsWidget)
+688 QGraphicsWidget::_ZThn32_N15QGraphicsWidgetD1Ev
+696 QGraphicsWidget::_ZThn32_N15QGraphicsWidgetD0Ev
+704 QGraphicsWidget::_ZThn32_N15QGraphicsWidget11setGeometryERK6QRectF
+712 QGraphicsWidget::_ZThn32_NK15QGraphicsWidget18getContentsMarginsEPdS0_S0_S0_
+720 QGraphicsWidget::_ZThn32_N15QGraphicsWidget14updateGeometryEv
+728 QGraphicsWidget::_ZThn32_NK15QGraphicsWidget8sizeHintEN2Qt8SizeHintERK6QSizeF
+
+Class QGraphicsWidget
+ size=48 align=8
+ base size=48 base align=8
+QGraphicsWidget (0x7f955127b000) 0
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 16u)
+ QGraphicsObject (0x7f955127b080) 0
+ primary-for QGraphicsWidget (0x7f955127b000)
+ QObject (0x7f955127a070) 0
+ primary-for QGraphicsObject (0x7f955127b080)
+ QGraphicsItem (0x7f955127a0e0) 16
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 376u)
+ QGraphicsLayoutItem (0x7f955127a150) 32
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 688u)
+
+Vtable for QGraphicsProxyWidget
+QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget: 105u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+16 QGraphicsProxyWidget::metaObject
+24 QGraphicsProxyWidget::qt_metacast
+32 QGraphicsProxyWidget::qt_metacall
+40 QGraphicsProxyWidget::~QGraphicsProxyWidget
+48 QGraphicsProxyWidget::~QGraphicsProxyWidget
+56 QGraphicsProxyWidget::event
+64 QGraphicsProxyWidget::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsProxyWidget::setGeometry
+120 QGraphicsWidget::getContentsMargins
+128 QGraphicsProxyWidget::type
+136 QGraphicsProxyWidget::paint
+144 QGraphicsWidget::paintWindowFrame
+152 QGraphicsWidget::boundingRect
+160 QGraphicsWidget::shape
+168 QGraphicsWidget::initStyleOption
+176 QGraphicsProxyWidget::sizeHint
+184 QGraphicsWidget::updateGeometry
+192 QGraphicsProxyWidget::itemChange
+200 QGraphicsWidget::propertyChange
+208 QGraphicsWidget::sceneEvent
+216 QGraphicsWidget::windowFrameEvent
+224 QGraphicsWidget::windowFrameSectionAt
+232 QGraphicsWidget::changeEvent
+240 QGraphicsWidget::closeEvent
+248 QGraphicsProxyWidget::focusInEvent
+256 QGraphicsProxyWidget::focusNextPrevChild
+264 QGraphicsProxyWidget::focusOutEvent
+272 QGraphicsProxyWidget::hideEvent
+280 QGraphicsWidget::moveEvent
+288 QGraphicsWidget::polishEvent
+296 QGraphicsProxyWidget::resizeEvent
+304 QGraphicsProxyWidget::showEvent
+312 QGraphicsProxyWidget::hoverMoveEvent
+320 QGraphicsProxyWidget::hoverLeaveEvent
+328 QGraphicsProxyWidget::grabMouseEvent
+336 QGraphicsProxyWidget::ungrabMouseEvent
+344 QGraphicsWidget::grabKeyboardEvent
+352 QGraphicsWidget::ungrabKeyboardEvent
+360 QGraphicsProxyWidget::contextMenuEvent
+368 QGraphicsProxyWidget::dragEnterEvent
+376 QGraphicsProxyWidget::dragLeaveEvent
+384 QGraphicsProxyWidget::dragMoveEvent
+392 QGraphicsProxyWidget::dropEvent
+400 QGraphicsProxyWidget::hoverEnterEvent
+408 QGraphicsProxyWidget::mouseMoveEvent
+416 QGraphicsProxyWidget::mousePressEvent
+424 QGraphicsProxyWidget::mouseReleaseEvent
+432 QGraphicsProxyWidget::mouseDoubleClickEvent
+440 QGraphicsProxyWidget::wheelEvent
+448 QGraphicsProxyWidget::keyPressEvent
+456 QGraphicsProxyWidget::keyReleaseEvent
+464 (int (*)(...))-0x00000000000000010
+472 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+480 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidgetD1Ev
+488 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidgetD0Ev
+496 QGraphicsItem::advance
+504 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget12boundingRectEv
+512 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget5shapeEv
+520 QGraphicsItem::contains
+528 QGraphicsItem::collidesWithItem
+536 QGraphicsItem::collidesWithPath
+544 QGraphicsItem::isObscuredBy
+552 QGraphicsItem::opaqueArea
+560 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+568 QGraphicsProxyWidget::_ZThn16_NK20QGraphicsProxyWidget4typeEv
+576 QGraphicsItem::sceneEventFilter
+584 QGraphicsWidget::_ZThn16_N15QGraphicsWidget10sceneEventEP6QEvent
+592 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget16contextMenuEventEP30QGraphicsSceneContextMenuEvent
+600 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14dragEnterEventEP27QGraphicsSceneDragDropEvent
+608 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14dragLeaveEventEP27QGraphicsSceneDragDropEvent
+616 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget13dragMoveEventEP27QGraphicsSceneDragDropEvent
+624 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget9dropEventEP27QGraphicsSceneDragDropEvent
+632 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget12focusInEventEP11QFocusEvent
+640 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget13focusOutEventEP11QFocusEvent
+648 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15hoverEnterEventEP24QGraphicsSceneHoverEvent
+656 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14hoverMoveEventEP24QGraphicsSceneHoverEvent
+664 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+672 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget13keyPressEventEP9QKeyEvent
+680 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15keyReleaseEventEP9QKeyEvent
+688 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget15mousePressEventEP24QGraphicsSceneMouseEvent
+696 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget14mouseMoveEventEP24QGraphicsSceneMouseEvent
+704 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget17mouseReleaseEventEP24QGraphicsSceneMouseEvent
+712 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent
+720 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget10wheelEventEP24QGraphicsSceneWheelEvent
+728 QGraphicsItem::inputMethodEvent
+736 QGraphicsItem::inputMethodQuery
+744 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant
+752 QGraphicsItem::supportsExtension
+760 QGraphicsItem::setExtension
+768 QGraphicsItem::extension
+776 (int (*)(...))-0x00000000000000020
+784 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+792 QGraphicsProxyWidget::_ZThn32_N20QGraphicsProxyWidgetD1Ev
+800 QGraphicsProxyWidget::_ZThn32_N20QGraphicsProxyWidgetD0Ev
+808 QGraphicsProxyWidget::_ZThn32_N20QGraphicsProxyWidget11setGeometryERK6QRectF
+816 QGraphicsWidget::_ZThn32_NK15QGraphicsWidget18getContentsMarginsEPdS0_S0_S0_
+824 QGraphicsWidget::_ZThn32_N15QGraphicsWidget14updateGeometryEv
+832 QGraphicsProxyWidget::_ZThn32_NK20QGraphicsProxyWidget8sizeHintEN2Qt8SizeHintERK6QSizeF
+
+Class QGraphicsProxyWidget
+ size=48 align=8
+ base size=48 base align=8
+QGraphicsProxyWidget (0x7f95512b48c0) 0
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 16u)
+ QGraphicsWidget (0x7f95512b7000) 0
+ primary-for QGraphicsProxyWidget (0x7f95512b48c0)
+ QGraphicsObject (0x7f95512b7080) 0
+ primary-for QGraphicsWidget (0x7f95512b7000)
+ QObject (0x7f95512b4930) 0
+ primary-for QGraphicsObject (0x7f95512b7080)
+ QGraphicsItem (0x7f95512b49a0) 16
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 480u)
+ QGraphicsLayoutItem (0x7f95512b4a10) 32
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 792u)
+
+Vtable for QGraphicsScene
+QGraphicsScene::_ZTV14QGraphicsScene: 34u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QGraphicsScene)
+16 QGraphicsScene::metaObject
+24 QGraphicsScene::qt_metacast
+32 QGraphicsScene::qt_metacall
+40 QGraphicsScene::~QGraphicsScene
+48 QGraphicsScene::~QGraphicsScene
+56 QGraphicsScene::event
+64 QGraphicsScene::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsScene::inputMethodQuery
+120 QGraphicsScene::contextMenuEvent
+128 QGraphicsScene::dragEnterEvent
+136 QGraphicsScene::dragMoveEvent
+144 QGraphicsScene::dragLeaveEvent
+152 QGraphicsScene::dropEvent
+160 QGraphicsScene::focusInEvent
+168 QGraphicsScene::focusOutEvent
+176 QGraphicsScene::helpEvent
+184 QGraphicsScene::keyPressEvent
+192 QGraphicsScene::keyReleaseEvent
+200 QGraphicsScene::mousePressEvent
+208 QGraphicsScene::mouseMoveEvent
+216 QGraphicsScene::mouseReleaseEvent
+224 QGraphicsScene::mouseDoubleClickEvent
+232 QGraphicsScene::wheelEvent
+240 QGraphicsScene::inputMethodEvent
+248 QGraphicsScene::drawBackground
+256 QGraphicsScene::drawForeground
+264 QGraphicsScene::drawItems
+
+Class QGraphicsScene
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsScene (0x7f95510e0930) 0
+ vptr=((& QGraphicsScene::_ZTV14QGraphicsScene) + 16u)
+ QObject (0x7f95510e09a0) 0
+ primary-for QGraphicsScene (0x7f95510e0930)
+
+Vtable for QGraphicsSceneEvent
+QGraphicsSceneEvent::_ZTV19QGraphicsSceneEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QGraphicsSceneEvent)
+16 QGraphicsSceneEvent::~QGraphicsSceneEvent
+24 QGraphicsSceneEvent::~QGraphicsSceneEvent
+
+Class QGraphicsSceneEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneEvent (0x7f9551192850) 0
+ vptr=((& QGraphicsSceneEvent::_ZTV19QGraphicsSceneEvent) + 16u)
+ QEvent (0x7f95511928c0) 0
+ primary-for QGraphicsSceneEvent (0x7f9551192850)
+
+Vtable for QGraphicsSceneMouseEvent
+QGraphicsSceneMouseEvent::_ZTV24QGraphicsSceneMouseEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QGraphicsSceneMouseEvent)
+16 QGraphicsSceneMouseEvent::~QGraphicsSceneMouseEvent
+24 QGraphicsSceneMouseEvent::~QGraphicsSceneMouseEvent
+
+Class QGraphicsSceneMouseEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneMouseEvent (0x7f95511c1310) 0
+ vptr=((& QGraphicsSceneMouseEvent::_ZTV24QGraphicsSceneMouseEvent) + 16u)
+ QGraphicsSceneEvent (0x7f95511c1380) 0
+ primary-for QGraphicsSceneMouseEvent (0x7f95511c1310)
+ QEvent (0x7f95511c13f0) 0
+ primary-for QGraphicsSceneEvent (0x7f95511c1380)
+
+Vtable for QGraphicsSceneWheelEvent
+QGraphicsSceneWheelEvent::_ZTV24QGraphicsSceneWheelEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QGraphicsSceneWheelEvent)
+16 QGraphicsSceneWheelEvent::~QGraphicsSceneWheelEvent
+24 QGraphicsSceneWheelEvent::~QGraphicsSceneWheelEvent
+
+Class QGraphicsSceneWheelEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneWheelEvent (0x7f95511c1cb0) 0
+ vptr=((& QGraphicsSceneWheelEvent::_ZTV24QGraphicsSceneWheelEvent) + 16u)
+ QGraphicsSceneEvent (0x7f95511c1d20) 0
+ primary-for QGraphicsSceneWheelEvent (0x7f95511c1cb0)
+ QEvent (0x7f95511c1d90) 0
+ primary-for QGraphicsSceneEvent (0x7f95511c1d20)
+
+Vtable for QGraphicsSceneContextMenuEvent
+QGraphicsSceneContextMenuEvent::_ZTV30QGraphicsSceneContextMenuEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI30QGraphicsSceneContextMenuEvent)
+16 QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent
+24 QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent
+
+Class QGraphicsSceneContextMenuEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneContextMenuEvent (0x7f95511d75b0) 0
+ vptr=((& QGraphicsSceneContextMenuEvent::_ZTV30QGraphicsSceneContextMenuEvent) + 16u)
+ QGraphicsSceneEvent (0x7f95511d7620) 0
+ primary-for QGraphicsSceneContextMenuEvent (0x7f95511d75b0)
+ QEvent (0x7f95511d7690) 0
+ primary-for QGraphicsSceneEvent (0x7f95511d7620)
+
+Vtable for QGraphicsSceneHoverEvent
+QGraphicsSceneHoverEvent::_ZTV24QGraphicsSceneHoverEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QGraphicsSceneHoverEvent)
+16 QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent
+24 QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent
+
+Class QGraphicsSceneHoverEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneHoverEvent (0x7f9550fe30e0) 0
+ vptr=((& QGraphicsSceneHoverEvent::_ZTV24QGraphicsSceneHoverEvent) + 16u)
+ QGraphicsSceneEvent (0x7f9550fe3150) 0
+ primary-for QGraphicsSceneHoverEvent (0x7f9550fe30e0)
+ QEvent (0x7f9550fe31c0) 0
+ primary-for QGraphicsSceneEvent (0x7f9550fe3150)
+
+Vtable for QGraphicsSceneHelpEvent
+QGraphicsSceneHelpEvent::_ZTV23QGraphicsSceneHelpEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsSceneHelpEvent)
+16 QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent
+24 QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent
+
+Class QGraphicsSceneHelpEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneHelpEvent (0x7f9550fe3a80) 0
+ vptr=((& QGraphicsSceneHelpEvent::_ZTV23QGraphicsSceneHelpEvent) + 16u)
+ QGraphicsSceneEvent (0x7f9550fe3af0) 0
+ primary-for QGraphicsSceneHelpEvent (0x7f9550fe3a80)
+ QEvent (0x7f9550fe3b60) 0
+ primary-for QGraphicsSceneEvent (0x7f9550fe3af0)
+
+Vtable for QGraphicsSceneDragDropEvent
+QGraphicsSceneDragDropEvent::_ZTV27QGraphicsSceneDragDropEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QGraphicsSceneDragDropEvent)
+16 QGraphicsSceneDragDropEvent::~QGraphicsSceneDragDropEvent
+24 QGraphicsSceneDragDropEvent::~QGraphicsSceneDragDropEvent
+
+Class QGraphicsSceneDragDropEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneDragDropEvent (0x7f9550ff6380) 0
+ vptr=((& QGraphicsSceneDragDropEvent::_ZTV27QGraphicsSceneDragDropEvent) + 16u)
+ QGraphicsSceneEvent (0x7f9550ff63f0) 0
+ primary-for QGraphicsSceneDragDropEvent (0x7f9550ff6380)
+ QEvent (0x7f9550ff6460) 0
+ primary-for QGraphicsSceneEvent (0x7f9550ff63f0)
+
+Vtable for QGraphicsSceneResizeEvent
+QGraphicsSceneResizeEvent::_ZTV25QGraphicsSceneResizeEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QGraphicsSceneResizeEvent)
+16 QGraphicsSceneResizeEvent::~QGraphicsSceneResizeEvent
+24 QGraphicsSceneResizeEvent::~QGraphicsSceneResizeEvent
+
+Class QGraphicsSceneResizeEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneResizeEvent (0x7f9550ff6d20) 0
+ vptr=((& QGraphicsSceneResizeEvent::_ZTV25QGraphicsSceneResizeEvent) + 16u)
+ QGraphicsSceneEvent (0x7f9550ff6d90) 0
+ primary-for QGraphicsSceneResizeEvent (0x7f9550ff6d20)
+ QEvent (0x7f9550ff6e00) 0
+ primary-for QGraphicsSceneEvent (0x7f9550ff6d90)
+
+Vtable for QGraphicsSceneMoveEvent
+QGraphicsSceneMoveEvent::_ZTV23QGraphicsSceneMoveEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QGraphicsSceneMoveEvent)
+16 QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent
+24 QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent
+
+Class QGraphicsSceneMoveEvent
+ size=32 align=8
+ base size=32 base align=8
+QGraphicsSceneMoveEvent (0x7f955100b460) 0
+ vptr=((& QGraphicsSceneMoveEvent::_ZTV23QGraphicsSceneMoveEvent) + 16u)
+ QGraphicsSceneEvent (0x7f955100b4d0) 0
+ primary-for QGraphicsSceneMoveEvent (0x7f955100b460)
+ QEvent (0x7f955100b540) 0
+ primary-for QGraphicsSceneEvent (0x7f955100b4d0)
+
+Vtable for QGraphicsTransform
+QGraphicsTransform::_ZTV18QGraphicsTransform: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QGraphicsTransform)
+16 QGraphicsTransform::metaObject
+24 QGraphicsTransform::qt_metacast
+32 QGraphicsTransform::qt_metacall
+40 QGraphicsTransform::~QGraphicsTransform
+48 QGraphicsTransform::~QGraphicsTransform
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+
+Class QGraphicsTransform
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsTransform (0x7f955100bc40) 0
+ vptr=((& QGraphicsTransform::_ZTV18QGraphicsTransform) + 16u)
+ QObject (0x7f955100bcb0) 0
+ primary-for QGraphicsTransform (0x7f955100bc40)
+
+Vtable for QGraphicsScale
+QGraphicsScale::_ZTV14QGraphicsScale: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QGraphicsScale)
+16 QGraphicsScale::metaObject
+24 QGraphicsScale::qt_metacast
+32 QGraphicsScale::qt_metacall
+40 QGraphicsScale::~QGraphicsScale
+48 QGraphicsScale::~QGraphicsScale
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsScale::applyTo
+
+Class QGraphicsScale
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsScale (0x7f9551029150) 0
+ vptr=((& QGraphicsScale::_ZTV14QGraphicsScale) + 16u)
+ QGraphicsTransform (0x7f95510291c0) 0
+ primary-for QGraphicsScale (0x7f9551029150)
+ QObject (0x7f9551029230) 0
+ primary-for QGraphicsTransform (0x7f95510291c0)
+
+Vtable for QGraphicsRotation
+QGraphicsRotation::_ZTV17QGraphicsRotation: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGraphicsRotation)
+16 QGraphicsRotation::metaObject
+24 QGraphicsRotation::qt_metacast
+32 QGraphicsRotation::qt_metacall
+40 QGraphicsRotation::~QGraphicsRotation
+48 QGraphicsRotation::~QGraphicsRotation
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QGraphicsRotation::applyTo
+
+Class QGraphicsRotation
+ size=16 align=8
+ base size=16 base align=8
+QGraphicsRotation (0x7f955103c620) 0
+ vptr=((& QGraphicsRotation::_ZTV17QGraphicsRotation) + 16u)
+ QGraphicsTransform (0x7f955103c690) 0
+ primary-for QGraphicsRotation (0x7f955103c620)
+ QObject (0x7f955103c700) 0
+ primary-for QGraphicsTransform (0x7f955103c690)
+
+Vtable for QScrollArea
+QScrollArea::_ZTV11QScrollArea: 65u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QScrollArea)
+16 QScrollArea::metaObject
+24 QScrollArea::qt_metacast
+32 QScrollArea::qt_metacall
+40 QScrollArea::~QScrollArea
+48 QScrollArea::~QScrollArea
+56 QScrollArea::event
+64 QScrollArea::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractScrollArea::mousePressEvent
+168 QAbstractScrollArea::mouseReleaseEvent
+176 QAbstractScrollArea::mouseDoubleClickEvent
+184 QAbstractScrollArea::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractScrollArea::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QAbstractScrollArea::paintEvent
+256 QWidget::moveEvent
+264 QScrollArea::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractScrollArea::dragEnterEvent
+312 QAbstractScrollArea::dragMoveEvent
+320 QAbstractScrollArea::dragLeaveEvent
+328 QAbstractScrollArea::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QScrollArea::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractScrollArea::viewportEvent
+456 QScrollArea::scrollContentsBy
+464 (int (*)(...))-0x00000000000000010
+472 (int (*)(...))(& _ZTI11QScrollArea)
+480 QScrollArea::_ZThn16_N11QScrollAreaD1Ev
+488 QScrollArea::_ZThn16_N11QScrollAreaD0Ev
+496 QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QScrollArea
+ size=40 align=8
+ base size=40 base align=8
+QScrollArea (0x7f955104faf0) 0
+ vptr=((& QScrollArea::_ZTV11QScrollArea) + 16u)
+ QAbstractScrollArea (0x7f955104fb60) 0
+ primary-for QScrollArea (0x7f955104faf0)
+ QFrame (0x7f955104fbd0) 0
+ primary-for QAbstractScrollArea (0x7f955104fb60)
+ QWidget (0x7f955103dc80) 0
+ primary-for QFrame (0x7f955104fbd0)
+ QObject (0x7f955104fc40) 0
+ primary-for QWidget (0x7f955103dc80)
+ QPaintDevice (0x7f955104fcb0) 16
+ vptr=((& QScrollArea::_ZTV11QScrollArea) + 480u)
+
+Vtable for QGraphicsView
+QGraphicsView::_ZTV13QGraphicsView: 68u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QGraphicsView)
+16 QGraphicsView::metaObject
+24 QGraphicsView::qt_metacast
+32 QGraphicsView::qt_metacall
+40 QGraphicsView::~QGraphicsView
+48 QGraphicsView::~QGraphicsView
+56 QGraphicsView::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QGraphicsView::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QGraphicsView::mousePressEvent
+168 QGraphicsView::mouseReleaseEvent
+176 QGraphicsView::mouseDoubleClickEvent
+184 QGraphicsView::mouseMoveEvent
+192 QGraphicsView::wheelEvent
+200 QGraphicsView::keyPressEvent
+208 QGraphicsView::keyReleaseEvent
+216 QGraphicsView::focusInEvent
+224 QGraphicsView::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QGraphicsView::paintEvent
+256 QWidget::moveEvent
+264 QGraphicsView::resizeEvent
+272 QWidget::closeEvent
+280 QGraphicsView::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QGraphicsView::dragEnterEvent
+312 QGraphicsView::dragMoveEvent
+320 QGraphicsView::dragLeaveEvent
+328 QGraphicsView::dropEvent
+336 QGraphicsView::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QGraphicsView::inputMethodEvent
+384 QGraphicsView::inputMethodQuery
+392 QGraphicsView::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QGraphicsView::viewportEvent
+456 QGraphicsView::scrollContentsBy
+464 QGraphicsView::drawBackground
+472 QGraphicsView::drawForeground
+480 QGraphicsView::drawItems
+488 (int (*)(...))-0x00000000000000010
+496 (int (*)(...))(& _ZTI13QGraphicsView)
+504 QGraphicsView::_ZThn16_N13QGraphicsViewD1Ev
+512 QGraphicsView::_ZThn16_N13QGraphicsViewD0Ev
+520 QWidget::_ZThn16_NK7QWidget7devTypeEv
+528 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+536 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QGraphicsView
+ size=40 align=8
+ base size=40 base align=8
+QGraphicsView (0x7f955106fa10) 0
+ vptr=((& QGraphicsView::_ZTV13QGraphicsView) + 16u)
+ QAbstractScrollArea (0x7f955106fa80) 0
+ primary-for QGraphicsView (0x7f955106fa10)
+ QFrame (0x7f955106faf0) 0
+ primary-for QAbstractScrollArea (0x7f955106fa80)
+ QWidget (0x7f955106a680) 0
+ primary-for QFrame (0x7f955106faf0)
+ QObject (0x7f955106fb60) 0
+ primary-for QWidget (0x7f955106a680)
+ QPaintDevice (0x7f955106fbd0) 16
+ vptr=((& QGraphicsView::_ZTV13QGraphicsView) + 504u)
+
+Vtable for QAbstractButton
+QAbstractButton::_ZTV15QAbstractButton: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAbstractButton)
+16 QAbstractButton::metaObject
+24 QAbstractButton::qt_metacast
+32 QAbstractButton::qt_metacall
+40 QAbstractButton::~QAbstractButton
+48 QAbstractButton::~QAbstractButton
+56 QAbstractButton::event
+64 QObject::eventFilter
+72 QAbstractButton::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractButton::mousePressEvent
+168 QAbstractButton::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QAbstractButton::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QAbstractButton::keyPressEvent
+208 QAbstractButton::keyReleaseEvent
+216 QAbstractButton::focusInEvent
+224 QAbstractButton::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 __cxa_pure_virtual
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QAbstractButton::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractButton::hitButton
+456 QAbstractButton::checkStateSet
+464 QAbstractButton::nextCheckState
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI15QAbstractButton)
+488 QAbstractButton::_ZThn16_N15QAbstractButtonD1Ev
+496 QAbstractButton::_ZThn16_N15QAbstractButtonD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractButton
+ size=40 align=8
+ base size=40 base align=8
+QAbstractButton (0x7f9550f60ee0) 0
+ vptr=((& QAbstractButton::_ZTV15QAbstractButton) + 16u)
+ QWidget (0x7f9550f68380) 0
+ primary-for QAbstractButton (0x7f9550f60ee0)
+ QObject (0x7f9550f60f50) 0
+ primary-for QWidget (0x7f9550f68380)
+ QPaintDevice (0x7f9550f6f000) 16
+ vptr=((& QAbstractButton::_ZTV15QAbstractButton) + 488u)
+
+Vtable for QButtonGroup
+QButtonGroup::_ZTV12QButtonGroup: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QButtonGroup)
+16 QButtonGroup::metaObject
+24 QButtonGroup::qt_metacast
+32 QButtonGroup::qt_metacall
+40 QButtonGroup::~QButtonGroup
+48 QButtonGroup::~QButtonGroup
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QButtonGroup
+ size=16 align=8
+ base size=16 base align=8
+QButtonGroup (0x7f9550fa1310) 0
+ vptr=((& QButtonGroup::_ZTV12QButtonGroup) + 16u)
+ QObject (0x7f9550fa1380) 0
+ primary-for QButtonGroup (0x7f9550fa1310)
+
+Vtable for QCalendarWidget
+QCalendarWidget::_ZTV15QCalendarWidget: 64u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QCalendarWidget)
+16 QCalendarWidget::metaObject
+24 QCalendarWidget::qt_metacast
+32 QCalendarWidget::qt_metacall
+40 QCalendarWidget::~QCalendarWidget
+48 QCalendarWidget::~QCalendarWidget
+56 QCalendarWidget::event
+64 QCalendarWidget::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QCalendarWidget::sizeHint
+136 QCalendarWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QCalendarWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QCalendarWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QCalendarWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QCalendarWidget::paintCell
+456 (int (*)(...))-0x00000000000000010
+464 (int (*)(...))(& _ZTI15QCalendarWidget)
+472 QCalendarWidget::_ZThn16_N15QCalendarWidgetD1Ev
+480 QCalendarWidget::_ZThn16_N15QCalendarWidgetD0Ev
+488 QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QCalendarWidget
+ size=40 align=8
+ base size=40 base align=8
+QCalendarWidget (0x7f9550fb7f50) 0
+ vptr=((& QCalendarWidget::_ZTV15QCalendarWidget) + 16u)
+ QWidget (0x7f9550fb4900) 0
+ primary-for QCalendarWidget (0x7f9550fb7f50)
+ QObject (0x7f9550fbf000) 0
+ primary-for QWidget (0x7f9550fb4900)
+ QPaintDevice (0x7f9550fbf070) 16
+ vptr=((& QCalendarWidget::_ZTV15QCalendarWidget) + 472u)
+
+Vtable for QCheckBox
+QCheckBox::_ZTV9QCheckBox: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QCheckBox)
+16 QCheckBox::metaObject
+24 QCheckBox::qt_metacast
+32 QCheckBox::qt_metacall
+40 QCheckBox::~QCheckBox
+48 QCheckBox::~QCheckBox
+56 QCheckBox::event
+64 QObject::eventFilter
+72 QAbstractButton::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QCheckBox::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractButton::mousePressEvent
+168 QAbstractButton::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QCheckBox::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QAbstractButton::keyPressEvent
+208 QAbstractButton::keyReleaseEvent
+216 QAbstractButton::focusInEvent
+224 QAbstractButton::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QCheckBox::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QAbstractButton::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QCheckBox::hitButton
+456 QCheckBox::checkStateSet
+464 QCheckBox::nextCheckState
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI9QCheckBox)
+488 QCheckBox::_ZThn16_N9QCheckBoxD1Ev
+496 QCheckBox::_ZThn16_N9QCheckBoxD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QCheckBox
+ size=40 align=8
+ base size=40 base align=8
+QCheckBox (0x7f9550de80e0) 0
+ vptr=((& QCheckBox::_ZTV9QCheckBox) + 16u)
+ QAbstractButton (0x7f9550de8150) 0
+ primary-for QCheckBox (0x7f9550de80e0)
+ QWidget (0x7f9550ddc900) 0
+ primary-for QAbstractButton (0x7f9550de8150)
+ QObject (0x7f9550de81c0) 0
+ primary-for QWidget (0x7f9550ddc900)
+ QPaintDevice (0x7f9550de8230) 16
+ vptr=((& QCheckBox::_ZTV9QCheckBox) + 488u)
+
+Vtable for QComboBox
+QComboBox::_ZTV9QComboBox: 65u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QComboBox)
+16 QComboBox::metaObject
+24 QComboBox::qt_metacast
+32 QComboBox::qt_metacall
+40 QComboBox::~QComboBox
+48 QComboBox::~QComboBox
+56 QComboBox::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QComboBox::sizeHint
+136 QComboBox::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QComboBox::mousePressEvent
+168 QComboBox::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QComboBox::wheelEvent
+200 QComboBox::keyPressEvent
+208 QComboBox::keyReleaseEvent
+216 QComboBox::focusInEvent
+224 QComboBox::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QComboBox::paintEvent
+256 QWidget::moveEvent
+264 QComboBox::resizeEvent
+272 QWidget::closeEvent
+280 QComboBox::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QComboBox::showEvent
+344 QComboBox::hideEvent
+352 QWidget::x11Event
+360 QComboBox::changeEvent
+368 QWidget::metric
+376 QComboBox::inputMethodEvent
+384 QComboBox::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QComboBox::showPopup
+456 QComboBox::hidePopup
+464 (int (*)(...))-0x00000000000000010
+472 (int (*)(...))(& _ZTI9QComboBox)
+480 QComboBox::_ZThn16_N9QComboBoxD1Ev
+488 QComboBox::_ZThn16_N9QComboBoxD0Ev
+496 QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QComboBox
+ size=40 align=8
+ base size=40 base align=8
+QComboBox (0x7f9550e0b8c0) 0
+ vptr=((& QComboBox::_ZTV9QComboBox) + 16u)
+ QWidget (0x7f9550e06900) 0
+ primary-for QComboBox (0x7f9550e0b8c0)
+ QObject (0x7f9550e0b930) 0
+ primary-for QWidget (0x7f9550e06900)
+ QPaintDevice (0x7f9550e0b9a0) 16
+ vptr=((& QComboBox::_ZTV9QComboBox) + 480u)
+
+Vtable for QPushButton
+QPushButton::_ZTV11QPushButton: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QPushButton)
+16 QPushButton::metaObject
+24 QPushButton::qt_metacast
+32 QPushButton::qt_metacall
+40 QPushButton::~QPushButton
+48 QPushButton::~QPushButton
+56 QPushButton::event
+64 QObject::eventFilter
+72 QAbstractButton::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QPushButton::sizeHint
+136 QPushButton::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractButton::mousePressEvent
+168 QAbstractButton::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QAbstractButton::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QPushButton::keyPressEvent
+208 QAbstractButton::keyReleaseEvent
+216 QPushButton::focusInEvent
+224 QPushButton::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QPushButton::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QAbstractButton::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractButton::hitButton
+456 QAbstractButton::checkStateSet
+464 QAbstractButton::nextCheckState
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI11QPushButton)
+488 QPushButton::_ZThn16_N11QPushButtonD1Ev
+496 QPushButton::_ZThn16_N11QPushButtonD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPushButton
+ size=40 align=8
+ base size=40 base align=8
+QPushButton (0x7f9550e7a3f0) 0
+ vptr=((& QPushButton::_ZTV11QPushButton) + 16u)
+ QAbstractButton (0x7f9550e7a460) 0
+ primary-for QPushButton (0x7f9550e7a3f0)
+ QWidget (0x7f9550e76600) 0
+ primary-for QAbstractButton (0x7f9550e7a460)
+ QObject (0x7f9550e7a4d0) 0
+ primary-for QWidget (0x7f9550e76600)
+ QPaintDevice (0x7f9550e7a540) 16
+ vptr=((& QPushButton::_ZTV11QPushButton) + 488u)
+
+Vtable for QCommandLinkButton
+QCommandLinkButton::_ZTV18QCommandLinkButton: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QCommandLinkButton)
+16 QCommandLinkButton::metaObject
+24 QCommandLinkButton::qt_metacast
+32 QCommandLinkButton::qt_metacall
+40 QCommandLinkButton::~QCommandLinkButton
+48 QCommandLinkButton::~QCommandLinkButton
+56 QCommandLinkButton::event
+64 QObject::eventFilter
+72 QAbstractButton::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QCommandLinkButton::sizeHint
+136 QCommandLinkButton::minimumSizeHint
+144 QCommandLinkButton::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractButton::mousePressEvent
+168 QAbstractButton::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QAbstractButton::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QPushButton::keyPressEvent
+208 QAbstractButton::keyReleaseEvent
+216 QPushButton::focusInEvent
+224 QPushButton::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QCommandLinkButton::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QAbstractButton::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractButton::hitButton
+456 QAbstractButton::checkStateSet
+464 QAbstractButton::nextCheckState
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI18QCommandLinkButton)
+488 QCommandLinkButton::_ZThn16_N18QCommandLinkButtonD1Ev
+496 QCommandLinkButton::_ZThn16_N18QCommandLinkButtonD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QCommandLinkButton
+ size=40 align=8
+ base size=40 base align=8
+QCommandLinkButton (0x7f9550e9dd20) 0
+ vptr=((& QCommandLinkButton::_ZTV18QCommandLinkButton) + 16u)
+ QPushButton (0x7f9550e9dd90) 0
+ primary-for QCommandLinkButton (0x7f9550e9dd20)
+ QAbstractButton (0x7f9550e9de00) 0
+ primary-for QPushButton (0x7f9550e9dd90)
+ QWidget (0x7f9550ea2600) 0
+ primary-for QAbstractButton (0x7f9550e9de00)
+ QObject (0x7f9550e9de70) 0
+ primary-for QWidget (0x7f9550ea2600)
+ QPaintDevice (0x7f9550e9dee0) 16
+ vptr=((& QCommandLinkButton::_ZTV18QCommandLinkButton) + 488u)
+
+Vtable for QDateTimeEdit
+QDateTimeEdit::_ZTV13QDateTimeEdit: 70u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QDateTimeEdit)
+16 QDateTimeEdit::metaObject
+24 QDateTimeEdit::qt_metacast
+32 QDateTimeEdit::qt_metacall
+40 QDateTimeEdit::~QDateTimeEdit
+48 QDateTimeEdit::~QDateTimeEdit
+56 QDateTimeEdit::event
+64 QObject::eventFilter
+72 QAbstractSpinBox::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QDateTimeEdit::sizeHint
+136 QAbstractSpinBox::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QDateTimeEdit::mousePressEvent
+168 QAbstractSpinBox::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QAbstractSpinBox::mouseMoveEvent
+192 QDateTimeEdit::wheelEvent
+200 QDateTimeEdit::keyPressEvent
+208 QAbstractSpinBox::keyReleaseEvent
+216 QDateTimeEdit::focusInEvent
+224 QAbstractSpinBox::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QDateTimeEdit::paintEvent
+256 QWidget::moveEvent
+264 QAbstractSpinBox::resizeEvent
+272 QAbstractSpinBox::closeEvent
+280 QAbstractSpinBox::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QAbstractSpinBox::showEvent
+344 QAbstractSpinBox::hideEvent
+352 QWidget::x11Event
+360 QAbstractSpinBox::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QAbstractSpinBox::inputMethodQuery
+392 QDateTimeEdit::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QDateTimeEdit::validate
+456 QDateTimeEdit::fixup
+464 QDateTimeEdit::stepBy
+472 QDateTimeEdit::clear
+480 QDateTimeEdit::stepEnabled
+488 QDateTimeEdit::dateTimeFromText
+496 QDateTimeEdit::textFromDateTime
+504 (int (*)(...))-0x00000000000000010
+512 (int (*)(...))(& _ZTI13QDateTimeEdit)
+520 QDateTimeEdit::_ZThn16_N13QDateTimeEditD1Ev
+528 QDateTimeEdit::_ZThn16_N13QDateTimeEditD0Ev
+536 QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDateTimeEdit
+ size=40 align=8
+ base size=40 base align=8
+QDateTimeEdit (0x7f9550ebb8c0) 0
+ vptr=((& QDateTimeEdit::_ZTV13QDateTimeEdit) + 16u)
+ QAbstractSpinBox (0x7f9550ebb930) 0
+ primary-for QDateTimeEdit (0x7f9550ebb8c0)
+ QWidget (0x7f9550ec2000) 0
+ primary-for QAbstractSpinBox (0x7f9550ebb930)
+ QObject (0x7f9550ebb9a0) 0
+ primary-for QWidget (0x7f9550ec2000)
+ QPaintDevice (0x7f9550ebba10) 16
+ vptr=((& QDateTimeEdit::_ZTV13QDateTimeEdit) + 520u)
+
+Vtable for QTimeEdit
+QTimeEdit::_ZTV9QTimeEdit: 70u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTimeEdit)
+16 QTimeEdit::metaObject
+24 QTimeEdit::qt_metacast
+32 QTimeEdit::qt_metacall
+40 QTimeEdit::~QTimeEdit
+48 QTimeEdit::~QTimeEdit
+56 QDateTimeEdit::event
+64 QObject::eventFilter
+72 QAbstractSpinBox::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QDateTimeEdit::sizeHint
+136 QAbstractSpinBox::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QDateTimeEdit::mousePressEvent
+168 QAbstractSpinBox::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QAbstractSpinBox::mouseMoveEvent
+192 QDateTimeEdit::wheelEvent
+200 QDateTimeEdit::keyPressEvent
+208 QAbstractSpinBox::keyReleaseEvent
+216 QDateTimeEdit::focusInEvent
+224 QAbstractSpinBox::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QDateTimeEdit::paintEvent
+256 QWidget::moveEvent
+264 QAbstractSpinBox::resizeEvent
+272 QAbstractSpinBox::closeEvent
+280 QAbstractSpinBox::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QAbstractSpinBox::showEvent
+344 QAbstractSpinBox::hideEvent
+352 QWidget::x11Event
+360 QAbstractSpinBox::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QAbstractSpinBox::inputMethodQuery
+392 QDateTimeEdit::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QDateTimeEdit::validate
+456 QDateTimeEdit::fixup
+464 QDateTimeEdit::stepBy
+472 QDateTimeEdit::clear
+480 QDateTimeEdit::stepEnabled
+488 QDateTimeEdit::dateTimeFromText
+496 QDateTimeEdit::textFromDateTime
+504 (int (*)(...))-0x00000000000000010
+512 (int (*)(...))(& _ZTI9QTimeEdit)
+520 QTimeEdit::_ZThn16_N9QTimeEditD1Ev
+528 QTimeEdit::_ZThn16_N9QTimeEditD0Ev
+536 QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTimeEdit
+ size=40 align=8
+ base size=40 base align=8
+QTimeEdit (0x7f9550ced7e0) 0
+ vptr=((& QTimeEdit::_ZTV9QTimeEdit) + 16u)
+ QDateTimeEdit (0x7f9550ced850) 0
+ primary-for QTimeEdit (0x7f9550ced7e0)
+ QAbstractSpinBox (0x7f9550ced8c0) 0
+ primary-for QDateTimeEdit (0x7f9550ced850)
+ QWidget (0x7f9550ec2f80) 0
+ primary-for QAbstractSpinBox (0x7f9550ced8c0)
+ QObject (0x7f9550ced930) 0
+ primary-for QWidget (0x7f9550ec2f80)
+ QPaintDevice (0x7f9550ced9a0) 16
+ vptr=((& QTimeEdit::_ZTV9QTimeEdit) + 520u)
+
+Vtable for QDateEdit
+QDateEdit::_ZTV9QDateEdit: 70u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QDateEdit)
+16 QDateEdit::metaObject
+24 QDateEdit::qt_metacast
+32 QDateEdit::qt_metacall
+40 QDateEdit::~QDateEdit
+48 QDateEdit::~QDateEdit
+56 QDateTimeEdit::event
+64 QObject::eventFilter
+72 QAbstractSpinBox::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QDateTimeEdit::sizeHint
+136 QAbstractSpinBox::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QDateTimeEdit::mousePressEvent
+168 QAbstractSpinBox::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QAbstractSpinBox::mouseMoveEvent
+192 QDateTimeEdit::wheelEvent
+200 QDateTimeEdit::keyPressEvent
+208 QAbstractSpinBox::keyReleaseEvent
+216 QDateTimeEdit::focusInEvent
+224 QAbstractSpinBox::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QDateTimeEdit::paintEvent
+256 QWidget::moveEvent
+264 QAbstractSpinBox::resizeEvent
+272 QAbstractSpinBox::closeEvent
+280 QAbstractSpinBox::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QAbstractSpinBox::showEvent
+344 QAbstractSpinBox::hideEvent
+352 QWidget::x11Event
+360 QAbstractSpinBox::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QAbstractSpinBox::inputMethodQuery
+392 QDateTimeEdit::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QDateTimeEdit::validate
+456 QDateTimeEdit::fixup
+464 QDateTimeEdit::stepBy
+472 QDateTimeEdit::clear
+480 QDateTimeEdit::stepEnabled
+488 QDateTimeEdit::dateTimeFromText
+496 QDateTimeEdit::textFromDateTime
+504 (int (*)(...))-0x00000000000000010
+512 (int (*)(...))(& _ZTI9QDateEdit)
+520 QDateEdit::_ZThn16_N9QDateEditD1Ev
+528 QDateEdit::_ZThn16_N9QDateEditD0Ev
+536 QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDateEdit
+ size=40 align=8
+ base size=40 base align=8
+QDateEdit (0x7f9550d038c0) 0
+ vptr=((& QDateEdit::_ZTV9QDateEdit) + 16u)
+ QDateTimeEdit (0x7f9550d03930) 0
+ primary-for QDateEdit (0x7f9550d038c0)
+ QAbstractSpinBox (0x7f9550d039a0) 0
+ primary-for QDateTimeEdit (0x7f9550d03930)
+ QWidget (0x7f9550cf3680) 0
+ primary-for QAbstractSpinBox (0x7f9550d039a0)
+ QObject (0x7f9550d03a10) 0
+ primary-for QWidget (0x7f9550cf3680)
+ QPaintDevice (0x7f9550d03a80) 16
+ vptr=((& QDateEdit::_ZTV9QDateEdit) + 520u)
+
+Vtable for QDial
+QDial::_ZTV5QDial: 64u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QDial)
+16 QDial::metaObject
+24 QDial::qt_metacast
+32 QDial::qt_metacall
+40 QDial::~QDial
+48 QDial::~QDial
+56 QDial::event
+64 QObject::eventFilter
+72 QAbstractSlider::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QDial::sizeHint
+136 QDial::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QDial::mousePressEvent
+168 QDial::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QDial::mouseMoveEvent
+192 QAbstractSlider::wheelEvent
+200 QAbstractSlider::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QDial::paintEvent
+256 QWidget::moveEvent
+264 QDial::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QAbstractSlider::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QDial::sliderChange
+456 (int (*)(...))-0x00000000000000010
+464 (int (*)(...))(& _ZTI5QDial)
+472 QDial::_ZThn16_N5QDialD1Ev
+480 QDial::_ZThn16_N5QDialD0Ev
+488 QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDial
+ size=40 align=8
+ base size=40 base align=8
+QDial (0x7f9550d48690) 0
+ vptr=((& QDial::_ZTV5QDial) + 16u)
+ QAbstractSlider (0x7f9550d48700) 0
+ primary-for QDial (0x7f9550d48690)
+ QWidget (0x7f9550d49300) 0
+ primary-for QAbstractSlider (0x7f9550d48700)
+ QObject (0x7f9550d48770) 0
+ primary-for QWidget (0x7f9550d49300)
+ QPaintDevice (0x7f9550d487e0) 16
+ vptr=((& QDial::_ZTV5QDial) + 472u)
+
+Vtable for QDialogButtonBox
+QDialogButtonBox::_ZTV16QDialogButtonBox: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QDialogButtonBox)
+16 QDialogButtonBox::metaObject
+24 QDialogButtonBox::qt_metacast
+32 QDialogButtonBox::qt_metacall
+40 QDialogButtonBox::~QDialogButtonBox
+48 QDialogButtonBox::~QDialogButtonBox
+56 QDialogButtonBox::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QDialogButtonBox::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI16QDialogButtonBox)
+464 QDialogButtonBox::_ZThn16_N16QDialogButtonBoxD1Ev
+472 QDialogButtonBox::_ZThn16_N16QDialogButtonBoxD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDialogButtonBox
+ size=40 align=8
+ base size=40 base align=8
+QDialogButtonBox (0x7f9550d89310) 0
+ vptr=((& QDialogButtonBox::_ZTV16QDialogButtonBox) + 16u)
+ QWidget (0x7f9550d49d00) 0
+ primary-for QDialogButtonBox (0x7f9550d89310)
+ QObject (0x7f9550d89380) 0
+ primary-for QWidget (0x7f9550d49d00)
+ QPaintDevice (0x7f9550d893f0) 16
+ vptr=((& QDialogButtonBox::_ZTV16QDialogButtonBox) + 464u)
+
+Vtable for QDockWidget
+QDockWidget::_ZTV11QDockWidget: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QDockWidget)
+16 QDockWidget::metaObject
+24 QDockWidget::qt_metacast
+32 QDockWidget::qt_metacall
+40 QDockWidget::~QDockWidget
+48 QDockWidget::~QDockWidget
+56 QDockWidget::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QDockWidget::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QDockWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QDockWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI11QDockWidget)
+464 QDockWidget::_ZThn16_N11QDockWidgetD1Ev
+472 QDockWidget::_ZThn16_N11QDockWidgetD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDockWidget
+ size=40 align=8
+ base size=40 base align=8
+QDockWidget (0x7f9550bdb7e0) 0
+ vptr=((& QDockWidget::_ZTV11QDockWidget) + 16u)
+ QWidget (0x7f9550d95e80) 0
+ primary-for QDockWidget (0x7f9550bdb7e0)
+ QObject (0x7f9550bdb850) 0
+ primary-for QWidget (0x7f9550d95e80)
+ QPaintDevice (0x7f9550bdb8c0) 16
+ vptr=((& QDockWidget::_ZTV11QDockWidget) + 464u)
+
+Vtable for QFocusFrame
+QFocusFrame::_ZTV11QFocusFrame: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFocusFrame)
+16 QFocusFrame::metaObject
+24 QFocusFrame::qt_metacast
+32 QFocusFrame::qt_metacall
+40 QFocusFrame::~QFocusFrame
+48 QFocusFrame::~QFocusFrame
+56 QFocusFrame::event
+64 QFocusFrame::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QFocusFrame::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI11QFocusFrame)
+464 QFocusFrame::_ZThn16_N11QFocusFrameD1Ev
+472 QFocusFrame::_ZThn16_N11QFocusFrameD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFocusFrame
+ size=40 align=8
+ base size=40 base align=8
+QFocusFrame (0x7f9550c7e230) 0
+ vptr=((& QFocusFrame::_ZTV11QFocusFrame) + 16u)
+ QWidget (0x7f9550c2f680) 0
+ primary-for QFocusFrame (0x7f9550c7e230)
+ QObject (0x7f9550c7e2a0) 0
+ primary-for QWidget (0x7f9550c2f680)
+ QPaintDevice (0x7f9550c7e310) 16
+ vptr=((& QFocusFrame::_ZTV11QFocusFrame) + 464u)
+
+Vtable for QFontComboBox
+QFontComboBox::_ZTV13QFontComboBox: 65u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QFontComboBox)
+16 QFontComboBox::metaObject
+24 QFontComboBox::qt_metacast
+32 QFontComboBox::qt_metacall
+40 QFontComboBox::~QFontComboBox
+48 QFontComboBox::~QFontComboBox
+56 QFontComboBox::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QFontComboBox::sizeHint
+136 QComboBox::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QComboBox::mousePressEvent
+168 QComboBox::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QComboBox::wheelEvent
+200 QComboBox::keyPressEvent
+208 QComboBox::keyReleaseEvent
+216 QComboBox::focusInEvent
+224 QComboBox::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QComboBox::paintEvent
+256 QWidget::moveEvent
+264 QComboBox::resizeEvent
+272 QWidget::closeEvent
+280 QComboBox::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QComboBox::showEvent
+344 QComboBox::hideEvent
+352 QWidget::x11Event
+360 QComboBox::changeEvent
+368 QWidget::metric
+376 QComboBox::inputMethodEvent
+384 QComboBox::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QComboBox::showPopup
+456 QComboBox::hidePopup
+464 (int (*)(...))-0x00000000000000010
+472 (int (*)(...))(& _ZTI13QFontComboBox)
+480 QFontComboBox::_ZThn16_N13QFontComboBoxD1Ev
+488 QFontComboBox::_ZThn16_N13QFontComboBoxD0Ev
+496 QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFontComboBox
+ size=40 align=8
+ base size=40 base align=8
+QFontComboBox (0x7f9550c90d90) 0
+ vptr=((& QFontComboBox::_ZTV13QFontComboBox) + 16u)
+ QComboBox (0x7f9550c90e00) 0
+ primary-for QFontComboBox (0x7f9550c90d90)
+ QWidget (0x7f9550c97080) 0
+ primary-for QComboBox (0x7f9550c90e00)
+ QObject (0x7f9550c90e70) 0
+ primary-for QWidget (0x7f9550c97080)
+ QPaintDevice (0x7f9550c90ee0) 16
+ vptr=((& QFontComboBox::_ZTV13QFontComboBox) + 480u)
+
+Vtable for QGroupBox
+QGroupBox::_ZTV9QGroupBox: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QGroupBox)
+16 QGroupBox::metaObject
+24 QGroupBox::qt_metacast
+32 QGroupBox::qt_metacall
+40 QGroupBox::~QGroupBox
+48 QGroupBox::~QGroupBox
+56 QGroupBox::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QGroupBox::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QGroupBox::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QGroupBox::mousePressEvent
+168 QGroupBox::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QGroupBox::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QGroupBox::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QGroupBox::paintEvent
+256 QWidget::moveEvent
+264 QGroupBox::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QGroupBox::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI9QGroupBox)
+464 QGroupBox::_ZThn16_N9QGroupBoxD1Ev
+472 QGroupBox::_ZThn16_N9QGroupBoxD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QGroupBox
+ size=40 align=8
+ base size=40 base align=8
+QGroupBox (0x7f9550ae2a80) 0
+ vptr=((& QGroupBox::_ZTV9QGroupBox) + 16u)
+ QWidget (0x7f9550ae3280) 0
+ primary-for QGroupBox (0x7f9550ae2a80)
+ QObject (0x7f9550ae2af0) 0
+ primary-for QWidget (0x7f9550ae3280)
+ QPaintDevice (0x7f9550ae2b60) 16
+ vptr=((& QGroupBox::_ZTV9QGroupBox) + 464u)
+
+Vtable for QLabel
+QLabel::_ZTV6QLabel: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QLabel)
+16 QLabel::metaObject
+24 QLabel::qt_metacast
+32 QLabel::qt_metacall
+40 QLabel::~QLabel
+48 QLabel::~QLabel
+56 QLabel::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QLabel::sizeHint
+136 QLabel::minimumSizeHint
+144 QLabel::heightForWidth
+152 QWidget::paintEngine
+160 QLabel::mousePressEvent
+168 QLabel::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QLabel::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QLabel::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QLabel::focusInEvent
+224 QLabel::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QLabel::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QLabel::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QLabel::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QLabel::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI6QLabel)
+464 QLabel::_ZThn16_N6QLabelD1Ev
+472 QLabel::_ZThn16_N6QLabelD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QLabel
+ size=40 align=8
+ base size=40 base align=8
+QLabel (0x7f9550b21700) 0
+ vptr=((& QLabel::_ZTV6QLabel) + 16u)
+ QFrame (0x7f9550b21770) 0
+ primary-for QLabel (0x7f9550b21700)
+ QWidget (0x7f9550ae3c80) 0
+ primary-for QFrame (0x7f9550b21770)
+ QObject (0x7f9550b217e0) 0
+ primary-for QWidget (0x7f9550ae3c80)
+ QPaintDevice (0x7f9550b21850) 16
+ vptr=((& QLabel::_ZTV6QLabel) + 464u)
+
+Vtable for QLCDNumber
+QLCDNumber::_ZTV10QLCDNumber: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QLCDNumber)
+16 QLCDNumber::metaObject
+24 QLCDNumber::qt_metacast
+32 QLCDNumber::qt_metacall
+40 QLCDNumber::~QLCDNumber
+48 QLCDNumber::~QLCDNumber
+56 QLCDNumber::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QLCDNumber::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QLCDNumber::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI10QLCDNumber)
+464 QLCDNumber::_ZThn16_N10QLCDNumberD1Ev
+472 QLCDNumber::_ZThn16_N10QLCDNumberD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QLCDNumber
+ size=40 align=8
+ base size=40 base align=8
+QLCDNumber (0x7f9550b4d850) 0
+ vptr=((& QLCDNumber::_ZTV10QLCDNumber) + 16u)
+ QFrame (0x7f9550b4d8c0) 0
+ primary-for QLCDNumber (0x7f9550b4d850)
+ QWidget (0x7f9550b47880) 0
+ primary-for QFrame (0x7f9550b4d8c0)
+ QObject (0x7f9550b4d930) 0
+ primary-for QWidget (0x7f9550b47880)
+ QPaintDevice (0x7f9550b4d9a0) 16
+ vptr=((& QLCDNumber::_ZTV10QLCDNumber) + 464u)
+
+Vtable for QMainWindow
+QMainWindow::_ZTV11QMainWindow: 64u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QMainWindow)
+16 QMainWindow::metaObject
+24 QMainWindow::qt_metacast
+32 QMainWindow::qt_metacall
+40 QMainWindow::~QMainWindow
+48 QMainWindow::~QMainWindow
+56 QMainWindow::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QMainWindow::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QMainWindow::createPopupMenu
+456 (int (*)(...))-0x00000000000000010
+464 (int (*)(...))(& _ZTI11QMainWindow)
+472 QMainWindow::_ZThn16_N11QMainWindowD1Ev
+480 QMainWindow::_ZThn16_N11QMainWindowD0Ev
+488 QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMainWindow
+ size=40 align=8
+ base size=40 base align=8
+QMainWindow (0x7f9550b7a230) 0
+ vptr=((& QMainWindow::_ZTV11QMainWindow) + 16u)
+ QWidget (0x7f9550b6fa00) 0
+ primary-for QMainWindow (0x7f9550b7a230)
+ QObject (0x7f9550b7a2a0) 0
+ primary-for QWidget (0x7f9550b6fa00)
+ QPaintDevice (0x7f9550b7a310) 16
+ vptr=((& QMainWindow::_ZTV11QMainWindow) + 472u)
+
+Vtable for QMdiArea
+QMdiArea::_ZTV8QMdiArea: 65u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QMdiArea)
+16 QMdiArea::metaObject
+24 QMdiArea::qt_metacast
+32 QMdiArea::qt_metacall
+40 QMdiArea::~QMdiArea
+48 QMdiArea::~QMdiArea
+56 QMdiArea::event
+64 QMdiArea::eventFilter
+72 QMdiArea::timerEvent
+80 QMdiArea::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QMdiArea::sizeHint
+136 QMdiArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractScrollArea::mousePressEvent
+168 QAbstractScrollArea::mouseReleaseEvent
+176 QAbstractScrollArea::mouseDoubleClickEvent
+184 QAbstractScrollArea::mouseMoveEvent
+192 QAbstractScrollArea::wheelEvent
+200 QAbstractScrollArea::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QMdiArea::paintEvent
+256 QWidget::moveEvent
+264 QMdiArea::resizeEvent
+272 QWidget::closeEvent
+280 QAbstractScrollArea::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QAbstractScrollArea::dragEnterEvent
+312 QAbstractScrollArea::dragMoveEvent
+320 QAbstractScrollArea::dragLeaveEvent
+328 QAbstractScrollArea::dropEvent
+336 QMdiArea::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QMdiArea::viewportEvent
+456 QMdiArea::scrollContentsBy
+464 (int (*)(...))-0x00000000000000010
+472 (int (*)(...))(& _ZTI8QMdiArea)
+480 QMdiArea::_ZThn16_N8QMdiAreaD1Ev
+488 QMdiArea::_ZThn16_N8QMdiAreaD0Ev
+496 QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMdiArea
+ size=40 align=8
+ base size=40 base align=8
+QMdiArea (0x7f95509f6540) 0
+ vptr=((& QMdiArea::_ZTV8QMdiArea) + 16u)
+ QAbstractScrollArea (0x7f95509f65b0) 0
+ primary-for QMdiArea (0x7f95509f6540)
+ QFrame (0x7f95509f6620) 0
+ primary-for QAbstractScrollArea (0x7f95509f65b0)
+ QWidget (0x7f9550ba0c00) 0
+ primary-for QFrame (0x7f95509f6620)
+ QObject (0x7f95509f6690) 0
+ primary-for QWidget (0x7f9550ba0c00)
+ QPaintDevice (0x7f95509f6700) 16
+ vptr=((& QMdiArea::_ZTV8QMdiArea) + 480u)
+
+Vtable for QMdiSubWindow
+QMdiSubWindow::_ZTV13QMdiSubWindow: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QMdiSubWindow)
+16 QMdiSubWindow::metaObject
+24 QMdiSubWindow::qt_metacast
+32 QMdiSubWindow::qt_metacall
+40 QMdiSubWindow::~QMdiSubWindow
+48 QMdiSubWindow::~QMdiSubWindow
+56 QMdiSubWindow::event
+64 QMdiSubWindow::eventFilter
+72 QMdiSubWindow::timerEvent
+80 QMdiSubWindow::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QMdiSubWindow::sizeHint
+136 QMdiSubWindow::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QMdiSubWindow::mousePressEvent
+168 QMdiSubWindow::mouseReleaseEvent
+176 QMdiSubWindow::mouseDoubleClickEvent
+184 QMdiSubWindow::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QMdiSubWindow::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QMdiSubWindow::focusInEvent
+224 QMdiSubWindow::focusOutEvent
+232 QWidget::enterEvent
+240 QMdiSubWindow::leaveEvent
+248 QMdiSubWindow::paintEvent
+256 QMdiSubWindow::moveEvent
+264 QMdiSubWindow::resizeEvent
+272 QMdiSubWindow::closeEvent
+280 QMdiSubWindow::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QMdiSubWindow::showEvent
+344 QMdiSubWindow::hideEvent
+352 QWidget::x11Event
+360 QMdiSubWindow::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI13QMdiSubWindow)
+464 QMdiSubWindow::_ZThn16_N13QMdiSubWindowD1Ev
+472 QMdiSubWindow::_ZThn16_N13QMdiSubWindowD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMdiSubWindow
+ size=40 align=8
+ base size=40 base align=8
+QMdiSubWindow (0x7f9550a50a80) 0
+ vptr=((& QMdiSubWindow::_ZTV13QMdiSubWindow) + 16u)
+ QWidget (0x7f9550a01f00) 0
+ primary-for QMdiSubWindow (0x7f9550a50a80)
+ QObject (0x7f9550a50af0) 0
+ primary-for QWidget (0x7f9550a01f00)
+ QPaintDevice (0x7f9550a50b60) 16
+ vptr=((& QMdiSubWindow::_ZTV13QMdiSubWindow) + 464u)
+
+Vtable for QMenu
+QMenu::_ZTV5QMenu: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QMenu)
+16 QMenu::metaObject
+24 QMenu::qt_metacast
+32 QMenu::qt_metacall
+40 QMenu::~QMenu
+48 QMenu::~QMenu
+56 QMenu::event
+64 QObject::eventFilter
+72 QMenu::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QMenu::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QMenu::mousePressEvent
+168 QMenu::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QMenu::mouseMoveEvent
+192 QMenu::wheelEvent
+200 QMenu::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QMenu::enterEvent
+240 QMenu::leaveEvent
+248 QMenu::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QMenu::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QMenu::hideEvent
+352 QWidget::x11Event
+360 QMenu::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QMenu::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI5QMenu)
+464 QMenu::_ZThn16_N5QMenuD1Ev
+472 QMenu::_ZThn16_N5QMenuD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMenu
+ size=40 align=8
+ base size=40 base align=8
+QMenu (0x7f9550aca930) 0
+ vptr=((& QMenu::_ZTV5QMenu) + 16u)
+ QWidget (0x7f95508ec100) 0
+ primary-for QMenu (0x7f9550aca930)
+ QObject (0x7f9550aca9a0) 0
+ primary-for QWidget (0x7f95508ec100)
+ QPaintDevice (0x7f9550acaa10) 16
+ vptr=((& QMenu::_ZTV5QMenu) + 464u)
+
+Vtable for QMenuBar
+QMenuBar::_ZTV8QMenuBar: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QMenuBar)
+16 QMenuBar::metaObject
+24 QMenuBar::qt_metacast
+32 QMenuBar::qt_metacall
+40 QMenuBar::~QMenuBar
+48 QMenuBar::~QMenuBar
+56 QMenuBar::event
+64 QMenuBar::eventFilter
+72 QMenuBar::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QMenuBar::setVisible
+128 QMenuBar::sizeHint
+136 QMenuBar::minimumSizeHint
+144 QMenuBar::heightForWidth
+152 QWidget::paintEngine
+160 QMenuBar::mousePressEvent
+168 QMenuBar::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QMenuBar::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QMenuBar::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QMenuBar::focusInEvent
+224 QMenuBar::focusOutEvent
+232 QWidget::enterEvent
+240 QMenuBar::leaveEvent
+248 QMenuBar::paintEvent
+256 QWidget::moveEvent
+264 QMenuBar::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QMenuBar::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QMenuBar::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI8QMenuBar)
+464 QMenuBar::_ZThn16_N8QMenuBarD1Ev
+472 QMenuBar::_ZThn16_N8QMenuBarD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMenuBar
+ size=40 align=8
+ base size=40 base align=8
+QMenuBar (0x7f9550991770) 0
+ vptr=((& QMenuBar::_ZTV8QMenuBar) + 16u)
+ QWidget (0x7f9550990980) 0
+ primary-for QMenuBar (0x7f9550991770)
+ QObject (0x7f95509917e0) 0
+ primary-for QWidget (0x7f9550990980)
+ QPaintDevice (0x7f9550991850) 16
+ vptr=((& QMenuBar::_ZTV8QMenuBar) + 464u)
+
+Vtable for QMenuItem
+QMenuItem::_ZTV9QMenuItem: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QMenuItem)
+16 QMenuItem::metaObject
+24 QMenuItem::qt_metacast
+32 QMenuItem::qt_metacall
+40 QMenuItem::~QMenuItem
+48 QMenuItem::~QMenuItem
+56 QAction::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QMenuItem
+ size=16 align=8
+ base size=16 base align=8
+QMenuItem (0x7f95508334d0) 0
+ vptr=((& QMenuItem::_ZTV9QMenuItem) + 16u)
+ QAction (0x7f9550833540) 0
+ primary-for QMenuItem (0x7f95508334d0)
+ QObject (0x7f95508335b0) 0
+ primary-for QAction (0x7f9550833540)
+
+Class QTextEdit::ExtraSelection
+ size=24 align=8
+ base size=24 base align=8
+QTextEdit::ExtraSelection (0x7f9550853700) 0
+
+Vtable for QTextEdit
+QTextEdit::_ZTV9QTextEdit: 69u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTextEdit)
+16 QTextEdit::metaObject
+24 QTextEdit::qt_metacast
+32 QTextEdit::qt_metacall
+40 QTextEdit::~QTextEdit
+48 QTextEdit::~QTextEdit
+56 QTextEdit::event
+64 QObject::eventFilter
+72 QTextEdit::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QTextEdit::mousePressEvent
+168 QTextEdit::mouseReleaseEvent
+176 QTextEdit::mouseDoubleClickEvent
+184 QTextEdit::mouseMoveEvent
+192 QTextEdit::wheelEvent
+200 QTextEdit::keyPressEvent
+208 QTextEdit::keyReleaseEvent
+216 QTextEdit::focusInEvent
+224 QTextEdit::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QTextEdit::paintEvent
+256 QWidget::moveEvent
+264 QTextEdit::resizeEvent
+272 QWidget::closeEvent
+280 QTextEdit::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QTextEdit::dragEnterEvent
+312 QTextEdit::dragMoveEvent
+320 QTextEdit::dragLeaveEvent
+328 QTextEdit::dropEvent
+336 QTextEdit::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QTextEdit::changeEvent
+368 QWidget::metric
+376 QTextEdit::inputMethodEvent
+384 QTextEdit::inputMethodQuery
+392 QTextEdit::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractScrollArea::viewportEvent
+456 QTextEdit::scrollContentsBy
+464 QTextEdit::loadResource
+472 QTextEdit::createMimeDataFromSelection
+480 QTextEdit::canInsertFromMimeData
+488 QTextEdit::insertFromMimeData
+496 (int (*)(...))-0x00000000000000010
+504 (int (*)(...))(& _ZTI9QTextEdit)
+512 QTextEdit::_ZThn16_N9QTextEditD1Ev
+520 QTextEdit::_ZThn16_N9QTextEditD0Ev
+528 QWidget::_ZThn16_NK7QWidget7devTypeEv
+536 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+544 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTextEdit
+ size=40 align=8
+ base size=40 base align=8
+QTextEdit (0x7f9550842770) 0
+ vptr=((& QTextEdit::_ZTV9QTextEdit) + 16u)
+ QAbstractScrollArea (0x7f95508427e0) 0
+ primary-for QTextEdit (0x7f9550842770)
+ QFrame (0x7f9550842850) 0
+ primary-for QAbstractScrollArea (0x7f95508427e0)
+ QWidget (0x7f9550830b00) 0
+ primary-for QFrame (0x7f9550842850)
+ QObject (0x7f95508428c0) 0
+ primary-for QWidget (0x7f9550830b00)
+ QPaintDevice (0x7f9550842930) 16
+ vptr=((& QTextEdit::_ZTV9QTextEdit) + 512u)
+
+Vtable for QPlainTextEdit
+QPlainTextEdit::_ZTV14QPlainTextEdit: 69u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QPlainTextEdit)
+16 QPlainTextEdit::metaObject
+24 QPlainTextEdit::qt_metacast
+32 QPlainTextEdit::qt_metacall
+40 QPlainTextEdit::~QPlainTextEdit
+48 QPlainTextEdit::~QPlainTextEdit
+56 QPlainTextEdit::event
+64 QObject::eventFilter
+72 QPlainTextEdit::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QPlainTextEdit::mousePressEvent
+168 QPlainTextEdit::mouseReleaseEvent
+176 QPlainTextEdit::mouseDoubleClickEvent
+184 QPlainTextEdit::mouseMoveEvent
+192 QPlainTextEdit::wheelEvent
+200 QPlainTextEdit::keyPressEvent
+208 QPlainTextEdit::keyReleaseEvent
+216 QPlainTextEdit::focusInEvent
+224 QPlainTextEdit::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QPlainTextEdit::paintEvent
+256 QWidget::moveEvent
+264 QPlainTextEdit::resizeEvent
+272 QWidget::closeEvent
+280 QPlainTextEdit::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QPlainTextEdit::dragEnterEvent
+312 QPlainTextEdit::dragMoveEvent
+320 QPlainTextEdit::dragLeaveEvent
+328 QPlainTextEdit::dropEvent
+336 QPlainTextEdit::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QPlainTextEdit::changeEvent
+368 QWidget::metric
+376 QPlainTextEdit::inputMethodEvent
+384 QPlainTextEdit::inputMethodQuery
+392 QPlainTextEdit::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractScrollArea::viewportEvent
+456 QPlainTextEdit::scrollContentsBy
+464 QPlainTextEdit::loadResource
+472 QPlainTextEdit::createMimeDataFromSelection
+480 QPlainTextEdit::canInsertFromMimeData
+488 QPlainTextEdit::insertFromMimeData
+496 (int (*)(...))-0x00000000000000010
+504 (int (*)(...))(& _ZTI14QPlainTextEdit)
+512 QPlainTextEdit::_ZThn16_N14QPlainTextEditD1Ev
+520 QPlainTextEdit::_ZThn16_N14QPlainTextEditD0Ev
+528 QWidget::_ZThn16_NK7QWidget7devTypeEv
+536 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+544 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPlainTextEdit
+ size=40 align=8
+ base size=40 base align=8
+QPlainTextEdit (0x7f95506ea8c0) 0
+ vptr=((& QPlainTextEdit::_ZTV14QPlainTextEdit) + 16u)
+ QAbstractScrollArea (0x7f95506ea930) 0
+ primary-for QPlainTextEdit (0x7f95506ea8c0)
+ QFrame (0x7f95506ea9a0) 0
+ primary-for QAbstractScrollArea (0x7f95506ea930)
+ QWidget (0x7f95506e9400) 0
+ primary-for QFrame (0x7f95506ea9a0)
+ QObject (0x7f95506eaa10) 0
+ primary-for QWidget (0x7f95506e9400)
+ QPaintDevice (0x7f95506eaa80) 16
+ vptr=((& QPlainTextEdit::_ZTV14QPlainTextEdit) + 512u)
+
+Vtable for QPlainTextDocumentLayout
+QPlainTextDocumentLayout::_ZTV24QPlainTextDocumentLayout: 24u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QPlainTextDocumentLayout)
+16 QPlainTextDocumentLayout::metaObject
+24 QPlainTextDocumentLayout::qt_metacast
+32 QPlainTextDocumentLayout::qt_metacall
+40 QPlainTextDocumentLayout::~QPlainTextDocumentLayout
+48 QPlainTextDocumentLayout::~QPlainTextDocumentLayout
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QPlainTextDocumentLayout::draw
+120 QPlainTextDocumentLayout::hitTest
+128 QPlainTextDocumentLayout::pageCount
+136 QPlainTextDocumentLayout::documentSize
+144 QPlainTextDocumentLayout::frameBoundingRect
+152 QPlainTextDocumentLayout::blockBoundingRect
+160 QPlainTextDocumentLayout::documentChanged
+168 QAbstractTextDocumentLayout::resizeInlineObject
+176 QAbstractTextDocumentLayout::positionInlineObject
+184 QAbstractTextDocumentLayout::drawInlineObject
+
+Class QPlainTextDocumentLayout
+ size=16 align=8
+ base size=16 base align=8
+QPlainTextDocumentLayout (0x7f955074c690) 0
+ vptr=((& QPlainTextDocumentLayout::_ZTV24QPlainTextDocumentLayout) + 16u)
+ QAbstractTextDocumentLayout (0x7f955074c700) 0
+ primary-for QPlainTextDocumentLayout (0x7f955074c690)
+ QObject (0x7f955074c770) 0
+ primary-for QAbstractTextDocumentLayout (0x7f955074c700)
+
+Vtable for QPrintPreviewWidget
+QPrintPreviewWidget::_ZTV19QPrintPreviewWidget: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QPrintPreviewWidget)
+16 QPrintPreviewWidget::metaObject
+24 QPrintPreviewWidget::qt_metacast
+32 QPrintPreviewWidget::qt_metacall
+40 QPrintPreviewWidget::~QPrintPreviewWidget
+48 QPrintPreviewWidget::~QPrintPreviewWidget
+56 QWidget::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QPrintPreviewWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI19QPrintPreviewWidget)
+464 QPrintPreviewWidget::_ZThn16_N19QPrintPreviewWidgetD1Ev
+472 QPrintPreviewWidget::_ZThn16_N19QPrintPreviewWidgetD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPrintPreviewWidget
+ size=48 align=8
+ base size=48 base align=8
+QPrintPreviewWidget (0x7f9550763b60) 0
+ vptr=((& QPrintPreviewWidget::_ZTV19QPrintPreviewWidget) + 16u)
+ QWidget (0x7f955075e600) 0
+ primary-for QPrintPreviewWidget (0x7f9550763b60)
+ QObject (0x7f9550763bd0) 0
+ primary-for QWidget (0x7f955075e600)
+ QPaintDevice (0x7f9550763c40) 16
+ vptr=((& QPrintPreviewWidget::_ZTV19QPrintPreviewWidget) + 464u)
+
+Vtable for QProgressBar
+QProgressBar::_ZTV12QProgressBar: 64u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QProgressBar)
+16 QProgressBar::metaObject
+24 QProgressBar::qt_metacast
+32 QProgressBar::qt_metacall
+40 QProgressBar::~QProgressBar
+48 QProgressBar::~QProgressBar
+56 QProgressBar::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QProgressBar::sizeHint
+136 QProgressBar::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QProgressBar::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QProgressBar::text
+456 (int (*)(...))-0x00000000000000010
+464 (int (*)(...))(& _ZTI12QProgressBar)
+472 QProgressBar::_ZThn16_N12QProgressBarD1Ev
+480 QProgressBar::_ZThn16_N12QProgressBarD0Ev
+488 QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QProgressBar
+ size=40 align=8
+ base size=40 base align=8
+QProgressBar (0x7f9550786700) 0
+ vptr=((& QProgressBar::_ZTV12QProgressBar) + 16u)
+ QWidget (0x7f9550788300) 0
+ primary-for QProgressBar (0x7f9550786700)
+ QObject (0x7f9550786770) 0
+ primary-for QWidget (0x7f9550788300)
+ QPaintDevice (0x7f95507867e0) 16
+ vptr=((& QProgressBar::_ZTV12QProgressBar) + 472u)
+
+Vtable for QRadioButton
+QRadioButton::_ZTV12QRadioButton: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QRadioButton)
+16 QRadioButton::metaObject
+24 QRadioButton::qt_metacast
+32 QRadioButton::qt_metacall
+40 QRadioButton::~QRadioButton
+48 QRadioButton::~QRadioButton
+56 QRadioButton::event
+64 QObject::eventFilter
+72 QAbstractButton::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QRadioButton::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractButton::mousePressEvent
+168 QAbstractButton::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QRadioButton::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QAbstractButton::keyPressEvent
+208 QAbstractButton::keyReleaseEvent
+216 QAbstractButton::focusInEvent
+224 QAbstractButton::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QRadioButton::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QAbstractButton::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QRadioButton::hitButton
+456 QAbstractButton::checkStateSet
+464 QAbstractButton::nextCheckState
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI12QRadioButton)
+488 QRadioButton::_ZThn16_N12QRadioButtonD1Ev
+496 QRadioButton::_ZThn16_N12QRadioButtonD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QRadioButton
+ size=40 align=8
+ base size=40 base align=8
+QRadioButton (0x7f95507ab540) 0
+ vptr=((& QRadioButton::_ZTV12QRadioButton) + 16u)
+ QAbstractButton (0x7f95507ab5b0) 0
+ primary-for QRadioButton (0x7f95507ab540)
+ QWidget (0x7f9550788e00) 0
+ primary-for QAbstractButton (0x7f95507ab5b0)
+ QObject (0x7f95507ab620) 0
+ primary-for QWidget (0x7f9550788e00)
+ QPaintDevice (0x7f95507ab690) 16
+ vptr=((& QRadioButton::_ZTV12QRadioButton) + 488u)
+
+Vtable for QScrollBar
+QScrollBar::_ZTV10QScrollBar: 64u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QScrollBar)
+16 QScrollBar::metaObject
+24 QScrollBar::qt_metacast
+32 QScrollBar::qt_metacall
+40 QScrollBar::~QScrollBar
+48 QScrollBar::~QScrollBar
+56 QScrollBar::event
+64 QObject::eventFilter
+72 QAbstractSlider::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QScrollBar::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QScrollBar::mousePressEvent
+168 QScrollBar::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QScrollBar::mouseMoveEvent
+192 QAbstractSlider::wheelEvent
+200 QAbstractSlider::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QScrollBar::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QScrollBar::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QScrollBar::hideEvent
+352 QWidget::x11Event
+360 QAbstractSlider::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QScrollBar::sliderChange
+456 (int (*)(...))-0x00000000000000010
+464 (int (*)(...))(& _ZTI10QScrollBar)
+472 QScrollBar::_ZThn16_N10QScrollBarD1Ev
+480 QScrollBar::_ZThn16_N10QScrollBarD0Ev
+488 QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QScrollBar
+ size=40 align=8
+ base size=40 base align=8
+QScrollBar (0x7f95507cc1c0) 0
+ vptr=((& QScrollBar::_ZTV10QScrollBar) + 16u)
+ QAbstractSlider (0x7f95507cc230) 0
+ primary-for QScrollBar (0x7f95507cc1c0)
+ QWidget (0x7f95507c0800) 0
+ primary-for QAbstractSlider (0x7f95507cc230)
+ QObject (0x7f95507cc2a0) 0
+ primary-for QWidget (0x7f95507c0800)
+ QPaintDevice (0x7f95507cc310) 16
+ vptr=((& QScrollBar::_ZTV10QScrollBar) + 472u)
+
+Vtable for QSizeGrip
+QSizeGrip::_ZTV9QSizeGrip: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSizeGrip)
+16 QSizeGrip::metaObject
+24 QSizeGrip::qt_metacast
+32 QSizeGrip::qt_metacall
+40 QSizeGrip::~QSizeGrip
+48 QSizeGrip::~QSizeGrip
+56 QSizeGrip::event
+64 QSizeGrip::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QSizeGrip::setVisible
+128 QSizeGrip::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QSizeGrip::mousePressEvent
+168 QSizeGrip::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QSizeGrip::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QSizeGrip::paintEvent
+256 QSizeGrip::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QSizeGrip::showEvent
+344 QSizeGrip::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI9QSizeGrip)
+464 QSizeGrip::_ZThn16_N9QSizeGripD1Ev
+472 QSizeGrip::_ZThn16_N9QSizeGripD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSizeGrip
+ size=40 align=8
+ base size=40 base align=8
+QSizeGrip (0x7f95505ea310) 0
+ vptr=((& QSizeGrip::_ZTV9QSizeGrip) + 16u)
+ QWidget (0x7f95505e8380) 0
+ primary-for QSizeGrip (0x7f95505ea310)
+ QObject (0x7f95505ea380) 0
+ primary-for QWidget (0x7f95505e8380)
+ QPaintDevice (0x7f95505ea3f0) 16
+ vptr=((& QSizeGrip::_ZTV9QSizeGrip) + 464u)
+
+Vtable for QSpinBox
+QSpinBox::_ZTV8QSpinBox: 70u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QSpinBox)
+16 QSpinBox::metaObject
+24 QSpinBox::qt_metacast
+32 QSpinBox::qt_metacall
+40 QSpinBox::~QSpinBox
+48 QSpinBox::~QSpinBox
+56 QSpinBox::event
+64 QObject::eventFilter
+72 QAbstractSpinBox::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractSpinBox::sizeHint
+136 QAbstractSpinBox::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractSpinBox::mousePressEvent
+168 QAbstractSpinBox::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QAbstractSpinBox::mouseMoveEvent
+192 QAbstractSpinBox::wheelEvent
+200 QAbstractSpinBox::keyPressEvent
+208 QAbstractSpinBox::keyReleaseEvent
+216 QAbstractSpinBox::focusInEvent
+224 QAbstractSpinBox::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QAbstractSpinBox::paintEvent
+256 QWidget::moveEvent
+264 QAbstractSpinBox::resizeEvent
+272 QAbstractSpinBox::closeEvent
+280 QAbstractSpinBox::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QAbstractSpinBox::showEvent
+344 QAbstractSpinBox::hideEvent
+352 QWidget::x11Event
+360 QAbstractSpinBox::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QAbstractSpinBox::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QSpinBox::validate
+456 QSpinBox::fixup
+464 QAbstractSpinBox::stepBy
+472 QAbstractSpinBox::clear
+480 QAbstractSpinBox::stepEnabled
+488 QSpinBox::valueFromText
+496 QSpinBox::textFromValue
+504 (int (*)(...))-0x00000000000000010
+512 (int (*)(...))(& _ZTI8QSpinBox)
+520 QSpinBox::_ZThn16_N8QSpinBoxD1Ev
+528 QSpinBox::_ZThn16_N8QSpinBoxD0Ev
+536 QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSpinBox
+ size=40 align=8
+ base size=40 base align=8
+QSpinBox (0x7f9550600e00) 0
+ vptr=((& QSpinBox::_ZTV8QSpinBox) + 16u)
+ QAbstractSpinBox (0x7f9550600e70) 0
+ primary-for QSpinBox (0x7f9550600e00)
+ QWidget (0x7f95505e8d80) 0
+ primary-for QAbstractSpinBox (0x7f9550600e70)
+ QObject (0x7f9550600ee0) 0
+ primary-for QWidget (0x7f95505e8d80)
+ QPaintDevice (0x7f9550600f50) 16
+ vptr=((& QSpinBox::_ZTV8QSpinBox) + 520u)
+
+Vtable for QDoubleSpinBox
+QDoubleSpinBox::_ZTV14QDoubleSpinBox: 70u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QDoubleSpinBox)
+16 QDoubleSpinBox::metaObject
+24 QDoubleSpinBox::qt_metacast
+32 QDoubleSpinBox::qt_metacall
+40 QDoubleSpinBox::~QDoubleSpinBox
+48 QDoubleSpinBox::~QDoubleSpinBox
+56 QAbstractSpinBox::event
+64 QObject::eventFilter
+72 QAbstractSpinBox::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractSpinBox::sizeHint
+136 QAbstractSpinBox::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QAbstractSpinBox::mousePressEvent
+168 QAbstractSpinBox::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QAbstractSpinBox::mouseMoveEvent
+192 QAbstractSpinBox::wheelEvent
+200 QAbstractSpinBox::keyPressEvent
+208 QAbstractSpinBox::keyReleaseEvent
+216 QAbstractSpinBox::focusInEvent
+224 QAbstractSpinBox::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QAbstractSpinBox::paintEvent
+256 QWidget::moveEvent
+264 QAbstractSpinBox::resizeEvent
+272 QAbstractSpinBox::closeEvent
+280 QAbstractSpinBox::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QAbstractSpinBox::showEvent
+344 QAbstractSpinBox::hideEvent
+352 QWidget::x11Event
+360 QAbstractSpinBox::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QAbstractSpinBox::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QDoubleSpinBox::validate
+456 QDoubleSpinBox::fixup
+464 QAbstractSpinBox::stepBy
+472 QAbstractSpinBox::clear
+480 QAbstractSpinBox::stepEnabled
+488 QDoubleSpinBox::valueFromText
+496 QDoubleSpinBox::textFromValue
+504 (int (*)(...))-0x00000000000000010
+512 (int (*)(...))(& _ZTI14QDoubleSpinBox)
+520 QDoubleSpinBox::_ZThn16_N14QDoubleSpinBoxD1Ev
+528 QDoubleSpinBox::_ZThn16_N14QDoubleSpinBoxD0Ev
+536 QWidget::_ZThn16_NK7QWidget7devTypeEv
+544 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+552 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDoubleSpinBox
+ size=40 align=8
+ base size=40 base align=8
+QDoubleSpinBox (0x7f955062d770) 0
+ vptr=((& QDoubleSpinBox::_ZTV14QDoubleSpinBox) + 16u)
+ QAbstractSpinBox (0x7f955062d7e0) 0
+ primary-for QDoubleSpinBox (0x7f955062d770)
+ QWidget (0x7f9550620f00) 0
+ primary-for QAbstractSpinBox (0x7f955062d7e0)
+ QObject (0x7f955062d850) 0
+ primary-for QWidget (0x7f9550620f00)
+ QPaintDevice (0x7f955062d8c0) 16
+ vptr=((& QDoubleSpinBox::_ZTV14QDoubleSpinBox) + 520u)
+
+Vtable for QSplashScreen
+QSplashScreen::_ZTV13QSplashScreen: 64u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSplashScreen)
+16 QSplashScreen::metaObject
+24 QSplashScreen::qt_metacast
+32 QSplashScreen::qt_metacall
+40 QSplashScreen::~QSplashScreen
+48 QSplashScreen::~QSplashScreen
+56 QSplashScreen::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QSplashScreen::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWidget::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QSplashScreen::drawContents
+456 (int (*)(...))-0x00000000000000010
+464 (int (*)(...))(& _ZTI13QSplashScreen)
+472 QSplashScreen::_ZThn16_N13QSplashScreenD1Ev
+480 QSplashScreen::_ZThn16_N13QSplashScreenD0Ev
+488 QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSplashScreen
+ size=40 align=8
+ base size=40 base align=8
+QSplashScreen (0x7f955064d230) 0
+ vptr=((& QSplashScreen::_ZTV13QSplashScreen) + 16u)
+ QWidget (0x7f9550630900) 0
+ primary-for QSplashScreen (0x7f955064d230)
+ QObject (0x7f955064d2a0) 0
+ primary-for QWidget (0x7f9550630900)
+ QPaintDevice (0x7f955064d310) 16
+ vptr=((& QSplashScreen::_ZTV13QSplashScreen) + 472u)
+
+Vtable for QSplitter
+QSplitter::_ZTV9QSplitter: 64u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSplitter)
+16 QSplitter::metaObject
+24 QSplitter::qt_metacast
+32 QSplitter::qt_metacall
+40 QSplitter::~QSplitter
+48 QSplitter::~QSplitter
+56 QSplitter::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QSplitter::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QSplitter::sizeHint
+136 QSplitter::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QFrame::paintEvent
+256 QWidget::moveEvent
+264 QSplitter::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QSplitter::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QSplitter::createHandle
+456 (int (*)(...))-0x00000000000000010
+464 (int (*)(...))(& _ZTI9QSplitter)
+472 QSplitter::_ZThn16_N9QSplitterD1Ev
+480 QSplitter::_ZThn16_N9QSplitterD0Ev
+488 QWidget::_ZThn16_NK7QWidget7devTypeEv
+496 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+504 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSplitter
+ size=40 align=8
+ base size=40 base align=8
+QSplitter (0x7f955066f310) 0
+ vptr=((& QSplitter::_ZTV9QSplitter) + 16u)
+ QFrame (0x7f955066f380) 0
+ primary-for QSplitter (0x7f955066f310)
+ QWidget (0x7f955066a580) 0
+ primary-for QFrame (0x7f955066f380)
+ QObject (0x7f955066f3f0) 0
+ primary-for QWidget (0x7f955066a580)
+ QPaintDevice (0x7f955066f460) 16
+ vptr=((& QSplitter::_ZTV9QSplitter) + 472u)
+
+Vtable for QSplitterHandle
+QSplitterHandle::_ZTV15QSplitterHandle: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSplitterHandle)
+16 QSplitterHandle::metaObject
+24 QSplitterHandle::qt_metacast
+32 QSplitterHandle::qt_metacall
+40 QSplitterHandle::~QSplitterHandle
+48 QSplitterHandle::~QSplitterHandle
+56 QSplitterHandle::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QSplitterHandle::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QSplitterHandle::mousePressEvent
+168 QSplitterHandle::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QSplitterHandle::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QSplitterHandle::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI15QSplitterHandle)
+464 QSplitterHandle::_ZThn16_N15QSplitterHandleD1Ev
+472 QSplitterHandle::_ZThn16_N15QSplitterHandleD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSplitterHandle
+ size=40 align=8
+ base size=40 base align=8
+QSplitterHandle (0x7f955069b230) 0
+ vptr=((& QSplitterHandle::_ZTV15QSplitterHandle) + 16u)
+ QWidget (0x7f9550697780) 0
+ primary-for QSplitterHandle (0x7f955069b230)
+ QObject (0x7f955069b2a0) 0
+ primary-for QWidget (0x7f9550697780)
+ QPaintDevice (0x7f955069b310) 16
+ vptr=((& QSplitterHandle::_ZTV15QSplitterHandle) + 464u)
+
+Vtable for QStackedWidget
+QStackedWidget::_ZTV14QStackedWidget: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QStackedWidget)
+16 QStackedWidget::metaObject
+24 QStackedWidget::qt_metacast
+32 QStackedWidget::qt_metacall
+40 QStackedWidget::~QStackedWidget
+48 QStackedWidget::~QStackedWidget
+56 QStackedWidget::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QFrame::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QFrame::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QFrame::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI14QStackedWidget)
+464 QStackedWidget::_ZThn16_N14QStackedWidgetD1Ev
+472 QStackedWidget::_ZThn16_N14QStackedWidgetD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QStackedWidget
+ size=40 align=8
+ base size=40 base align=8
+QStackedWidget (0x7f95506b4a10) 0
+ vptr=((& QStackedWidget::_ZTV14QStackedWidget) + 16u)
+ QFrame (0x7f95506b4a80) 0
+ primary-for QStackedWidget (0x7f95506b4a10)
+ QWidget (0x7f95506b7180) 0
+ primary-for QFrame (0x7f95506b4a80)
+ QObject (0x7f95506b4af0) 0
+ primary-for QWidget (0x7f95506b7180)
+ QPaintDevice (0x7f95506b4b60) 16
+ vptr=((& QStackedWidget::_ZTV14QStackedWidget) + 464u)
+
+Vtable for QStatusBar
+QStatusBar::_ZTV10QStatusBar: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QStatusBar)
+16 QStatusBar::metaObject
+24 QStatusBar::qt_metacast
+32 QStatusBar::qt_metacall
+40 QStatusBar::~QStatusBar
+48 QStatusBar::~QStatusBar
+56 QStatusBar::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QStatusBar::paintEvent
+256 QWidget::moveEvent
+264 QStatusBar::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QStatusBar::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QWidget::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI10QStatusBar)
+464 QStatusBar::_ZThn16_N10QStatusBarD1Ev
+472 QStatusBar::_ZThn16_N10QStatusBarD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QStatusBar
+ size=40 align=8
+ base size=40 base align=8
+QStatusBar (0x7f95504d28c0) 0
+ vptr=((& QStatusBar::_ZTV10QStatusBar) + 16u)
+ QWidget (0x7f95506b7b80) 0
+ primary-for QStatusBar (0x7f95504d28c0)
+ QObject (0x7f95504d2930) 0
+ primary-for QWidget (0x7f95506b7b80)
+ QPaintDevice (0x7f95504d29a0) 16
+ vptr=((& QStatusBar::_ZTV10QStatusBar) + 464u)
+
+Vtable for QTextBrowser
+QTextBrowser::_ZTV12QTextBrowser: 74u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTextBrowser)
+16 QTextBrowser::metaObject
+24 QTextBrowser::qt_metacast
+32 QTextBrowser::qt_metacall
+40 QTextBrowser::~QTextBrowser
+48 QTextBrowser::~QTextBrowser
+56 QTextBrowser::event
+64 QObject::eventFilter
+72 QTextEdit::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QAbstractScrollArea::sizeHint
+136 QAbstractScrollArea::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QTextBrowser::mousePressEvent
+168 QTextBrowser::mouseReleaseEvent
+176 QTextEdit::mouseDoubleClickEvent
+184 QTextBrowser::mouseMoveEvent
+192 QTextEdit::wheelEvent
+200 QTextBrowser::keyPressEvent
+208 QTextEdit::keyReleaseEvent
+216 QTextEdit::focusInEvent
+224 QTextBrowser::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QTextBrowser::paintEvent
+256 QWidget::moveEvent
+264 QTextEdit::resizeEvent
+272 QWidget::closeEvent
+280 QTextEdit::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QTextEdit::dragEnterEvent
+312 QTextEdit::dragMoveEvent
+320 QTextEdit::dragLeaveEvent
+328 QTextEdit::dropEvent
+336 QTextEdit::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QTextEdit::changeEvent
+368 QWidget::metric
+376 QTextEdit::inputMethodEvent
+384 QTextEdit::inputMethodQuery
+392 QTextBrowser::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QAbstractScrollArea::viewportEvent
+456 QTextEdit::scrollContentsBy
+464 QTextBrowser::loadResource
+472 QTextEdit::createMimeDataFromSelection
+480 QTextEdit::canInsertFromMimeData
+488 QTextEdit::insertFromMimeData
+496 QTextBrowser::setSource
+504 QTextBrowser::backward
+512 QTextBrowser::forward
+520 QTextBrowser::home
+528 QTextBrowser::reload
+536 (int (*)(...))-0x00000000000000010
+544 (int (*)(...))(& _ZTI12QTextBrowser)
+552 QTextBrowser::_ZThn16_N12QTextBrowserD1Ev
+560 QTextBrowser::_ZThn16_N12QTextBrowserD0Ev
+568 QWidget::_ZThn16_NK7QWidget7devTypeEv
+576 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+584 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTextBrowser
+ size=40 align=8
+ base size=40 base align=8
+QTextBrowser (0x7f95504f3e00) 0
+ vptr=((& QTextBrowser::_ZTV12QTextBrowser) + 16u)
+ QTextEdit (0x7f95504f3e70) 0
+ primary-for QTextBrowser (0x7f95504f3e00)
+ QAbstractScrollArea (0x7f95504f3ee0) 0
+ primary-for QTextEdit (0x7f95504f3e70)
+ QFrame (0x7f95504f3f50) 0
+ primary-for QAbstractScrollArea (0x7f95504f3ee0)
+ QWidget (0x7f95504eeb80) 0
+ primary-for QFrame (0x7f95504f3f50)
+ QObject (0x7f95504fa000) 0
+ primary-for QWidget (0x7f95504eeb80)
+ QPaintDevice (0x7f95504fa070) 16
+ vptr=((& QTextBrowser::_ZTV12QTextBrowser) + 552u)
+
+Vtable for QToolBar
+QToolBar::_ZTV8QToolBar: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QToolBar)
+16 QToolBar::metaObject
+24 QToolBar::qt_metacast
+32 QToolBar::qt_metacall
+40 QToolBar::~QToolBar
+48 QToolBar::~QToolBar
+56 QToolBar::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QToolBar::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWidget::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QToolBar::paintEvent
+256 QWidget::moveEvent
+264 QToolBar::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QToolBar::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QToolBar::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI8QToolBar)
+464 QToolBar::_ZThn16_N8QToolBarD1Ev
+472 QToolBar::_ZThn16_N8QToolBarD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QToolBar
+ size=40 align=8
+ base size=40 base align=8
+QToolBar (0x7f9550517a10) 0
+ vptr=((& QToolBar::_ZTV8QToolBar) + 16u)
+ QWidget (0x7f9550514580) 0
+ primary-for QToolBar (0x7f9550517a10)
+ QObject (0x7f9550517a80) 0
+ primary-for QWidget (0x7f9550514580)
+ QPaintDevice (0x7f9550517af0) 16
+ vptr=((& QToolBar::_ZTV8QToolBar) + 464u)
+
+Vtable for QToolBox
+QToolBox::_ZTV8QToolBox: 65u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QToolBox)
+16 QToolBox::metaObject
+24 QToolBox::qt_metacast
+32 QToolBox::qt_metacall
+40 QToolBox::~QToolBox
+48 QToolBox::~QToolBox
+56 QToolBox::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QFrame::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QFrame::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QToolBox::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QToolBox::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QToolBox::itemInserted
+456 QToolBox::itemRemoved
+464 (int (*)(...))-0x00000000000000010
+472 (int (*)(...))(& _ZTI8QToolBox)
+480 QToolBox::_ZThn16_N8QToolBoxD1Ev
+488 QToolBox::_ZThn16_N8QToolBoxD0Ev
+496 QWidget::_ZThn16_NK7QWidget7devTypeEv
+504 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+512 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QToolBox
+ size=40 align=8
+ base size=40 base align=8
+QToolBox (0x7f9550552850) 0
+ vptr=((& QToolBox::_ZTV8QToolBox) + 16u)
+ QFrame (0x7f95505528c0) 0
+ primary-for QToolBox (0x7f9550552850)
+ QWidget (0x7f9550550680) 0
+ primary-for QFrame (0x7f95505528c0)
+ QObject (0x7f9550552930) 0
+ primary-for QWidget (0x7f9550550680)
+ QPaintDevice (0x7f95505529a0) 16
+ vptr=((& QToolBox::_ZTV8QToolBox) + 480u)
+
+Vtable for QToolButton
+QToolButton::_ZTV11QToolButton: 66u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QToolButton)
+16 QToolButton::metaObject
+24 QToolButton::qt_metacast
+32 QToolButton::qt_metacall
+40 QToolButton::~QToolButton
+48 QToolButton::~QToolButton
+56 QToolButton::event
+64 QObject::eventFilter
+72 QToolButton::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QToolButton::sizeHint
+136 QToolButton::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QToolButton::mousePressEvent
+168 QToolButton::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QAbstractButton::mouseMoveEvent
+192 QWidget::wheelEvent
+200 QAbstractButton::keyPressEvent
+208 QAbstractButton::keyReleaseEvent
+216 QAbstractButton::focusInEvent
+224 QAbstractButton::focusOutEvent
+232 QToolButton::enterEvent
+240 QToolButton::leaveEvent
+248 QToolButton::paintEvent
+256 QWidget::moveEvent
+264 QWidget::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QToolButton::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWidget::showEvent
+344 QWidget::hideEvent
+352 QWidget::x11Event
+360 QToolButton::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 QToolButton::hitButton
+456 QAbstractButton::checkStateSet
+464 QToolButton::nextCheckState
+472 (int (*)(...))-0x00000000000000010
+480 (int (*)(...))(& _ZTI11QToolButton)
+488 QToolButton::_ZThn16_N11QToolButtonD1Ev
+496 QToolButton::_ZThn16_N11QToolButtonD0Ev
+504 QWidget::_ZThn16_NK7QWidget7devTypeEv
+512 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+520 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QToolButton
+ size=40 align=8
+ base size=40 base align=8
+QToolButton (0x7f955058c310) 0
+ vptr=((& QToolButton::_ZTV11QToolButton) + 16u)
+ QAbstractButton (0x7f955058c380) 0
+ primary-for QToolButton (0x7f955058c310)
+ QWidget (0x7f955058a400) 0
+ primary-for QAbstractButton (0x7f955058c380)
+ QObject (0x7f955058c3f0) 0
+ primary-for QWidget (0x7f955058a400)
+ QPaintDevice (0x7f955058c460) 16
+ vptr=((& QToolButton::_ZTV11QToolButton) + 488u)
+
+Vtable for QWorkspace
+QWorkspace::_ZTV10QWorkspace: 63u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QWorkspace)
+16 QWorkspace::metaObject
+24 QWorkspace::qt_metacast
+32 QWorkspace::qt_metacall
+40 QWorkspace::~QWorkspace
+48 QWorkspace::~QWorkspace
+56 QWorkspace::event
+64 QWorkspace::eventFilter
+72 QObject::timerEvent
+80 QWorkspace::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 QWidget::devType
+120 QWidget::setVisible
+128 QWorkspace::sizeHint
+136 QWidget::minimumSizeHint
+144 QWidget::heightForWidth
+152 QWidget::paintEngine
+160 QWidget::mousePressEvent
+168 QWidget::mouseReleaseEvent
+176 QWidget::mouseDoubleClickEvent
+184 QWidget::mouseMoveEvent
+192 QWorkspace::wheelEvent
+200 QWidget::keyPressEvent
+208 QWidget::keyReleaseEvent
+216 QWidget::focusInEvent
+224 QWidget::focusOutEvent
+232 QWidget::enterEvent
+240 QWidget::leaveEvent
+248 QWorkspace::paintEvent
+256 QWidget::moveEvent
+264 QWorkspace::resizeEvent
+272 QWidget::closeEvent
+280 QWidget::contextMenuEvent
+288 QWidget::tabletEvent
+296 QWidget::actionEvent
+304 QWidget::dragEnterEvent
+312 QWidget::dragMoveEvent
+320 QWidget::dragLeaveEvent
+328 QWidget::dropEvent
+336 QWorkspace::showEvent
+344 QWorkspace::hideEvent
+352 QWidget::x11Event
+360 QWorkspace::changeEvent
+368 QWidget::metric
+376 QWidget::inputMethodEvent
+384 QWidget::inputMethodQuery
+392 QWidget::focusNextPrevChild
+400 QWidget::styleChange
+408 QWidget::enabledChange
+416 QWidget::paletteChange
+424 QWidget::fontChange
+432 QWidget::windowActivationChange
+440 QWidget::languageChange
+448 (int (*)(...))-0x00000000000000010
+456 (int (*)(...))(& _ZTI10QWorkspace)
+464 QWorkspace::_ZThn16_N10QWorkspaceD1Ev
+472 QWorkspace::_ZThn16_N10QWorkspaceD0Ev
+480 QWidget::_ZThn16_NK7QWidget7devTypeEv
+488 QWidget::_ZThn16_NK7QWidget11paintEngineEv
+496 QWidget::_ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWorkspace
+ size=40 align=8
+ base size=40 base align=8
+QWorkspace (0x7f95503d2620) 0
+ vptr=((& QWorkspace::_ZTV10QWorkspace) + 16u)
+ QWidget (0x7f95503d6100) 0
+ primary-for QWorkspace (0x7f95503d2620)
+ QObject (0x7f95503d2690) 0
+ primary-for QWidget (0x7f95503d6100)
+ QPaintDevice (0x7f95503d2700) 16
+ vptr=((& QWorkspace::_ZTV10QWorkspace) + 464u)
+
+Class QAudioFormat
+ size=8 align=8
+ base size=8 base align=8
+QAudioFormat (0x7f955040d070) 0
+
+Class QAudioDeviceInfo
+ size=8 align=8
+ base size=8 base align=8
+QAudioDeviceInfo (0x7f95504184d0) 0
+
+Vtable for QAbstractAudioDeviceInfo
+QAbstractAudioDeviceInfo::_ZTV24QAbstractAudioDeviceInfo: 24u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractAudioDeviceInfo)
+16 QAbstractAudioDeviceInfo::metaObject
+24 QAbstractAudioDeviceInfo::qt_metacast
+32 QAbstractAudioDeviceInfo::qt_metacall
+40 QAbstractAudioDeviceInfo::~QAbstractAudioDeviceInfo
+48 QAbstractAudioDeviceInfo::~QAbstractAudioDeviceInfo
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 __cxa_pure_virtual
+160 __cxa_pure_virtual
+168 __cxa_pure_virtual
+176 __cxa_pure_virtual
+184 __cxa_pure_virtual
+
+Class QAbstractAudioDeviceInfo
+ size=16 align=8
+ base size=16 base align=8
+QAbstractAudioDeviceInfo (0x7f955042ce70) 0
+ vptr=((& QAbstractAudioDeviceInfo::_ZTV24QAbstractAudioDeviceInfo) + 16u)
+ QObject (0x7f955042cee0) 0
+ primary-for QAbstractAudioDeviceInfo (0x7f955042ce70)
+
+Vtable for QAbstractAudioOutput
+QAbstractAudioOutput::_ZTV20QAbstractAudioOutput: 30u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QAbstractAudioOutput)
+16 QAbstractAudioOutput::metaObject
+24 QAbstractAudioOutput::qt_metacast
+32 QAbstractAudioOutput::qt_metacall
+40 QAbstractAudioOutput::~QAbstractAudioOutput
+48 QAbstractAudioOutput::~QAbstractAudioOutput
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 __cxa_pure_virtual
+160 __cxa_pure_virtual
+168 __cxa_pure_virtual
+176 __cxa_pure_virtual
+184 __cxa_pure_virtual
+192 __cxa_pure_virtual
+200 __cxa_pure_virtual
+208 __cxa_pure_virtual
+216 __cxa_pure_virtual
+224 __cxa_pure_virtual
+232 __cxa_pure_virtual
+
+Class QAbstractAudioOutput
+ size=16 align=8
+ base size=16 base align=8
+QAbstractAudioOutput (0x7f955044e380) 0
+ vptr=((& QAbstractAudioOutput::_ZTV20QAbstractAudioOutput) + 16u)
+ QObject (0x7f955044e3f0) 0
+ primary-for QAbstractAudioOutput (0x7f955044e380)
+
+Vtable for QAbstractAudioInput
+QAbstractAudioInput::_ZTV19QAbstractAudioInput: 30u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractAudioInput)
+16 QAbstractAudioInput::metaObject
+24 QAbstractAudioInput::qt_metacast
+32 QAbstractAudioInput::qt_metacall
+40 QAbstractAudioInput::~QAbstractAudioInput
+48 QAbstractAudioInput::~QAbstractAudioInput
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 __cxa_pure_virtual
+160 __cxa_pure_virtual
+168 __cxa_pure_virtual
+176 __cxa_pure_virtual
+184 __cxa_pure_virtual
+192 __cxa_pure_virtual
+200 __cxa_pure_virtual
+208 __cxa_pure_virtual
+216 __cxa_pure_virtual
+224 __cxa_pure_virtual
+232 __cxa_pure_virtual
+
+Class QAbstractAudioInput
+ size=16 align=8
+ base size=16 base align=8
+QAbstractAudioInput (0x7f95504660e0) 0
+ vptr=((& QAbstractAudioInput::_ZTV19QAbstractAudioInput) + 16u)
+ QObject (0x7f9550466150) 0
+ primary-for QAbstractAudioInput (0x7f95504660e0)
+
+Vtable for QAudioEngineFactoryInterface
+QAudioEngineFactoryInterface::_ZTV28QAudioEngineFactoryInterface: 9u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI28QAudioEngineFactoryInterface)
+16 QAudioEngineFactoryInterface::~QAudioEngineFactoryInterface
+24 QAudioEngineFactoryInterface::~QAudioEngineFactoryInterface
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 __cxa_pure_virtual
+64 __cxa_pure_virtual
+
+Class QAudioEngineFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QAudioEngineFactoryInterface (0x7f9550466e70) 0 nearly-empty
+ vptr=((& QAudioEngineFactoryInterface::_ZTV28QAudioEngineFactoryInterface) + 16u)
+ QFactoryInterface (0x7f9550466ee0) 0 nearly-empty
+ primary-for QAudioEngineFactoryInterface (0x7f9550466e70)
+
+Vtable for QAudioEnginePlugin
+QAudioEnginePlugin::_ZTV18QAudioEnginePlugin: 28u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAudioEnginePlugin)
+16 QAudioEnginePlugin::metaObject
+24 QAudioEnginePlugin::qt_metacast
+32 QAudioEnginePlugin::qt_metacall
+40 QAudioEnginePlugin::~QAudioEnginePlugin
+48 QAudioEnginePlugin::~QAudioEnginePlugin
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 __cxa_pure_virtual
+128 __cxa_pure_virtual
+136 __cxa_pure_virtual
+144 __cxa_pure_virtual
+152 (int (*)(...))-0x00000000000000010
+160 (int (*)(...))(& _ZTI18QAudioEnginePlugin)
+168 QAudioEnginePlugin::_ZThn16_N18QAudioEnginePluginD1Ev
+176 QAudioEnginePlugin::_ZThn16_N18QAudioEnginePluginD0Ev
+184 __cxa_pure_virtual
+192 __cxa_pure_virtual
+200 __cxa_pure_virtual
+208 __cxa_pure_virtual
+216 __cxa_pure_virtual
+
+Class QAudioEnginePlugin
+ size=24 align=8
+ base size=24 base align=8
+QAudioEnginePlugin (0x7f9550489000) 0
+ vptr=((& QAudioEnginePlugin::_ZTV18QAudioEnginePlugin) + 16u)
+ QObject (0x7f95504808c0) 0
+ primary-for QAudioEnginePlugin (0x7f9550489000)
+ QAudioEngineFactoryInterface (0x7f9550480930) 16 nearly-empty
+ vptr=((& QAudioEnginePlugin::_ZTV18QAudioEnginePlugin) + 168u)
+ QFactoryInterface (0x7f95504809a0) 16 nearly-empty
+ primary-for QAudioEngineFactoryInterface (0x7f9550480930)
+
+Vtable for QAudioInput
+QAudioInput::_ZTV11QAudioInput: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QAudioInput)
+16 QAudioInput::metaObject
+24 QAudioInput::qt_metacast
+32 QAudioInput::qt_metacall
+40 QAudioInput::~QAudioInput
+48 QAudioInput::~QAudioInput
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QAudioInput
+ size=24 align=8
+ base size=24 base align=8
+QAudioInput (0x7f9550496930) 0
+ vptr=((& QAudioInput::_ZTV11QAudioInput) + 16u)
+ QObject (0x7f95504969a0) 0
+ primary-for QAudioInput (0x7f9550496930)
+
+Vtable for QAudioOutput
+QAudioOutput::_ZTV12QAudioOutput: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QAudioOutput)
+16 QAudioOutput::metaObject
+24 QAudioOutput::qt_metacast
+32 QAudioOutput::qt_metacall
+40 QAudioOutput::~QAudioOutput
+48 QAudioOutput::~QAudioOutput
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+
+Class QAudioOutput
+ size=24 align=8
+ base size=24 base align=8
+QAudioOutput (0x7f95504a6e70) 0
+ vptr=((& QAudioOutput::_ZTV12QAudioOutput) + 16u)
+ QObject (0x7f95504a6ee0) 0
+ primary-for QAudioOutput (0x7f95504a6e70)
+
+Vtable for QAbstractVideoBuffer
+QAbstractVideoBuffer::_ZTV20QAbstractVideoBuffer: 8u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QAbstractVideoBuffer)
+16 QAbstractVideoBuffer::~QAbstractVideoBuffer
+24 QAbstractVideoBuffer::~QAbstractVideoBuffer
+32 __cxa_pure_virtual
+40 __cxa_pure_virtual
+48 __cxa_pure_virtual
+56 QAbstractVideoBuffer::handle
+
+Class QAbstractVideoBuffer
+ size=16 align=8
+ base size=16 base align=8
+QAbstractVideoBuffer (0x7f95504cb310) 0
+ vptr=((& QAbstractVideoBuffer::_ZTV20QAbstractVideoBuffer) + 16u)
+
+Class QVideoFrame
+ size=8 align=8
+ base size=8 base align=8
+QVideoFrame (0x7f95502e6150) 0
+
+Vtable for QAbstractVideoSurface
+QAbstractVideoSurface::_ZTV21QAbstractVideoSurface: 20u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QAbstractVideoSurface)
+16 QAbstractVideoSurface::metaObject
+24 QAbstractVideoSurface::qt_metacast
+32 QAbstractVideoSurface::qt_metacall
+40 QAbstractVideoSurface::~QAbstractVideoSurface
+48 QAbstractVideoSurface::~QAbstractVideoSurface
+56 QObject::event
+64 QObject::eventFilter
+72 QObject::timerEvent
+80 QObject::childEvent
+88 QObject::customEvent
+96 QObject::connectNotify
+104 QObject::disconnectNotify
+112 __cxa_pure_virtual
+120 QAbstractVideoSurface::isFormatSupported
+128 QAbstractVideoSurface::nearestFormat
+136 QAbstractVideoSurface::start
+144 QAbstractVideoSurface::stop
+152 __cxa_pure_virtual
+
+Class QAbstractVideoSurface
+ size=16 align=8
+ base size=16 base align=8
+QAbstractVideoSurface (0x7f95502f7ee0) 0
+ vptr=((& QAbstractVideoSurface::_ZTV21QAbstractVideoSurface) + 16u)
+ QObject (0x7f95502f7f50) 0
+ primary-for QAbstractVideoSurface (0x7f95502f7ee0)
+
+Class QVideoSurfaceFormat
+ size=8 align=8
+ base size=8 base align=8
+QVideoSurfaceFormat (0x7f9550328af0) 0
+
diff --git a/tests/auto/bic/data/QtMultimedia.4.6.0.linux-gcc-ia32.txt b/tests/auto/bic/data/QtMultimedia.4.6.0.linux-gcc-ia32.txt
new file mode 100644
index 000000000..0b26af5c6
--- /dev/null
+++ b/tests/auto/bic/data/QtMultimedia.4.6.0.linux-gcc-ia32.txt
@@ -0,0 +1,17065 @@
+Class QSysInfo
+ size=1 align=1
+ base size=0 base align=1
+QSysInfo (0xb6e55c6c) 0 empty
+
+Class QBool
+ size=1 align=1
+ base size=1 base align=1
+QBool (0xb6e55e10) 0
+
+Class qIsNull(double)::U
+ size=8 align=4
+ base size=8 base align=4
+qIsNull(double)::U (0xb649d4ec) 0
+
+Class qIsNull(float)::U
+ size=4 align=4
+ base size=4 base align=4
+qIsNull(float)::U (0xb649d5a0) 0
+
+Class QFlag
+ size=4 align=4
+ base size=4 base align=4
+QFlag (0xb649ddd4) 0
+
+Class QIncompatibleFlag
+ size=4 align=4
+ base size=4 base align=4
+QIncompatibleFlag (0xb649df00) 0
+
+Class QLatin1Char
+ size=1 align=1
+ base size=1 base align=1
+QLatin1Char (0xb64d1168) 0
+
+Class QChar
+ size=2 align=2
+ base size=2 base align=2
+QChar (0xb64d1348) 0
+
+Class QBasicAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QBasicAtomicInt (0xb6520a8c) 0
+
+Class QAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QAtomicInt (0xb653bdc0) 0
+ QBasicAtomicInt (0xb5b461a4) 0
+
+Class QInternal
+ size=1 align=1
+ base size=0 base align=1
+QInternal (0xb5c355a0) 0 empty
+
+Class __locale_struct
+ size=116 align=4
+ base size=116 base align=4
+__locale_struct (0xb5c355dc) 0
+
+Class QByteArray::Data
+ size=20 align=4
+ base size=20 base align=4
+QByteArray::Data (0xb5c35a50) 0
+
+Class QByteArray
+ size=4 align=4
+ base size=4 base align=4
+QByteArray (0xb5c35a14) 0
+
+Class QByteRef
+ size=8 align=4
+ base size=8 base align=4
+QByteRef (0xb5afd960) 0
+
+Class QString::Null
+ size=1 align=1
+ base size=0 base align=1
+QString::Null (0xb594b12c) 0 empty
+
+Class QString::Data
+ size=20 align=4
+ base size=20 base align=4
+QString::Data (0xb594b168) 0
+
+Class QString
+ size=4 align=4
+ base size=4 base align=4
+QString (0xb594b0f0) 0
+
+Class QLatin1String
+ size=4 align=4
+ base size=4 base align=4
+QLatin1String (0xb59f8dd4) 0
+
+Class QCharRef
+ size=8 align=4
+ base size=8 base align=4
+QCharRef (0xb585bac8) 0
+
+Class QConstString
+ size=4 align=4
+ base size=4 base align=4
+QConstString (0xb58e0b00) 0
+ QString (0xb591c21c) 0
+
+Class QStringRef
+ size=12 align=4
+ base size=12 base align=4
+QStringRef (0xb591c564) 0
+
+Class QGenericArgument
+ size=8 align=4
+ base size=8 base align=4
+QGenericArgument (0xb57644b0) 0
+
+Class QGenericReturnArgument
+ size=8 align=4
+ base size=8 base align=4
+QGenericReturnArgument (0xb576e3c0) 0
+ QGenericArgument (0xb57646cc) 0
+
+Class QMetaObject
+ size=16 align=4
+ base size=16 base align=4
+QMetaObject (0xb5764834) 0
+
+Class QMetaObjectExtraData
+ size=8 align=4
+ base size=8 base align=4
+QMetaObjectExtraData (0xb5764960) 0
+
+Vtable for std::exception
+std::exception::_ZTVSt9exception: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTISt9exception)
+8 std::exception::~exception
+12 std::exception::~exception
+16 std::exception::what
+
+Class std::exception
+ size=4 align=4
+ base size=4 base align=4
+std::exception (0xb5764ca8) 0 nearly-empty
+ vptr=((& std::exception::_ZTVSt9exception) + 8u)
+
+Vtable for std::bad_exception
+std::bad_exception::_ZTVSt13bad_exception: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTISt13bad_exception)
+8 std::bad_exception::~bad_exception
+12 std::bad_exception::~bad_exception
+16 std::bad_exception::what
+
+Class std::bad_exception
+ size=4 align=4
+ base size=4 base align=4
+std::bad_exception (0xb57bc040) 0 nearly-empty
+ vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 8u)
+ std::exception (0xb5764d98) 0 nearly-empty
+ primary-for std::bad_exception (0xb57bc040)
+
+Vtable for std::bad_alloc
+std::bad_alloc::_ZTVSt9bad_alloc: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTISt9bad_alloc)
+8 std::bad_alloc::~bad_alloc
+12 std::bad_alloc::~bad_alloc
+16 std::bad_alloc::what
+
+Class std::bad_alloc
+ size=4 align=4
+ base size=4 base align=4
+std::bad_alloc (0xb57bc1c0) 0 nearly-empty
+ vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 8u)
+ std::exception (0xb57c3000) 0 nearly-empty
+ primary-for std::bad_alloc (0xb57bc1c0)
+
+Class std::nothrow_t
+ size=1 align=1
+ base size=0 base align=1
+std::nothrow_t (0xb57c3258) 0 empty
+
+Class QListData::Data
+ size=24 align=4
+ base size=24 base align=4
+QListData::Data (0xb57c3348) 0
+
+Class QListData
+ size=4 align=4
+ base size=4 base align=4
+QListData (0xb57c330c) 0
+
+Class QScopedPointerPodDeleter
+ size=1 align=1
+ base size=0 base align=1
+QScopedPointerPodDeleter (0xb57c3b7c) 0 empty
+
+Vtable for QObjectData
+QObjectData::_ZTV11QObjectData: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QObjectData)
+8 __cxa_pure_virtual
+12 __cxa_pure_virtual
+
+Class QObjectData
+ size=28 align=4
+ base size=28 base align=4
+QObjectData (0xb57c3c30) 0
+ vptr=((& QObjectData::_ZTV11QObjectData) + 8u)
+
+Vtable for QObject
+QObject::_ZTV7QObject: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QObject)
+8 QObject::metaObject
+12 QObject::qt_metacast
+16 QObject::qt_metacall
+20 QObject::~QObject
+24 QObject::~QObject
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QObject
+ size=8 align=4
+ base size=8 base align=4
+QObject (0xb57c3ce4) 0
+ vptr=((& QObject::_ZTV7QObject) + 8u)
+
+Vtable for QObjectUserData
+QObjectUserData::_ZTV15QObjectUserData: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QObjectUserData)
+8 QObjectUserData::~QObjectUserData
+12 QObjectUserData::~QObjectUserData
+
+Class QObjectUserData
+ size=4 align=4
+ base size=4 base align=4
+QObjectUserData (0xb56b3564) 0 nearly-empty
+ vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 8u)
+
+Vtable for QIODevice
+QIODevice::_ZTV9QIODevice: 30u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QIODevice)
+8 QIODevice::metaObject
+12 QIODevice::qt_metacast
+16 QIODevice::qt_metacall
+20 QIODevice::~QIODevice
+24 QIODevice::~QIODevice
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QIODevice::isSequential
+60 QIODevice::open
+64 QIODevice::close
+68 QIODevice::pos
+72 QIODevice::size
+76 QIODevice::seek
+80 QIODevice::atEnd
+84 QIODevice::reset
+88 QIODevice::bytesAvailable
+92 QIODevice::bytesToWrite
+96 QIODevice::canReadLine
+100 QIODevice::waitForReadyRead
+104 QIODevice::waitForBytesWritten
+108 __cxa_pure_virtual
+112 QIODevice::readLineData
+116 __cxa_pure_virtual
+
+Class QIODevice
+ size=8 align=4
+ base size=8 base align=4
+QIODevice (0xb56b6880) 0
+ vptr=((& QIODevice::_ZTV9QIODevice) + 8u)
+ QObject (0xb56b3690) 0
+ primary-for QIODevice (0xb56b6880)
+
+Class _IO_marker
+ size=12 align=4
+ base size=12 base align=4
+_IO_marker (0xb56f4528) 0
+
+Class _IO_FILE
+ size=148 align=4
+ base size=148 base align=4
+_IO_FILE (0xb56f4564) 0
+
+Vtable for QFile
+QFile::_ZTV5QFile: 31u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI5QFile)
+8 QFile::metaObject
+12 QFile::qt_metacast
+16 QFile::qt_metacall
+20 QFile::~QFile
+24 QFile::~QFile
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QFile::isSequential
+60 QFile::open
+64 QFile::close
+68 QFile::pos
+72 QFile::size
+76 QFile::seek
+80 QFile::atEnd
+84 QIODevice::reset
+88 QIODevice::bytesAvailable
+92 QIODevice::bytesToWrite
+96 QIODevice::canReadLine
+100 QIODevice::waitForReadyRead
+104 QIODevice::waitForBytesWritten
+108 QFile::readData
+112 QFile::readLineData
+116 QFile::writeData
+120 QFile::fileEngine
+
+Class QFile
+ size=8 align=4
+ base size=8 base align=4
+QFile (0xb56f2500) 0
+ vptr=((& QFile::_ZTV5QFile) + 8u)
+ QIODevice (0xb56f2540) 0
+ primary-for QFile (0xb56f2500)
+ QObject (0xb56f45dc) 0
+ primary-for QIODevice (0xb56f2540)
+
+Class QFileInfo
+ size=4 align=4
+ base size=4 base align=4
+QFileInfo (0xb56f4a50) 0
+
+Vtable for QDataStream
+QDataStream::_ZTV11QDataStream: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QDataStream)
+8 QDataStream::~QDataStream
+12 QDataStream::~QDataStream
+
+Class QDataStream
+ size=28 align=4
+ base size=28 base align=4
+QDataStream (0xb557f0b4) 0
+ vptr=((& QDataStream::_ZTV11QDataStream) + 8u)
+
+Class QRegExp
+ size=4 align=4
+ base size=4 base align=4
+QRegExp (0xb557f7bc) 0
+
+Class QStringMatcher::Data
+ size=264 align=4
+ base size=264 base align=4
+QStringMatcher::Data (0xb55e61e0) 0
+
+Class QStringMatcher
+ size=1036 align=4
+ base size=1036 base align=4
+QStringMatcher (0xb55e61a4) 0
+
+Class QStringList
+ size=4 align=4
+ base size=4 base align=4
+QStringList (0xb55c0c00) 0
+ QList<QString> (0xb55e630c) 0
+
+Class QDir
+ size=4 align=4
+ base size=4 base align=4
+QDir (0xb5622870) 0
+
+Class QAbstractFileEngine::ExtensionOption
+ size=1 align=1
+ base size=0 base align=1
+QAbstractFileEngine::ExtensionOption (0xb549c000) 0 empty
+
+Class QAbstractFileEngine::ExtensionReturn
+ size=1 align=1
+ base size=0 base align=1
+QAbstractFileEngine::ExtensionReturn (0xb549c03c) 0 empty
+
+Class QAbstractFileEngine::MapExtensionOption
+ size=20 align=4
+ base size=20 base align=4
+QAbstractFileEngine::MapExtensionOption (0xb5471500) 0
+ QAbstractFileEngine::ExtensionOption (0xb549c078) 0 empty
+
+Class QAbstractFileEngine::MapExtensionReturn
+ size=4 align=4
+ base size=4 base align=4
+QAbstractFileEngine::MapExtensionReturn (0xb5471580) 0
+ QAbstractFileEngine::ExtensionReturn (0xb549c0b4) 0 empty
+
+Class QAbstractFileEngine::UnMapExtensionOption
+ size=4 align=4
+ base size=4 base align=4
+QAbstractFileEngine::UnMapExtensionOption (0xb5471600) 0
+ QAbstractFileEngine::ExtensionOption (0xb549c0f0) 0 empty
+
+Vtable for QAbstractFileEngine
+QAbstractFileEngine::_ZTV19QAbstractFileEngine: 36u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractFileEngine)
+8 QAbstractFileEngine::~QAbstractFileEngine
+12 QAbstractFileEngine::~QAbstractFileEngine
+16 QAbstractFileEngine::open
+20 QAbstractFileEngine::close
+24 QAbstractFileEngine::flush
+28 QAbstractFileEngine::size
+32 QAbstractFileEngine::pos
+36 QAbstractFileEngine::seek
+40 QAbstractFileEngine::isSequential
+44 QAbstractFileEngine::remove
+48 QAbstractFileEngine::copy
+52 QAbstractFileEngine::rename
+56 QAbstractFileEngine::link
+60 QAbstractFileEngine::mkdir
+64 QAbstractFileEngine::rmdir
+68 QAbstractFileEngine::setSize
+72 QAbstractFileEngine::caseSensitive
+76 QAbstractFileEngine::isRelativePath
+80 QAbstractFileEngine::entryList
+84 QAbstractFileEngine::fileFlags
+88 QAbstractFileEngine::setPermissions
+92 QAbstractFileEngine::fileName
+96 QAbstractFileEngine::ownerId
+100 QAbstractFileEngine::owner
+104 QAbstractFileEngine::fileTime
+108 QAbstractFileEngine::setFileName
+112 QAbstractFileEngine::handle
+116 QAbstractFileEngine::beginEntryList
+120 QAbstractFileEngine::endEntryList
+124 QAbstractFileEngine::read
+128 QAbstractFileEngine::readLine
+132 QAbstractFileEngine::write
+136 QAbstractFileEngine::extension
+140 QAbstractFileEngine::supportsExtension
+
+Class QAbstractFileEngine
+ size=8 align=4
+ base size=8 base align=4
+QAbstractFileEngine (0xb5622fb4) 0
+ vptr=((& QAbstractFileEngine::_ZTV19QAbstractFileEngine) + 8u)
+
+Vtable for QAbstractFileEngineHandler
+QAbstractFileEngineHandler::_ZTV26QAbstractFileEngineHandler: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI26QAbstractFileEngineHandler)
+8 QAbstractFileEngineHandler::~QAbstractFileEngineHandler
+12 QAbstractFileEngineHandler::~QAbstractFileEngineHandler
+16 __cxa_pure_virtual
+
+Class QAbstractFileEngineHandler
+ size=4 align=4
+ base size=4 base align=4
+QAbstractFileEngineHandler (0xb549c348) 0 nearly-empty
+ vptr=((& QAbstractFileEngineHandler::_ZTV26QAbstractFileEngineHandler) + 8u)
+
+Vtable for QAbstractFileEngineIterator
+QAbstractFileEngineIterator::_ZTV27QAbstractFileEngineIterator: 9u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QAbstractFileEngineIterator)
+8 QAbstractFileEngineIterator::~QAbstractFileEngineIterator
+12 QAbstractFileEngineIterator::~QAbstractFileEngineIterator
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 QAbstractFileEngineIterator::currentFileInfo
+32 QAbstractFileEngineIterator::entryInfo
+
+Class QAbstractFileEngineIterator
+ size=8 align=4
+ base size=8 base align=4
+QAbstractFileEngineIterator (0xb549c384) 0
+ vptr=((& QAbstractFileEngineIterator::_ZTV27QAbstractFileEngineIterator) + 8u)
+
+Vtable for QBuffer
+QBuffer::_ZTV7QBuffer: 30u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QBuffer)
+8 QBuffer::metaObject
+12 QBuffer::qt_metacast
+16 QBuffer::qt_metacall
+20 QBuffer::~QBuffer
+24 QBuffer::~QBuffer
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QBuffer::connectNotify
+52 QBuffer::disconnectNotify
+56 QIODevice::isSequential
+60 QBuffer::open
+64 QBuffer::close
+68 QBuffer::pos
+72 QBuffer::size
+76 QBuffer::seek
+80 QBuffer::atEnd
+84 QIODevice::reset
+88 QIODevice::bytesAvailable
+92 QIODevice::bytesToWrite
+96 QBuffer::canReadLine
+100 QIODevice::waitForReadyRead
+104 QIODevice::waitForBytesWritten
+108 QBuffer::readData
+112 QIODevice::readLineData
+116 QBuffer::writeData
+
+Class QBuffer
+ size=8 align=4
+ base size=8 base align=4
+QBuffer (0xb5471940) 0
+ vptr=((& QBuffer::_ZTV7QBuffer) + 8u)
+ QIODevice (0xb5471980) 0
+ primary-for QBuffer (0xb5471940)
+ QObject (0xb549c3fc) 0
+ primary-for QIODevice (0xb5471980)
+
+Class QHashData::Node
+ size=8 align=4
+ base size=8 base align=4
+QHashData::Node (0xb549cac8) 0
+
+Class QHashData
+ size=32 align=4
+ base size=32 base align=4
+QHashData (0xb549ca8c) 0
+
+Class QHashDummyValue
+ size=1 align=1
+ base size=0 base align=1
+QHashDummyValue (0xb54f21e0) 0 empty
+
+Class QMapData::Node
+ size=8 align=4
+ base size=8 base align=4
+QMapData::Node (0xb54f2924) 0
+
+Class QMapData
+ size=72 align=4
+ base size=72 base align=4
+QMapData (0xb54f28e8) 0
+
+Vtable for QSystemLocale
+QSystemLocale::_ZTV13QSystemLocale: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QSystemLocale)
+8 QSystemLocale::~QSystemLocale
+12 QSystemLocale::~QSystemLocale
+16 QSystemLocale::query
+20 QSystemLocale::fallbackLocale
+
+Class QSystemLocale
+ size=4 align=4
+ base size=4 base align=4
+QSystemLocale (0xb54f2c30) 0 nearly-empty
+ vptr=((& QSystemLocale::_ZTV13QSystemLocale) + 8u)
+
+Class QLocale::Data
+ size=4 align=2
+ base size=4 base align=2
+QLocale::Data (0xb54f2ca8) 0
+
+Class QLocale
+ size=4 align=4
+ base size=4 base align=4
+QLocale (0xb54f2c6c) 0
+
+Class QTextCodec::ConverterState
+ size=28 align=4
+ base size=28 base align=4
+QTextCodec::ConverterState (0xb526e30c) 0
+
+Vtable for QTextCodec
+QTextCodec::_ZTV10QTextCodec: 9u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QTextCodec)
+8 __cxa_pure_virtual
+12 QTextCodec::aliases
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 QTextCodec::~QTextCodec
+32 QTextCodec::~QTextCodec
+
+Class QTextCodec
+ size=4 align=4
+ base size=4 base align=4
+QTextCodec (0xb526e2d0) 0 nearly-empty
+ vptr=((& QTextCodec::_ZTV10QTextCodec) + 8u)
+
+Class QTextEncoder
+ size=32 align=4
+ base size=32 base align=4
+QTextEncoder (0xb52bf000) 0
+
+Class QTextDecoder
+ size=32 align=4
+ base size=32 base align=4
+QTextDecoder (0xb52bf258) 0
+
+Vtable for QTextStream
+QTextStream::_ZTV11QTextStream: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTextStream)
+8 QTextStream::~QTextStream
+12 QTextStream::~QTextStream
+
+Class QTextStream
+ size=8 align=4
+ base size=8 base align=4
+QTextStream (0xb52bf4b0) 0
+ vptr=((& QTextStream::_ZTV11QTextStream) + 8u)
+
+Class QTextStreamManipulator
+ size=24 align=4
+ base size=22 base align=4
+QTextStreamManipulator (0xb52bfb40) 0
+
+Vtable for QTextIStream
+QTextIStream::_ZTV12QTextIStream: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QTextIStream)
+8 QTextIStream::~QTextIStream
+12 QTextIStream::~QTextIStream
+
+Class QTextIStream
+ size=8 align=4
+ base size=8 base align=4
+QTextIStream (0xb530e680) 0
+ vptr=((& QTextIStream::_ZTV12QTextIStream) + 8u)
+ QTextStream (0xb5315d20) 0
+ primary-for QTextIStream (0xb530e680)
+
+Vtable for QTextOStream
+QTextOStream::_ZTV12QTextOStream: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QTextOStream)
+8 QTextOStream::~QTextOStream
+12 QTextOStream::~QTextOStream
+
+Class QTextOStream
+ size=8 align=4
+ base size=8 base align=4
+QTextOStream (0xb530e940) 0
+ vptr=((& QTextOStream::_ZTV12QTextOStream) + 8u)
+ QTextStream (0xb53283c0) 0
+ primary-for QTextOStream (0xb530e940)
+
+Class wait
+ size=4 align=4
+ base size=4 base align=4
+wait (0xb5328a50) 0
+
+Class timespec
+ size=8 align=4
+ base size=8 base align=4
+timespec (0xb5328bf4) 0
+
+Class timeval
+ size=8 align=4
+ base size=8 base align=4
+timeval (0xb5328c30) 0
+
+Class __pthread_internal_slist
+ size=4 align=4
+ base size=4 base align=4
+__pthread_internal_slist (0xb5328ce4) 0
+
+Class random_data
+ size=28 align=4
+ base size=28 base align=4
+random_data (0xb514a000) 0
+
+Class drand48_data
+ size=24 align=4
+ base size=24 base align=4
+drand48_data (0xb514a03c) 0
+
+Class QVectorData
+ size=16 align=4
+ base size=16 base align=4
+QVectorData (0xb514a078) 0
+
+Class QContiguousCacheData
+ size=24 align=4
+ base size=24 base align=4
+QContiguousCacheData (0xb514a384) 0
+
+Class QDebug::Stream
+ size=24 align=4
+ base size=22 base align=4
+QDebug::Stream (0xb514a564) 0
+
+Class QDebug
+ size=4 align=4
+ base size=4 base align=4
+QDebug (0xb514a528) 0
+
+Class QNoDebug
+ size=1 align=1
+ base size=0 base align=1
+QNoDebug (0xb50c81a4) 0 empty
+
+Vtable for QDirIterator
+QDirIterator::_ZTV12QDirIterator: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QDirIterator)
+8 QDirIterator::~QDirIterator
+12 QDirIterator::~QDirIterator
+
+Class QDirIterator
+ size=8 align=4
+ base size=8 base align=4
+QDirIterator (0xb50c8438) 0
+ vptr=((& QDirIterator::_ZTV12QDirIterator) + 8u)
+
+Vtable for QFileSystemWatcher
+QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QFileSystemWatcher)
+8 QFileSystemWatcher::metaObject
+12 QFileSystemWatcher::qt_metacast
+16 QFileSystemWatcher::qt_metacall
+20 QFileSystemWatcher::~QFileSystemWatcher
+24 QFileSystemWatcher::~QFileSystemWatcher
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QFileSystemWatcher
+ size=8 align=4
+ base size=8 base align=4
+QFileSystemWatcher (0xb50cee40) 0
+ vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 8u)
+ QObject (0xb50c85a0) 0
+ primary-for QFileSystemWatcher (0xb50cee40)
+
+Vtable for QFSFileEngine
+QFSFileEngine::_ZTV13QFSFileEngine: 36u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QFSFileEngine)
+8 QFSFileEngine::~QFSFileEngine
+12 QFSFileEngine::~QFSFileEngine
+16 QFSFileEngine::open
+20 QFSFileEngine::close
+24 QFSFileEngine::flush
+28 QFSFileEngine::size
+32 QFSFileEngine::pos
+36 QFSFileEngine::seek
+40 QFSFileEngine::isSequential
+44 QFSFileEngine::remove
+48 QFSFileEngine::copy
+52 QFSFileEngine::rename
+56 QFSFileEngine::link
+60 QFSFileEngine::mkdir
+64 QFSFileEngine::rmdir
+68 QFSFileEngine::setSize
+72 QFSFileEngine::caseSensitive
+76 QFSFileEngine::isRelativePath
+80 QFSFileEngine::entryList
+84 QFSFileEngine::fileFlags
+88 QFSFileEngine::setPermissions
+92 QFSFileEngine::fileName
+96 QFSFileEngine::ownerId
+100 QFSFileEngine::owner
+104 QFSFileEngine::fileTime
+108 QFSFileEngine::setFileName
+112 QFSFileEngine::handle
+116 QFSFileEngine::beginEntryList
+120 QFSFileEngine::endEntryList
+124 QFSFileEngine::read
+128 QFSFileEngine::readLine
+132 QFSFileEngine::write
+136 QFSFileEngine::extension
+140 QFSFileEngine::supportsExtension
+
+Class QFSFileEngine
+ size=8 align=4
+ base size=8 base align=4
+QFSFileEngine (0xb510e100) 0
+ vptr=((& QFSFileEngine::_ZTV13QFSFileEngine) + 8u)
+ QAbstractFileEngine (0xb50c87bc) 0
+ primary-for QFSFileEngine (0xb510e100)
+
+Class QSharedData
+ size=4 align=4
+ base size=4 base align=4
+QSharedData (0xb50c88e8) 0
+
+Class QProcessEnvironment
+ size=4 align=4
+ base size=4 base align=4
+QProcessEnvironment (0xb50c8b04) 0
+
+Vtable for QProcess
+QProcess::_ZTV8QProcess: 31u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QProcess)
+8 QProcess::metaObject
+12 QProcess::qt_metacast
+16 QProcess::qt_metacall
+20 QProcess::~QProcess
+24 QProcess::~QProcess
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QProcess::isSequential
+60 QIODevice::open
+64 QProcess::close
+68 QIODevice::pos
+72 QIODevice::size
+76 QIODevice::seek
+80 QProcess::atEnd
+84 QIODevice::reset
+88 QProcess::bytesAvailable
+92 QProcess::bytesToWrite
+96 QProcess::canReadLine
+100 QProcess::waitForReadyRead
+104 QProcess::waitForBytesWritten
+108 QProcess::readData
+112 QIODevice::readLineData
+116 QProcess::writeData
+120 QProcess::setupChildProcess
+
+Class QProcess
+ size=8 align=4
+ base size=8 base align=4
+QProcess (0xb4f3f180) 0
+ vptr=((& QProcess::_ZTV8QProcess) + 8u)
+ QIODevice (0xb4f3f1c0) 0
+ primary-for QProcess (0xb4f3f180)
+ QObject (0xb50c8bb8) 0
+ primary-for QIODevice (0xb4f3f1c0)
+
+Class QResource
+ size=4 align=4
+ base size=4 base align=4
+QResource (0xb50c8dd4) 0
+
+Class QMetaType
+ size=1 align=1
+ base size=0 base align=1
+QMetaType (0xb50c8f78) 0 empty
+
+Class QVariant::PrivateShared
+ size=8 align=4
+ base size=8 base align=4
+QVariant::PrivateShared (0xb4fb0c30) 0
+
+Class QVariant::Private::Data
+ size=8 align=4
+ base size=8 base align=4
+QVariant::Private::Data (0xb4fb0ca8) 0
+
+Class QVariant::Private
+ size=12 align=4
+ base size=12 base align=4
+QVariant::Private (0xb4fb0c6c) 0
+
+Class QVariant::Handler
+ size=36 align=4
+ base size=36 base align=4
+QVariant::Handler (0xb4fb0d20) 0
+
+Class QVariant
+ size=12 align=4
+ base size=12 base align=4
+QVariant (0xb4fb0bf4) 0
+
+Class QVariantComparisonHelper
+ size=4 align=4
+ base size=4 base align=4
+QVariantComparisonHelper (0xb4e4c5dc) 0
+
+Vtable for QSettings
+QSettings::_ZTV9QSettings: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QSettings)
+8 QSettings::metaObject
+12 QSettings::qt_metacast
+16 QSettings::qt_metacall
+20 QSettings::~QSettings
+24 QSettings::~QSettings
+28 QSettings::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSettings
+ size=8 align=4
+ base size=8 base align=4
+QSettings (0xb4e53c80) 0
+ vptr=((& QSettings::_ZTV9QSettings) + 8u)
+ QObject (0xb4e4cbf4) 0
+ primary-for QSettings (0xb4e53c80)
+
+Vtable for QTemporaryFile
+QTemporaryFile::_ZTV14QTemporaryFile: 31u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QTemporaryFile)
+8 QTemporaryFile::metaObject
+12 QTemporaryFile::qt_metacast
+16 QTemporaryFile::qt_metacall
+20 QTemporaryFile::~QTemporaryFile
+24 QTemporaryFile::~QTemporaryFile
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QFile::isSequential
+60 QTemporaryFile::open
+64 QFile::close
+68 QFile::pos
+72 QFile::size
+76 QFile::seek
+80 QFile::atEnd
+84 QIODevice::reset
+88 QIODevice::bytesAvailable
+92 QIODevice::bytesToWrite
+96 QIODevice::canReadLine
+100 QIODevice::waitForReadyRead
+104 QIODevice::waitForBytesWritten
+108 QFile::readData
+112 QFile::readLineData
+116 QFile::writeData
+120 QTemporaryFile::fileEngine
+
+Class QTemporaryFile
+ size=8 align=4
+ base size=8 base align=4
+QTemporaryFile (0xb4e9a880) 0
+ vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 8u)
+ QFile (0xb4e9a8c0) 0
+ primary-for QTemporaryFile (0xb4e9a880)
+ QIODevice (0xb4e9a900) 0
+ primary-for QFile (0xb4e9a8c0)
+ QObject (0xb4ea2708) 0
+ primary-for QIODevice (0xb4e9a900)
+
+Class QUrl
+ size=4 align=4
+ base size=4 base align=4
+QUrl (0xb4ea2a14) 0
+
+Class QXmlStreamStringRef
+ size=12 align=4
+ base size=12 base align=4
+QXmlStreamStringRef (0xb4ea2f00) 0
+
+Class QXmlStreamAttribute
+ size=56 align=4
+ base size=53 base align=4
+QXmlStreamAttribute (0xb4f13bb8) 0
+
+Class QXmlStreamAttributes
+ size=4 align=4
+ base size=4 base align=4
+QXmlStreamAttributes (0xb4ee6ec0) 0
+ QVector<QXmlStreamAttribute> (0xb4f30618) 0
+
+Class QXmlStreamNamespaceDeclaration
+ size=28 align=4
+ base size=28 base align=4
+QXmlStreamNamespaceDeclaration (0xb4f30708) 0
+
+Class QXmlStreamNotationDeclaration
+ size=40 align=4
+ base size=40 base align=4
+QXmlStreamNotationDeclaration (0xb4f30b7c) 0
+
+Class QXmlStreamEntityDeclaration
+ size=64 align=4
+ base size=64 base align=4
+QXmlStreamEntityDeclaration (0xb4d62168) 0
+
+Vtable for QXmlStreamEntityResolver
+QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QXmlStreamEntityResolver)
+8 QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+12 QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+16 QXmlStreamEntityResolver::resolveEntity
+20 QXmlStreamEntityResolver::resolveUndeclaredEntity
+
+Class QXmlStreamEntityResolver
+ size=4 align=4
+ base size=4 base align=4
+QXmlStreamEntityResolver (0xb4d62a14) 0 nearly-empty
+ vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 8u)
+
+Class QXmlStreamReader
+ size=4 align=4
+ base size=4 base align=4
+QXmlStreamReader (0xb4d62a50) 0
+
+Class QXmlStreamWriter
+ size=4 align=4
+ base size=4 base align=4
+QXmlStreamWriter (0xb4d62bb8) 0
+
+Vtable for QAbstractState
+QAbstractState::_ZTV14QAbstractState: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QAbstractState)
+8 QAbstractState::metaObject
+12 QAbstractState::qt_metacast
+16 QAbstractState::qt_metacall
+20 QAbstractState::~QAbstractState
+24 QAbstractState::~QAbstractState
+28 QAbstractState::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+
+Class QAbstractState
+ size=8 align=4
+ base size=8 base align=4
+QAbstractState (0xb4d4de80) 0
+ vptr=((& QAbstractState::_ZTV14QAbstractState) + 8u)
+ QObject (0xb4d62d20) 0
+ primary-for QAbstractState (0xb4d4de80)
+
+Vtable for QAbstractTransition
+QAbstractTransition::_ZTV19QAbstractTransition: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractTransition)
+8 QAbstractTransition::metaObject
+12 QAbstractTransition::qt_metacast
+16 QAbstractTransition::qt_metacall
+20 QAbstractTransition::~QAbstractTransition
+24 QAbstractTransition::~QAbstractTransition
+28 QAbstractTransition::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+
+Class QAbstractTransition
+ size=8 align=4
+ base size=8 base align=4
+QAbstractTransition (0xb4db7140) 0
+ vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 8u)
+ QObject (0xb4d62f3c) 0
+ primary-for QAbstractTransition (0xb4db7140)
+
+Vtable for QEvent
+QEvent::_ZTV6QEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QEvent)
+8 QEvent::~QEvent
+12 QEvent::~QEvent
+
+Class QEvent
+ size=12 align=4
+ base size=12 base align=4
+QEvent (0xb4dc9168) 0
+ vptr=((& QEvent::_ZTV6QEvent) + 8u)
+
+Vtable for QTimerEvent
+QTimerEvent::_ZTV11QTimerEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTimerEvent)
+8 QTimerEvent::~QTimerEvent
+12 QTimerEvent::~QTimerEvent
+
+Class QTimerEvent
+ size=16 align=4
+ base size=16 base align=4
+QTimerEvent (0xb4db76c0) 0
+ vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 8u)
+ QEvent (0xb4dc9348) 0
+ primary-for QTimerEvent (0xb4db76c0)
+
+Vtable for QChildEvent
+QChildEvent::_ZTV11QChildEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QChildEvent)
+8 QChildEvent::~QChildEvent
+12 QChildEvent::~QChildEvent
+
+Class QChildEvent
+ size=16 align=4
+ base size=16 base align=4
+QChildEvent (0xb4db7780) 0
+ vptr=((& QChildEvent::_ZTV11QChildEvent) + 8u)
+ QEvent (0xb4dc93c0) 0
+ primary-for QChildEvent (0xb4db7780)
+
+Vtable for QCustomEvent
+QCustomEvent::_ZTV12QCustomEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QCustomEvent)
+8 QCustomEvent::~QCustomEvent
+12 QCustomEvent::~QCustomEvent
+
+Class QCustomEvent
+ size=12 align=4
+ base size=12 base align=4
+QCustomEvent (0xb4db7a40) 0
+ vptr=((& QCustomEvent::_ZTV12QCustomEvent) + 8u)
+ QEvent (0xb4dc9528) 0
+ primary-for QCustomEvent (0xb4db7a40)
+
+Vtable for QDynamicPropertyChangeEvent
+QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QDynamicPropertyChangeEvent)
+8 QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+12 QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+
+Class QDynamicPropertyChangeEvent
+ size=16 align=4
+ base size=16 base align=4
+QDynamicPropertyChangeEvent (0xb4db7b40) 0
+ vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 8u)
+ QEvent (0xb4dc9618) 0
+ primary-for QDynamicPropertyChangeEvent (0xb4db7b40)
+
+Vtable for QEventTransition
+QEventTransition::_ZTV16QEventTransition: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QEventTransition)
+8 QEventTransition::metaObject
+12 QEventTransition::qt_metacast
+16 QEventTransition::qt_metacall
+20 QEventTransition::~QEventTransition
+24 QEventTransition::~QEventTransition
+28 QEventTransition::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QEventTransition::eventTest
+60 QEventTransition::onTransition
+
+Class QEventTransition
+ size=8 align=4
+ base size=8 base align=4
+QEventTransition (0xb4db7c00) 0
+ vptr=((& QEventTransition::_ZTV16QEventTransition) + 8u)
+ QAbstractTransition (0xb4db7c40) 0
+ primary-for QEventTransition (0xb4db7c00)
+ QObject (0xb4dc96cc) 0
+ primary-for QAbstractTransition (0xb4db7c40)
+
+Vtable for QFinalState
+QFinalState::_ZTV11QFinalState: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFinalState)
+8 QFinalState::metaObject
+12 QFinalState::qt_metacast
+16 QFinalState::qt_metacall
+20 QFinalState::~QFinalState
+24 QFinalState::~QFinalState
+28 QFinalState::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QFinalState::onEntry
+60 QFinalState::onExit
+
+Class QFinalState
+ size=8 align=4
+ base size=8 base align=4
+QFinalState (0xb4db7f00) 0
+ vptr=((& QFinalState::_ZTV11QFinalState) + 8u)
+ QAbstractState (0xb4db7f40) 0
+ primary-for QFinalState (0xb4db7f00)
+ QObject (0xb4dc98e8) 0
+ primary-for QAbstractState (0xb4db7f40)
+
+Vtable for QHistoryState
+QHistoryState::_ZTV13QHistoryState: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QHistoryState)
+8 QHistoryState::metaObject
+12 QHistoryState::qt_metacast
+16 QHistoryState::qt_metacall
+20 QHistoryState::~QHistoryState
+24 QHistoryState::~QHistoryState
+28 QHistoryState::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QHistoryState::onEntry
+60 QHistoryState::onExit
+
+Class QHistoryState
+ size=8 align=4
+ base size=8 base align=4
+QHistoryState (0xb4dfd200) 0
+ vptr=((& QHistoryState::_ZTV13QHistoryState) + 8u)
+ QAbstractState (0xb4dfd240) 0
+ primary-for QHistoryState (0xb4dfd200)
+ QObject (0xb4dc9b04) 0
+ primary-for QAbstractState (0xb4dfd240)
+
+Vtable for QSignalTransition
+QSignalTransition::_ZTV17QSignalTransition: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QSignalTransition)
+8 QSignalTransition::metaObject
+12 QSignalTransition::qt_metacast
+16 QSignalTransition::qt_metacall
+20 QSignalTransition::~QSignalTransition
+24 QSignalTransition::~QSignalTransition
+28 QSignalTransition::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QSignalTransition::eventTest
+60 QSignalTransition::onTransition
+
+Class QSignalTransition
+ size=8 align=4
+ base size=8 base align=4
+QSignalTransition (0xb4dfd500) 0
+ vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 8u)
+ QAbstractTransition (0xb4dfd540) 0
+ primary-for QSignalTransition (0xb4dfd500)
+ QObject (0xb4dc9d20) 0
+ primary-for QAbstractTransition (0xb4dfd540)
+
+Vtable for QState
+QState::_ZTV6QState: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QState)
+8 QState::metaObject
+12 QState::qt_metacast
+16 QState::qt_metacall
+20 QState::~QState
+24 QState::~QState
+28 QState::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QState::onEntry
+60 QState::onExit
+
+Class QState
+ size=8 align=4
+ base size=8 base align=4
+QState (0xb4dfd800) 0
+ vptr=((& QState::_ZTV6QState) + 8u)
+ QAbstractState (0xb4dfd840) 0
+ primary-for QState (0xb4dfd800)
+ QObject (0xb4dc9f3c) 0
+ primary-for QAbstractState (0xb4dfd840)
+
+Vtable for QStateMachine::SignalEvent
+QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN13QStateMachine11SignalEventE)
+8 QStateMachine::SignalEvent::~SignalEvent
+12 QStateMachine::SignalEvent::~SignalEvent
+
+Class QStateMachine::SignalEvent
+ size=24 align=4
+ base size=24 base align=4
+QStateMachine::SignalEvent (0xb4dfdc40) 0
+ vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 8u)
+ QEvent (0xb4e2b1a4) 0
+ primary-for QStateMachine::SignalEvent (0xb4dfdc40)
+
+Vtable for QStateMachine::WrappedEvent
+QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN13QStateMachine12WrappedEventE)
+8 QStateMachine::WrappedEvent::~WrappedEvent
+12 QStateMachine::WrappedEvent::~WrappedEvent
+
+Class QStateMachine::WrappedEvent
+ size=20 align=4
+ base size=20 base align=4
+QStateMachine::WrappedEvent (0xb4dfdcc0) 0
+ vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 8u)
+ QEvent (0xb4e2b1e0) 0
+ primary-for QStateMachine::WrappedEvent (0xb4dfdcc0)
+
+Vtable for QStateMachine
+QStateMachine::_ZTV13QStateMachine: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QStateMachine)
+8 QStateMachine::metaObject
+12 QStateMachine::qt_metacast
+16 QStateMachine::qt_metacall
+20 QStateMachine::~QStateMachine
+24 QStateMachine::~QStateMachine
+28 QStateMachine::event
+32 QStateMachine::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QStateMachine::onEntry
+60 QStateMachine::onExit
+64 QStateMachine::beginSelectTransitions
+68 QStateMachine::endSelectTransitions
+72 QStateMachine::beginMicrostep
+76 QStateMachine::endMicrostep
+
+Class QStateMachine
+ size=8 align=4
+ base size=8 base align=4
+QStateMachine (0xb4dfdb00) 0
+ vptr=((& QStateMachine::_ZTV13QStateMachine) + 8u)
+ QState (0xb4dfdb40) 0
+ primary-for QStateMachine (0xb4dfdb00)
+ QAbstractState (0xb4dfdb80) 0
+ primary-for QState (0xb4dfdb40)
+ QObject (0xb4e2b168) 0
+ primary-for QAbstractState (0xb4dfdb80)
+
+Class QBitArray
+ size=4 align=4
+ base size=4 base align=4
+QBitArray (0xb4e2b564) 0
+
+Class QBitRef
+ size=8 align=4
+ base size=8 base align=4
+QBitRef (0xb4c64a14) 0
+
+Class QByteArrayMatcher::Data
+ size=264 align=4
+ base size=264 base align=4
+QByteArrayMatcher::Data (0xb4c8103c) 0
+
+Class QByteArrayMatcher
+ size=1032 align=4
+ base size=1032 base align=4
+QByteArrayMatcher (0xb4c81000) 0
+
+Class QCryptographicHash
+ size=4 align=4
+ base size=4 base align=4
+QCryptographicHash (0xb4c8130c) 0
+
+Vtable for QtSharedPointer::ExternalRefCountData
+QtSharedPointer::ExternalRefCountData::_ZTVN15QtSharedPointer20ExternalRefCountDataE: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN15QtSharedPointer20ExternalRefCountDataE)
+8 QtSharedPointer::ExternalRefCountData::~ExternalRefCountData
+12 QtSharedPointer::ExternalRefCountData::~ExternalRefCountData
+16 QtSharedPointer::ExternalRefCountData::destroy
+
+Class QtSharedPointer::ExternalRefCountData
+ size=12 align=4
+ base size=12 base align=4
+QtSharedPointer::ExternalRefCountData (0xb4c814b0) 0
+ vptr=((& QtSharedPointer::ExternalRefCountData::_ZTVN15QtSharedPointer20ExternalRefCountDataE) + 8u)
+
+Vtable for QtSharedPointer::ExternalRefCountWithDestroyFn
+QtSharedPointer::ExternalRefCountWithDestroyFn::_ZTVN15QtSharedPointer29ExternalRefCountWithDestroyFnE: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN15QtSharedPointer29ExternalRefCountWithDestroyFnE)
+8 QtSharedPointer::ExternalRefCountWithDestroyFn::~ExternalRefCountWithDestroyFn
+12 QtSharedPointer::ExternalRefCountWithDestroyFn::~ExternalRefCountWithDestroyFn
+16 QtSharedPointer::ExternalRefCountWithDestroyFn::destroy
+
+Class QtSharedPointer::ExternalRefCountWithDestroyFn
+ size=16 align=4
+ base size=16 base align=4
+QtSharedPointer::ExternalRefCountWithDestroyFn (0xb4caba80) 0
+ vptr=((& QtSharedPointer::ExternalRefCountWithDestroyFn::_ZTVN15QtSharedPointer29ExternalRefCountWithDestroyFnE) + 8u)
+ QtSharedPointer::ExternalRefCountData (0xb4c81ca8) 0
+ primary-for QtSharedPointer::ExternalRefCountWithDestroyFn (0xb4caba80)
+
+Class QDate
+ size=4 align=4
+ base size=4 base align=4
+QDate (0xb4cc41e0) 0
+
+Class QTime
+ size=4 align=4
+ base size=4 base align=4
+QTime (0xb4cc47f8) 0
+
+Class QDateTime
+ size=4 align=4
+ base size=4 base align=4
+QDateTime (0xb4cc4d5c) 0
+
+Class QEasingCurve
+ size=4 align=4
+ base size=4 base align=4
+QEasingCurve (0xb4b4e03c) 0
+
+Class QPoint
+ size=8 align=4
+ base size=8 base align=4
+QPoint (0xb4b4e0b4) 0
+
+Class QPointF
+ size=16 align=4
+ base size=16 base align=4
+QPointF (0xb4b75654) 0
+
+Class QLine
+ size=16 align=4
+ base size=16 base align=4
+QLine (0xb4b8bd5c) 0
+
+Class QLineF
+ size=32 align=4
+ base size=32 base align=4
+QLineF (0xb4ba6a8c) 0
+
+Class QLinkedListData
+ size=20 align=4
+ base size=20 base align=4
+QLinkedListData (0xb4bd0b7c) 0
+
+Class QMargins
+ size=16 align=4
+ base size=16 base align=4
+QMargins (0xb4bd0d98) 0
+
+Class QSize
+ size=8 align=4
+ base size=8 base align=4
+QSize (0xb4a57f00) 0
+
+Class QSizeF
+ size=16 align=4
+ base size=16 base align=4
+QSizeF (0xb4a7d99c) 0
+
+Class QRect
+ size=16 align=4
+ base size=16 base align=4
+QRect (0xb4aa85a0) 0
+
+Class QRectF
+ size=32 align=4
+ base size=32 base align=4
+QRectF (0xb4b0d1e0) 0
+
+Class QLatin1Literal
+ size=8 align=4
+ base size=8 base align=4
+QLatin1Literal (0xb4954f78) 0
+
+Class QAbstractConcatenable
+ size=1 align=1
+ base size=0 base align=1
+QAbstractConcatenable (0xb496d03c) 0 empty
+
+Class QTextBoundaryFinder
+ size=28 align=4
+ base size=28 base align=4
+QTextBoundaryFinder (0xb49852d0) 0
+
+Vtable for QTimeLine
+QTimeLine::_ZTV9QTimeLine: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QTimeLine)
+8 QTimeLine::metaObject
+12 QTimeLine::qt_metacast
+16 QTimeLine::qt_metacall
+20 QTimeLine::~QTimeLine
+24 QTimeLine::~QTimeLine
+28 QObject::event
+32 QObject::eventFilter
+36 QTimeLine::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QTimeLine::valueForTime
+
+Class QTimeLine
+ size=8 align=4
+ base size=8 base align=4
+QTimeLine (0xb498f180) 0
+ vptr=((& QTimeLine::_ZTV9QTimeLine) + 8u)
+ QObject (0xb4985384) 0
+ primary-for QTimeLine (0xb498f180)
+
+Vtable for QRunnable
+QRunnable::_ZTV9QRunnable: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QRunnable)
+8 __cxa_pure_virtual
+12 QRunnable::~QRunnable
+16 QRunnable::~QRunnable
+
+Class QRunnable
+ size=8 align=4
+ base size=8 base align=4
+QRunnable (0xb4985618) 0
+ vptr=((& QRunnable::_ZTV9QRunnable) + 8u)
+
+Class QMutex
+ size=4 align=4
+ base size=4 base align=4
+QMutex (0xb4985a8c) 0
+
+Class QMutexLocker
+ size=4 align=4
+ base size=4 base align=4
+QMutexLocker (0xb49cf12c) 0
+
+Vtable for QtConcurrent::Exception
+QtConcurrent::Exception::_ZTVN12QtConcurrent9ExceptionE: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN12QtConcurrent9ExceptionE)
+8 QtConcurrent::Exception::~Exception
+12 QtConcurrent::Exception::~Exception
+16 std::exception::what
+20 QtConcurrent::Exception::raise
+24 QtConcurrent::Exception::clone
+
+Class QtConcurrent::Exception
+ size=4 align=4
+ base size=4 base align=4
+QtConcurrent::Exception (0xb49d9300) 0 nearly-empty
+ vptr=((& QtConcurrent::Exception::_ZTVN12QtConcurrent9ExceptionE) + 8u)
+ std::exception (0xb49cf618) 0 nearly-empty
+ primary-for QtConcurrent::Exception (0xb49d9300)
+
+Vtable for QtConcurrent::UnhandledException
+QtConcurrent::UnhandledException::_ZTVN12QtConcurrent18UnhandledExceptionE: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN12QtConcurrent18UnhandledExceptionE)
+8 QtConcurrent::UnhandledException::~UnhandledException
+12 QtConcurrent::UnhandledException::~UnhandledException
+16 std::exception::what
+20 QtConcurrent::UnhandledException::raise
+24 QtConcurrent::UnhandledException::clone
+
+Class QtConcurrent::UnhandledException
+ size=4 align=4
+ base size=4 base align=4
+QtConcurrent::UnhandledException (0xb49d9400) 0 nearly-empty
+ vptr=((& QtConcurrent::UnhandledException::_ZTVN12QtConcurrent18UnhandledExceptionE) + 8u)
+ QtConcurrent::Exception (0xb49d9440) 0 nearly-empty
+ primary-for QtConcurrent::UnhandledException (0xb49d9400)
+ std::exception (0xb49cf654) 0 nearly-empty
+ primary-for QtConcurrent::Exception (0xb49d9440)
+
+Class QtConcurrent::internal::ExceptionHolder
+ size=4 align=4
+ base size=4 base align=4
+QtConcurrent::internal::ExceptionHolder (0xb49cf690) 0
+
+Class QtConcurrent::internal::ExceptionStore
+ size=4 align=4
+ base size=4 base align=4
+QtConcurrent::internal::ExceptionStore (0xb49cf6cc) 0
+
+Class QtConcurrent::ResultItem
+ size=8 align=4
+ base size=8 base align=4
+QtConcurrent::ResultItem (0xb49cf708) 0
+
+Class QtConcurrent::ResultIteratorBase
+ size=8 align=4
+ base size=8 base align=4
+QtConcurrent::ResultIteratorBase (0xb49cfce4) 0
+
+Vtable for QtConcurrent::ResultStoreBase
+QtConcurrent::ResultStoreBase::_ZTVN12QtConcurrent15ResultStoreBaseE: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN12QtConcurrent15ResultStoreBaseE)
+8 QtConcurrent::ResultStoreBase::~ResultStoreBase
+12 QtConcurrent::ResultStoreBase::~ResultStoreBase
+
+Class QtConcurrent::ResultStoreBase
+ size=28 align=4
+ base size=28 base align=4
+QtConcurrent::ResultStoreBase (0xb49cfe10) 0
+ vptr=((& QtConcurrent::ResultStoreBase::_ZTVN12QtConcurrent15ResultStoreBaseE) + 8u)
+
+Vtable for QFutureInterfaceBase
+QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QFutureInterfaceBase)
+8 QFutureInterfaceBase::~QFutureInterfaceBase
+12 QFutureInterfaceBase::~QFutureInterfaceBase
+
+Class QFutureInterfaceBase
+ size=8 align=4
+ base size=8 base align=4
+QFutureInterfaceBase (0xb4a0b258) 0
+ vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 8u)
+
+Vtable for QFutureWatcherBase
+QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QFutureWatcherBase)
+8 QFutureWatcherBase::metaObject
+12 QFutureWatcherBase::qt_metacast
+16 QFutureWatcherBase::qt_metacall
+20 QFutureWatcherBase::~QFutureWatcherBase
+24 QFutureWatcherBase::~QFutureWatcherBase
+28 QFutureWatcherBase::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QFutureWatcherBase::connectNotify
+52 QFutureWatcherBase::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+
+Class QFutureWatcherBase
+ size=8 align=4
+ base size=8 base align=4
+QFutureWatcherBase (0xb488b240) 0
+ vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 8u)
+ QObject (0xb4874c30) 0
+ primary-for QFutureWatcherBase (0xb488b240)
+
+Vtable for QThread
+QThread::_ZTV7QThread: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QThread)
+8 QThread::metaObject
+12 QThread::qt_metacast
+16 QThread::qt_metacall
+20 QThread::~QThread
+24 QThread::~QThread
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QThread::run
+
+Class QThread
+ size=8 align=4
+ base size=8 base align=4
+QThread (0xb48b0400) 0
+ vptr=((& QThread::_ZTV7QThread) + 8u)
+ QObject (0xb48a6c30) 0
+ primary-for QThread (0xb48b0400)
+
+Vtable for QThreadPool
+QThreadPool::_ZTV11QThreadPool: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QThreadPool)
+8 QThreadPool::metaObject
+12 QThreadPool::qt_metacast
+16 QThreadPool::qt_metacall
+20 QThreadPool::~QThreadPool
+24 QThreadPool::~QThreadPool
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QThreadPool
+ size=8 align=4
+ base size=8 base align=4
+QThreadPool (0xb48b0740) 0
+ vptr=((& QThreadPool::_ZTV11QThreadPool) + 8u)
+ QObject (0xb48a6ec4) 0
+ primary-for QThreadPool (0xb48b0740)
+
+Class QWaitCondition
+ size=4 align=4
+ base size=4 base align=4
+QWaitCondition (0xb48d30f0) 0
+
+Class QSemaphore
+ size=4 align=4
+ base size=4 base align=4
+QSemaphore (0xb48d312c) 0
+
+Class QtConcurrent::ThreadEngineBarrier
+ size=12 align=4
+ base size=12 base align=4
+QtConcurrent::ThreadEngineBarrier (0xb48d3168) 0
+
+Vtable for QtConcurrent::ThreadEngineBase
+QtConcurrent::ThreadEngineBase::_ZTVN12QtConcurrent16ThreadEngineBaseE: 11u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN12QtConcurrent16ThreadEngineBaseE)
+8 QtConcurrent::ThreadEngineBase::run
+12 QtConcurrent::ThreadEngineBase::~ThreadEngineBase
+16 QtConcurrent::ThreadEngineBase::~ThreadEngineBase
+20 QtConcurrent::ThreadEngineBase::start
+24 QtConcurrent::ThreadEngineBase::finish
+28 QtConcurrent::ThreadEngineBase::threadFunction
+32 QtConcurrent::ThreadEngineBase::shouldStartThread
+36 QtConcurrent::ThreadEngineBase::shouldThrottleThread
+40 __cxa_pure_virtual
+
+Class QtConcurrent::ThreadEngineBase
+ size=32 align=4
+ base size=32 base align=4
+QtConcurrent::ThreadEngineBase (0xb48b0ac0) 0
+ vptr=((& QtConcurrent::ThreadEngineBase::_ZTVN12QtConcurrent16ThreadEngineBaseE) + 8u)
+ QRunnable (0xb48d31a4) 0
+ primary-for QtConcurrent::ThreadEngineBase (0xb48b0ac0)
+
+VTT for QtConcurrent::ThreadEngine<void>
+QtConcurrent::ThreadEngine<void>::_ZTTN12QtConcurrent12ThreadEngineIvEE: 2u entries
+0 ((& QtConcurrent::ThreadEngine<void>::_ZTVN12QtConcurrent12ThreadEngineIvEE) + 12u)
+4 ((& QtConcurrent::ThreadEngine<void>::_ZTVN12QtConcurrent12ThreadEngineIvEE) + 68u)
+
+Class QtConcurrent::BlockSizeManager
+ size=72 align=4
+ base size=72 base align=4
+QtConcurrent::BlockSizeManager (0xb48fb780) 0
+
+Vtable for QFactoryInterface
+QFactoryInterface::_ZTV17QFactoryInterface: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QFactoryInterface)
+8 QFactoryInterface::~QFactoryInterface
+12 QFactoryInterface::~QFactoryInterface
+16 __cxa_pure_virtual
+
+Class QFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QFactoryInterface (0xb458a078) 0 nearly-empty
+ vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 8u)
+
+Vtable for QTextCodecFactoryInterface
+QTextCodecFactoryInterface::_ZTV26QTextCodecFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI26QTextCodecFactoryInterface)
+8 QTextCodecFactoryInterface::~QTextCodecFactoryInterface
+12 QTextCodecFactoryInterface::~QTextCodecFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QTextCodecFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QTextCodecFactoryInterface (0xb458bec0) 0 nearly-empty
+ vptr=((& QTextCodecFactoryInterface::_ZTV26QTextCodecFactoryInterface) + 8u)
+ QFactoryInterface (0xb458a618) 0 nearly-empty
+ primary-for QTextCodecFactoryInterface (0xb458bec0)
+
+Vtable for QTextCodecPlugin
+QTextCodecPlugin::_ZTV16QTextCodecPlugin: 27u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QTextCodecPlugin)
+8 QTextCodecPlugin::metaObject
+12 QTextCodecPlugin::qt_metacast
+16 QTextCodecPlugin::qt_metacall
+20 QTextCodecPlugin::~QTextCodecPlugin
+24 QTextCodecPlugin::~QTextCodecPlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 QTextCodecPlugin::keys
+80 QTextCodecPlugin::create
+84 (int (*)(...))-0x000000008
+88 (int (*)(...))(& _ZTI16QTextCodecPlugin)
+92 QTextCodecPlugin::_ZThn8_N16QTextCodecPluginD1Ev
+96 QTextCodecPlugin::_ZThn8_N16QTextCodecPluginD0Ev
+100 QTextCodecPlugin::_ZThn8_NK16QTextCodecPlugin4keysEv
+104 QTextCodecPlugin::_ZThn8_N16QTextCodecPlugin6createERK7QString
+
+Class QTextCodecPlugin
+ size=12 align=4
+ base size=12 base align=4
+QTextCodecPlugin (0xb45a72d0) 0
+ vptr=((& QTextCodecPlugin::_ZTV16QTextCodecPlugin) + 8u)
+ QObject (0xb458a924) 0
+ primary-for QTextCodecPlugin (0xb45a72d0)
+ QTextCodecFactoryInterface (0xb45a5180) 8 nearly-empty
+ vptr=((& QTextCodecPlugin::_ZTV16QTextCodecPlugin) + 92u)
+ QFactoryInterface (0xb458a960) 8 nearly-empty
+ primary-for QTextCodecFactoryInterface (0xb45a5180)
+
+Class QLibraryInfo
+ size=1 align=1
+ base size=0 base align=1
+QLibraryInfo (0xb45b9dd4) 0 empty
+
+Vtable for QEventLoop
+QEventLoop::_ZTV10QEventLoop: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QEventLoop)
+8 QEventLoop::metaObject
+12 QEventLoop::qt_metacast
+16 QEventLoop::qt_metacall
+20 QEventLoop::~QEventLoop
+24 QEventLoop::~QEventLoop
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QEventLoop
+ size=8 align=4
+ base size=8 base align=4
+QEventLoop (0xb45c9d40) 0
+ vptr=((& QEventLoop::_ZTV10QEventLoop) + 8u)
+ QObject (0xb45b9e4c) 0
+ primary-for QEventLoop (0xb45c9d40)
+
+Vtable for QAbstractEventDispatcher
+QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 27u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
+8 QAbstractEventDispatcher::metaObject
+12 QAbstractEventDispatcher::qt_metacast
+16 QAbstractEventDispatcher::qt_metacall
+20 QAbstractEventDispatcher::~QAbstractEventDispatcher
+24 QAbstractEventDispatcher::~QAbstractEventDispatcher
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 QAbstractEventDispatcher::startingUp
+104 QAbstractEventDispatcher::closingDown
+
+Class QAbstractEventDispatcher
+ size=8 align=4
+ base size=8 base align=4
+QAbstractEventDispatcher (0xb45e6140) 0
+ vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 8u)
+ QObject (0xb45e5168) 0
+ primary-for QAbstractEventDispatcher (0xb45e6140)
+
+Class QModelIndex
+ size=16 align=4
+ base size=16 base align=4
+QModelIndex (0xb45e5384) 0
+
+Class QPersistentModelIndex
+ size=4 align=4
+ base size=4 base align=4
+QPersistentModelIndex (0xb4614834) 0
+
+Vtable for QAbstractItemModel
+QAbstractItemModel::_ZTV18QAbstractItemModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QAbstractItemModel)
+8 QAbstractItemModel::metaObject
+12 QAbstractItemModel::qt_metacast
+16 QAbstractItemModel::qt_metacall
+20 QAbstractItemModel::~QAbstractItemModel
+24 QAbstractItemModel::~QAbstractItemModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 QAbstractItemModel::hasChildren
+76 __cxa_pure_virtual
+80 QAbstractItemModel::setData
+84 QAbstractItemModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QAbstractItemModel::mimeTypes
+104 QAbstractItemModel::mimeData
+108 QAbstractItemModel::dropMimeData
+112 QAbstractItemModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QAbstractItemModel::flags
+144 QAbstractItemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QAbstractItemModel
+ size=8 align=4
+ base size=8 base align=4
+QAbstractItemModel (0xb45e6d80) 0
+ vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 8u)
+ QObject (0xb461499c) 0
+ primary-for QAbstractItemModel (0xb45e6d80)
+
+Vtable for QAbstractTableModel
+QAbstractTableModel::_ZTV19QAbstractTableModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractTableModel)
+8 QAbstractTableModel::metaObject
+12 QAbstractTableModel::qt_metacast
+16 QAbstractTableModel::qt_metacall
+20 QAbstractTableModel::~QAbstractTableModel
+24 QAbstractTableModel::~QAbstractTableModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QAbstractTableModel::index
+60 QAbstractTableModel::parent
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 QAbstractTableModel::hasChildren
+76 __cxa_pure_virtual
+80 QAbstractItemModel::setData
+84 QAbstractItemModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QAbstractItemModel::mimeTypes
+104 QAbstractItemModel::mimeData
+108 QAbstractTableModel::dropMimeData
+112 QAbstractItemModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QAbstractItemModel::flags
+144 QAbstractItemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QAbstractTableModel
+ size=8 align=4
+ base size=8 base align=4
+QAbstractTableModel (0xb444b3c0) 0
+ vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 8u)
+ QAbstractItemModel (0xb444b400) 0
+ primary-for QAbstractTableModel (0xb444b3c0)
+ QObject (0xb445130c) 0
+ primary-for QAbstractItemModel (0xb444b400)
+
+Vtable for QAbstractListModel
+QAbstractListModel::_ZTV18QAbstractListModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QAbstractListModel)
+8 QAbstractListModel::metaObject
+12 QAbstractListModel::qt_metacast
+16 QAbstractListModel::qt_metacall
+20 QAbstractListModel::~QAbstractListModel
+24 QAbstractListModel::~QAbstractListModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QAbstractListModel::index
+60 QAbstractListModel::parent
+64 __cxa_pure_virtual
+68 QAbstractListModel::columnCount
+72 QAbstractListModel::hasChildren
+76 __cxa_pure_virtual
+80 QAbstractItemModel::setData
+84 QAbstractItemModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QAbstractItemModel::mimeTypes
+104 QAbstractItemModel::mimeData
+108 QAbstractListModel::dropMimeData
+112 QAbstractItemModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QAbstractItemModel::flags
+144 QAbstractItemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QAbstractListModel
+ size=8 align=4
+ base size=8 base align=4
+QAbstractListModel (0xb444b640) 0
+ vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 8u)
+ QAbstractItemModel (0xb444b680) 0
+ primary-for QAbstractListModel (0xb444b640)
+ QObject (0xb4451438) 0
+ primary-for QAbstractItemModel (0xb444b680)
+
+Class QBasicTimer
+ size=4 align=4
+ base size=4 base align=4
+QBasicTimer (0xb447930c) 0
+
+Vtable for QCoreApplication
+QCoreApplication::_ZTV16QCoreApplication: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QCoreApplication)
+8 QCoreApplication::metaObject
+12 QCoreApplication::qt_metacast
+16 QCoreApplication::qt_metacall
+20 QCoreApplication::~QCoreApplication
+24 QCoreApplication::~QCoreApplication
+28 QCoreApplication::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QCoreApplication::notify
+60 QCoreApplication::compressEvent
+
+Class QCoreApplication
+ size=8 align=4
+ base size=8 base align=4
+QCoreApplication (0xb4482140) 0
+ vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 8u)
+ QObject (0xb44795a0) 0
+ primary-for QCoreApplication (0xb4482140)
+
+Class __exception
+ size=32 align=4
+ base size=32 base align=4
+__exception (0xb4479b40) 0
+
+Class QMetaMethod
+ size=8 align=4
+ base size=8 base align=4
+QMetaMethod (0xb44d5870) 0
+
+Class QMetaEnum
+ size=8 align=4
+ base size=8 base align=4
+QMetaEnum (0xb44d5b7c) 0
+
+Class QMetaProperty
+ size=20 align=4
+ base size=20 base align=4
+QMetaProperty (0xb44d5dd4) 0
+
+Class QMetaClassInfo
+ size=8 align=4
+ base size=8 base align=4
+QMetaClassInfo (0xb44d5e88) 0
+
+Vtable for QMimeData
+QMimeData::_ZTV9QMimeData: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QMimeData)
+8 QMimeData::metaObject
+12 QMimeData::qt_metacast
+16 QMimeData::qt_metacall
+20 QMimeData::~QMimeData
+24 QMimeData::~QMimeData
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QMimeData::hasFormat
+60 QMimeData::formats
+64 QMimeData::retrieveData
+
+Class QMimeData
+ size=8 align=4
+ base size=8 base align=4
+QMimeData (0xb44d8f80) 0
+ vptr=((& QMimeData::_ZTV9QMimeData) + 8u)
+ QObject (0xb44fe0f0) 0
+ primary-for QMimeData (0xb44d8f80)
+
+Vtable for QObjectCleanupHandler
+QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QObjectCleanupHandler)
+8 QObjectCleanupHandler::metaObject
+12 QObjectCleanupHandler::qt_metacast
+16 QObjectCleanupHandler::qt_metacall
+20 QObjectCleanupHandler::~QObjectCleanupHandler
+24 QObjectCleanupHandler::~QObjectCleanupHandler
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QObjectCleanupHandler
+ size=12 align=4
+ base size=12 base align=4
+QObjectCleanupHandler (0xb4503240) 0
+ vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 8u)
+ QObject (0xb44fe30c) 0
+ primary-for QObjectCleanupHandler (0xb4503240)
+
+Vtable for QSharedMemory
+QSharedMemory::_ZTV13QSharedMemory: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QSharedMemory)
+8 QSharedMemory::metaObject
+12 QSharedMemory::qt_metacast
+16 QSharedMemory::qt_metacall
+20 QSharedMemory::~QSharedMemory
+24 QSharedMemory::~QSharedMemory
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSharedMemory
+ size=8 align=4
+ base size=8 base align=4
+QSharedMemory (0xb4503480) 0
+ vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 8u)
+ QObject (0xb44fe438) 0
+ primary-for QSharedMemory (0xb4503480)
+
+Vtable for QSignalMapper
+QSignalMapper::_ZTV13QSignalMapper: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QSignalMapper)
+8 QSignalMapper::metaObject
+12 QSignalMapper::qt_metacast
+16 QSignalMapper::qt_metacall
+20 QSignalMapper::~QSignalMapper
+24 QSignalMapper::~QSignalMapper
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSignalMapper
+ size=8 align=4
+ base size=8 base align=4
+QSignalMapper (0xb4503740) 0
+ vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 8u)
+ QObject (0xb44fe654) 0
+ primary-for QSignalMapper (0xb4503740)
+
+Vtable for QSocketNotifier
+QSocketNotifier::_ZTV15QSocketNotifier: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QSocketNotifier)
+8 QSocketNotifier::metaObject
+12 QSocketNotifier::qt_metacast
+16 QSocketNotifier::qt_metacall
+20 QSocketNotifier::~QSocketNotifier
+24 QSocketNotifier::~QSocketNotifier
+28 QSocketNotifier::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSocketNotifier
+ size=20 align=4
+ base size=17 base align=4
+QSocketNotifier (0xb4503a00) 0
+ vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 8u)
+ QObject (0xb44fe870) 0
+ primary-for QSocketNotifier (0xb4503a00)
+
+Class QSystemSemaphore
+ size=4 align=4
+ base size=4 base align=4
+QSystemSemaphore (0xb44feb40) 0
+
+Vtable for QTimer
+QTimer::_ZTV6QTimer: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QTimer)
+8 QTimer::metaObject
+12 QTimer::qt_metacast
+16 QTimer::qt_metacall
+20 QTimer::~QTimer
+24 QTimer::~QTimer
+28 QObject::event
+32 QObject::eventFilter
+36 QTimer::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTimer
+ size=24 align=4
+ base size=21 base align=4
+QTimer (0xb4503dc0) 0
+ vptr=((& QTimer::_ZTV6QTimer) + 8u)
+ QObject (0xb44febf4) 0
+ primary-for QTimer (0xb4503dc0)
+
+Vtable for QTranslator
+QTranslator::_ZTV11QTranslator: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTranslator)
+8 QTranslator::metaObject
+12 QTranslator::qt_metacast
+16 QTranslator::qt_metacall
+20 QTranslator::~QTranslator
+24 QTranslator::~QTranslator
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QTranslator::translate
+60 QTranslator::isEmpty
+
+Class QTranslator
+ size=8 align=4
+ base size=8 base align=4
+QTranslator (0xb4358300) 0
+ vptr=((& QTranslator::_ZTV11QTranslator) + 8u)
+ QObject (0xb44fee88) 0
+ primary-for QTranslator (0xb4358300)
+
+Vtable for QLibrary
+QLibrary::_ZTV8QLibrary: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QLibrary)
+8 QLibrary::metaObject
+12 QLibrary::qt_metacast
+16 QLibrary::qt_metacall
+20 QLibrary::~QLibrary
+24 QLibrary::~QLibrary
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QLibrary
+ size=16 align=4
+ base size=13 base align=4
+QLibrary (0xb4358640) 0
+ vptr=((& QLibrary::_ZTV8QLibrary) + 8u)
+ QObject (0xb436b168) 0
+ primary-for QLibrary (0xb4358640)
+
+Vtable for QPluginLoader
+QPluginLoader::_ZTV13QPluginLoader: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QPluginLoader)
+8 QPluginLoader::metaObject
+12 QPluginLoader::qt_metacast
+16 QPluginLoader::qt_metacall
+20 QPluginLoader::~QPluginLoader
+24 QPluginLoader::~QPluginLoader
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QPluginLoader
+ size=16 align=4
+ base size=13 base align=4
+QPluginLoader (0xb4358a40) 0
+ vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 8u)
+ QObject (0xb436b3c0) 0
+ primary-for QPluginLoader (0xb4358a40)
+
+Class QUuid
+ size=16 align=4
+ base size=16 base align=4
+QUuid (0xb436b4ec) 0
+
+Class QReadWriteLock
+ size=4 align=4
+ base size=4 base align=4
+QReadWriteLock (0xb43ad4ec) 0
+
+Class QReadLocker
+ size=4 align=4
+ base size=4 base align=4
+QReadLocker (0xb43ad528) 0
+
+Class QWriteLocker
+ size=4 align=4
+ base size=4 base align=4
+QWriteLocker (0xb43ada14) 0
+
+Class QThreadStorageData
+ size=4 align=4
+ base size=4 base align=4
+QThreadStorageData (0xb43adf00) 0
+
+Vtable for QAbstractAnimation
+QAbstractAnimation::_ZTV18QAbstractAnimation: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QAbstractAnimation)
+8 QAbstractAnimation::metaObject
+12 QAbstractAnimation::qt_metacast
+16 QAbstractAnimation::qt_metacall
+20 QAbstractAnimation::~QAbstractAnimation
+24 QAbstractAnimation::~QAbstractAnimation
+28 QAbstractAnimation::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 QAbstractAnimation::updateState
+68 QAbstractAnimation::updateDirection
+
+Class QAbstractAnimation
+ size=8 align=4
+ base size=8 base align=4
+QAbstractAnimation (0xb43ce940) 0
+ vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 8u)
+ QObject (0xb43adf78) 0
+ primary-for QAbstractAnimation (0xb43ce940)
+
+Vtable for QAnimationGroup
+QAnimationGroup::_ZTV15QAnimationGroup: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QAnimationGroup)
+8 QAnimationGroup::metaObject
+12 QAnimationGroup::qt_metacast
+16 QAnimationGroup::qt_metacall
+20 QAnimationGroup::~QAnimationGroup
+24 QAnimationGroup::~QAnimationGroup
+28 QAnimationGroup::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 QAbstractAnimation::updateState
+68 QAbstractAnimation::updateDirection
+
+Class QAnimationGroup
+ size=8 align=4
+ base size=8 base align=4
+QAnimationGroup (0xb43cec00) 0
+ vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 8u)
+ QAbstractAnimation (0xb43cec40) 0
+ primary-for QAnimationGroup (0xb43cec00)
+ QObject (0xb43e61e0) 0
+ primary-for QAbstractAnimation (0xb43cec40)
+
+Vtable for QParallelAnimationGroup
+QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QParallelAnimationGroup)
+8 QParallelAnimationGroup::metaObject
+12 QParallelAnimationGroup::qt_metacast
+16 QParallelAnimationGroup::qt_metacall
+20 QParallelAnimationGroup::~QParallelAnimationGroup
+24 QParallelAnimationGroup::~QParallelAnimationGroup
+28 QParallelAnimationGroup::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QParallelAnimationGroup::duration
+60 QParallelAnimationGroup::updateCurrentTime
+64 QParallelAnimationGroup::updateState
+68 QParallelAnimationGroup::updateDirection
+
+Class QParallelAnimationGroup
+ size=8 align=4
+ base size=8 base align=4
+QParallelAnimationGroup (0xb43cef00) 0
+ vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 8u)
+ QAnimationGroup (0xb43cef40) 0
+ primary-for QParallelAnimationGroup (0xb43cef00)
+ QAbstractAnimation (0xb43cef80) 0
+ primary-for QAnimationGroup (0xb43cef40)
+ QObject (0xb43e63fc) 0
+ primary-for QAbstractAnimation (0xb43cef80)
+
+Vtable for QPauseAnimation
+QPauseAnimation::_ZTV15QPauseAnimation: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QPauseAnimation)
+8 QPauseAnimation::metaObject
+12 QPauseAnimation::qt_metacast
+16 QPauseAnimation::qt_metacall
+20 QPauseAnimation::~QPauseAnimation
+24 QPauseAnimation::~QPauseAnimation
+28 QPauseAnimation::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QPauseAnimation::duration
+60 QPauseAnimation::updateCurrentTime
+64 QAbstractAnimation::updateState
+68 QAbstractAnimation::updateDirection
+
+Class QPauseAnimation
+ size=8 align=4
+ base size=8 base align=4
+QPauseAnimation (0xb43f9240) 0
+ vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 8u)
+ QAbstractAnimation (0xb43f9280) 0
+ primary-for QPauseAnimation (0xb43f9240)
+ QObject (0xb43e6618) 0
+ primary-for QAbstractAnimation (0xb43f9280)
+
+Vtable for QVariantAnimation
+QVariantAnimation::_ZTV17QVariantAnimation: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QVariantAnimation)
+8 QVariantAnimation::metaObject
+12 QVariantAnimation::qt_metacast
+16 QVariantAnimation::qt_metacall
+20 QVariantAnimation::~QVariantAnimation
+24 QVariantAnimation::~QVariantAnimation
+28 QVariantAnimation::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QVariantAnimation::duration
+60 QVariantAnimation::updateCurrentTime
+64 QVariantAnimation::updateState
+68 QAbstractAnimation::updateDirection
+72 __cxa_pure_virtual
+76 QVariantAnimation::interpolated
+
+Class QVariantAnimation
+ size=8 align=4
+ base size=8 base align=4
+QVariantAnimation (0xb43f9540) 0
+ vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 8u)
+ QAbstractAnimation (0xb43f9580) 0
+ primary-for QVariantAnimation (0xb43f9540)
+ QObject (0xb43e6834) 0
+ primary-for QAbstractAnimation (0xb43f9580)
+
+Vtable for QPropertyAnimation
+QPropertyAnimation::_ZTV18QPropertyAnimation: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QPropertyAnimation)
+8 QPropertyAnimation::metaObject
+12 QPropertyAnimation::qt_metacast
+16 QPropertyAnimation::qt_metacall
+20 QPropertyAnimation::~QPropertyAnimation
+24 QPropertyAnimation::~QPropertyAnimation
+28 QPropertyAnimation::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QVariantAnimation::duration
+60 QVariantAnimation::updateCurrentTime
+64 QPropertyAnimation::updateState
+68 QAbstractAnimation::updateDirection
+72 QPropertyAnimation::updateCurrentValue
+76 QVariantAnimation::interpolated
+
+Class QPropertyAnimation
+ size=8 align=4
+ base size=8 base align=4
+QPropertyAnimation (0xb43f9980) 0
+ vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 8u)
+ QVariantAnimation (0xb43f99c0) 0
+ primary-for QPropertyAnimation (0xb43f9980)
+ QAbstractAnimation (0xb43f9a00) 0
+ primary-for QVariantAnimation (0xb43f99c0)
+ QObject (0xb43e6a50) 0
+ primary-for QAbstractAnimation (0xb43f9a00)
+
+Vtable for QSequentialAnimationGroup
+QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QSequentialAnimationGroup)
+8 QSequentialAnimationGroup::metaObject
+12 QSequentialAnimationGroup::qt_metacast
+16 QSequentialAnimationGroup::qt_metacall
+20 QSequentialAnimationGroup::~QSequentialAnimationGroup
+24 QSequentialAnimationGroup::~QSequentialAnimationGroup
+28 QSequentialAnimationGroup::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QSequentialAnimationGroup::duration
+60 QSequentialAnimationGroup::updateCurrentTime
+64 QSequentialAnimationGroup::updateState
+68 QSequentialAnimationGroup::updateDirection
+
+Class QSequentialAnimationGroup
+ size=8 align=4
+ base size=8 base align=4
+QSequentialAnimationGroup (0xb43f9cc0) 0
+ vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 8u)
+ QAnimationGroup (0xb43f9d00) 0
+ primary-for QSequentialAnimationGroup (0xb43f9cc0)
+ QAbstractAnimation (0xb43f9d40) 0
+ primary-for QAnimationGroup (0xb43f9d00)
+ QObject (0xb43e6c6c) 0
+ primary-for QAbstractAnimation (0xb43f9d40)
+
+Class QColor
+ size=16 align=4
+ base size=14 base align=4
+QColor (0xb4243168) 0
+
+Class QRegion::QRegionData
+ size=16 align=4
+ base size=16 base align=4
+QRegion::QRegionData (0xb42437bc) 0
+
+Class QRegion
+ size=4 align=4
+ base size=4 base align=4
+QRegion (0xb4243780) 0
+
+Class QKeySequence
+ size=4 align=4
+ base size=4 base align=4
+QKeySequence (0xb4243b04) 0
+
+Vtable for QMimeSource
+QMimeSource::_ZTV11QMimeSource: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QMimeSource)
+8 QMimeSource::~QMimeSource
+12 QMimeSource::~QMimeSource
+16 __cxa_pure_virtual
+20 QMimeSource::provides
+24 __cxa_pure_virtual
+
+Class QMimeSource
+ size=4 align=4
+ base size=4 base align=4
+QMimeSource (0xb4243d20) 0 nearly-empty
+ vptr=((& QMimeSource::_ZTV11QMimeSource) + 8u)
+
+Vtable for QDrag
+QDrag::_ZTV5QDrag: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI5QDrag)
+8 QDrag::metaObject
+12 QDrag::qt_metacast
+16 QDrag::qt_metacall
+20 QDrag::~QDrag
+24 QDrag::~QDrag
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QDrag
+ size=8 align=4
+ base size=8 base align=4
+QDrag (0xb42719c0) 0
+ vptr=((& QDrag::_ZTV5QDrag) + 8u)
+ QObject (0xb4243d5c) 0
+ primary-for QDrag (0xb42719c0)
+
+Vtable for QInputEvent
+QInputEvent::_ZTV11QInputEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QInputEvent)
+8 QInputEvent::~QInputEvent
+12 QInputEvent::~QInputEvent
+
+Class QInputEvent
+ size=16 align=4
+ base size=16 base align=4
+QInputEvent (0xb4271c80) 0
+ vptr=((& QInputEvent::_ZTV11QInputEvent) + 8u)
+ QEvent (0xb4243f78) 0
+ primary-for QInputEvent (0xb4271c80)
+
+Vtable for QMouseEvent
+QMouseEvent::_ZTV11QMouseEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QMouseEvent)
+8 QMouseEvent::~QMouseEvent
+12 QMouseEvent::~QMouseEvent
+
+Class QMouseEvent
+ size=40 align=4
+ base size=40 base align=4
+QMouseEvent (0xb4271d80) 0
+ vptr=((& QMouseEvent::_ZTV11QMouseEvent) + 8u)
+ QInputEvent (0xb4271dc0) 0
+ primary-for QMouseEvent (0xb4271d80)
+ QEvent (0xb42cb078) 0
+ primary-for QInputEvent (0xb4271dc0)
+
+Vtable for QHoverEvent
+QHoverEvent::_ZTV11QHoverEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QHoverEvent)
+8 QHoverEvent::~QHoverEvent
+12 QHoverEvent::~QHoverEvent
+
+Class QHoverEvent
+ size=28 align=4
+ base size=28 base align=4
+QHoverEvent (0xb42d71c0) 0
+ vptr=((& QHoverEvent::_ZTV11QHoverEvent) + 8u)
+ QEvent (0xb42cb564) 0
+ primary-for QHoverEvent (0xb42d71c0)
+
+Vtable for QWheelEvent
+QWheelEvent::_ZTV11QWheelEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QWheelEvent)
+8 QWheelEvent::~QWheelEvent
+12 QWheelEvent::~QWheelEvent
+
+Class QWheelEvent
+ size=44 align=4
+ base size=44 base align=4
+QWheelEvent (0xb42d72c0) 0
+ vptr=((& QWheelEvent::_ZTV11QWheelEvent) + 8u)
+ QInputEvent (0xb42d7300) 0
+ primary-for QWheelEvent (0xb42d72c0)
+ QEvent (0xb42cb618) 0
+ primary-for QInputEvent (0xb42d7300)
+
+Vtable for QTabletEvent
+QTabletEvent::_ZTV12QTabletEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QTabletEvent)
+8 QTabletEvent::~QTabletEvent
+12 QTabletEvent::~QTabletEvent
+
+Class QTabletEvent
+ size=104 align=4
+ base size=104 base align=4
+QTabletEvent (0xb42d7640) 0
+ vptr=((& QTabletEvent::_ZTV12QTabletEvent) + 8u)
+ QInputEvent (0xb42d7680) 0
+ primary-for QTabletEvent (0xb42d7640)
+ QEvent (0xb42cb9d8) 0
+ primary-for QInputEvent (0xb42d7680)
+
+Vtable for QKeyEvent
+QKeyEvent::_ZTV9QKeyEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QKeyEvent)
+8 QKeyEvent::~QKeyEvent
+12 QKeyEvent::~QKeyEvent
+
+Class QKeyEvent
+ size=28 align=4
+ base size=27 base align=4
+QKeyEvent (0xb42d7b80) 0
+ vptr=((& QKeyEvent::_ZTV9QKeyEvent) + 8u)
+ QInputEvent (0xb42d7bc0) 0
+ primary-for QKeyEvent (0xb42d7b80)
+ QEvent (0xb430003c) 0
+ primary-for QInputEvent (0xb42d7bc0)
+
+Vtable for QFocusEvent
+QFocusEvent::_ZTV11QFocusEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFocusEvent)
+8 QFocusEvent::~QFocusEvent
+12 QFocusEvent::~QFocusEvent
+
+Class QFocusEvent
+ size=16 align=4
+ base size=16 base align=4
+QFocusEvent (0xb4310100) 0
+ vptr=((& QFocusEvent::_ZTV11QFocusEvent) + 8u)
+ QEvent (0xb4300a8c) 0
+ primary-for QFocusEvent (0xb4310100)
+
+Vtable for QPaintEvent
+QPaintEvent::_ZTV11QPaintEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QPaintEvent)
+8 QPaintEvent::~QPaintEvent
+12 QPaintEvent::~QPaintEvent
+
+Class QPaintEvent
+ size=36 align=4
+ base size=33 base align=4
+QPaintEvent (0xb4310280) 0
+ vptr=((& QPaintEvent::_ZTV11QPaintEvent) + 8u)
+ QEvent (0xb4300b40) 0
+ primary-for QPaintEvent (0xb4310280)
+
+Vtable for QUpdateLaterEvent
+QUpdateLaterEvent::_ZTV17QUpdateLaterEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QUpdateLaterEvent)
+8 QUpdateLaterEvent::~QUpdateLaterEvent
+12 QUpdateLaterEvent::~QUpdateLaterEvent
+
+Class QUpdateLaterEvent
+ size=16 align=4
+ base size=16 base align=4
+QUpdateLaterEvent (0xb4310400) 0
+ vptr=((& QUpdateLaterEvent::_ZTV17QUpdateLaterEvent) + 8u)
+ QEvent (0xb4300c6c) 0
+ primary-for QUpdateLaterEvent (0xb4310400)
+
+Vtable for QMoveEvent
+QMoveEvent::_ZTV10QMoveEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QMoveEvent)
+8 QMoveEvent::~QMoveEvent
+12 QMoveEvent::~QMoveEvent
+
+Class QMoveEvent
+ size=28 align=4
+ base size=28 base align=4
+QMoveEvent (0xb43104c0) 0
+ vptr=((& QMoveEvent::_ZTV10QMoveEvent) + 8u)
+ QEvent (0xb4300ce4) 0
+ primary-for QMoveEvent (0xb43104c0)
+
+Vtable for QResizeEvent
+QResizeEvent::_ZTV12QResizeEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QResizeEvent)
+8 QResizeEvent::~QResizeEvent
+12 QResizeEvent::~QResizeEvent
+
+Class QResizeEvent
+ size=28 align=4
+ base size=28 base align=4
+QResizeEvent (0xb43105c0) 0
+ vptr=((& QResizeEvent::_ZTV12QResizeEvent) + 8u)
+ QEvent (0xb4300d98) 0
+ primary-for QResizeEvent (0xb43105c0)
+
+Vtable for QCloseEvent
+QCloseEvent::_ZTV11QCloseEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QCloseEvent)
+8 QCloseEvent::~QCloseEvent
+12 QCloseEvent::~QCloseEvent
+
+Class QCloseEvent
+ size=12 align=4
+ base size=12 base align=4
+QCloseEvent (0xb43106c0) 0
+ vptr=((& QCloseEvent::_ZTV11QCloseEvent) + 8u)
+ QEvent (0xb4300e4c) 0
+ primary-for QCloseEvent (0xb43106c0)
+
+Vtable for QIconDragEvent
+QIconDragEvent::_ZTV14QIconDragEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QIconDragEvent)
+8 QIconDragEvent::~QIconDragEvent
+12 QIconDragEvent::~QIconDragEvent
+
+Class QIconDragEvent
+ size=12 align=4
+ base size=12 base align=4
+QIconDragEvent (0xb4310740) 0
+ vptr=((& QIconDragEvent::_ZTV14QIconDragEvent) + 8u)
+ QEvent (0xb4300e88) 0
+ primary-for QIconDragEvent (0xb4310740)
+
+Vtable for QShowEvent
+QShowEvent::_ZTV10QShowEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QShowEvent)
+8 QShowEvent::~QShowEvent
+12 QShowEvent::~QShowEvent
+
+Class QShowEvent
+ size=12 align=4
+ base size=12 base align=4
+QShowEvent (0xb43107c0) 0
+ vptr=((& QShowEvent::_ZTV10QShowEvent) + 8u)
+ QEvent (0xb4300ec4) 0
+ primary-for QShowEvent (0xb43107c0)
+
+Vtable for QHideEvent
+QHideEvent::_ZTV10QHideEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QHideEvent)
+8 QHideEvent::~QHideEvent
+12 QHideEvent::~QHideEvent
+
+Class QHideEvent
+ size=12 align=4
+ base size=12 base align=4
+QHideEvent (0xb4310840) 0
+ vptr=((& QHideEvent::_ZTV10QHideEvent) + 8u)
+ QEvent (0xb4300f00) 0
+ primary-for QHideEvent (0xb4310840)
+
+Vtable for QContextMenuEvent
+QContextMenuEvent::_ZTV17QContextMenuEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QContextMenuEvent)
+8 QContextMenuEvent::~QContextMenuEvent
+12 QContextMenuEvent::~QContextMenuEvent
+
+Class QContextMenuEvent
+ size=36 align=4
+ base size=33 base align=4
+QContextMenuEvent (0xb43108c0) 0
+ vptr=((& QContextMenuEvent::_ZTV17QContextMenuEvent) + 8u)
+ QInputEvent (0xb4310900) 0
+ primary-for QContextMenuEvent (0xb43108c0)
+ QEvent (0xb4300f3c) 0
+ primary-for QInputEvent (0xb4310900)
+
+Class QInputMethodEvent::Attribute
+ size=24 align=4
+ base size=24 base align=4
+QInputMethodEvent::Attribute (0xb4116294) 0
+
+Vtable for QInputMethodEvent
+QInputMethodEvent::_ZTV17QInputMethodEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QInputMethodEvent)
+8 QInputMethodEvent::~QInputMethodEvent
+12 QInputMethodEvent::~QInputMethodEvent
+
+Class QInputMethodEvent
+ size=32 align=4
+ base size=32 base align=4
+QInputMethodEvent (0xb4310b40) 0
+ vptr=((& QInputMethodEvent::_ZTV17QInputMethodEvent) + 8u)
+ QEvent (0xb4116258) 0
+ primary-for QInputMethodEvent (0xb4310b40)
+
+Vtable for QDropEvent
+QDropEvent::_ZTV10QDropEvent: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QDropEvent)
+8 QDropEvent::~QDropEvent
+12 QDropEvent::~QDropEvent
+16 QDropEvent::format
+20 QDropEvent::encodedData
+24 QDropEvent::provides
+28 (int (*)(...))-0x00000000c
+32 (int (*)(...))(& _ZTI10QDropEvent)
+36 QDropEvent::_ZThn12_N10QDropEventD1Ev
+40 QDropEvent::_ZThn12_N10QDropEventD0Ev
+44 QDropEvent::_ZThn12_NK10QDropEvent6formatEi
+48 QDropEvent::_ZThn12_NK10QDropEvent8providesEPKc
+52 QDropEvent::_ZThn12_NK10QDropEvent11encodedDataEPKc
+
+Class QDropEvent
+ size=52 align=4
+ base size=52 base align=4
+QDropEvent (0xb41305a0) 0
+ vptr=((& QDropEvent::_ZTV10QDropEvent) + 8u)
+ QEvent (0xb41167f8) 0
+ primary-for QDropEvent (0xb41305a0)
+ QMimeSource (0xb4116834) 12 nearly-empty
+ vptr=((& QDropEvent::_ZTV10QDropEvent) + 36u)
+
+Vtable for QDragMoveEvent
+QDragMoveEvent::_ZTV14QDragMoveEvent: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QDragMoveEvent)
+8 QDragMoveEvent::~QDragMoveEvent
+12 QDragMoveEvent::~QDragMoveEvent
+16 QDropEvent::format
+20 QDropEvent::encodedData
+24 QDropEvent::provides
+28 (int (*)(...))-0x00000000c
+32 (int (*)(...))(& _ZTI14QDragMoveEvent)
+36 QDragMoveEvent::_ZThn12_N14QDragMoveEventD1Ev
+40 QDragMoveEvent::_ZThn12_N14QDragMoveEventD0Ev
+44 QDropEvent::_ZThn12_NK10QDropEvent6formatEi
+48 QDropEvent::_ZThn12_NK10QDropEvent8providesEPKc
+52 QDropEvent::_ZThn12_NK10QDropEvent11encodedDataEPKc
+
+Class QDragMoveEvent
+ size=68 align=4
+ base size=68 base align=4
+QDragMoveEvent (0xb413e400) 0
+ vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 8u)
+ QDropEvent (0xb41442d0) 0
+ primary-for QDragMoveEvent (0xb413e400)
+ QEvent (0xb4116d5c) 0
+ primary-for QDropEvent (0xb41442d0)
+ QMimeSource (0xb4116d98) 12 nearly-empty
+ vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 36u)
+
+Vtable for QDragEnterEvent
+QDragEnterEvent::_ZTV15QDragEnterEvent: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QDragEnterEvent)
+8 QDragEnterEvent::~QDragEnterEvent
+12 QDragEnterEvent::~QDragEnterEvent
+16 QDropEvent::format
+20 QDropEvent::encodedData
+24 QDropEvent::provides
+28 (int (*)(...))-0x00000000c
+32 (int (*)(...))(& _ZTI15QDragEnterEvent)
+36 QDragEnterEvent::_ZThn12_N15QDragEnterEventD1Ev
+40 QDragEnterEvent::_ZThn12_N15QDragEnterEventD0Ev
+44 QDropEvent::_ZThn12_NK10QDropEvent6formatEi
+48 QDropEvent::_ZThn12_NK10QDropEvent8providesEPKc
+52 QDropEvent::_ZThn12_NK10QDropEvent11encodedDataEPKc
+
+Class QDragEnterEvent
+ size=68 align=4
+ base size=68 base align=4
+QDragEnterEvent (0xb413e600) 0
+ vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 8u)
+ QDragMoveEvent (0xb413e640) 0
+ primary-for QDragEnterEvent (0xb413e600)
+ QDropEvent (0xb414a3c0) 0
+ primary-for QDragMoveEvent (0xb413e640)
+ QEvent (0xb4116f78) 0
+ primary-for QDropEvent (0xb414a3c0)
+ QMimeSource (0xb4116fb4) 12 nearly-empty
+ vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 36u)
+
+Vtable for QDragResponseEvent
+QDragResponseEvent::_ZTV18QDragResponseEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QDragResponseEvent)
+8 QDragResponseEvent::~QDragResponseEvent
+12 QDragResponseEvent::~QDragResponseEvent
+
+Class QDragResponseEvent
+ size=16 align=4
+ base size=13 base align=4
+QDragResponseEvent (0xb413e6c0) 0
+ vptr=((& QDragResponseEvent::_ZTV18QDragResponseEvent) + 8u)
+ QEvent (0xb414f000) 0
+ primary-for QDragResponseEvent (0xb413e6c0)
+
+Vtable for QDragLeaveEvent
+QDragLeaveEvent::_ZTV15QDragLeaveEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QDragLeaveEvent)
+8 QDragLeaveEvent::~QDragLeaveEvent
+12 QDragLeaveEvent::~QDragLeaveEvent
+
+Class QDragLeaveEvent
+ size=12 align=4
+ base size=12 base align=4
+QDragLeaveEvent (0xb413e780) 0
+ vptr=((& QDragLeaveEvent::_ZTV15QDragLeaveEvent) + 8u)
+ QEvent (0xb414f078) 0
+ primary-for QDragLeaveEvent (0xb413e780)
+
+Vtable for QHelpEvent
+QHelpEvent::_ZTV10QHelpEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QHelpEvent)
+8 QHelpEvent::~QHelpEvent
+12 QHelpEvent::~QHelpEvent
+
+Class QHelpEvent
+ size=28 align=4
+ base size=28 base align=4
+QHelpEvent (0xb413e800) 0
+ vptr=((& QHelpEvent::_ZTV10QHelpEvent) + 8u)
+ QEvent (0xb414f0b4) 0
+ primary-for QHelpEvent (0xb413e800)
+
+Vtable for QStatusTipEvent
+QStatusTipEvent::_ZTV15QStatusTipEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QStatusTipEvent)
+8 QStatusTipEvent::~QStatusTipEvent
+12 QStatusTipEvent::~QStatusTipEvent
+
+Class QStatusTipEvent
+ size=16 align=4
+ base size=16 base align=4
+QStatusTipEvent (0xb413ea00) 0
+ vptr=((& QStatusTipEvent::_ZTV15QStatusTipEvent) + 8u)
+ QEvent (0xb414f348) 0
+ primary-for QStatusTipEvent (0xb413ea00)
+
+Vtable for QWhatsThisClickedEvent
+QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QWhatsThisClickedEvent)
+8 QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+12 QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+
+Class QWhatsThisClickedEvent
+ size=16 align=4
+ base size=16 base align=4
+QWhatsThisClickedEvent (0xb413eac0) 0
+ vptr=((& QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent) + 8u)
+ QEvent (0xb414f3fc) 0
+ primary-for QWhatsThisClickedEvent (0xb413eac0)
+
+Vtable for QActionEvent
+QActionEvent::_ZTV12QActionEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QActionEvent)
+8 QActionEvent::~QActionEvent
+12 QActionEvent::~QActionEvent
+
+Class QActionEvent
+ size=20 align=4
+ base size=20 base align=4
+QActionEvent (0xb413eb80) 0
+ vptr=((& QActionEvent::_ZTV12QActionEvent) + 8u)
+ QEvent (0xb414f4b0) 0
+ primary-for QActionEvent (0xb413eb80)
+
+Vtable for QFileOpenEvent
+QFileOpenEvent::_ZTV14QFileOpenEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QFileOpenEvent)
+8 QFileOpenEvent::~QFileOpenEvent
+12 QFileOpenEvent::~QFileOpenEvent
+
+Class QFileOpenEvent
+ size=16 align=4
+ base size=16 base align=4
+QFileOpenEvent (0xb413ec80) 0
+ vptr=((& QFileOpenEvent::_ZTV14QFileOpenEvent) + 8u)
+ QEvent (0xb414f564) 0
+ primary-for QFileOpenEvent (0xb413ec80)
+
+Vtable for QToolBarChangeEvent
+QToolBarChangeEvent::_ZTV19QToolBarChangeEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QToolBarChangeEvent)
+8 QToolBarChangeEvent::~QToolBarChangeEvent
+12 QToolBarChangeEvent::~QToolBarChangeEvent
+
+Class QToolBarChangeEvent
+ size=16 align=4
+ base size=13 base align=4
+QToolBarChangeEvent (0xb413ed40) 0
+ vptr=((& QToolBarChangeEvent::_ZTV19QToolBarChangeEvent) + 8u)
+ QEvent (0xb414f618) 0
+ primary-for QToolBarChangeEvent (0xb413ed40)
+
+Vtable for QShortcutEvent
+QShortcutEvent::_ZTV14QShortcutEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QShortcutEvent)
+8 QShortcutEvent::~QShortcutEvent
+12 QShortcutEvent::~QShortcutEvent
+
+Class QShortcutEvent
+ size=24 align=4
+ base size=24 base align=4
+QShortcutEvent (0xb413ee80) 0
+ vptr=((& QShortcutEvent::_ZTV14QShortcutEvent) + 8u)
+ QEvent (0xb414f690) 0
+ primary-for QShortcutEvent (0xb413ee80)
+
+Vtable for QClipboardEvent
+QClipboardEvent::_ZTV15QClipboardEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QClipboardEvent)
+8 QClipboardEvent::~QClipboardEvent
+12 QClipboardEvent::~QClipboardEvent
+
+Class QClipboardEvent
+ size=12 align=4
+ base size=12 base align=4
+QClipboardEvent (0xb416c080) 0
+ vptr=((& QClipboardEvent::_ZTV15QClipboardEvent) + 8u)
+ QEvent (0xb414f834) 0
+ primary-for QClipboardEvent (0xb416c080)
+
+Vtable for QWindowStateChangeEvent
+QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QWindowStateChangeEvent)
+8 QWindowStateChangeEvent::~QWindowStateChangeEvent
+12 QWindowStateChangeEvent::~QWindowStateChangeEvent
+
+Class QWindowStateChangeEvent
+ size=16 align=4
+ base size=16 base align=4
+QWindowStateChangeEvent (0xb416c140) 0
+ vptr=((& QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent) + 8u)
+ QEvent (0xb414f8ac) 0
+ primary-for QWindowStateChangeEvent (0xb416c140)
+
+Vtable for QMenubarUpdatedEvent
+QMenubarUpdatedEvent::_ZTV20QMenubarUpdatedEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QMenubarUpdatedEvent)
+8 QMenubarUpdatedEvent::~QMenubarUpdatedEvent
+12 QMenubarUpdatedEvent::~QMenubarUpdatedEvent
+
+Class QMenubarUpdatedEvent
+ size=16 align=4
+ base size=16 base align=4
+QMenubarUpdatedEvent (0xb416c200) 0
+ vptr=((& QMenubarUpdatedEvent::_ZTV20QMenubarUpdatedEvent) + 8u)
+ QEvent (0xb414f960) 0
+ primary-for QMenubarUpdatedEvent (0xb416c200)
+
+Class QTouchEvent::TouchPoint
+ size=4 align=4
+ base size=4 base align=4
+QTouchEvent::TouchPoint (0xb414fb7c) 0
+
+Vtable for QTouchEvent
+QTouchEvent::_ZTV11QTouchEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTouchEvent)
+8 QTouchEvent::~QTouchEvent
+12 QTouchEvent::~QTouchEvent
+
+Class QTouchEvent
+ size=32 align=4
+ base size=32 base align=4
+QTouchEvent (0xb416c340) 0
+ vptr=((& QTouchEvent::_ZTV11QTouchEvent) + 8u)
+ QInputEvent (0xb416c380) 0
+ primary-for QTouchEvent (0xb416c340)
+ QEvent (0xb414fb40) 0
+ primary-for QInputEvent (0xb416c380)
+
+Vtable for QGestureEvent
+QGestureEvent::_ZTV13QGestureEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QGestureEvent)
+8 QGestureEvent::~QGestureEvent
+12 QGestureEvent::~QGestureEvent
+
+Class QGestureEvent
+ size=12 align=4
+ base size=12 base align=4
+QGestureEvent (0xb416c740) 0
+ vptr=((& QGestureEvent::_ZTV13QGestureEvent) + 8u)
+ QEvent (0xb414fe4c) 0
+ primary-for QGestureEvent (0xb416c740)
+
+Class QFont
+ size=8 align=4
+ base size=8 base align=4
+QFont (0xb414fe88) 0
+
+Class QPolygon
+ size=4 align=4
+ base size=4 base align=4
+QPolygon (0xb416cb80) 0
+ QVector<QPoint> (0xb41c312c) 0
+
+Class QPolygonF
+ size=4 align=4
+ base size=4 base align=4
+QPolygonF (0xb41ea1c0) 0
+ QVector<QPointF> (0xb41c3b04) 0
+
+Class QMatrix
+ size=48 align=4
+ base size=48 base align=4
+QMatrix (0xb400b438) 0
+
+Class QPainterPath::Element
+ size=20 align=4
+ base size=20 base align=4
+QPainterPath::Element (0xb40265dc) 0
+
+Class QPainterPath
+ size=4 align=4
+ base size=4 base align=4
+QPainterPath (0xb40265a0) 0
+
+Class QPainterPathPrivate
+ size=8 align=4
+ base size=8 base align=4
+QPainterPathPrivate (0xb4026ac8) 0
+
+Class QPainterPathStroker
+ size=4 align=4
+ base size=4 base align=4
+QPainterPathStroker (0xb4026bf4) 0
+
+Class QTransform
+ size=80 align=4
+ base size=80 base align=4
+QTransform (0xb4089b7c) 0
+
+Vtable for QPaintDevice
+QPaintDevice::_ZTV12QPaintDevice: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QPaintDevice)
+8 QPaintDevice::~QPaintDevice
+12 QPaintDevice::~QPaintDevice
+16 QPaintDevice::devType
+20 __cxa_pure_virtual
+24 QPaintDevice::metric
+
+Class QPaintDevice
+ size=8 align=4
+ base size=6 base align=4
+QPaintDevice (0xb40f4ac8) 0
+ vptr=((& QPaintDevice::_ZTV12QPaintDevice) + 8u)
+
+Class QImageTextKeyLang
+ size=8 align=4
+ base size=8 base align=4
+QImageTextKeyLang (0xb3f0a3c0) 0
+
+Vtable for QImage
+QImage::_ZTV6QImage: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QImage)
+8 QImage::~QImage
+12 QImage::~QImage
+16 QImage::devType
+20 QImage::paintEngine
+24 QImage::metric
+
+Class QImage
+ size=12 align=4
+ base size=12 base align=4
+QImage (0xb40f5b40) 0
+ vptr=((& QImage::_ZTV6QImage) + 8u)
+ QPaintDevice (0xb3f0ad98) 0
+ primary-for QImage (0xb40f5b40)
+
+Vtable for QPixmap
+QPixmap::_ZTV7QPixmap: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QPixmap)
+8 QPixmap::~QPixmap
+12 QPixmap::~QPixmap
+16 QPixmap::devType
+20 QPixmap::paintEngine
+24 QPixmap::metric
+
+Class QPixmap
+ size=12 align=4
+ base size=12 base align=4
+QPixmap (0xb3f72440) 0
+ vptr=((& QPixmap::_ZTV7QPixmap) + 8u)
+ QPaintDevice (0xb3f67960) 0
+ primary-for QPixmap (0xb3f72440)
+
+Class QBrush
+ size=4 align=4
+ base size=4 base align=4
+QBrush (0xb3fb1000) 0
+
+Class QBrushData
+ size=104 align=4
+ base size=104 base align=4
+QBrushData (0xb3fb11a4) 0
+
+Class QGradient
+ size=56 align=4
+ base size=56 base align=4
+QGradient (0xb3fb1564) 0
+
+Class QLinearGradient
+ size=56 align=4
+ base size=56 base align=4
+QLinearGradient (0xb3fdd2c0) 0
+ QGradient (0xb3fb17f8) 0
+
+Class QRadialGradient
+ size=56 align=4
+ base size=56 base align=4
+QRadialGradient (0xb3fdd3c0) 0
+ QGradient (0xb3fb1834) 0
+
+Class QConicalGradient
+ size=56 align=4
+ base size=56 base align=4
+QConicalGradient (0xb3fdd4c0) 0
+ QGradient (0xb3fb1870) 0
+
+Class QPen
+ size=4 align=4
+ base size=4 base align=4
+QPen (0xb3fb18ac) 0
+
+Class QTextOption::Tab
+ size=16 align=4
+ base size=14 base align=4
+QTextOption::Tab (0xb3fb1a50) 0
+
+Class QTextOption
+ size=24 align=4
+ base size=24 base align=4
+QTextOption (0xb3fb1a14) 0
+
+Class QTextLength
+ size=12 align=4
+ base size=12 base align=4
+QTextLength (0xb3e1d5dc) 0
+
+Class QTextFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextFormat (0xb3e1de4c) 0
+
+Class QTextCharFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextCharFormat (0xb3e3dd80) 0
+ QTextFormat (0xb3e7e3c0) 0
+
+Class QTextBlockFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextBlockFormat (0xb3ec8cc0) 0
+ QTextFormat (0xb3ed899c) 0
+
+Class QTextListFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextListFormat (0xb3ef5280) 0
+ QTextFormat (0xb3efa168) 0
+
+Class QTextImageFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextImageFormat (0xb3ef5440) 0
+ QTextCharFormat (0xb3ef5480) 0
+ QTextFormat (0xb3efa3c0) 0
+
+Class QTextFrameFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextFrameFormat (0xb3ef56c0) 0
+ QTextFormat (0xb3efa690) 0
+
+Class QTextTableFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextTableFormat (0xb3ef5d40) 0
+ QTextFrameFormat (0xb3ef5d80) 0
+ QTextFormat (0xb3efaec4) 0
+
+Class QTextTableCellFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextTableCellFormat (0xb3d2e280) 0
+ QTextCharFormat (0xb3d2e2c0) 0
+ QTextFormat (0xb3d2c4b0) 0
+
+Class QTextInlineObject
+ size=8 align=4
+ base size=8 base align=4
+QTextInlineObject (0xb3d2c834) 0
+
+Class QTextLayout::FormatRange
+ size=16 align=4
+ base size=16 base align=4
+QTextLayout::FormatRange (0xb3d2cbb8) 0
+
+Class QTextLayout
+ size=4 align=4
+ base size=4 base align=4
+QTextLayout (0xb3d2cb7c) 0
+
+Class QTextLine
+ size=8 align=4
+ base size=8 base align=4
+QTextLine (0xb3d2cd5c) 0
+
+Vtable for QAbstractUndoItem
+QAbstractUndoItem::_ZTV17QAbstractUndoItem: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAbstractUndoItem)
+8 __cxa_pure_virtual
+12 __cxa_pure_virtual
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QAbstractUndoItem
+ size=4 align=4
+ base size=4 base align=4
+QAbstractUndoItem (0xb3d6e12c) 0 nearly-empty
+ vptr=((& QAbstractUndoItem::_ZTV17QAbstractUndoItem) + 8u)
+
+Vtable for QTextDocument
+QTextDocument::_ZTV13QTextDocument: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QTextDocument)
+8 QTextDocument::metaObject
+12 QTextDocument::qt_metacast
+16 QTextDocument::qt_metacall
+20 QTextDocument::~QTextDocument
+24 QTextDocument::~QTextDocument
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QTextDocument::clear
+60 QTextDocument::createObject
+64 QTextDocument::loadResource
+
+Class QTextDocument
+ size=8 align=4
+ base size=8 base align=4
+QTextDocument (0xb3d2ef00) 0
+ vptr=((& QTextDocument::_ZTV13QTextDocument) + 8u)
+ QObject (0xb3d6e348) 0
+ primary-for QTextDocument (0xb3d2ef00)
+
+Class QTextCursor
+ size=4 align=4
+ base size=4 base align=4
+QTextCursor (0xb3d6e654) 0
+
+Class QPalette
+ size=8 align=4
+ base size=8 base align=4
+QPalette (0xb3d6e6cc) 0
+
+Class QColorGroup
+ size=8 align=4
+ base size=8 base align=4
+QColorGroup (0xb3d94d00) 0
+ QPalette (0xb3d6efb4) 0
+
+Class QAbstractTextDocumentLayout::Selection
+ size=12 align=4
+ base size=12 base align=4
+QAbstractTextDocumentLayout::Selection (0xb3e09168) 0
+
+Class QAbstractTextDocumentLayout::PaintContext
+ size=48 align=4
+ base size=48 base align=4
+QAbstractTextDocumentLayout::PaintContext (0xb3e091a4) 0
+
+Vtable for QAbstractTextDocumentLayout
+QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout: 24u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QAbstractTextDocumentLayout)
+8 QAbstractTextDocumentLayout::metaObject
+12 QAbstractTextDocumentLayout::qt_metacast
+16 QAbstractTextDocumentLayout::qt_metacall
+20 QAbstractTextDocumentLayout::~QAbstractTextDocumentLayout
+24 QAbstractTextDocumentLayout::~QAbstractTextDocumentLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 QAbstractTextDocumentLayout::resizeInlineObject
+88 QAbstractTextDocumentLayout::positionInlineObject
+92 QAbstractTextDocumentLayout::drawInlineObject
+
+Class QAbstractTextDocumentLayout
+ size=8 align=4
+ base size=8 base align=4
+QAbstractTextDocumentLayout (0xb3df9840) 0
+ vptr=((& QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout) + 8u)
+ QObject (0xb3e0912c) 0
+ primary-for QAbstractTextDocumentLayout (0xb3df9840)
+
+Vtable for QTextObjectInterface
+QTextObjectInterface::_ZTV20QTextObjectInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QTextObjectInterface)
+8 QTextObjectInterface::~QTextObjectInterface
+12 QTextObjectInterface::~QTextObjectInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QTextObjectInterface
+ size=4 align=4
+ base size=4 base align=4
+QTextObjectInterface (0xb3e098e8) 0 nearly-empty
+ vptr=((& QTextObjectInterface::_ZTV20QTextObjectInterface) + 8u)
+
+Class QFontDatabase
+ size=4 align=4
+ base size=4 base align=4
+QFontDatabase (0xb3e09dd4) 0
+
+Class QFontInfo
+ size=4 align=4
+ base size=4 base align=4
+QFontInfo (0xb3e09e10) 0
+
+Class QFontMetrics
+ size=4 align=4
+ base size=4 base align=4
+QFontMetrics (0xb3e09e4c) 0
+
+Class QFontMetricsF
+ size=4 align=4
+ base size=4 base align=4
+QFontMetricsF (0xb3c4b0b4) 0
+
+Vtable for QTextObject
+QTextObject::_ZTV11QTextObject: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTextObject)
+8 QTextObject::metaObject
+12 QTextObject::qt_metacast
+16 QTextObject::qt_metacall
+20 QTextObject::~QTextObject
+24 QTextObject::~QTextObject
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTextObject
+ size=8 align=4
+ base size=8 base align=4
+QTextObject (0xb3c2d6c0) 0
+ vptr=((& QTextObject::_ZTV11QTextObject) + 8u)
+ QObject (0xb3c4b168) 0
+ primary-for QTextObject (0xb3c2d6c0)
+
+Vtable for QTextBlockGroup
+QTextBlockGroup::_ZTV15QTextBlockGroup: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QTextBlockGroup)
+8 QTextBlockGroup::metaObject
+12 QTextBlockGroup::qt_metacast
+16 QTextBlockGroup::qt_metacall
+20 QTextBlockGroup::~QTextBlockGroup
+24 QTextBlockGroup::~QTextBlockGroup
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QTextBlockGroup::blockInserted
+60 QTextBlockGroup::blockRemoved
+64 QTextBlockGroup::blockFormatChanged
+
+Class QTextBlockGroup
+ size=8 align=4
+ base size=8 base align=4
+QTextBlockGroup (0xb3c2d980) 0
+ vptr=((& QTextBlockGroup::_ZTV15QTextBlockGroup) + 8u)
+ QTextObject (0xb3c2d9c0) 0
+ primary-for QTextBlockGroup (0xb3c2d980)
+ QObject (0xb3c4b384) 0
+ primary-for QTextObject (0xb3c2d9c0)
+
+Vtable for QTextFrameLayoutData
+QTextFrameLayoutData::_ZTV20QTextFrameLayoutData: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QTextFrameLayoutData)
+8 QTextFrameLayoutData::~QTextFrameLayoutData
+12 QTextFrameLayoutData::~QTextFrameLayoutData
+
+Class QTextFrameLayoutData
+ size=4 align=4
+ base size=4 base align=4
+QTextFrameLayoutData (0xb3c4b5a0) 0 nearly-empty
+ vptr=((& QTextFrameLayoutData::_ZTV20QTextFrameLayoutData) + 8u)
+
+Class QTextFrame::iterator
+ size=20 align=4
+ base size=20 base align=4
+QTextFrame::iterator (0xb3c4b618) 0
+
+Vtable for QTextFrame
+QTextFrame::_ZTV10QTextFrame: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QTextFrame)
+8 QTextFrame::metaObject
+12 QTextFrame::qt_metacast
+16 QTextFrame::qt_metacall
+20 QTextFrame::~QTextFrame
+24 QTextFrame::~QTextFrame
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTextFrame
+ size=8 align=4
+ base size=8 base align=4
+QTextFrame (0xb3c2dcc0) 0
+ vptr=((& QTextFrame::_ZTV10QTextFrame) + 8u)
+ QTextObject (0xb3c2dd00) 0
+ primary-for QTextFrame (0xb3c2dcc0)
+ QObject (0xb3c4b5dc) 0
+ primary-for QTextObject (0xb3c2dd00)
+
+Vtable for QTextBlockUserData
+QTextBlockUserData::_ZTV18QTextBlockUserData: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QTextBlockUserData)
+8 QTextBlockUserData::~QTextBlockUserData
+12 QTextBlockUserData::~QTextBlockUserData
+
+Class QTextBlockUserData
+ size=4 align=4
+ base size=4 base align=4
+QTextBlockUserData (0xb3c8d2d0) 0 nearly-empty
+ vptr=((& QTextBlockUserData::_ZTV18QTextBlockUserData) + 8u)
+
+Class QTextBlock::iterator
+ size=16 align=4
+ base size=16 base align=4
+QTextBlock::iterator (0xb3c8d348) 0
+
+Class QTextBlock
+ size=8 align=4
+ base size=8 base align=4
+QTextBlock (0xb3c8d30c) 0
+
+Class QTextFragment
+ size=12 align=4
+ base size=12 base align=4
+QTextFragment (0xb3ca5fb4) 0
+
+Vtable for QSyntaxHighlighter
+QSyntaxHighlighter::_ZTV18QSyntaxHighlighter: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QSyntaxHighlighter)
+8 QSyntaxHighlighter::metaObject
+12 QSyntaxHighlighter::qt_metacast
+16 QSyntaxHighlighter::qt_metacall
+20 QSyntaxHighlighter::~QSyntaxHighlighter
+24 QSyntaxHighlighter::~QSyntaxHighlighter
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+
+Class QSyntaxHighlighter
+ size=8 align=4
+ base size=8 base align=4
+QSyntaxHighlighter (0xb3cab9c0) 0
+ vptr=((& QSyntaxHighlighter::_ZTV18QSyntaxHighlighter) + 8u)
+ QObject (0xb3cb9f00) 0
+ primary-for QSyntaxHighlighter (0xb3cab9c0)
+
+Class QTextDocumentFragment
+ size=4 align=4
+ base size=4 base align=4
+QTextDocumentFragment (0xb3cd112c) 0
+
+Class QTextDocumentWriter
+ size=4 align=4
+ base size=4 base align=4
+QTextDocumentWriter (0xb3cd1168) 0
+
+Vtable for QTextList
+QTextList::_ZTV9QTextList: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QTextList)
+8 QTextList::metaObject
+12 QTextList::qt_metacast
+16 QTextList::qt_metacall
+20 QTextList::~QTextList
+24 QTextList::~QTextList
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QTextBlockGroup::blockInserted
+60 QTextBlockGroup::blockRemoved
+64 QTextBlockGroup::blockFormatChanged
+
+Class QTextList
+ size=8 align=4
+ base size=8 base align=4
+QTextList (0xb3cabd00) 0
+ vptr=((& QTextList::_ZTV9QTextList) + 8u)
+ QTextBlockGroup (0xb3cabd40) 0
+ primary-for QTextList (0xb3cabd00)
+ QTextObject (0xb3cabd80) 0
+ primary-for QTextBlockGroup (0xb3cabd40)
+ QObject (0xb3cd11a4) 0
+ primary-for QTextObject (0xb3cabd80)
+
+Class QTextTableCell
+ size=8 align=4
+ base size=8 base align=4
+QTextTableCell (0xb3cd1780) 0
+
+Vtable for QTextTable
+QTextTable::_ZTV10QTextTable: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QTextTable)
+8 QTextTable::metaObject
+12 QTextTable::qt_metacast
+16 QTextTable::qt_metacall
+20 QTextTable::~QTextTable
+24 QTextTable::~QTextTable
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTextTable
+ size=8 align=4
+ base size=8 base align=4
+QTextTable (0xb3ce5880) 0
+ vptr=((& QTextTable::_ZTV10QTextTable) + 8u)
+ QTextFrame (0xb3ce58c0) 0
+ primary-for QTextTable (0xb3ce5880)
+ QTextObject (0xb3ce5900) 0
+ primary-for QTextFrame (0xb3ce58c0)
+ QObject (0xb3cf8000) 0
+ primary-for QTextObject (0xb3ce5900)
+
+Vtable for QCompleter
+QCompleter::_ZTV10QCompleter: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QCompleter)
+8 QCompleter::metaObject
+12 QCompleter::qt_metacast
+16 QCompleter::qt_metacall
+20 QCompleter::~QCompleter
+24 QCompleter::~QCompleter
+28 QCompleter::event
+32 QCompleter::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QCompleter::pathFromIndex
+60 QCompleter::splitPath
+
+Class QCompleter
+ size=8 align=4
+ base size=8 base align=4
+QCompleter (0xb3ce5ec0) 0
+ vptr=((& QCompleter::_ZTV10QCompleter) + 8u)
+ QObject (0xb3cf8564) 0
+ primary-for QCompleter (0xb3ce5ec0)
+
+Class QDesktopServices
+ size=1 align=1
+ base size=0 base align=1
+QDesktopServices (0xb3cf8780) 0 empty
+
+Class QIcon
+ size=4 align=4
+ base size=4 base align=4
+QIcon (0xb3cf87f8) 0
+
+Vtable for QSystemTrayIcon
+QSystemTrayIcon::_ZTV15QSystemTrayIcon: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QSystemTrayIcon)
+8 QSystemTrayIcon::metaObject
+12 QSystemTrayIcon::qt_metacast
+16 QSystemTrayIcon::qt_metacall
+20 QSystemTrayIcon::~QSystemTrayIcon
+24 QSystemTrayIcon::~QSystemTrayIcon
+28 QSystemTrayIcon::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSystemTrayIcon
+ size=8 align=4
+ base size=8 base align=4
+QSystemTrayIcon (0xb3b1b5c0) 0
+ vptr=((& QSystemTrayIcon::_ZTV15QSystemTrayIcon) + 8u)
+ QObject (0xb3cf8a50) 0
+ primary-for QSystemTrayIcon (0xb3b1b5c0)
+
+Vtable for QUndoGroup
+QUndoGroup::_ZTV10QUndoGroup: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QUndoGroup)
+8 QUndoGroup::metaObject
+12 QUndoGroup::qt_metacast
+16 QUndoGroup::qt_metacall
+20 QUndoGroup::~QUndoGroup
+24 QUndoGroup::~QUndoGroup
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QUndoGroup
+ size=8 align=4
+ base size=8 base align=4
+QUndoGroup (0xb3b1b940) 0
+ vptr=((& QUndoGroup::_ZTV10QUndoGroup) + 8u)
+ QObject (0xb3cf8c6c) 0
+ primary-for QUndoGroup (0xb3b1b940)
+
+Vtable for QUndoCommand
+QUndoCommand::_ZTV12QUndoCommand: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QUndoCommand)
+8 QUndoCommand::~QUndoCommand
+12 QUndoCommand::~QUndoCommand
+16 QUndoCommand::undo
+20 QUndoCommand::redo
+24 QUndoCommand::id
+28 QUndoCommand::mergeWith
+
+Class QUndoCommand
+ size=8 align=4
+ base size=8 base align=4
+QUndoCommand (0xb3cf8e88) 0
+ vptr=((& QUndoCommand::_ZTV12QUndoCommand) + 8u)
+
+Vtable for QUndoStack
+QUndoStack::_ZTV10QUndoStack: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QUndoStack)
+8 QUndoStack::metaObject
+12 QUndoStack::qt_metacast
+16 QUndoStack::qt_metacall
+20 QUndoStack::~QUndoStack
+24 QUndoStack::~QUndoStack
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QUndoStack
+ size=8 align=4
+ base size=8 base align=4
+QUndoStack (0xb3b1bc40) 0
+ vptr=((& QUndoStack::_ZTV10QUndoStack) + 8u)
+ QObject (0xb3cf8ec4) 0
+ primary-for QUndoStack (0xb3b1bc40)
+
+Class QSizePolicy
+ size=4 align=4
+ base size=4 base align=4
+QSizePolicy (0xb3b6f0f0) 0
+
+Class QCursor
+ size=4 align=4
+ base size=4 base align=4
+QCursor (0xb3bb0fb4) 0
+
+Class QWidgetData
+ size=64 align=4
+ base size=64 base align=4
+QWidgetData (0xb3be7000) 0
+
+Vtable for QWidget
+QWidget::_ZTV7QWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QWidget)
+8 QWidget::metaObject
+12 QWidget::qt_metacast
+16 QWidget::qt_metacall
+20 QWidget::~QWidget
+24 QWidget::~QWidget
+28 QWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI7QWidget)
+232 QWidget::_ZThn8_N7QWidgetD1Ev
+236 QWidget::_ZThn8_N7QWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWidget
+ size=20 align=4
+ base size=20 base align=4
+QWidget (0xb3be3e60) 0
+ vptr=((& QWidget::_ZTV7QWidget) + 8u)
+ QObject (0xb3be703c) 0
+ primary-for QWidget (0xb3be3e60)
+ QPaintDevice (0xb3be7078) 8
+ vptr=((& QWidget::_ZTV7QWidget) + 232u)
+
+Vtable for QFrame
+QFrame::_ZTV6QFrame: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QFrame)
+8 QFrame::metaObject
+12 QFrame::qt_metacast
+16 QFrame::qt_metacall
+20 QFrame::~QFrame
+24 QFrame::~QFrame
+28 QFrame::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QFrame::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QFrame::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI6QFrame)
+232 QFrame::_ZThn8_N6QFrameD1Ev
+236 QFrame::_ZThn8_N6QFrameD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFrame
+ size=20 align=4
+ base size=20 base align=4
+QFrame (0xb3a98800) 0
+ vptr=((& QFrame::_ZTV6QFrame) + 8u)
+ QWidget (0xb3ab45a0) 0
+ primary-for QFrame (0xb3a98800)
+ QObject (0xb3a997bc) 0
+ primary-for QWidget (0xb3ab45a0)
+ QPaintDevice (0xb3a997f8) 8
+ vptr=((& QFrame::_ZTV6QFrame) + 232u)
+
+Vtable for QAbstractScrollArea
+QAbstractScrollArea::_ZTV19QAbstractScrollArea: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractScrollArea)
+8 QAbstractScrollArea::metaObject
+12 QAbstractScrollArea::qt_metacast
+16 QAbstractScrollArea::qt_metacall
+20 QAbstractScrollArea::~QAbstractScrollArea
+24 QAbstractScrollArea::~QAbstractScrollArea
+28 QAbstractScrollArea::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractScrollArea::mousePressEvent
+84 QAbstractScrollArea::mouseReleaseEvent
+88 QAbstractScrollArea::mouseDoubleClickEvent
+92 QAbstractScrollArea::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractScrollArea::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractScrollArea::paintEvent
+128 QWidget::moveEvent
+132 QAbstractScrollArea::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractScrollArea::dragEnterEvent
+156 QAbstractScrollArea::dragMoveEvent
+160 QAbstractScrollArea::dragLeaveEvent
+164 QAbstractScrollArea::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractScrollArea::viewportEvent
+228 QAbstractScrollArea::scrollContentsBy
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI19QAbstractScrollArea)
+240 QAbstractScrollArea::_ZThn8_N19QAbstractScrollAreaD1Ev
+244 QAbstractScrollArea::_ZThn8_N19QAbstractScrollAreaD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractScrollArea
+ size=20 align=4
+ base size=20 base align=4
+QAbstractScrollArea (0xb3a98ac0) 0
+ vptr=((& QAbstractScrollArea::_ZTV19QAbstractScrollArea) + 8u)
+ QFrame (0xb3a98b00) 0
+ primary-for QAbstractScrollArea (0xb3a98ac0)
+ QWidget (0xb3ac8190) 0
+ primary-for QFrame (0xb3a98b00)
+ QObject (0xb3a99a14) 0
+ primary-for QWidget (0xb3ac8190)
+ QPaintDevice (0xb3a99a50) 8
+ vptr=((& QAbstractScrollArea::_ZTV19QAbstractScrollArea) + 240u)
+
+Class QItemSelectionRange
+ size=8 align=4
+ base size=8 base align=4
+QItemSelectionRange (0xb3a99c6c) 0
+
+Vtable for QItemSelectionModel
+QItemSelectionModel::_ZTV19QItemSelectionModel: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QItemSelectionModel)
+8 QItemSelectionModel::metaObject
+12 QItemSelectionModel::qt_metacast
+16 QItemSelectionModel::qt_metacall
+20 QItemSelectionModel::~QItemSelectionModel
+24 QItemSelectionModel::~QItemSelectionModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QItemSelectionModel::select
+60 QItemSelectionModel::select
+64 QItemSelectionModel::clear
+68 QItemSelectionModel::reset
+
+Class QItemSelectionModel
+ size=8 align=4
+ base size=8 base align=4
+QItemSelectionModel (0xb3ae9880) 0
+ vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 8u)
+ QObject (0xb3afdce4) 0
+ primary-for QItemSelectionModel (0xb3ae9880)
+
+Class QItemSelection
+ size=4 align=4
+ base size=4 base align=4
+QItemSelection (0xb3ae9d40) 0
+ QList<QItemSelectionRange> (0xb39430b4) 0
+
+Vtable for QValidator
+QValidator::_ZTV10QValidator: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QValidator)
+8 QValidator::metaObject
+12 QValidator::qt_metacast
+16 QValidator::qt_metacall
+20 QValidator::~QValidator
+24 QValidator::~QValidator
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 QValidator::fixup
+
+Class QValidator
+ size=8 align=4
+ base size=8 base align=4
+QValidator (0xb3ae9ec0) 0
+ vptr=((& QValidator::_ZTV10QValidator) + 8u)
+ QObject (0xb3943258) 0
+ primary-for QValidator (0xb3ae9ec0)
+
+Vtable for QIntValidator
+QIntValidator::_ZTV13QIntValidator: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QIntValidator)
+8 QIntValidator::metaObject
+12 QIntValidator::qt_metacast
+16 QIntValidator::qt_metacall
+20 QIntValidator::~QIntValidator
+24 QIntValidator::~QIntValidator
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QIntValidator::validate
+60 QValidator::fixup
+64 QIntValidator::setRange
+
+Class QIntValidator
+ size=16 align=4
+ base size=16 base align=4
+QIntValidator (0xb3964180) 0
+ vptr=((& QIntValidator::_ZTV13QIntValidator) + 8u)
+ QValidator (0xb39641c0) 0
+ primary-for QIntValidator (0xb3964180)
+ QObject (0xb3943474) 0
+ primary-for QValidator (0xb39641c0)
+
+Vtable for QDoubleValidator
+QDoubleValidator::_ZTV16QDoubleValidator: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QDoubleValidator)
+8 QDoubleValidator::metaObject
+12 QDoubleValidator::qt_metacast
+16 QDoubleValidator::qt_metacall
+20 QDoubleValidator::~QDoubleValidator
+24 QDoubleValidator::~QDoubleValidator
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QDoubleValidator::validate
+60 QValidator::fixup
+64 QDoubleValidator::setRange
+
+Class QDoubleValidator
+ size=28 align=4
+ base size=28 base align=4
+QDoubleValidator (0xb3964480) 0
+ vptr=((& QDoubleValidator::_ZTV16QDoubleValidator) + 8u)
+ QValidator (0xb39644c0) 0
+ primary-for QDoubleValidator (0xb3964480)
+ QObject (0xb3943618) 0
+ primary-for QValidator (0xb39644c0)
+
+Vtable for QRegExpValidator
+QRegExpValidator::_ZTV16QRegExpValidator: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QRegExpValidator)
+8 QRegExpValidator::metaObject
+12 QRegExpValidator::qt_metacast
+16 QRegExpValidator::qt_metacall
+20 QRegExpValidator::~QRegExpValidator
+24 QRegExpValidator::~QRegExpValidator
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QRegExpValidator::validate
+60 QValidator::fixup
+
+Class QRegExpValidator
+ size=12 align=4
+ base size=12 base align=4
+QRegExpValidator (0xb3964840) 0
+ vptr=((& QRegExpValidator::_ZTV16QRegExpValidator) + 8u)
+ QValidator (0xb3964880) 0
+ primary-for QRegExpValidator (0xb3964840)
+ QObject (0xb39438e8) 0
+ primary-for QValidator (0xb3964880)
+
+Vtable for QAbstractSpinBox
+QAbstractSpinBox::_ZTV16QAbstractSpinBox: 68u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QAbstractSpinBox)
+8 QAbstractSpinBox::metaObject
+12 QAbstractSpinBox::qt_metacast
+16 QAbstractSpinBox::qt_metacall
+20 QAbstractSpinBox::~QAbstractSpinBox
+24 QAbstractSpinBox::~QAbstractSpinBox
+28 QAbstractSpinBox::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractSpinBox::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractSpinBox::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QAbstractSpinBox::wheelEvent
+100 QAbstractSpinBox::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QAbstractSpinBox::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractSpinBox::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractSpinBox::validate
+228 QAbstractSpinBox::fixup
+232 QAbstractSpinBox::stepBy
+236 QAbstractSpinBox::clear
+240 QAbstractSpinBox::stepEnabled
+244 (int (*)(...))-0x000000008
+248 (int (*)(...))(& _ZTI16QAbstractSpinBox)
+252 QAbstractSpinBox::_ZThn8_N16QAbstractSpinBoxD1Ev
+256 QAbstractSpinBox::_ZThn8_N16QAbstractSpinBoxD0Ev
+260 QWidget::_ZThn8_NK7QWidget7devTypeEv
+264 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+268 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractSpinBox
+ size=20 align=4
+ base size=20 base align=4
+QAbstractSpinBox (0xb3964b00) 0
+ vptr=((& QAbstractSpinBox::_ZTV16QAbstractSpinBox) + 8u)
+ QWidget (0xb398aa00) 0
+ primary-for QAbstractSpinBox (0xb3964b00)
+ QObject (0xb3943a50) 0
+ primary-for QWidget (0xb398aa00)
+ QPaintDevice (0xb3943a8c) 8
+ vptr=((& QAbstractSpinBox::_ZTV16QAbstractSpinBox) + 252u)
+
+Vtable for QAbstractSlider
+QAbstractSlider::_ZTV15QAbstractSlider: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QAbstractSlider)
+8 QAbstractSlider::metaObject
+12 QAbstractSlider::qt_metacast
+16 QAbstractSlider::qt_metacall
+20 QAbstractSlider::~QAbstractSlider
+24 QAbstractSlider::~QAbstractSlider
+28 QAbstractSlider::event
+32 QObject::eventFilter
+36 QAbstractSlider::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QAbstractSlider::wheelEvent
+100 QAbstractSlider::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractSlider::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractSlider::sliderChange
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI15QAbstractSlider)
+236 QAbstractSlider::_ZThn8_N15QAbstractSliderD1Ev
+240 QAbstractSlider::_ZThn8_N15QAbstractSliderD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractSlider
+ size=20 align=4
+ base size=20 base align=4
+QAbstractSlider (0xb3964f00) 0
+ vptr=((& QAbstractSlider::_ZTV15QAbstractSlider) + 8u)
+ QWidget (0xb39afbe0) 0
+ primary-for QAbstractSlider (0xb3964f00)
+ QObject (0xb3943d98) 0
+ primary-for QWidget (0xb39afbe0)
+ QPaintDevice (0xb3943dd4) 8
+ vptr=((& QAbstractSlider::_ZTV15QAbstractSlider) + 236u)
+
+Vtable for QSlider
+QSlider::_ZTV7QSlider: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QSlider)
+8 QSlider::metaObject
+12 QSlider::qt_metacast
+16 QSlider::qt_metacall
+20 QSlider::~QSlider
+24 QSlider::~QSlider
+28 QSlider::event
+32 QObject::eventFilter
+36 QAbstractSlider::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QSlider::sizeHint
+68 QSlider::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QSlider::mousePressEvent
+84 QSlider::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QSlider::mouseMoveEvent
+96 QAbstractSlider::wheelEvent
+100 QAbstractSlider::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QSlider::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractSlider::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractSlider::sliderChange
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI7QSlider)
+236 QSlider::_ZThn8_N7QSliderD1Ev
+240 QSlider::_ZThn8_N7QSliderD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSlider
+ size=20 align=4
+ base size=20 base align=4
+QSlider (0xb39d7480) 0
+ vptr=((& QSlider::_ZTV7QSlider) + 8u)
+ QAbstractSlider (0xb39d74c0) 0
+ primary-for QSlider (0xb39d7480)
+ QWidget (0xb39de820) 0
+ primary-for QAbstractSlider (0xb39d74c0)
+ QObject (0xb39e10b4) 0
+ primary-for QWidget (0xb39de820)
+ QPaintDevice (0xb39e10f0) 8
+ vptr=((& QSlider::_ZTV7QSlider) + 236u)
+
+Vtable for QStyle
+QStyle::_ZTV6QStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QStyle)
+8 QStyle::metaObject
+12 QStyle::qt_metacast
+16 QStyle::qt_metacall
+20 QStyle::~QStyle
+24 QStyle::~QStyle
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QStyle::polish
+60 QStyle::unpolish
+64 QStyle::polish
+68 QStyle::unpolish
+72 QStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QStyle::standardPalette
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+112 __cxa_pure_virtual
+116 __cxa_pure_virtual
+120 __cxa_pure_virtual
+124 __cxa_pure_virtual
+128 __cxa_pure_virtual
+132 __cxa_pure_virtual
+136 __cxa_pure_virtual
+
+Class QStyle
+ size=8 align=4
+ base size=8 base align=4
+QStyle (0xb39d7880) 0
+ vptr=((& QStyle::_ZTV6QStyle) + 8u)
+ QObject (0xb39e13c0) 0
+ primary-for QStyle (0xb39d7880)
+
+Vtable for QTabBar
+QTabBar::_ZTV7QTabBar: 67u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QTabBar)
+8 QTabBar::metaObject
+12 QTabBar::qt_metacast
+16 QTabBar::qt_metacall
+20 QTabBar::~QTabBar
+24 QTabBar::~QTabBar
+28 QTabBar::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QTabBar::sizeHint
+68 QTabBar::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QTabBar::mousePressEvent
+84 QTabBar::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QTabBar::mouseMoveEvent
+96 QTabBar::wheelEvent
+100 QTabBar::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTabBar::paintEvent
+128 QWidget::moveEvent
+132 QTabBar::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QTabBar::showEvent
+172 QTabBar::hideEvent
+176 QWidget::x11Event
+180 QTabBar::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QTabBar::tabSizeHint
+228 QTabBar::tabInserted
+232 QTabBar::tabRemoved
+236 QTabBar::tabLayoutChange
+240 (int (*)(...))-0x000000008
+244 (int (*)(...))(& _ZTI7QTabBar)
+248 QTabBar::_ZThn8_N7QTabBarD1Ev
+252 QTabBar::_ZThn8_N7QTabBarD0Ev
+256 QWidget::_ZThn8_NK7QWidget7devTypeEv
+260 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+264 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTabBar
+ size=20 align=4
+ base size=20 base align=4
+QTabBar (0xb39d7e00) 0
+ vptr=((& QTabBar::_ZTV7QTabBar) + 8u)
+ QWidget (0xb384ec30) 0
+ primary-for QTabBar (0xb39d7e00)
+ QObject (0xb39e17bc) 0
+ primary-for QWidget (0xb384ec30)
+ QPaintDevice (0xb39e17f8) 8
+ vptr=((& QTabBar::_ZTV7QTabBar) + 248u)
+
+Vtable for QTabWidget
+QTabWidget::_ZTV10QTabWidget: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QTabWidget)
+8 QTabWidget::metaObject
+12 QTabWidget::qt_metacast
+16 QTabWidget::qt_metacall
+20 QTabWidget::~QTabWidget
+24 QTabWidget::~QTabWidget
+28 QTabWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QTabWidget::sizeHint
+68 QTabWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QTabWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTabWidget::paintEvent
+128 QWidget::moveEvent
+132 QTabWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QTabWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QTabWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QTabWidget::tabInserted
+228 QTabWidget::tabRemoved
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI10QTabWidget)
+240 QTabWidget::_ZThn8_N10QTabWidgetD1Ev
+244 QTabWidget::_ZThn8_N10QTabWidgetD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTabWidget
+ size=20 align=4
+ base size=20 base align=4
+QTabWidget (0xb387a100) 0
+ vptr=((& QTabWidget::_ZTV10QTabWidget) + 8u)
+ QWidget (0xb387c370) 0
+ primary-for QTabWidget (0xb387a100)
+ QObject (0xb39e1a14) 0
+ primary-for QWidget (0xb387c370)
+ QPaintDevice (0xb39e1a50) 8
+ vptr=((& QTabWidget::_ZTV10QTabWidget) + 240u)
+
+Vtable for QRubberBand
+QRubberBand::_ZTV11QRubberBand: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QRubberBand)
+8 QRubberBand::metaObject
+12 QRubberBand::qt_metacast
+16 QRubberBand::qt_metacall
+20 QRubberBand::~QRubberBand
+24 QRubberBand::~QRubberBand
+28 QRubberBand::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QRubberBand::paintEvent
+128 QRubberBand::moveEvent
+132 QRubberBand::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QRubberBand::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QRubberBand::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI11QRubberBand)
+232 QRubberBand::_ZThn8_N11QRubberBandD1Ev
+236 QRubberBand::_ZThn8_N11QRubberBandD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QRubberBand
+ size=20 align=4
+ base size=20 base align=4
+QRubberBand (0xb387a940) 0
+ vptr=((& QRubberBand::_ZTV11QRubberBand) + 8u)
+ QWidget (0xb38a56e0) 0
+ primary-for QRubberBand (0xb387a940)
+ QObject (0xb39e1f78) 0
+ primary-for QWidget (0xb38a56e0)
+ QPaintDevice (0xb39e1fb4) 8
+ vptr=((& QRubberBand::_ZTV11QRubberBand) + 232u)
+
+Class QStyleOption
+ size=44 align=4
+ base size=44 base align=4
+QStyleOption (0xb38b33fc) 0
+
+Class QStyleOptionFocusRect
+ size=60 align=4
+ base size=60 base align=4
+QStyleOptionFocusRect (0xb387adc0) 0
+ QStyleOption (0xb38b3438) 0
+
+Class QStyleOptionFrame
+ size=52 align=4
+ base size=52 base align=4
+QStyleOptionFrame (0xb387afc0) 0
+ QStyleOption (0xb38b37bc) 0
+
+Class QStyleOptionFrameV2
+ size=56 align=4
+ base size=56 base align=4
+QStyleOptionFrameV2 (0xb38cd1c0) 0
+ QStyleOptionFrame (0xb38cd200) 0
+ QStyleOption (0xb38b3b04) 0
+
+Class QStyleOptionFrameV3
+ size=60 align=4
+ base size=60 base align=4
+QStyleOptionFrameV3 (0xb38cd6c0) 0
+ QStyleOptionFrameV2 (0xb38cd700) 0
+ QStyleOptionFrame (0xb38cd740) 0
+ QStyleOption (0xb38f703c) 0
+
+Class QStyleOptionTabWidgetFrame
+ size=80 align=4
+ base size=80 base align=4
+QStyleOptionTabWidgetFrame (0xb38cda80) 0
+ QStyleOption (0xb38f7438) 0
+
+Class QStyleOptionTabWidgetFrameV2
+ size=112 align=4
+ base size=112 base align=4
+QStyleOptionTabWidgetFrameV2 (0xb38cdc80) 0
+ QStyleOptionTabWidgetFrame (0xb38cdcc0) 0
+ QStyleOption (0xb38f7ac8) 0
+
+Class QStyleOptionTabBarBase
+ size=80 align=4
+ base size=80 base align=4
+QStyleOptionTabBarBase (0xb3705000) 0
+ QStyleOption (0xb38f7fb4) 0
+
+Class QStyleOptionTabBarBaseV2
+ size=84 align=4
+ base size=81 base align=4
+QStyleOptionTabBarBaseV2 (0xb3705200) 0
+ QStyleOptionTabBarBase (0xb3705240) 0
+ QStyleOption (0xb370d474) 0
+
+Class QStyleOptionHeader
+ size=80 align=4
+ base size=80 base align=4
+QStyleOptionHeader (0xb3705580) 0
+ QStyleOption (0xb370d7f8) 0
+
+Class QStyleOptionButton
+ size=64 align=4
+ base size=64 base align=4
+QStyleOptionButton (0xb3705840) 0
+ QStyleOption (0xb37212d0) 0
+
+Class QStyleOptionTab
+ size=72 align=4
+ base size=72 base align=4
+QStyleOptionTab (0xb3705bc0) 0
+ QStyleOption (0xb3721bf4) 0
+
+Class QStyleOptionTabV2
+ size=80 align=4
+ base size=80 base align=4
+QStyleOptionTabV2 (0xb3705f80) 0
+ QStyleOptionTab (0xb3705fc0) 0
+ QStyleOption (0xb3759618) 0
+
+Class QStyleOptionTabV3
+ size=100 align=4
+ base size=100 base align=4
+QStyleOptionTabV3 (0xb3776300) 0
+ QStyleOptionTabV2 (0xb3776340) 0
+ QStyleOptionTab (0xb3776380) 0
+ QStyleOption (0xb3759b7c) 0
+
+Class QStyleOptionToolBar
+ size=68 align=4
+ base size=68 base align=4
+QStyleOptionToolBar (0xb3776780) 0
+ QStyleOption (0xb3787474) 0
+
+Class QStyleOptionProgressBar
+ size=68 align=4
+ base size=65 base align=4
+QStyleOptionProgressBar (0xb3776b00) 0
+ QStyleOption (0xb3787b40) 0
+
+Class QStyleOptionProgressBarV2
+ size=76 align=4
+ base size=74 base align=4
+QStyleOptionProgressBarV2 (0xb3776d40) 0
+ QStyleOptionProgressBar (0xb3776d80) 0
+ QStyleOption (0xb37b7294) 0
+
+Class QStyleOptionMenuItem
+ size=96 align=4
+ base size=96 base align=4
+QStyleOptionMenuItem (0xb3776e00) 0
+ QStyleOption (0xb37b72d0) 0
+
+Class QStyleOptionQ3ListViewItem
+ size=64 align=4
+ base size=64 base align=4
+QStyleOptionQ3ListViewItem (0xb37ca000) 0
+ QStyleOption (0xb37b7e88) 0
+
+Class QStyleOptionQ3DockWindow
+ size=48 align=4
+ base size=46 base align=4
+QStyleOptionQ3DockWindow (0xb37ca380) 0
+ QStyleOption (0xb37d54ec) 0
+
+Class QStyleOptionDockWidget
+ size=52 align=4
+ base size=51 base align=4
+QStyleOptionDockWidget (0xb37ca580) 0
+ QStyleOption (0xb37d5834) 0
+
+Class QStyleOptionDockWidgetV2
+ size=52 align=4
+ base size=52 base align=4
+QStyleOptionDockWidgetV2 (0xb37ca780) 0
+ QStyleOptionDockWidget (0xb37ca7c0) 0
+ QStyleOption (0xb37d5dd4) 0
+
+Class QStyleOptionViewItem
+ size=80 align=4
+ base size=77 base align=4
+QStyleOptionViewItem (0xb37cab00) 0
+ QStyleOption (0xb360321c) 0
+
+Class QStyleOptionViewItemV2
+ size=84 align=4
+ base size=84 base align=4
+QStyleOptionViewItemV2 (0xb37cad80) 0
+ QStyleOptionViewItem (0xb37cadc0) 0
+ QStyleOption (0xb3603b04) 0
+
+Class QStyleOptionViewItemV3
+ size=92 align=4
+ base size=92 base align=4
+QStyleOptionViewItemV3 (0xb361c280) 0
+ QStyleOptionViewItemV2 (0xb361c2c0) 0
+ QStyleOptionViewItem (0xb361c300) 0
+ QStyleOption (0xb361f12c) 0
+
+Class QStyleOptionViewItemV4
+ size=128 align=4
+ base size=128 base align=4
+QStyleOptionViewItemV4 (0xb361c640) 0
+ QStyleOptionViewItemV3 (0xb361c680) 0
+ QStyleOptionViewItemV2 (0xb361c6c0) 0
+ QStyleOptionViewItem (0xb361c700) 0
+ QStyleOption (0xb361f5dc) 0
+
+Class QStyleOptionToolBox
+ size=52 align=4
+ base size=52 base align=4
+QStyleOptionToolBox (0xb361ca40) 0
+ QStyleOption (0xb364f12c) 0
+
+Class QStyleOptionToolBoxV2
+ size=60 align=4
+ base size=60 base align=4
+QStyleOptionToolBoxV2 (0xb361cc40) 0
+ QStyleOptionToolBox (0xb361cc80) 0
+ QStyleOption (0xb364f744) 0
+
+Class QStyleOptionRubberBand
+ size=52 align=4
+ base size=49 base align=4
+QStyleOptionRubberBand (0xb361cfc0) 0
+ QStyleOption (0xb364fca8) 0
+
+Class QStyleOptionComplex
+ size=52 align=4
+ base size=52 base align=4
+QStyleOptionComplex (0xb36641c0) 0
+ QStyleOption (0xb3669000) 0
+
+Class QStyleOptionSlider
+ size=104 align=4
+ base size=101 base align=4
+QStyleOptionSlider (0xb3664440) 0
+ QStyleOptionComplex (0xb3664480) 0
+ QStyleOption (0xb36694b0) 0
+
+Class QStyleOptionSpinBox
+ size=64 align=4
+ base size=61 base align=4
+QStyleOptionSpinBox (0xb36647c0) 0
+ QStyleOptionComplex (0xb3664800) 0
+ QStyleOption (0xb3669d5c) 0
+
+Class QStyleOptionQ3ListView
+ size=84 align=4
+ base size=81 base align=4
+QStyleOptionQ3ListView (0xb3664a40) 0
+ QStyleOptionComplex (0xb3664a80) 0
+ QStyleOption (0xb36811e0) 0
+
+Class QStyleOptionToolButton
+ size=96 align=4
+ base size=96 base align=4
+QStyleOptionToolButton (0xb3664d40) 0
+ QStyleOptionComplex (0xb3664d80) 0
+ QStyleOption (0xb3681b04) 0
+
+Class QStyleOptionComboBox
+ size=92 align=4
+ base size=92 base align=4
+QStyleOptionComboBox (0xb36b4100) 0
+ QStyleOptionComplex (0xb36b4140) 0
+ QStyleOption (0xb36ac7f8) 0
+
+Class QStyleOptionTitleBar
+ size=68 align=4
+ base size=68 base align=4
+QStyleOptionTitleBar (0xb36b4340) 0
+ QStyleOptionComplex (0xb36b4380) 0
+ QStyleOption (0xb36d40f0) 0
+
+Class QStyleOptionGroupBox
+ size=88 align=4
+ base size=88 base align=4
+QStyleOptionGroupBox (0xb36b45c0) 0
+ QStyleOptionComplex (0xb36b4600) 0
+ QStyleOption (0xb36d48ac) 0
+
+Class QStyleOptionSizeGrip
+ size=56 align=4
+ base size=56 base align=4
+QStyleOptionSizeGrip (0xb36b4880) 0
+ QStyleOptionComplex (0xb36b48c0) 0
+ QStyleOption (0xb36e9168) 0
+
+Class QStyleOptionGraphicsItem
+ size=132 align=4
+ base size=132 base align=4
+QStyleOptionGraphicsItem (0xb36b4ac0) 0
+ QStyleOption (0xb36e9438) 0
+
+Class QStyleHintReturn
+ size=8 align=4
+ base size=8 base align=4
+QStyleHintReturn (0xb36e9924) 0
+
+Class QStyleHintReturnMask
+ size=12 align=4
+ base size=12 base align=4
+QStyleHintReturnMask (0xb36b4f00) 0
+ QStyleHintReturn (0xb36e9960) 0
+
+Class QStyleHintReturnVariant
+ size=20 align=4
+ base size=20 base align=4
+QStyleHintReturnVariant (0xb36b4f80) 0
+ QStyleHintReturn (0xb36e999c) 0
+
+Vtable for QAbstractItemDelegate
+QAbstractItemDelegate::_ZTV21QAbstractItemDelegate: 21u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QAbstractItemDelegate)
+8 QAbstractItemDelegate::metaObject
+12 QAbstractItemDelegate::qt_metacast
+16 QAbstractItemDelegate::qt_metacall
+20 QAbstractItemDelegate::~QAbstractItemDelegate
+24 QAbstractItemDelegate::~QAbstractItemDelegate
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 QAbstractItemDelegate::createEditor
+68 QAbstractItemDelegate::setEditorData
+72 QAbstractItemDelegate::setModelData
+76 QAbstractItemDelegate::updateEditorGeometry
+80 QAbstractItemDelegate::editorEvent
+
+Class QAbstractItemDelegate
+ size=8 align=4
+ base size=8 base align=4
+QAbstractItemDelegate (0xb3507200) 0
+ vptr=((& QAbstractItemDelegate::_ZTV21QAbstractItemDelegate) + 8u)
+ QObject (0xb36e99d8) 0
+ primary-for QAbstractItemDelegate (0xb3507200)
+
+Vtable for QAbstractItemView
+QAbstractItemView::_ZTV17QAbstractItemView: 103u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAbstractItemView)
+8 QAbstractItemView::metaObject
+12 QAbstractItemView::qt_metacast
+16 QAbstractItemView::qt_metacall
+20 QAbstractItemView::~QAbstractItemView
+24 QAbstractItemView::~QAbstractItemView
+28 QAbstractItemView::event
+32 QObject::eventFilter
+36 QAbstractItemView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QAbstractItemView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QAbstractItemView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractScrollArea::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QAbstractItemView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QAbstractItemView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QAbstractScrollArea::scrollContentsBy
+232 QAbstractItemView::setModel
+236 QAbstractItemView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 __cxa_pure_virtual
+248 __cxa_pure_virtual
+252 __cxa_pure_virtual
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QAbstractItemView::reset
+268 QAbstractItemView::setRootIndex
+272 QAbstractItemView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QAbstractItemView::dataChanged
+284 QAbstractItemView::rowsInserted
+288 QAbstractItemView::rowsAboutToBeRemoved
+292 QAbstractItemView::selectionChanged
+296 QAbstractItemView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QAbstractItemView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 __cxa_pure_virtual
+344 __cxa_pure_virtual
+348 __cxa_pure_virtual
+352 __cxa_pure_virtual
+356 __cxa_pure_virtual
+360 __cxa_pure_virtual
+364 QAbstractItemView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QAbstractItemView::viewOptions
+384 (int (*)(...))-0x000000008
+388 (int (*)(...))(& _ZTI17QAbstractItemView)
+392 QAbstractItemView::_ZThn8_N17QAbstractItemViewD1Ev
+396 QAbstractItemView::_ZThn8_N17QAbstractItemViewD0Ev
+400 QWidget::_ZThn8_NK7QWidget7devTypeEv
+404 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+408 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractItemView
+ size=20 align=4
+ base size=20 base align=4
+QAbstractItemView (0xb3507440) 0
+ vptr=((& QAbstractItemView::_ZTV17QAbstractItemView) + 8u)
+ QAbstractScrollArea (0xb3507480) 0
+ primary-for QAbstractItemView (0xb3507440)
+ QFrame (0xb35074c0) 0
+ primary-for QAbstractScrollArea (0xb3507480)
+ QWidget (0xb35178c0) 0
+ primary-for QFrame (0xb35074c0)
+ QObject (0xb36e9b04) 0
+ primary-for QWidget (0xb35178c0)
+ QPaintDevice (0xb36e9b40) 8
+ vptr=((& QAbstractItemView::_ZTV17QAbstractItemView) + 392u)
+
+Vtable for QListView
+QListView::_ZTV9QListView: 103u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QListView)
+8 QListView::metaObject
+12 QListView::qt_metacast
+16 QListView::qt_metacall
+20 QListView::~QListView
+24 QListView::~QListView
+28 QListView::event
+32 QObject::eventFilter
+36 QListView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QListView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QListView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QListView::paintEvent
+128 QWidget::moveEvent
+132 QListView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QListView::dragMoveEvent
+160 QListView::dragLeaveEvent
+164 QListView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QListView::scrollContentsBy
+232 QAbstractItemView::setModel
+236 QAbstractItemView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QListView::visualRect
+248 QListView::scrollTo
+252 QListView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QListView::reset
+268 QListView::setRootIndex
+272 QListView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QListView::dataChanged
+284 QListView::rowsInserted
+288 QListView::rowsAboutToBeRemoved
+292 QListView::selectionChanged
+296 QListView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QListView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QListView::moveCursor
+344 QListView::horizontalOffset
+348 QListView::verticalOffset
+352 QListView::isIndexHidden
+356 QListView::setSelection
+360 QListView::visualRegionForSelection
+364 QListView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QListView::startDrag
+380 QListView::viewOptions
+384 (int (*)(...))-0x000000008
+388 (int (*)(...))(& _ZTI9QListView)
+392 QListView::_ZThn8_N9QListViewD1Ev
+396 QListView::_ZThn8_N9QListViewD0Ev
+400 QWidget::_ZThn8_NK7QWidget7devTypeEv
+404 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+408 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QListView
+ size=20 align=4
+ base size=20 base align=4
+QListView (0xb3507900) 0
+ vptr=((& QListView::_ZTV9QListView) + 8u)
+ QAbstractItemView (0xb3507940) 0
+ primary-for QListView (0xb3507900)
+ QAbstractScrollArea (0xb3507980) 0
+ primary-for QAbstractItemView (0xb3507940)
+ QFrame (0xb35079c0) 0
+ primary-for QAbstractScrollArea (0xb3507980)
+ QWidget (0xb3566140) 0
+ primary-for QFrame (0xb35079c0)
+ QObject (0xb36e9e4c) 0
+ primary-for QWidget (0xb3566140)
+ QPaintDevice (0xb36e9e88) 8
+ vptr=((& QListView::_ZTV9QListView) + 392u)
+
+Vtable for QUndoView
+QUndoView::_ZTV9QUndoView: 103u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QUndoView)
+8 QUndoView::metaObject
+12 QUndoView::qt_metacast
+16 QUndoView::qt_metacall
+20 QUndoView::~QUndoView
+24 QUndoView::~QUndoView
+28 QListView::event
+32 QObject::eventFilter
+36 QListView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QListView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QListView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QListView::paintEvent
+128 QWidget::moveEvent
+132 QListView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QListView::dragMoveEvent
+160 QListView::dragLeaveEvent
+164 QListView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QListView::scrollContentsBy
+232 QAbstractItemView::setModel
+236 QAbstractItemView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QListView::visualRect
+248 QListView::scrollTo
+252 QListView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QListView::reset
+268 QListView::setRootIndex
+272 QListView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QListView::dataChanged
+284 QListView::rowsInserted
+288 QListView::rowsAboutToBeRemoved
+292 QListView::selectionChanged
+296 QListView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QListView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QListView::moveCursor
+344 QListView::horizontalOffset
+348 QListView::verticalOffset
+352 QListView::isIndexHidden
+356 QListView::setSelection
+360 QListView::visualRegionForSelection
+364 QListView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QListView::startDrag
+380 QListView::viewOptions
+384 (int (*)(...))-0x000000008
+388 (int (*)(...))(& _ZTI9QUndoView)
+392 QUndoView::_ZThn8_N9QUndoViewD1Ev
+396 QUndoView::_ZThn8_N9QUndoViewD0Ev
+400 QWidget::_ZThn8_NK7QWidget7devTypeEv
+404 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+408 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QUndoView
+ size=20 align=4
+ base size=20 base align=4
+QUndoView (0xb3507cc0) 0
+ vptr=((& QUndoView::_ZTV9QUndoView) + 8u)
+ QListView (0xb3507d00) 0
+ primary-for QUndoView (0xb3507cc0)
+ QAbstractItemView (0xb3507d40) 0
+ primary-for QListView (0xb3507d00)
+ QAbstractScrollArea (0xb3507d80) 0
+ primary-for QAbstractItemView (0xb3507d40)
+ QFrame (0xb3507dc0) 0
+ primary-for QAbstractScrollArea (0xb3507d80)
+ QWidget (0xb3582410) 0
+ primary-for QFrame (0xb3507dc0)
+ QObject (0xb35860b4) 0
+ primary-for QWidget (0xb3582410)
+ QPaintDevice (0xb35860f0) 8
+ vptr=((& QUndoView::_ZTV9QUndoView) + 392u)
+
+Vtable for QDialog
+QDialog::_ZTV7QDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QDialog)
+8 QDialog::metaObject
+12 QDialog::qt_metacast
+16 QDialog::qt_metacall
+20 QDialog::~QDialog
+24 QDialog::~QDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI7QDialog)
+244 QDialog::_ZThn8_N7QDialogD1Ev
+248 QDialog::_ZThn8_N7QDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDialog
+ size=20 align=4
+ base size=20 base align=4
+QDialog (0xb3598080) 0
+ vptr=((& QDialog::_ZTV7QDialog) + 8u)
+ QWidget (0xb3599190) 0
+ primary-for QDialog (0xb3598080)
+ QObject (0xb358630c) 0
+ primary-for QWidget (0xb3599190)
+ QPaintDevice (0xb3586348) 8
+ vptr=((& QDialog::_ZTV7QDialog) + 244u)
+
+Vtable for QAbstractPageSetupDialog
+QAbstractPageSetupDialog::_ZTV24QAbstractPageSetupDialog: 67u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QAbstractPageSetupDialog)
+8 QAbstractPageSetupDialog::metaObject
+12 QAbstractPageSetupDialog::qt_metacast
+16 QAbstractPageSetupDialog::qt_metacall
+20 QAbstractPageSetupDialog::~QAbstractPageSetupDialog
+24 QAbstractPageSetupDialog::~QAbstractPageSetupDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractPageSetupDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 __cxa_pure_virtual
+240 (int (*)(...))-0x000000008
+244 (int (*)(...))(& _ZTI24QAbstractPageSetupDialog)
+248 QAbstractPageSetupDialog::_ZThn8_N24QAbstractPageSetupDialogD1Ev
+252 QAbstractPageSetupDialog::_ZThn8_N24QAbstractPageSetupDialogD0Ev
+256 QWidget::_ZThn8_NK7QWidget7devTypeEv
+260 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+264 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractPageSetupDialog
+ size=20 align=4
+ base size=20 base align=4
+QAbstractPageSetupDialog (0xb3598340) 0
+ vptr=((& QAbstractPageSetupDialog::_ZTV24QAbstractPageSetupDialog) + 8u)
+ QDialog (0xb3598380) 0
+ primary-for QAbstractPageSetupDialog (0xb3598340)
+ QWidget (0xb35a4e10) 0
+ primary-for QDialog (0xb3598380)
+ QObject (0xb3586564) 0
+ primary-for QWidget (0xb35a4e10)
+ QPaintDevice (0xb35865a0) 8
+ vptr=((& QAbstractPageSetupDialog::_ZTV24QAbstractPageSetupDialog) + 248u)
+
+Vtable for QAbstractPrintDialog
+QAbstractPrintDialog::_ZTV20QAbstractPrintDialog: 67u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QAbstractPrintDialog)
+8 QAbstractPrintDialog::metaObject
+12 QAbstractPrintDialog::qt_metacast
+16 QAbstractPrintDialog::qt_metacall
+20 QAbstractPrintDialog::~QAbstractPrintDialog
+24 QAbstractPrintDialog::~QAbstractPrintDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 __cxa_pure_virtual
+240 (int (*)(...))-0x000000008
+244 (int (*)(...))(& _ZTI20QAbstractPrintDialog)
+248 QAbstractPrintDialog::_ZThn8_N20QAbstractPrintDialogD1Ev
+252 QAbstractPrintDialog::_ZThn8_N20QAbstractPrintDialogD0Ev
+256 QWidget::_ZThn8_NK7QWidget7devTypeEv
+260 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+264 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractPrintDialog
+ size=20 align=4
+ base size=20 base align=4
+QAbstractPrintDialog (0xb3598640) 0
+ vptr=((& QAbstractPrintDialog::_ZTV20QAbstractPrintDialog) + 8u)
+ QDialog (0xb3598680) 0
+ primary-for QAbstractPrintDialog (0xb3598640)
+ QWidget (0xb35b4550) 0
+ primary-for QDialog (0xb3598680)
+ QObject (0xb35867bc) 0
+ primary-for QWidget (0xb35b4550)
+ QPaintDevice (0xb35867f8) 8
+ vptr=((& QAbstractPrintDialog::_ZTV20QAbstractPrintDialog) + 248u)
+
+Vtable for QColorDialog
+QColorDialog::_ZTV12QColorDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QColorDialog)
+8 QColorDialog::metaObject
+12 QColorDialog::qt_metacast
+16 QColorDialog::qt_metacall
+20 QColorDialog::~QColorDialog
+24 QColorDialog::~QColorDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QColorDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QColorDialog::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QColorDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI12QColorDialog)
+244 QColorDialog::_ZThn8_N12QColorDialogD1Ev
+248 QColorDialog::_ZThn8_N12QColorDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QColorDialog
+ size=20 align=4
+ base size=20 base align=4
+QColorDialog (0xb3598a80) 0
+ vptr=((& QColorDialog::_ZTV12QColorDialog) + 8u)
+ QDialog (0xb3598ac0) 0
+ primary-for QColorDialog (0xb3598a80)
+ QWidget (0xb35eb0f0) 0
+ primary-for QDialog (0xb3598ac0)
+ QObject (0xb3586b04) 0
+ primary-for QWidget (0xb35eb0f0)
+ QPaintDevice (0xb3586b40) 8
+ vptr=((& QColorDialog::_ZTV12QColorDialog) + 244u)
+
+Vtable for QErrorMessage
+QErrorMessage::_ZTV13QErrorMessage: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QErrorMessage)
+8 QErrorMessage::metaObject
+12 QErrorMessage::qt_metacast
+16 QErrorMessage::qt_metacall
+20 QErrorMessage::~QErrorMessage
+24 QErrorMessage::~QErrorMessage
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QErrorMessage::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QErrorMessage::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI13QErrorMessage)
+244 QErrorMessage::_ZThn8_N13QErrorMessageD1Ev
+248 QErrorMessage::_ZThn8_N13QErrorMessageD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QErrorMessage
+ size=20 align=4
+ base size=20 base align=4
+QErrorMessage (0xb3598f40) 0
+ vptr=((& QErrorMessage::_ZTV13QErrorMessage) + 8u)
+ QDialog (0xb3598f80) 0
+ primary-for QErrorMessage (0xb3598f40)
+ QWidget (0xb34230f0) 0
+ primary-for QDialog (0xb3598f80)
+ QObject (0xb3586ec4) 0
+ primary-for QWidget (0xb34230f0)
+ QPaintDevice (0xb3586f00) 8
+ vptr=((& QErrorMessage::_ZTV13QErrorMessage) + 244u)
+
+Vtable for QFileDialog
+QFileDialog::_ZTV11QFileDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFileDialog)
+8 QFileDialog::metaObject
+12 QFileDialog::qt_metacast
+16 QFileDialog::qt_metacall
+20 QFileDialog::~QFileDialog
+24 QFileDialog::~QFileDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QFileDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFileDialog::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QFileDialog::done
+228 QFileDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI11QFileDialog)
+244 QFileDialog::_ZThn8_N11QFileDialogD1Ev
+248 QFileDialog::_ZThn8_N11QFileDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFileDialog
+ size=20 align=4
+ base size=20 base align=4
+QFileDialog (0xb3424280) 0
+ vptr=((& QFileDialog::_ZTV11QFileDialog) + 8u)
+ QDialog (0xb34242c0) 0
+ primary-for QFileDialog (0xb3424280)
+ QWidget (0xb3426a00) 0
+ primary-for QDialog (0xb34242c0)
+ QObject (0xb343112c) 0
+ primary-for QWidget (0xb3426a00)
+ QPaintDevice (0xb3431168) 8
+ vptr=((& QFileDialog::_ZTV11QFileDialog) + 244u)
+
+Vtable for QFileSystemModel
+QFileSystemModel::_ZTV16QFileSystemModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QFileSystemModel)
+8 QFileSystemModel::metaObject
+12 QFileSystemModel::qt_metacast
+16 QFileSystemModel::qt_metacall
+20 QFileSystemModel::~QFileSystemModel
+24 QFileSystemModel::~QFileSystemModel
+28 QFileSystemModel::event
+32 QObject::eventFilter
+36 QFileSystemModel::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QFileSystemModel::index
+60 QFileSystemModel::parent
+64 QFileSystemModel::rowCount
+68 QFileSystemModel::columnCount
+72 QFileSystemModel::hasChildren
+76 QFileSystemModel::data
+80 QFileSystemModel::setData
+84 QFileSystemModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QFileSystemModel::mimeTypes
+104 QFileSystemModel::mimeData
+108 QFileSystemModel::dropMimeData
+112 QFileSystemModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QFileSystemModel::fetchMore
+136 QFileSystemModel::canFetchMore
+140 QFileSystemModel::flags
+144 QFileSystemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QFileSystemModel
+ size=8 align=4
+ base size=8 base align=4
+QFileSystemModel (0xb3424bc0) 0
+ vptr=((& QFileSystemModel::_ZTV16QFileSystemModel) + 8u)
+ QAbstractItemModel (0xb3424c00) 0
+ primary-for QFileSystemModel (0xb3424bc0)
+ QObject (0xb34317f8) 0
+ primary-for QAbstractItemModel (0xb3424c00)
+
+Vtable for QFontDialog
+QFontDialog::_ZTV11QFontDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFontDialog)
+8 QFontDialog::metaObject
+12 QFontDialog::qt_metacast
+16 QFontDialog::qt_metacall
+20 QFontDialog::~QFontDialog
+24 QFontDialog::~QFontDialog
+28 QWidget::event
+32 QFontDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QFontDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFontDialog::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QFontDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI11QFontDialog)
+244 QFontDialog::_ZThn8_N11QFontDialogD1Ev
+248 QFontDialog::_ZThn8_N11QFontDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFontDialog
+ size=20 align=4
+ base size=20 base align=4
+QFontDialog (0xb3424fc0) 0
+ vptr=((& QFontDialog::_ZTV11QFontDialog) + 8u)
+ QDialog (0xb349e000) 0
+ primary-for QFontDialog (0xb3424fc0)
+ QWidget (0xb349b5f0) 0
+ primary-for QDialog (0xb349e000)
+ QObject (0xb3431b04) 0
+ primary-for QWidget (0xb349b5f0)
+ QPaintDevice (0xb3431b40) 8
+ vptr=((& QFontDialog::_ZTV11QFontDialog) + 244u)
+
+Vtable for QLineEdit
+QLineEdit::_ZTV9QLineEdit: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QLineEdit)
+8 QLineEdit::metaObject
+12 QLineEdit::qt_metacast
+16 QLineEdit::qt_metacall
+20 QLineEdit::~QLineEdit
+24 QLineEdit::~QLineEdit
+28 QLineEdit::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QLineEdit::sizeHint
+68 QLineEdit::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QLineEdit::mousePressEvent
+84 QLineEdit::mouseReleaseEvent
+88 QLineEdit::mouseDoubleClickEvent
+92 QLineEdit::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QLineEdit::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QLineEdit::focusInEvent
+112 QLineEdit::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QLineEdit::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QLineEdit::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QLineEdit::dragEnterEvent
+156 QLineEdit::dragMoveEvent
+160 QLineEdit::dragLeaveEvent
+164 QLineEdit::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QLineEdit::changeEvent
+184 QWidget::metric
+188 QLineEdit::inputMethodEvent
+192 QLineEdit::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI9QLineEdit)
+232 QLineEdit::_ZThn8_N9QLineEditD1Ev
+236 QLineEdit::_ZThn8_N9QLineEditD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QLineEdit
+ size=20 align=4
+ base size=20 base align=4
+QLineEdit (0xb349e480) 0
+ vptr=((& QLineEdit::_ZTV9QLineEdit) + 8u)
+ QWidget (0xb34ba690) 0
+ primary-for QLineEdit (0xb349e480)
+ QObject (0xb3431ec4) 0
+ primary-for QWidget (0xb34ba690)
+ QPaintDevice (0xb3431f00) 8
+ vptr=((& QLineEdit::_ZTV9QLineEdit) + 232u)
+
+Vtable for QInputDialog
+QInputDialog::_ZTV12QInputDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QInputDialog)
+8 QInputDialog::metaObject
+12 QInputDialog::qt_metacast
+16 QInputDialog::qt_metacall
+20 QInputDialog::~QInputDialog
+24 QInputDialog::~QInputDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QInputDialog::setVisible
+64 QInputDialog::sizeHint
+68 QInputDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QInputDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI12QInputDialog)
+244 QInputDialog::_ZThn8_N12QInputDialogD1Ev
+248 QInputDialog::_ZThn8_N12QInputDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QInputDialog
+ size=20 align=4
+ base size=20 base align=4
+QInputDialog (0xb349ed00) 0
+ vptr=((& QInputDialog::_ZTV12QInputDialog) + 8u)
+ QDialog (0xb349ed40) 0
+ primary-for QInputDialog (0xb349ed00)
+ QWidget (0xb32fd550) 0
+ primary-for QDialog (0xb349ed40)
+ QObject (0xb32f8564) 0
+ primary-for QWidget (0xb32fd550)
+ QPaintDevice (0xb32f85a0) 8
+ vptr=((& QInputDialog::_ZTV12QInputDialog) + 244u)
+
+Vtable for QMessageBox
+QMessageBox::_ZTV11QMessageBox: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QMessageBox)
+8 QMessageBox::metaObject
+12 QMessageBox::qt_metacast
+16 QMessageBox::qt_metacall
+20 QMessageBox::~QMessageBox
+24 QMessageBox::~QMessageBox
+28 QMessageBox::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QMessageBox::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QMessageBox::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QMessageBox::resizeEvent
+136 QMessageBox::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QMessageBox::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QMessageBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI11QMessageBox)
+244 QMessageBox::_ZThn8_N11QMessageBoxD1Ev
+248 QMessageBox::_ZThn8_N11QMessageBoxD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMessageBox
+ size=20 align=4
+ base size=20 base align=4
+QMessageBox (0xb331d240) 0
+ vptr=((& QMessageBox::_ZTV11QMessageBox) + 8u)
+ QDialog (0xb331d280) 0
+ primary-for QMessageBox (0xb331d240)
+ QWidget (0xb3328d70) 0
+ primary-for QDialog (0xb331d280)
+ QObject (0xb32f89d8) 0
+ primary-for QWidget (0xb3328d70)
+ QPaintDevice (0xb32f8a14) 8
+ vptr=((& QMessageBox::_ZTV11QMessageBox) + 244u)
+
+Vtable for QPageSetupDialog
+QPageSetupDialog::_ZTV16QPageSetupDialog: 67u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QPageSetupDialog)
+8 QPageSetupDialog::metaObject
+12 QPageSetupDialog::qt_metacast
+16 QPageSetupDialog::qt_metacall
+20 QPageSetupDialog::~QPageSetupDialog
+24 QPageSetupDialog::~QPageSetupDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractPageSetupDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 QPageSetupDialog::exec
+240 (int (*)(...))-0x000000008
+244 (int (*)(...))(& _ZTI16QPageSetupDialog)
+248 QPageSetupDialog::_ZThn8_N16QPageSetupDialogD1Ev
+252 QPageSetupDialog::_ZThn8_N16QPageSetupDialogD0Ev
+256 QWidget::_ZThn8_NK7QWidget7devTypeEv
+260 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+264 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPageSetupDialog
+ size=20 align=4
+ base size=20 base align=4
+QPageSetupDialog (0xb331d880) 0
+ vptr=((& QPageSetupDialog::_ZTV16QPageSetupDialog) + 8u)
+ QAbstractPageSetupDialog (0xb331d8c0) 0
+ primary-for QPageSetupDialog (0xb331d880)
+ QDialog (0xb331d900) 0
+ primary-for QAbstractPageSetupDialog (0xb331d8c0)
+ QWidget (0xb337aa00) 0
+ primary-for QDialog (0xb331d900)
+ QObject (0xb3398000) 0
+ primary-for QWidget (0xb337aa00)
+ QPaintDevice (0xb339803c) 8
+ vptr=((& QPageSetupDialog::_ZTV16QPageSetupDialog) + 248u)
+
+Vtable for QUnixPrintWidget
+QUnixPrintWidget::_ZTV16QUnixPrintWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QUnixPrintWidget)
+8 QUnixPrintWidget::metaObject
+12 QUnixPrintWidget::qt_metacast
+16 QUnixPrintWidget::qt_metacall
+20 QUnixPrintWidget::~QUnixPrintWidget
+24 QUnixPrintWidget::~QUnixPrintWidget
+28 QWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI16QUnixPrintWidget)
+232 QUnixPrintWidget::_ZThn8_N16QUnixPrintWidgetD1Ev
+236 QUnixPrintWidget::_ZThn8_N16QUnixPrintWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QUnixPrintWidget
+ size=24 align=4
+ base size=24 base align=4
+QUnixPrintWidget (0xb331dbc0) 0
+ vptr=((& QUnixPrintWidget::_ZTV16QUnixPrintWidget) + 8u)
+ QWidget (0xb33a25f0) 0
+ primary-for QUnixPrintWidget (0xb331dbc0)
+ QObject (0xb3398258) 0
+ primary-for QWidget (0xb33a25f0)
+ QPaintDevice (0xb3398294) 8
+ vptr=((& QUnixPrintWidget::_ZTV16QUnixPrintWidget) + 232u)
+
+Vtable for QPrintDialog
+QPrintDialog::_ZTV12QPrintDialog: 67u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QPrintDialog)
+8 QPrintDialog::metaObject
+12 QPrintDialog::qt_metacast
+16 QPrintDialog::qt_metacall
+20 QPrintDialog::~QPrintDialog
+24 QPrintDialog::~QPrintDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QPrintDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QPrintDialog::done
+228 QPrintDialog::accept
+232 QDialog::reject
+236 QPrintDialog::exec
+240 (int (*)(...))-0x000000008
+244 (int (*)(...))(& _ZTI12QPrintDialog)
+248 QPrintDialog::_ZThn8_N12QPrintDialogD1Ev
+252 QPrintDialog::_ZThn8_N12QPrintDialogD0Ev
+256 QWidget::_ZThn8_NK7QWidget7devTypeEv
+260 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+264 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPrintDialog
+ size=20 align=4
+ base size=20 base align=4
+QPrintDialog (0xb331de00) 0
+ vptr=((& QPrintDialog::_ZTV12QPrintDialog) + 8u)
+ QAbstractPrintDialog (0xb331de40) 0
+ primary-for QPrintDialog (0xb331de00)
+ QDialog (0xb331de80) 0
+ primary-for QAbstractPrintDialog (0xb331de40)
+ QWidget (0xb33ac730) 0
+ primary-for QDialog (0xb331de80)
+ QObject (0xb33983c0) 0
+ primary-for QWidget (0xb33ac730)
+ QPaintDevice (0xb33983fc) 8
+ vptr=((& QPrintDialog::_ZTV12QPrintDialog) + 248u)
+
+Vtable for QPrintPreviewDialog
+QPrintPreviewDialog::_ZTV19QPrintPreviewDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QPrintPreviewDialog)
+8 QPrintPreviewDialog::metaObject
+12 QPrintPreviewDialog::qt_metacast
+16 QPrintPreviewDialog::qt_metacall
+20 QPrintPreviewDialog::~QPrintPreviewDialog
+24 QPrintPreviewDialog::~QPrintPreviewDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QPrintPreviewDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QPrintPreviewDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI19QPrintPreviewDialog)
+244 QPrintPreviewDialog::_ZThn8_N19QPrintPreviewDialogD1Ev
+248 QPrintPreviewDialog::_ZThn8_N19QPrintPreviewDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPrintPreviewDialog
+ size=24 align=4
+ base size=24 base align=4
+QPrintPreviewDialog (0xb33c0140) 0
+ vptr=((& QPrintPreviewDialog::_ZTV19QPrintPreviewDialog) + 8u)
+ QDialog (0xb33c0180) 0
+ primary-for QPrintPreviewDialog (0xb33c0140)
+ QWidget (0xb33c3320) 0
+ primary-for QDialog (0xb33c0180)
+ QObject (0xb3398618) 0
+ primary-for QWidget (0xb33c3320)
+ QPaintDevice (0xb3398654) 8
+ vptr=((& QPrintPreviewDialog::_ZTV19QPrintPreviewDialog) + 244u)
+
+Vtable for QProgressDialog
+QProgressDialog::_ZTV15QProgressDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QProgressDialog)
+8 QProgressDialog::metaObject
+12 QProgressDialog::qt_metacast
+16 QProgressDialog::qt_metacall
+20 QProgressDialog::~QProgressDialog
+24 QProgressDialog::~QProgressDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QProgressDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QProgressDialog::resizeEvent
+136 QProgressDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QProgressDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QProgressDialog::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI15QProgressDialog)
+244 QProgressDialog::_ZThn8_N15QProgressDialogD1Ev
+248 QProgressDialog::_ZThn8_N15QProgressDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QProgressDialog
+ size=20 align=4
+ base size=20 base align=4
+QProgressDialog (0xb33c0440) 0
+ vptr=((& QProgressDialog::_ZTV15QProgressDialog) + 8u)
+ QDialog (0xb33c0480) 0
+ primary-for QProgressDialog (0xb33c0440)
+ QWidget (0xb33c9d70) 0
+ primary-for QDialog (0xb33c0480)
+ QObject (0xb3398870) 0
+ primary-for QWidget (0xb33c9d70)
+ QPaintDevice (0xb33988ac) 8
+ vptr=((& QProgressDialog::_ZTV15QProgressDialog) + 244u)
+
+Vtable for QWizard
+QWizard::_ZTV7QWizard: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QWizard)
+8 QWizard::metaObject
+12 QWizard::qt_metacast
+16 QWizard::qt_metacall
+20 QWizard::~QWizard
+24 QWizard::~QWizard
+28 QWizard::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWizard::setVisible
+64 QWizard::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWizard::paintEvent
+128 QWidget::moveEvent
+132 QWizard::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QWizard::done
+228 QDialog::accept
+232 QDialog::reject
+236 QWizard::validateCurrentPage
+240 QWizard::nextId
+244 QWizard::initializePage
+248 QWizard::cleanupPage
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI7QWizard)
+260 QWizard::_ZThn8_N7QWizardD1Ev
+264 QWizard::_ZThn8_N7QWizardD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWizard
+ size=20 align=4
+ base size=20 base align=4
+QWizard (0xb33c0740) 0
+ vptr=((& QWizard::_ZTV7QWizard) + 8u)
+ QDialog (0xb33c0780) 0
+ primary-for QWizard (0xb33c0740)
+ QWidget (0xb33dc870) 0
+ primary-for QDialog (0xb33c0780)
+ QObject (0xb3398ac8) 0
+ primary-for QWidget (0xb33dc870)
+ QPaintDevice (0xb3398b04) 8
+ vptr=((& QWizard::_ZTV7QWizard) + 260u)
+
+Vtable for QWizardPage
+QWizardPage::_ZTV11QWizardPage: 68u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QWizardPage)
+8 QWizardPage::metaObject
+12 QWizardPage::qt_metacast
+16 QWizardPage::qt_metacall
+20 QWizardPage::~QWizardPage
+24 QWizardPage::~QWizardPage
+28 QWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QWizardPage::initializePage
+228 QWizardPage::cleanupPage
+232 QWizardPage::validatePage
+236 QWizardPage::isComplete
+240 QWizardPage::nextId
+244 (int (*)(...))-0x000000008
+248 (int (*)(...))(& _ZTI11QWizardPage)
+252 QWizardPage::_ZThn8_N11QWizardPageD1Ev
+256 QWizardPage::_ZThn8_N11QWizardPageD0Ev
+260 QWidget::_ZThn8_NK7QWidget7devTypeEv
+264 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+268 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWizardPage
+ size=20 align=4
+ base size=20 base align=4
+QWizardPage (0xb33c0b80) 0
+ vptr=((& QWizardPage::_ZTV11QWizardPage) + 8u)
+ QWidget (0xb3203c30) 0
+ primary-for QWizardPage (0xb33c0b80)
+ QObject (0xb3398e10) 0
+ primary-for QWidget (0xb3203c30)
+ QPaintDevice (0xb3398e4c) 8
+ vptr=((& QWizardPage::_ZTV11QWizardPage) + 252u)
+
+Vtable for QKeyEventTransition
+QKeyEventTransition::_ZTV19QKeyEventTransition: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QKeyEventTransition)
+8 QKeyEventTransition::metaObject
+12 QKeyEventTransition::qt_metacast
+16 QKeyEventTransition::qt_metacall
+20 QKeyEventTransition::~QKeyEventTransition
+24 QKeyEventTransition::~QKeyEventTransition
+28 QEventTransition::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QKeyEventTransition::eventTest
+60 QKeyEventTransition::onTransition
+
+Class QKeyEventTransition
+ size=8 align=4
+ base size=8 base align=4
+QKeyEventTransition (0xb33c0e40) 0
+ vptr=((& QKeyEventTransition::_ZTV19QKeyEventTransition) + 8u)
+ QEventTransition (0xb33c0e80) 0
+ primary-for QKeyEventTransition (0xb33c0e40)
+ QAbstractTransition (0xb33c0ec0) 0
+ primary-for QEventTransition (0xb33c0e80)
+ QObject (0xb3231078) 0
+ primary-for QAbstractTransition (0xb33c0ec0)
+
+Vtable for QMouseEventTransition
+QMouseEventTransition::_ZTV21QMouseEventTransition: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QMouseEventTransition)
+8 QMouseEventTransition::metaObject
+12 QMouseEventTransition::qt_metacast
+16 QMouseEventTransition::qt_metacall
+20 QMouseEventTransition::~QMouseEventTransition
+24 QMouseEventTransition::~QMouseEventTransition
+28 QEventTransition::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QMouseEventTransition::eventTest
+60 QMouseEventTransition::onTransition
+
+Class QMouseEventTransition
+ size=8 align=4
+ base size=8 base align=4
+QMouseEventTransition (0xb323c180) 0
+ vptr=((& QMouseEventTransition::_ZTV21QMouseEventTransition) + 8u)
+ QEventTransition (0xb323c1c0) 0
+ primary-for QMouseEventTransition (0xb323c180)
+ QAbstractTransition (0xb323c200) 0
+ primary-for QEventTransition (0xb323c1c0)
+ QObject (0xb3231294) 0
+ primary-for QAbstractTransition (0xb323c200)
+
+Vtable for QBitmap
+QBitmap::_ZTV7QBitmap: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QBitmap)
+8 QBitmap::~QBitmap
+12 QBitmap::~QBitmap
+16 QPixmap::devType
+20 QPixmap::paintEngine
+24 QPixmap::metric
+
+Class QBitmap
+ size=12 align=4
+ base size=12 base align=4
+QBitmap (0xb323c4c0) 0
+ vptr=((& QBitmap::_ZTV7QBitmap) + 8u)
+ QPixmap (0xb323c500) 0
+ primary-for QBitmap (0xb323c4c0)
+ QPaintDevice (0xb32314b0) 0
+ primary-for QPixmap (0xb323c500)
+
+Vtable for QIconEngine
+QIconEngine::_ZTV11QIconEngine: 9u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QIconEngine)
+8 QIconEngine::~QIconEngine
+12 QIconEngine::~QIconEngine
+16 __cxa_pure_virtual
+20 QIconEngine::actualSize
+24 QIconEngine::pixmap
+28 QIconEngine::addPixmap
+32 QIconEngine::addFile
+
+Class QIconEngine
+ size=4 align=4
+ base size=4 base align=4
+QIconEngine (0xb326b078) 0 nearly-empty
+ vptr=((& QIconEngine::_ZTV11QIconEngine) + 8u)
+
+Class QIconEngineV2::AvailableSizesArgument
+ size=12 align=4
+ base size=12 base align=4
+QIconEngineV2::AvailableSizesArgument (0xb326b0f0) 0
+
+Vtable for QIconEngineV2
+QIconEngineV2::_ZTV13QIconEngineV2: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QIconEngineV2)
+8 QIconEngineV2::~QIconEngineV2
+12 QIconEngineV2::~QIconEngineV2
+16 __cxa_pure_virtual
+20 QIconEngine::actualSize
+24 QIconEngine::pixmap
+28 QIconEngine::addPixmap
+32 QIconEngine::addFile
+36 QIconEngineV2::key
+40 QIconEngineV2::clone
+44 QIconEngineV2::read
+48 QIconEngineV2::write
+52 QIconEngineV2::virtual_hook
+
+Class QIconEngineV2
+ size=4 align=4
+ base size=4 base align=4
+QIconEngineV2 (0xb323cd40) 0 nearly-empty
+ vptr=((& QIconEngineV2::_ZTV13QIconEngineV2) + 8u)
+ QIconEngine (0xb326b0b4) 0 nearly-empty
+ primary-for QIconEngineV2 (0xb323cd40)
+
+Vtable for QIconEngineFactoryInterface
+QIconEngineFactoryInterface::_ZTV27QIconEngineFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QIconEngineFactoryInterface)
+8 QIconEngineFactoryInterface::~QIconEngineFactoryInterface
+12 QIconEngineFactoryInterface::~QIconEngineFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QIconEngineFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QIconEngineFactoryInterface (0xb323cec0) 0 nearly-empty
+ vptr=((& QIconEngineFactoryInterface::_ZTV27QIconEngineFactoryInterface) + 8u)
+ QFactoryInterface (0xb326b1a4) 0 nearly-empty
+ primary-for QIconEngineFactoryInterface (0xb323cec0)
+
+Vtable for QIconEnginePlugin
+QIconEnginePlugin::_ZTV17QIconEnginePlugin: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QIconEnginePlugin)
+8 QIconEnginePlugin::metaObject
+12 QIconEnginePlugin::qt_metacast
+16 QIconEnginePlugin::qt_metacall
+20 QIconEnginePlugin::~QIconEnginePlugin
+24 QIconEnginePlugin::~QIconEnginePlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 (int (*)(...))-0x000000008
+68 (int (*)(...))(& _ZTI17QIconEnginePlugin)
+72 QIconEnginePlugin::_ZThn8_N17QIconEnginePluginD1Ev
+76 QIconEnginePlugin::_ZThn8_N17QIconEnginePluginD0Ev
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+
+Class QIconEnginePlugin
+ size=12 align=4
+ base size=12 base align=4
+QIconEnginePlugin (0xb328a0a0) 0
+ vptr=((& QIconEnginePlugin::_ZTV17QIconEnginePlugin) + 8u)
+ QObject (0xb326b4b0) 0
+ primary-for QIconEnginePlugin (0xb328a0a0)
+ QIconEngineFactoryInterface (0xb3289180) 8 nearly-empty
+ vptr=((& QIconEnginePlugin::_ZTV17QIconEnginePlugin) + 72u)
+ QFactoryInterface (0xb326b4ec) 8 nearly-empty
+ primary-for QIconEngineFactoryInterface (0xb3289180)
+
+Vtable for QIconEngineFactoryInterfaceV2
+QIconEngineFactoryInterfaceV2::_ZTV29QIconEngineFactoryInterfaceV2: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI29QIconEngineFactoryInterfaceV2)
+8 QIconEngineFactoryInterfaceV2::~QIconEngineFactoryInterfaceV2
+12 QIconEngineFactoryInterfaceV2::~QIconEngineFactoryInterfaceV2
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QIconEngineFactoryInterfaceV2
+ size=4 align=4
+ base size=4 base align=4
+QIconEngineFactoryInterfaceV2 (0xb32893c0) 0 nearly-empty
+ vptr=((& QIconEngineFactoryInterfaceV2::_ZTV29QIconEngineFactoryInterfaceV2) + 8u)
+ QFactoryInterface (0xb326b618) 0 nearly-empty
+ primary-for QIconEngineFactoryInterfaceV2 (0xb32893c0)
+
+Vtable for QIconEnginePluginV2
+QIconEnginePluginV2::_ZTV19QIconEnginePluginV2: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QIconEnginePluginV2)
+8 QIconEnginePluginV2::metaObject
+12 QIconEnginePluginV2::qt_metacast
+16 QIconEnginePluginV2::qt_metacall
+20 QIconEnginePluginV2::~QIconEnginePluginV2
+24 QIconEnginePluginV2::~QIconEnginePluginV2
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 (int (*)(...))-0x000000008
+68 (int (*)(...))(& _ZTI19QIconEnginePluginV2)
+72 QIconEnginePluginV2::_ZThn8_N19QIconEnginePluginV2D1Ev
+76 QIconEnginePluginV2::_ZThn8_N19QIconEnginePluginV2D0Ev
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+
+Class QIconEnginePluginV2
+ size=12 align=4
+ base size=12 base align=4
+QIconEnginePluginV2 (0xb3291af0) 0
+ vptr=((& QIconEnginePluginV2::_ZTV19QIconEnginePluginV2) + 8u)
+ QObject (0xb326b924) 0
+ primary-for QIconEnginePluginV2 (0xb3291af0)
+ QIconEngineFactoryInterfaceV2 (0xb3289680) 8 nearly-empty
+ vptr=((& QIconEnginePluginV2::_ZTV19QIconEnginePluginV2) + 72u)
+ QFactoryInterface (0xb326b960) 8 nearly-empty
+ primary-for QIconEngineFactoryInterfaceV2 (0xb3289680)
+
+Vtable for QImageIOHandler
+QImageIOHandler::_ZTV15QImageIOHandler: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QImageIOHandler)
+8 QImageIOHandler::~QImageIOHandler
+12 QImageIOHandler::~QImageIOHandler
+16 QImageIOHandler::name
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 QImageIOHandler::write
+32 QImageIOHandler::option
+36 QImageIOHandler::setOption
+40 QImageIOHandler::supportsOption
+44 QImageIOHandler::jumpToNextImage
+48 QImageIOHandler::jumpToImage
+52 QImageIOHandler::loopCount
+56 QImageIOHandler::imageCount
+60 QImageIOHandler::nextImageDelay
+64 QImageIOHandler::currentImageNumber
+68 QImageIOHandler::currentImageRect
+
+Class QImageIOHandler
+ size=8 align=4
+ base size=8 base align=4
+QImageIOHandler (0xb326ba8c) 0
+ vptr=((& QImageIOHandler::_ZTV15QImageIOHandler) + 8u)
+
+Vtable for QImageIOHandlerFactoryInterface
+QImageIOHandlerFactoryInterface::_ZTV31QImageIOHandlerFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI31QImageIOHandlerFactoryInterface)
+8 QImageIOHandlerFactoryInterface::~QImageIOHandlerFactoryInterface
+12 QImageIOHandlerFactoryInterface::~QImageIOHandlerFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QImageIOHandlerFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QImageIOHandlerFactoryInterface (0xb32899c0) 0 nearly-empty
+ vptr=((& QImageIOHandlerFactoryInterface::_ZTV31QImageIOHandlerFactoryInterface) + 8u)
+ QFactoryInterface (0xb326bbf4) 0 nearly-empty
+ primary-for QImageIOHandlerFactoryInterface (0xb32899c0)
+
+Vtable for QImageIOPlugin
+QImageIOPlugin::_ZTV14QImageIOPlugin: 23u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QImageIOPlugin)
+8 QImageIOPlugin::metaObject
+12 QImageIOPlugin::qt_metacast
+16 QImageIOPlugin::qt_metacall
+20 QImageIOPlugin::~QImageIOPlugin
+24 QImageIOPlugin::~QImageIOPlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 (int (*)(...))-0x000000008
+72 (int (*)(...))(& _ZTI14QImageIOPlugin)
+76 QImageIOPlugin::_ZThn8_N14QImageIOPluginD1Ev
+80 QImageIOPlugin::_ZThn8_N14QImageIOPluginD0Ev
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+
+Class QImageIOPlugin
+ size=12 align=4
+ base size=12 base align=4
+QImageIOPlugin (0xb32ae9b0) 0
+ vptr=((& QImageIOPlugin::_ZTV14QImageIOPlugin) + 8u)
+ QObject (0xb326bf00) 0
+ primary-for QImageIOPlugin (0xb32ae9b0)
+ QImageIOHandlerFactoryInterface (0xb3289c80) 8 nearly-empty
+ vptr=((& QImageIOPlugin::_ZTV14QImageIOPlugin) + 76u)
+ QFactoryInterface (0xb326bf3c) 8 nearly-empty
+ primary-for QImageIOHandlerFactoryInterface (0xb3289c80)
+
+Class QImageReader
+ size=4 align=4
+ base size=4 base align=4
+QImageReader (0xb32bf168) 0
+
+Class QImageWriter
+ size=4 align=4
+ base size=4 base align=4
+QImageWriter (0xb32bf1a4) 0
+
+Vtable for QMovie
+QMovie::_ZTV6QMovie: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QMovie)
+8 QMovie::metaObject
+12 QMovie::qt_metacast
+16 QMovie::qt_metacall
+20 QMovie::~QMovie
+24 QMovie::~QMovie
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QMovie
+ size=8 align=4
+ base size=8 base align=4
+QMovie (0xb32e6080) 0
+ vptr=((& QMovie::_ZTV6QMovie) + 8u)
+ QObject (0xb32bf1e0) 0
+ primary-for QMovie (0xb32e6080)
+
+Vtable for QPicture
+QPicture::_ZTV8QPicture: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QPicture)
+8 QPicture::~QPicture
+12 QPicture::~QPicture
+16 QPicture::devType
+20 QPicture::paintEngine
+24 QPicture::metric
+28 QPicture::setData
+
+Class QPicture
+ size=12 align=4
+ base size=12 base align=4
+QPicture (0xb32e66c0) 0
+ vptr=((& QPicture::_ZTV8QPicture) + 8u)
+ QPaintDevice (0xb32bf4ec) 0
+ primary-for QPicture (0xb32e66c0)
+
+Class QPictureIO
+ size=4 align=4
+ base size=4 base align=4
+QPictureIO (0xb32bf780) 0
+
+Vtable for QPictureFormatInterface
+QPictureFormatInterface::_ZTV23QPictureFormatInterface: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QPictureFormatInterface)
+8 QPictureFormatInterface::~QPictureFormatInterface
+12 QPictureFormatInterface::~QPictureFormatInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+
+Class QPictureFormatInterface
+ size=4 align=4
+ base size=4 base align=4
+QPictureFormatInterface (0xb32e6a00) 0 nearly-empty
+ vptr=((& QPictureFormatInterface::_ZTV23QPictureFormatInterface) + 8u)
+ QFactoryInterface (0xb32bf7bc) 0 nearly-empty
+ primary-for QPictureFormatInterface (0xb32e6a00)
+
+Vtable for QPictureFormatPlugin
+QPictureFormatPlugin::_ZTV20QPictureFormatPlugin: 26u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QPictureFormatPlugin)
+8 QPictureFormatPlugin::metaObject
+12 QPictureFormatPlugin::qt_metacast
+16 QPictureFormatPlugin::qt_metacall
+20 QPictureFormatPlugin::~QPictureFormatPlugin
+24 QPictureFormatPlugin::~QPictureFormatPlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 QPictureFormatPlugin::loadPicture
+64 QPictureFormatPlugin::savePicture
+68 __cxa_pure_virtual
+72 (int (*)(...))-0x000000008
+76 (int (*)(...))(& _ZTI20QPictureFormatPlugin)
+80 QPictureFormatPlugin::_ZThn8_N20QPictureFormatPluginD1Ev
+84 QPictureFormatPlugin::_ZThn8_N20QPictureFormatPluginD0Ev
+88 __cxa_pure_virtual
+92 QPictureFormatPlugin::_ZThn8_N20QPictureFormatPlugin11loadPictureERK7QStringS2_P8QPicture
+96 QPictureFormatPlugin::_ZThn8_N20QPictureFormatPlugin11savePictureERK7QStringS2_RK8QPicture
+100 __cxa_pure_virtual
+
+Class QPictureFormatPlugin
+ size=12 align=4
+ base size=12 base align=4
+QPictureFormatPlugin (0xb312fa50) 0
+ vptr=((& QPictureFormatPlugin::_ZTV20QPictureFormatPlugin) + 8u)
+ QObject (0xb32bfac8) 0
+ primary-for QPictureFormatPlugin (0xb312fa50)
+ QPictureFormatInterface (0xb32e6cc0) 8 nearly-empty
+ vptr=((& QPictureFormatPlugin::_ZTV20QPictureFormatPlugin) + 80u)
+ QFactoryInterface (0xb32bfb04) 8 nearly-empty
+ primary-for QPictureFormatInterface (0xb32e6cc0)
+
+Class QPixmapCache::Key
+ size=4 align=4
+ base size=4 base align=4
+QPixmapCache::Key (0xb32bfc6c) 0
+
+Class QPixmapCache
+ size=1 align=1
+ base size=0 base align=1
+QPixmapCache (0xb32bfc30) 0 empty
+
+Vtable for QGraphicsEffect
+QGraphicsEffect::_ZTV15QGraphicsEffect: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QGraphicsEffect)
+8 QGraphicsEffect::metaObject
+12 QGraphicsEffect::qt_metacast
+16 QGraphicsEffect::qt_metacall
+20 QGraphicsEffect::~QGraphicsEffect
+24 QGraphicsEffect::~QGraphicsEffect
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsEffect::boundingRectFor
+60 __cxa_pure_virtual
+64 QGraphicsEffect::sourceChanged
+
+Class QGraphicsEffect
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsEffect (0xb3141000) 0
+ vptr=((& QGraphicsEffect::_ZTV15QGraphicsEffect) + 8u)
+ QObject (0xb32bfce4) 0
+ primary-for QGraphicsEffect (0xb3141000)
+
+Vtable for QGraphicsColorizeEffect
+QGraphicsColorizeEffect::_ZTV23QGraphicsColorizeEffect: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QGraphicsColorizeEffect)
+8 QGraphicsColorizeEffect::metaObject
+12 QGraphicsColorizeEffect::qt_metacast
+16 QGraphicsColorizeEffect::qt_metacall
+20 QGraphicsColorizeEffect::~QGraphicsColorizeEffect
+24 QGraphicsColorizeEffect::~QGraphicsColorizeEffect
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsEffect::boundingRectFor
+60 QGraphicsColorizeEffect::draw
+64 QGraphicsEffect::sourceChanged
+
+Class QGraphicsColorizeEffect
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsColorizeEffect (0xb3141400) 0
+ vptr=((& QGraphicsColorizeEffect::_ZTV23QGraphicsColorizeEffect) + 8u)
+ QGraphicsEffect (0xb3141440) 0
+ primary-for QGraphicsColorizeEffect (0xb3141400)
+ QObject (0xb317a03c) 0
+ primary-for QGraphicsEffect (0xb3141440)
+
+Vtable for QGraphicsBlurEffect
+QGraphicsBlurEffect::_ZTV19QGraphicsBlurEffect: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QGraphicsBlurEffect)
+8 QGraphicsBlurEffect::metaObject
+12 QGraphicsBlurEffect::qt_metacast
+16 QGraphicsBlurEffect::qt_metacall
+20 QGraphicsBlurEffect::~QGraphicsBlurEffect
+24 QGraphicsBlurEffect::~QGraphicsBlurEffect
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsBlurEffect::boundingRectFor
+60 QGraphicsBlurEffect::draw
+64 QGraphicsEffect::sourceChanged
+
+Class QGraphicsBlurEffect
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsBlurEffect (0xb3141700) 0
+ vptr=((& QGraphicsBlurEffect::_ZTV19QGraphicsBlurEffect) + 8u)
+ QGraphicsEffect (0xb3141740) 0
+ primary-for QGraphicsBlurEffect (0xb3141700)
+ QObject (0xb317a258) 0
+ primary-for QGraphicsEffect (0xb3141740)
+
+Vtable for QGraphicsDropShadowEffect
+QGraphicsDropShadowEffect::_ZTV25QGraphicsDropShadowEffect: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QGraphicsDropShadowEffect)
+8 QGraphicsDropShadowEffect::metaObject
+12 QGraphicsDropShadowEffect::qt_metacast
+16 QGraphicsDropShadowEffect::qt_metacall
+20 QGraphicsDropShadowEffect::~QGraphicsDropShadowEffect
+24 QGraphicsDropShadowEffect::~QGraphicsDropShadowEffect
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsDropShadowEffect::boundingRectFor
+60 QGraphicsDropShadowEffect::draw
+64 QGraphicsEffect::sourceChanged
+
+Class QGraphicsDropShadowEffect
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsDropShadowEffect (0xb3141b40) 0
+ vptr=((& QGraphicsDropShadowEffect::_ZTV25QGraphicsDropShadowEffect) + 8u)
+ QGraphicsEffect (0xb3141b80) 0
+ primary-for QGraphicsDropShadowEffect (0xb3141b40)
+ QObject (0xb317a564) 0
+ primary-for QGraphicsEffect (0xb3141b80)
+
+Vtable for QGraphicsOpacityEffect
+QGraphicsOpacityEffect::_ZTV22QGraphicsOpacityEffect: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QGraphicsOpacityEffect)
+8 QGraphicsOpacityEffect::metaObject
+12 QGraphicsOpacityEffect::qt_metacast
+16 QGraphicsOpacityEffect::qt_metacall
+20 QGraphicsOpacityEffect::~QGraphicsOpacityEffect
+24 QGraphicsOpacityEffect::~QGraphicsOpacityEffect
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsEffect::boundingRectFor
+60 QGraphicsOpacityEffect::draw
+64 QGraphicsEffect::sourceChanged
+
+Class QGraphicsOpacityEffect
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsOpacityEffect (0xb3141fc0) 0
+ vptr=((& QGraphicsOpacityEffect::_ZTV22QGraphicsOpacityEffect) + 8u)
+ QGraphicsEffect (0xb31ca000) 0
+ primary-for QGraphicsOpacityEffect (0xb3141fc0)
+ QObject (0xb317a7f8) 0
+ primary-for QGraphicsEffect (0xb31ca000)
+
+Class QVFbHeader
+ size=1084 align=4
+ base size=1084 base align=4
+QVFbHeader (0xb317aa14) 0
+
+Class QVFbKeyData
+ size=12 align=4
+ base size=12 base align=4
+QVFbKeyData (0xb317aa50) 0
+
+Vtable for QWSEmbedWidget
+QWSEmbedWidget::_ZTV14QWSEmbedWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QWSEmbedWidget)
+8 QWSEmbedWidget::metaObject
+12 QWSEmbedWidget::qt_metacast
+16 QWSEmbedWidget::qt_metacall
+20 QWSEmbedWidget::~QWSEmbedWidget
+24 QWSEmbedWidget::~QWSEmbedWidget
+28 QWidget::event
+32 QWSEmbedWidget::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWSEmbedWidget::moveEvent
+132 QWSEmbedWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWSEmbedWidget::showEvent
+172 QWSEmbedWidget::hideEvent
+176 QWidget::x11Event
+180 QWSEmbedWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI14QWSEmbedWidget)
+232 QWSEmbedWidget::_ZThn8_N14QWSEmbedWidgetD1Ev
+236 QWSEmbedWidget::_ZThn8_N14QWSEmbedWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWSEmbedWidget
+ size=20 align=4
+ base size=20 base align=4
+QWSEmbedWidget (0xb31ca340) 0
+ vptr=((& QWSEmbedWidget::_ZTV14QWSEmbedWidget) + 8u)
+ QWidget (0xb31cf910) 0
+ primary-for QWSEmbedWidget (0xb31ca340)
+ QObject (0xb317aa8c) 0
+ primary-for QWidget (0xb31cf910)
+ QPaintDevice (0xb317aac8) 8
+ vptr=((& QWSEmbedWidget::_ZTV14QWSEmbedWidget) + 232u)
+
+Class QColormap
+ size=4 align=4
+ base size=4 base align=4
+QColormap (0xb317ace4) 0
+
+Class QTileRules
+ size=8 align=4
+ base size=8 base align=4
+QTileRules (0xb317ad20) 0
+
+Class QDrawPixmaps::Data
+ size=80 align=4
+ base size=80 base align=4
+QDrawPixmaps::Data (0xb31f3078) 0
+
+Class QPainter
+ size=4 align=4
+ base size=4 base align=4
+QPainter (0xb31f30f0) 0
+
+Class QTextItem
+ size=1 align=1
+ base size=0 base align=1
+QTextItem (0xb2f01e10) 0 empty
+
+Vtable for QPaintEngine
+QPaintEngine::_ZTV12QPaintEngine: 24u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QPaintEngine)
+8 QPaintEngine::~QPaintEngine
+12 QPaintEngine::~QPaintEngine
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 QPaintEngine::drawRects
+32 QPaintEngine::drawRects
+36 QPaintEngine::drawLines
+40 QPaintEngine::drawLines
+44 QPaintEngine::drawEllipse
+48 QPaintEngine::drawEllipse
+52 QPaintEngine::drawPath
+56 QPaintEngine::drawPoints
+60 QPaintEngine::drawPoints
+64 QPaintEngine::drawPolygon
+68 QPaintEngine::drawPolygon
+72 __cxa_pure_virtual
+76 QPaintEngine::drawTextItem
+80 QPaintEngine::drawTiledPixmap
+84 QPaintEngine::drawImage
+88 QPaintEngine::coordinateOffset
+92 __cxa_pure_virtual
+
+Class QPaintEngine
+ size=20 align=4
+ base size=20 base align=4
+QPaintEngine (0xb2f01ec4) 0
+ vptr=((& QPaintEngine::_ZTV12QPaintEngine) + 8u)
+
+Class QPaintEngineState
+ size=4 align=4
+ base size=4 base align=4
+QPaintEngineState (0xb2f461e0) 0
+
+Vtable for QPrinter
+QPrinter::_ZTV8QPrinter: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QPrinter)
+8 QPrinter::~QPrinter
+12 QPrinter::~QPrinter
+16 QPrinter::devType
+20 QPrinter::paintEngine
+24 QPrinter::metric
+
+Class QPrinter
+ size=12 align=4
+ base size=12 base align=4
+QPrinter (0xb2f18fc0) 0
+ vptr=((& QPrinter::_ZTV8QPrinter) + 8u)
+ QPaintDevice (0xb2f46b04) 0
+ primary-for QPrinter (0xb2f18fc0)
+
+Vtable for QPrintEngine
+QPrintEngine::_ZTV12QPrintEngine: 10u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QPrintEngine)
+8 QPrintEngine::~QPrintEngine
+12 QPrintEngine::~QPrintEngine
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+
+Class QPrintEngine
+ size=4 align=4
+ base size=4 base align=4
+QPrintEngine (0xb2f46e88) 0 nearly-empty
+ vptr=((& QPrintEngine::_ZTV12QPrintEngine) + 8u)
+
+Class QPrinterInfo
+ size=4 align=4
+ base size=4 base align=4
+QPrinterInfo (0xb2ff70b4) 0
+
+Class QStylePainter
+ size=12 align=4
+ base size=12 base align=4
+QStylePainter (0xb2fc8880) 0
+ QPainter (0xb2ff721c) 0
+
+Vtable for QAbstractProxyModel
+QAbstractProxyModel::_ZTV19QAbstractProxyModel: 47u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractProxyModel)
+8 QAbstractProxyModel::metaObject
+12 QAbstractProxyModel::qt_metacast
+16 QAbstractProxyModel::qt_metacall
+20 QAbstractProxyModel::~QAbstractProxyModel
+24 QAbstractProxyModel::~QAbstractProxyModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 QAbstractItemModel::hasChildren
+76 QAbstractProxyModel::data
+80 QAbstractProxyModel::setData
+84 QAbstractProxyModel::headerData
+88 QAbstractProxyModel::setHeaderData
+92 QAbstractProxyModel::itemData
+96 QAbstractItemModel::setItemData
+100 QAbstractItemModel::mimeTypes
+104 QAbstractItemModel::mimeData
+108 QAbstractItemModel::dropMimeData
+112 QAbstractItemModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QAbstractProxyModel::flags
+144 QAbstractItemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractProxyModel::submit
+164 QAbstractProxyModel::revert
+168 QAbstractProxyModel::setSourceModel
+172 __cxa_pure_virtual
+176 __cxa_pure_virtual
+180 QAbstractProxyModel::mapSelectionToSource
+184 QAbstractProxyModel::mapSelectionFromSource
+
+Class QAbstractProxyModel
+ size=8 align=4
+ base size=8 base align=4
+QAbstractProxyModel (0xb2fc8ec0) 0
+ vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 8u)
+ QAbstractItemModel (0xb2fc8f00) 0
+ primary-for QAbstractProxyModel (0xb2fc8ec0)
+ QObject (0xb2e12438) 0
+ primary-for QAbstractItemModel (0xb2fc8f00)
+
+Vtable for QColumnView
+QColumnView::_ZTV11QColumnView: 104u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QColumnView)
+8 QColumnView::metaObject
+12 QColumnView::qt_metacast
+16 QColumnView::qt_metacall
+20 QColumnView::~QColumnView
+24 QColumnView::~QColumnView
+28 QAbstractItemView::event
+32 QObject::eventFilter
+36 QAbstractItemView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QColumnView::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QAbstractItemView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QAbstractItemView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractScrollArea::paintEvent
+128 QWidget::moveEvent
+132 QColumnView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QAbstractItemView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QAbstractItemView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QColumnView::scrollContentsBy
+232 QColumnView::setModel
+236 QColumnView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QColumnView::visualRect
+248 QColumnView::scrollTo
+252 QColumnView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QAbstractItemView::reset
+268 QColumnView::setRootIndex
+272 QAbstractItemView::doItemsLayout
+276 QColumnView::selectAll
+280 QAbstractItemView::dataChanged
+284 QColumnView::rowsInserted
+288 QAbstractItemView::rowsAboutToBeRemoved
+292 QAbstractItemView::selectionChanged
+296 QColumnView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QAbstractItemView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QColumnView::moveCursor
+344 QColumnView::horizontalOffset
+348 QColumnView::verticalOffset
+352 QColumnView::isIndexHidden
+356 QColumnView::setSelection
+360 QColumnView::visualRegionForSelection
+364 QAbstractItemView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QAbstractItemView::viewOptions
+384 QColumnView::createColumn
+388 (int (*)(...))-0x000000008
+392 (int (*)(...))(& _ZTI11QColumnView)
+396 QColumnView::_ZThn8_N11QColumnViewD1Ev
+400 QColumnView::_ZThn8_N11QColumnViewD0Ev
+404 QWidget::_ZThn8_NK7QWidget7devTypeEv
+408 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+412 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QColumnView
+ size=20 align=4
+ base size=20 base align=4
+QColumnView (0xb2e211c0) 0
+ vptr=((& QColumnView::_ZTV11QColumnView) + 8u)
+ QAbstractItemView (0xb2e21200) 0
+ primary-for QColumnView (0xb2e211c0)
+ QAbstractScrollArea (0xb2e21240) 0
+ primary-for QAbstractItemView (0xb2e21200)
+ QFrame (0xb2e21280) 0
+ primary-for QAbstractScrollArea (0xb2e21240)
+ QWidget (0xb2e23550) 0
+ primary-for QFrame (0xb2e21280)
+ QObject (0xb2e12654) 0
+ primary-for QWidget (0xb2e23550)
+ QPaintDevice (0xb2e12690) 8
+ vptr=((& QColumnView::_ZTV11QColumnView) + 396u)
+
+Vtable for QDataWidgetMapper
+QDataWidgetMapper::_ZTV17QDataWidgetMapper: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QDataWidgetMapper)
+8 QDataWidgetMapper::metaObject
+12 QDataWidgetMapper::qt_metacast
+16 QDataWidgetMapper::qt_metacall
+20 QDataWidgetMapper::~QDataWidgetMapper
+24 QDataWidgetMapper::~QDataWidgetMapper
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QDataWidgetMapper::setCurrentIndex
+
+Class QDataWidgetMapper
+ size=8 align=4
+ base size=8 base align=4
+QDataWidgetMapper (0xb2e21540) 0
+ vptr=((& QDataWidgetMapper::_ZTV17QDataWidgetMapper) + 8u)
+ QObject (0xb2e128ac) 0
+ primary-for QDataWidgetMapper (0xb2e21540)
+
+Vtable for QFileIconProvider
+QFileIconProvider::_ZTV17QFileIconProvider: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QFileIconProvider)
+8 QFileIconProvider::~QFileIconProvider
+12 QFileIconProvider::~QFileIconProvider
+16 QFileIconProvider::icon
+20 QFileIconProvider::icon
+24 QFileIconProvider::type
+
+Class QFileIconProvider
+ size=8 align=4
+ base size=8 base align=4
+QFileIconProvider (0xb2e12ac8) 0
+ vptr=((& QFileIconProvider::_ZTV17QFileIconProvider) + 8u)
+
+Vtable for QDirModel
+QDirModel::_ZTV9QDirModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QDirModel)
+8 QDirModel::metaObject
+12 QDirModel::qt_metacast
+16 QDirModel::qt_metacall
+20 QDirModel::~QDirModel
+24 QDirModel::~QDirModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QDirModel::index
+60 QDirModel::parent
+64 QDirModel::rowCount
+68 QDirModel::columnCount
+72 QDirModel::hasChildren
+76 QDirModel::data
+80 QDirModel::setData
+84 QDirModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QDirModel::mimeTypes
+104 QDirModel::mimeData
+108 QDirModel::dropMimeData
+112 QDirModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QDirModel::flags
+144 QDirModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QDirModel
+ size=8 align=4
+ base size=8 base align=4
+QDirModel (0xb2e21940) 0
+ vptr=((& QDirModel::_ZTV9QDirModel) + 8u)
+ QAbstractItemModel (0xb2e21980) 0
+ primary-for QDirModel (0xb2e21940)
+ QObject (0xb2e12c30) 0
+ primary-for QAbstractItemModel (0xb2e21980)
+
+Vtable for QHeaderView
+QHeaderView::_ZTV11QHeaderView: 105u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QHeaderView)
+8 QHeaderView::metaObject
+12 QHeaderView::qt_metacast
+16 QHeaderView::qt_metacall
+20 QHeaderView::~QHeaderView
+24 QHeaderView::~QHeaderView
+28 QHeaderView::event
+32 QObject::eventFilter
+36 QAbstractItemView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QHeaderView::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QHeaderView::mousePressEvent
+84 QHeaderView::mouseReleaseEvent
+88 QHeaderView::mouseDoubleClickEvent
+92 QHeaderView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QHeaderView::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QAbstractItemView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QAbstractItemView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QHeaderView::viewportEvent
+228 QHeaderView::scrollContentsBy
+232 QHeaderView::setModel
+236 QAbstractItemView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QHeaderView::visualRect
+248 QHeaderView::scrollTo
+252 QHeaderView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QHeaderView::reset
+268 QAbstractItemView::setRootIndex
+272 QHeaderView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QHeaderView::dataChanged
+284 QHeaderView::rowsInserted
+288 QAbstractItemView::rowsAboutToBeRemoved
+292 QAbstractItemView::selectionChanged
+296 QHeaderView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QHeaderView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QHeaderView::moveCursor
+344 QHeaderView::horizontalOffset
+348 QHeaderView::verticalOffset
+352 QHeaderView::isIndexHidden
+356 QHeaderView::setSelection
+360 QHeaderView::visualRegionForSelection
+364 QAbstractItemView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QAbstractItemView::viewOptions
+384 QHeaderView::paintSection
+388 QHeaderView::sectionSizeFromContents
+392 (int (*)(...))-0x000000008
+396 (int (*)(...))(& _ZTI11QHeaderView)
+400 QHeaderView::_ZThn8_N11QHeaderViewD1Ev
+404 QHeaderView::_ZThn8_N11QHeaderViewD0Ev
+408 QWidget::_ZThn8_NK7QWidget7devTypeEv
+412 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+416 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QHeaderView
+ size=20 align=4
+ base size=20 base align=4
+QHeaderView (0xb2e21c40) 0
+ vptr=((& QHeaderView::_ZTV11QHeaderView) + 8u)
+ QAbstractItemView (0xb2e21c80) 0
+ primary-for QHeaderView (0xb2e21c40)
+ QAbstractScrollArea (0xb2e21cc0) 0
+ primary-for QAbstractItemView (0xb2e21c80)
+ QFrame (0xb2e21d00) 0
+ primary-for QAbstractScrollArea (0xb2e21cc0)
+ QWidget (0xb2e61dc0) 0
+ primary-for QFrame (0xb2e21d00)
+ QObject (0xb2e12e4c) 0
+ primary-for QWidget (0xb2e61dc0)
+ QPaintDevice (0xb2e12e88) 8
+ vptr=((& QHeaderView::_ZTV11QHeaderView) + 400u)
+
+Vtable for QItemDelegate
+QItemDelegate::_ZTV13QItemDelegate: 25u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QItemDelegate)
+8 QItemDelegate::metaObject
+12 QItemDelegate::qt_metacast
+16 QItemDelegate::qt_metacall
+20 QItemDelegate::~QItemDelegate
+24 QItemDelegate::~QItemDelegate
+28 QObject::event
+32 QItemDelegate::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QItemDelegate::paint
+60 QItemDelegate::sizeHint
+64 QItemDelegate::createEditor
+68 QItemDelegate::setEditorData
+72 QItemDelegate::setModelData
+76 QItemDelegate::updateEditorGeometry
+80 QItemDelegate::editorEvent
+84 QItemDelegate::drawDisplay
+88 QItemDelegate::drawDecoration
+92 QItemDelegate::drawFocus
+96 QItemDelegate::drawCheck
+
+Class QItemDelegate
+ size=8 align=4
+ base size=8 base align=4
+QItemDelegate (0xb2e930c0) 0
+ vptr=((& QItemDelegate::_ZTV13QItemDelegate) + 8u)
+ QAbstractItemDelegate (0xb2e93100) 0
+ primary-for QItemDelegate (0xb2e930c0)
+ QObject (0xb2e8e1a4) 0
+ primary-for QAbstractItemDelegate (0xb2e93100)
+
+Vtable for QItemEditorCreatorBase
+QItemEditorCreatorBase::_ZTV22QItemEditorCreatorBase: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QItemEditorCreatorBase)
+8 QItemEditorCreatorBase::~QItemEditorCreatorBase
+12 QItemEditorCreatorBase::~QItemEditorCreatorBase
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QItemEditorCreatorBase
+ size=4 align=4
+ base size=4 base align=4
+QItemEditorCreatorBase (0xb2e8e3c0) 0 nearly-empty
+ vptr=((& QItemEditorCreatorBase::_ZTV22QItemEditorCreatorBase) + 8u)
+
+Vtable for QItemEditorFactory
+QItemEditorFactory::_ZTV18QItemEditorFactory: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QItemEditorFactory)
+8 QItemEditorFactory::~QItemEditorFactory
+12 QItemEditorFactory::~QItemEditorFactory
+16 QItemEditorFactory::createEditor
+20 QItemEditorFactory::valuePropertyName
+
+Class QItemEditorFactory
+ size=8 align=4
+ base size=8 base align=4
+QItemEditorFactory (0xb2e8e654) 0
+ vptr=((& QItemEditorFactory::_ZTV18QItemEditorFactory) + 8u)
+
+Vtable for QListWidgetItem
+QListWidgetItem::_ZTV15QListWidgetItem: 11u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QListWidgetItem)
+8 QListWidgetItem::~QListWidgetItem
+12 QListWidgetItem::~QListWidgetItem
+16 QListWidgetItem::clone
+20 QListWidgetItem::setBackgroundColor
+24 QListWidgetItem::data
+28 QListWidgetItem::setData
+32 QListWidgetItem::operator<
+36 QListWidgetItem::read
+40 QListWidgetItem::write
+
+Class QListWidgetItem
+ size=24 align=4
+ base size=24 base align=4
+QListWidgetItem (0xb2e8e924) 0
+ vptr=((& QListWidgetItem::_ZTV15QListWidgetItem) + 8u)
+
+Vtable for QListWidget
+QListWidget::_ZTV11QListWidget: 107u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QListWidget)
+8 QListWidget::metaObject
+12 QListWidget::qt_metacast
+16 QListWidget::qt_metacall
+20 QListWidget::~QListWidget
+24 QListWidget::~QListWidget
+28 QListWidget::event
+32 QObject::eventFilter
+36 QListView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QListView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QListView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QListView::paintEvent
+128 QWidget::moveEvent
+132 QListView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QListView::dragMoveEvent
+160 QListView::dragLeaveEvent
+164 QListWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QListView::scrollContentsBy
+232 QListWidget::setModel
+236 QAbstractItemView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QListView::visualRect
+248 QListView::scrollTo
+252 QListView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QListView::reset
+268 QListView::setRootIndex
+272 QListView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QListView::dataChanged
+284 QListView::rowsInserted
+288 QListView::rowsAboutToBeRemoved
+292 QListView::selectionChanged
+296 QListView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QListView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QListView::moveCursor
+344 QListView::horizontalOffset
+348 QListView::verticalOffset
+352 QListView::isIndexHidden
+356 QListView::setSelection
+360 QListView::visualRegionForSelection
+364 QListView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QListView::startDrag
+380 QListView::viewOptions
+384 QListWidget::mimeTypes
+388 QListWidget::mimeData
+392 QListWidget::dropMimeData
+396 QListWidget::supportedDropActions
+400 (int (*)(...))-0x000000008
+404 (int (*)(...))(& _ZTI11QListWidget)
+408 QListWidget::_ZThn8_N11QListWidgetD1Ev
+412 QListWidget::_ZThn8_N11QListWidgetD0Ev
+416 QWidget::_ZThn8_NK7QWidget7devTypeEv
+420 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+424 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QListWidget
+ size=20 align=4
+ base size=20 base align=4
+QListWidget (0xb2ee3a40) 0
+ vptr=((& QListWidget::_ZTV11QListWidget) + 8u)
+ QListView (0xb2ee3a80) 0
+ primary-for QListWidget (0xb2ee3a40)
+ QAbstractItemView (0xb2ee3ac0) 0
+ primary-for QListView (0xb2ee3a80)
+ QAbstractScrollArea (0xb2ee3b00) 0
+ primary-for QAbstractItemView (0xb2ee3ac0)
+ QFrame (0xb2ee3b40) 0
+ primary-for QAbstractScrollArea (0xb2ee3b00)
+ QWidget (0xb2cf9640) 0
+ primary-for QFrame (0xb2ee3b40)
+ QObject (0xb2ee6a14) 0
+ primary-for QWidget (0xb2cf9640)
+ QPaintDevice (0xb2ee6a50) 8
+ vptr=((& QListWidget::_ZTV11QListWidget) + 408u)
+
+Vtable for QProxyModel
+QProxyModel::_ZTV11QProxyModel: 43u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QProxyModel)
+8 QProxyModel::metaObject
+12 QProxyModel::qt_metacast
+16 QProxyModel::qt_metacall
+20 QProxyModel::~QProxyModel
+24 QProxyModel::~QProxyModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QProxyModel::index
+60 QProxyModel::parent
+64 QProxyModel::rowCount
+68 QProxyModel::columnCount
+72 QProxyModel::hasChildren
+76 QProxyModel::data
+80 QProxyModel::setData
+84 QProxyModel::headerData
+88 QProxyModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QProxyModel::mimeTypes
+104 QProxyModel::mimeData
+108 QProxyModel::dropMimeData
+112 QProxyModel::supportedDropActions
+116 QProxyModel::insertRows
+120 QProxyModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QProxyModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QProxyModel::flags
+144 QProxyModel::sort
+148 QAbstractItemModel::buddy
+152 QProxyModel::match
+156 QProxyModel::span
+160 QProxyModel::submit
+164 QProxyModel::revert
+168 QProxyModel::setModel
+
+Class QProxyModel
+ size=8 align=4
+ base size=8 base align=4
+QProxyModel (0xb2d16180) 0
+ vptr=((& QProxyModel::_ZTV11QProxyModel) + 8u)
+ QAbstractItemModel (0xb2d161c0) 0
+ primary-for QProxyModel (0xb2d16180)
+ QObject (0xb2d1a078) 0
+ primary-for QAbstractItemModel (0xb2d161c0)
+
+Vtable for QSortFilterProxyModel
+QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 50u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QSortFilterProxyModel)
+8 QSortFilterProxyModel::metaObject
+12 QSortFilterProxyModel::qt_metacast
+16 QSortFilterProxyModel::qt_metacall
+20 QSortFilterProxyModel::~QSortFilterProxyModel
+24 QSortFilterProxyModel::~QSortFilterProxyModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QSortFilterProxyModel::index
+60 QSortFilterProxyModel::parent
+64 QSortFilterProxyModel::rowCount
+68 QSortFilterProxyModel::columnCount
+72 QSortFilterProxyModel::hasChildren
+76 QSortFilterProxyModel::data
+80 QSortFilterProxyModel::setData
+84 QSortFilterProxyModel::headerData
+88 QSortFilterProxyModel::setHeaderData
+92 QAbstractProxyModel::itemData
+96 QAbstractItemModel::setItemData
+100 QSortFilterProxyModel::mimeTypes
+104 QSortFilterProxyModel::mimeData
+108 QSortFilterProxyModel::dropMimeData
+112 QSortFilterProxyModel::supportedDropActions
+116 QSortFilterProxyModel::insertRows
+120 QSortFilterProxyModel::insertColumns
+124 QSortFilterProxyModel::removeRows
+128 QSortFilterProxyModel::removeColumns
+132 QSortFilterProxyModel::fetchMore
+136 QSortFilterProxyModel::canFetchMore
+140 QSortFilterProxyModel::flags
+144 QSortFilterProxyModel::sort
+148 QSortFilterProxyModel::buddy
+152 QSortFilterProxyModel::match
+156 QSortFilterProxyModel::span
+160 QAbstractProxyModel::submit
+164 QAbstractProxyModel::revert
+168 QSortFilterProxyModel::setSourceModel
+172 QSortFilterProxyModel::mapToSource
+176 QSortFilterProxyModel::mapFromSource
+180 QSortFilterProxyModel::mapSelectionToSource
+184 QSortFilterProxyModel::mapSelectionFromSource
+188 QSortFilterProxyModel::filterAcceptsRow
+192 QSortFilterProxyModel::filterAcceptsColumn
+196 QSortFilterProxyModel::lessThan
+
+Class QSortFilterProxyModel
+ size=8 align=4
+ base size=8 base align=4
+QSortFilterProxyModel (0xb2d16480) 0
+ vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 8u)
+ QAbstractProxyModel (0xb2d164c0) 0
+ primary-for QSortFilterProxyModel (0xb2d16480)
+ QAbstractItemModel (0xb2d16500) 0
+ primary-for QAbstractProxyModel (0xb2d164c0)
+ QObject (0xb2d1a294) 0
+ primary-for QAbstractItemModel (0xb2d16500)
+
+Vtable for QStandardItem
+QStandardItem::_ZTV13QStandardItem: 11u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QStandardItem)
+8 QStandardItem::~QStandardItem
+12 QStandardItem::~QStandardItem
+16 QStandardItem::data
+20 QStandardItem::setData
+24 QStandardItem::clone
+28 QStandardItem::type
+32 QStandardItem::read
+36 QStandardItem::write
+40 QStandardItem::operator<
+
+Class QStandardItem
+ size=8 align=4
+ base size=8 base align=4
+QStandardItem (0xb2d1a4b0) 0
+ vptr=((& QStandardItem::_ZTV13QStandardItem) + 8u)
+
+Vtable for QStandardItemModel
+QStandardItemModel::_ZTV18QStandardItemModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QStandardItemModel)
+8 QStandardItemModel::metaObject
+12 QStandardItemModel::qt_metacast
+16 QStandardItemModel::qt_metacall
+20 QStandardItemModel::~QStandardItemModel
+24 QStandardItemModel::~QStandardItemModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QStandardItemModel::index
+60 QStandardItemModel::parent
+64 QStandardItemModel::rowCount
+68 QStandardItemModel::columnCount
+72 QStandardItemModel::hasChildren
+76 QStandardItemModel::data
+80 QStandardItemModel::setData
+84 QStandardItemModel::headerData
+88 QStandardItemModel::setHeaderData
+92 QStandardItemModel::itemData
+96 QStandardItemModel::setItemData
+100 QStandardItemModel::mimeTypes
+104 QStandardItemModel::mimeData
+108 QStandardItemModel::dropMimeData
+112 QStandardItemModel::supportedDropActions
+116 QStandardItemModel::insertRows
+120 QStandardItemModel::insertColumns
+124 QStandardItemModel::removeRows
+128 QStandardItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QStandardItemModel::flags
+144 QStandardItemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QStandardItemModel
+ size=8 align=4
+ base size=8 base align=4
+QStandardItemModel (0xb2d88b80) 0
+ vptr=((& QStandardItemModel::_ZTV18QStandardItemModel) + 8u)
+ QAbstractItemModel (0xb2d88bc0) 0
+ primary-for QStandardItemModel (0xb2d88b80)
+ QObject (0xb2da55dc) 0
+ primary-for QAbstractItemModel (0xb2d88bc0)
+
+Vtable for QStringListModel
+QStringListModel::_ZTV16QStringListModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QStringListModel)
+8 QStringListModel::metaObject
+12 QStringListModel::qt_metacast
+16 QStringListModel::qt_metacall
+20 QStringListModel::~QStringListModel
+24 QStringListModel::~QStringListModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QAbstractListModel::index
+60 QAbstractListModel::parent
+64 QStringListModel::rowCount
+68 QAbstractListModel::columnCount
+72 QAbstractListModel::hasChildren
+76 QStringListModel::data
+80 QStringListModel::setData
+84 QAbstractItemModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QAbstractItemModel::mimeTypes
+104 QAbstractItemModel::mimeData
+108 QAbstractListModel::dropMimeData
+112 QStringListModel::supportedDropActions
+116 QStringListModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QStringListModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QStringListModel::flags
+144 QStringListModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QStringListModel
+ size=12 align=4
+ base size=12 base align=4
+QStringListModel (0xb2d88fc0) 0
+ vptr=((& QStringListModel::_ZTV16QStringListModel) + 8u)
+ QAbstractListModel (0xb2df1000) 0
+ primary-for QStringListModel (0xb2d88fc0)
+ QAbstractItemModel (0xb2df1040) 0
+ primary-for QAbstractListModel (0xb2df1000)
+ QObject (0xb2da58e8) 0
+ primary-for QAbstractItemModel (0xb2df1040)
+
+Vtable for QStyledItemDelegate
+QStyledItemDelegate::_ZTV19QStyledItemDelegate: 23u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QStyledItemDelegate)
+8 QStyledItemDelegate::metaObject
+12 QStyledItemDelegate::qt_metacast
+16 QStyledItemDelegate::qt_metacall
+20 QStyledItemDelegate::~QStyledItemDelegate
+24 QStyledItemDelegate::~QStyledItemDelegate
+28 QObject::event
+32 QStyledItemDelegate::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QStyledItemDelegate::paint
+60 QStyledItemDelegate::sizeHint
+64 QStyledItemDelegate::createEditor
+68 QStyledItemDelegate::setEditorData
+72 QStyledItemDelegate::setModelData
+76 QStyledItemDelegate::updateEditorGeometry
+80 QStyledItemDelegate::editorEvent
+84 QStyledItemDelegate::displayText
+88 QStyledItemDelegate::initStyleOption
+
+Class QStyledItemDelegate
+ size=8 align=4
+ base size=8 base align=4
+QStyledItemDelegate (0xb2df1280) 0
+ vptr=((& QStyledItemDelegate::_ZTV19QStyledItemDelegate) + 8u)
+ QAbstractItemDelegate (0xb2df12c0) 0
+ primary-for QStyledItemDelegate (0xb2df1280)
+ QObject (0xb2da5a14) 0
+ primary-for QAbstractItemDelegate (0xb2df12c0)
+
+Vtable for QTableView
+QTableView::_ZTV10QTableView: 103u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QTableView)
+8 QTableView::metaObject
+12 QTableView::qt_metacast
+16 QTableView::qt_metacall
+20 QTableView::~QTableView
+24 QTableView::~QTableView
+28 QAbstractItemView::event
+32 QObject::eventFilter
+36 QTableView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QAbstractItemView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QAbstractItemView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTableView::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QAbstractItemView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QAbstractItemView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QTableView::scrollContentsBy
+232 QTableView::setModel
+236 QTableView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QTableView::visualRect
+248 QTableView::scrollTo
+252 QTableView::indexAt
+256 QTableView::sizeHintForRow
+260 QTableView::sizeHintForColumn
+264 QAbstractItemView::reset
+268 QTableView::setRootIndex
+272 QAbstractItemView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QAbstractItemView::dataChanged
+284 QAbstractItemView::rowsInserted
+288 QAbstractItemView::rowsAboutToBeRemoved
+292 QTableView::selectionChanged
+296 QTableView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QTableView::updateGeometries
+312 QTableView::verticalScrollbarAction
+316 QTableView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QTableView::moveCursor
+344 QTableView::horizontalOffset
+348 QTableView::verticalOffset
+352 QTableView::isIndexHidden
+356 QTableView::setSelection
+360 QTableView::visualRegionForSelection
+364 QTableView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QTableView::viewOptions
+384 (int (*)(...))-0x000000008
+388 (int (*)(...))(& _ZTI10QTableView)
+392 QTableView::_ZThn8_N10QTableViewD1Ev
+396 QTableView::_ZThn8_N10QTableViewD0Ev
+400 QWidget::_ZThn8_NK7QWidget7devTypeEv
+404 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+408 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTableView
+ size=20 align=4
+ base size=20 base align=4
+QTableView (0xb2df1580) 0
+ vptr=((& QTableView::_ZTV10QTableView) + 8u)
+ QAbstractItemView (0xb2df15c0) 0
+ primary-for QTableView (0xb2df1580)
+ QAbstractScrollArea (0xb2df1600) 0
+ primary-for QAbstractItemView (0xb2df15c0)
+ QFrame (0xb2df1640) 0
+ primary-for QAbstractScrollArea (0xb2df1600)
+ QWidget (0xb2c04b40) 0
+ primary-for QFrame (0xb2df1640)
+ QObject (0xb2da5c30) 0
+ primary-for QWidget (0xb2c04b40)
+ QPaintDevice (0xb2da5c6c) 8
+ vptr=((& QTableView::_ZTV10QTableView) + 392u)
+
+Class QTableWidgetSelectionRange
+ size=16 align=4
+ base size=16 base align=4
+QTableWidgetSelectionRange (0xb2da5e88) 0
+
+Vtable for QTableWidgetItem
+QTableWidgetItem::_ZTV16QTableWidgetItem: 10u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QTableWidgetItem)
+8 QTableWidgetItem::~QTableWidgetItem
+12 QTableWidgetItem::~QTableWidgetItem
+16 QTableWidgetItem::clone
+20 QTableWidgetItem::data
+24 QTableWidgetItem::setData
+28 QTableWidgetItem::operator<
+32 QTableWidgetItem::read
+36 QTableWidgetItem::write
+
+Class QTableWidgetItem
+ size=24 align=4
+ base size=24 base align=4
+QTableWidgetItem (0xb2c2b0b4) 0
+ vptr=((& QTableWidgetItem::_ZTV16QTableWidgetItem) + 8u)
+
+Vtable for QTableWidget
+QTableWidget::_ZTV12QTableWidget: 107u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QTableWidget)
+8 QTableWidget::metaObject
+12 QTableWidget::qt_metacast
+16 QTableWidget::qt_metacall
+20 QTableWidget::~QTableWidget
+24 QTableWidget::~QTableWidget
+28 QTableWidget::event
+32 QObject::eventFilter
+36 QTableView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QAbstractItemView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QAbstractItemView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTableView::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QAbstractItemView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QTableWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QTableView::scrollContentsBy
+232 QTableWidget::setModel
+236 QTableView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QTableView::visualRect
+248 QTableView::scrollTo
+252 QTableView::indexAt
+256 QTableView::sizeHintForRow
+260 QTableView::sizeHintForColumn
+264 QAbstractItemView::reset
+268 QTableView::setRootIndex
+272 QAbstractItemView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QAbstractItemView::dataChanged
+284 QAbstractItemView::rowsInserted
+288 QAbstractItemView::rowsAboutToBeRemoved
+292 QTableView::selectionChanged
+296 QTableView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QTableView::updateGeometries
+312 QTableView::verticalScrollbarAction
+316 QTableView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QTableView::moveCursor
+344 QTableView::horizontalOffset
+348 QTableView::verticalOffset
+352 QTableView::isIndexHidden
+356 QTableView::setSelection
+360 QTableView::visualRegionForSelection
+364 QTableView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QTableView::viewOptions
+384 QTableWidget::mimeTypes
+388 QTableWidget::mimeData
+392 QTableWidget::dropMimeData
+396 QTableWidget::supportedDropActions
+400 (int (*)(...))-0x000000008
+404 (int (*)(...))(& _ZTI12QTableWidget)
+408 QTableWidget::_ZThn8_N12QTableWidgetD1Ev
+412 QTableWidget::_ZThn8_N12QTableWidgetD0Ev
+416 QWidget::_ZThn8_NK7QWidget7devTypeEv
+420 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+424 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTableWidget
+ size=20 align=4
+ base size=20 base align=4
+QTableWidget (0xb2c55a80) 0
+ vptr=((& QTableWidget::_ZTV12QTableWidget) + 8u)
+ QTableView (0xb2c55ac0) 0
+ primary-for QTableWidget (0xb2c55a80)
+ QAbstractItemView (0xb2c55b00) 0
+ primary-for QTableView (0xb2c55ac0)
+ QAbstractScrollArea (0xb2c55b40) 0
+ primary-for QAbstractItemView (0xb2c55b00)
+ QFrame (0xb2c55b80) 0
+ primary-for QAbstractScrollArea (0xb2c55b40)
+ QWidget (0xb2c69230) 0
+ primary-for QFrame (0xb2c55b80)
+ QObject (0xb2c661a4) 0
+ primary-for QWidget (0xb2c69230)
+ QPaintDevice (0xb2c661e0) 8
+ vptr=((& QTableWidget::_ZTV12QTableWidget) + 408u)
+
+Vtable for QTreeView
+QTreeView::_ZTV9QTreeView: 105u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QTreeView)
+8 QTreeView::metaObject
+12 QTreeView::qt_metacast
+16 QTreeView::qt_metacall
+20 QTreeView::~QTreeView
+24 QTreeView::~QTreeView
+28 QAbstractItemView::event
+32 QObject::eventFilter
+36 QTreeView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QTreeView::mousePressEvent
+84 QTreeView::mouseReleaseEvent
+88 QTreeView::mouseDoubleClickEvent
+92 QTreeView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QTreeView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTreeView::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QTreeView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QAbstractItemView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QTreeView::viewportEvent
+228 QTreeView::scrollContentsBy
+232 QTreeView::setModel
+236 QTreeView::setSelectionModel
+240 QTreeView::keyboardSearch
+244 QTreeView::visualRect
+248 QTreeView::scrollTo
+252 QTreeView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QTreeView::sizeHintForColumn
+264 QTreeView::reset
+268 QTreeView::setRootIndex
+272 QTreeView::doItemsLayout
+276 QTreeView::selectAll
+280 QTreeView::dataChanged
+284 QTreeView::rowsInserted
+288 QTreeView::rowsAboutToBeRemoved
+292 QTreeView::selectionChanged
+296 QTreeView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QTreeView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QTreeView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QTreeView::moveCursor
+344 QTreeView::horizontalOffset
+348 QTreeView::verticalOffset
+352 QTreeView::isIndexHidden
+356 QTreeView::setSelection
+360 QTreeView::visualRegionForSelection
+364 QTreeView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QAbstractItemView::viewOptions
+384 QTreeView::drawRow
+388 QTreeView::drawBranches
+392 (int (*)(...))-0x000000008
+396 (int (*)(...))(& _ZTI9QTreeView)
+400 QTreeView::_ZThn8_N9QTreeViewD1Ev
+404 QTreeView::_ZThn8_N9QTreeViewD0Ev
+408 QWidget::_ZThn8_NK7QWidget7devTypeEv
+412 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+416 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTreeView
+ size=20 align=4
+ base size=20 base align=4
+QTreeView (0xb2c8b080) 0
+ vptr=((& QTreeView::_ZTV9QTreeView) + 8u)
+ QAbstractItemView (0xb2c8b0c0) 0
+ primary-for QTreeView (0xb2c8b080)
+ QAbstractScrollArea (0xb2c8b100) 0
+ primary-for QAbstractItemView (0xb2c8b0c0)
+ QFrame (0xb2c8b140) 0
+ primary-for QAbstractScrollArea (0xb2c8b100)
+ QWidget (0xb2c87c80) 0
+ primary-for QFrame (0xb2c8b140)
+ QObject (0xb2c66870) 0
+ primary-for QWidget (0xb2c87c80)
+ QPaintDevice (0xb2c668ac) 8
+ vptr=((& QTreeView::_ZTV9QTreeView) + 400u)
+
+Class QTreeWidgetItemIterator
+ size=12 align=4
+ base size=12 base align=4
+QTreeWidgetItemIterator (0xb2c66ac8) 0
+
+Vtable for QTreeWidgetItem
+QTreeWidgetItem::_ZTV15QTreeWidgetItem: 10u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QTreeWidgetItem)
+8 QTreeWidgetItem::~QTreeWidgetItem
+12 QTreeWidgetItem::~QTreeWidgetItem
+16 QTreeWidgetItem::clone
+20 QTreeWidgetItem::data
+24 QTreeWidgetItem::setData
+28 QTreeWidgetItem::operator<
+32 QTreeWidgetItem::read
+36 QTreeWidgetItem::write
+
+Class QTreeWidgetItem
+ size=32 align=4
+ base size=32 base align=4
+QTreeWidgetItem (0xb2cc51a4) 0
+ vptr=((& QTreeWidgetItem::_ZTV15QTreeWidgetItem) + 8u)
+
+Vtable for QTreeWidget
+QTreeWidget::_ZTV11QTreeWidget: 109u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTreeWidget)
+8 QTreeWidget::metaObject
+12 QTreeWidget::qt_metacast
+16 QTreeWidget::qt_metacall
+20 QTreeWidget::~QTreeWidget
+24 QTreeWidget::~QTreeWidget
+28 QTreeWidget::event
+32 QObject::eventFilter
+36 QTreeView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QTreeView::mousePressEvent
+84 QTreeView::mouseReleaseEvent
+88 QTreeView::mouseDoubleClickEvent
+92 QTreeView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QTreeView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTreeView::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QTreeView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QTreeWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QTreeView::viewportEvent
+228 QTreeView::scrollContentsBy
+232 QTreeWidget::setModel
+236 QTreeWidget::setSelectionModel
+240 QTreeView::keyboardSearch
+244 QTreeView::visualRect
+248 QTreeView::scrollTo
+252 QTreeView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QTreeView::sizeHintForColumn
+264 QTreeView::reset
+268 QTreeView::setRootIndex
+272 QTreeView::doItemsLayout
+276 QTreeView::selectAll
+280 QTreeView::dataChanged
+284 QTreeView::rowsInserted
+288 QTreeView::rowsAboutToBeRemoved
+292 QTreeView::selectionChanged
+296 QTreeView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QTreeView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QTreeView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QTreeView::moveCursor
+344 QTreeView::horizontalOffset
+348 QTreeView::verticalOffset
+352 QTreeView::isIndexHidden
+356 QTreeView::setSelection
+360 QTreeView::visualRegionForSelection
+364 QTreeView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QAbstractItemView::viewOptions
+384 QTreeView::drawRow
+388 QTreeView::drawBranches
+392 QTreeWidget::mimeTypes
+396 QTreeWidget::mimeData
+400 QTreeWidget::dropMimeData
+404 QTreeWidget::supportedDropActions
+408 (int (*)(...))-0x000000008
+412 (int (*)(...))(& _ZTI11QTreeWidget)
+416 QTreeWidget::_ZThn8_N11QTreeWidgetD1Ev
+420 QTreeWidget::_ZThn8_N11QTreeWidgetD0Ev
+424 QWidget::_ZThn8_NK7QWidget7devTypeEv
+428 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+432 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTreeWidget
+ size=20 align=4
+ base size=20 base align=4
+QTreeWidget (0xb2b2fb00) 0
+ vptr=((& QTreeWidget::_ZTV11QTreeWidget) + 8u)
+ QTreeView (0xb2b2fb40) 0
+ primary-for QTreeWidget (0xb2b2fb00)
+ QAbstractItemView (0xb2b2fb80) 0
+ primary-for QTreeView (0xb2b2fb40)
+ QAbstractScrollArea (0xb2b2fbc0) 0
+ primary-for QAbstractItemView (0xb2b2fb80)
+ QFrame (0xb2b2fc00) 0
+ primary-for QAbstractScrollArea (0xb2b2fbc0)
+ QWidget (0xb2b433c0) 0
+ primary-for QFrame (0xb2b2fc00)
+ QObject (0xb2b3c5dc) 0
+ primary-for QWidget (0xb2b433c0)
+ QPaintDevice (0xb2b3c618) 8
+ vptr=((& QTreeWidget::_ZTV11QTreeWidget) + 416u)
+
+Class QAccessible
+ size=1 align=1
+ base size=0 base align=1
+QAccessible (0xb2b7d03c) 0 empty
+
+Vtable for QAccessibleInterface
+QAccessibleInterface::_ZTV20QAccessibleInterface: 19u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QAccessibleInterface)
+8 QAccessibleInterface::~QAccessibleInterface
+12 QAccessibleInterface::~QAccessibleInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 __cxa_pure_virtual
+52 __cxa_pure_virtual
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+
+Class QAccessibleInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleInterface (0xb2b63880) 0 nearly-empty
+ vptr=((& QAccessibleInterface::_ZTV20QAccessibleInterface) + 8u)
+ QAccessible (0xb2b7d30c) 0 empty
+
+Vtable for QAccessibleInterfaceEx
+QAccessibleInterfaceEx::_ZTV22QAccessibleInterfaceEx: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QAccessibleInterfaceEx)
+8 QAccessibleInterfaceEx::~QAccessibleInterfaceEx
+12 QAccessibleInterfaceEx::~QAccessibleInterfaceEx
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 __cxa_pure_virtual
+52 __cxa_pure_virtual
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 QAccessibleInterfaceEx::virtual_hook
+84 QAccessibleInterfaceEx::interface_cast
+
+Class QAccessibleInterfaceEx
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleInterfaceEx (0xb2b63fc0) 0 nearly-empty
+ vptr=((& QAccessibleInterfaceEx::_ZTV22QAccessibleInterfaceEx) + 8u)
+ QAccessibleInterface (0xb2a0d000) 0 nearly-empty
+ primary-for QAccessibleInterfaceEx (0xb2b63fc0)
+ QAccessible (0xb2b7d8ac) 0 empty
+
+Vtable for QAccessibleEvent
+QAccessibleEvent::_ZTV16QAccessibleEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QAccessibleEvent)
+8 QAccessibleEvent::~QAccessibleEvent
+12 QAccessibleEvent::~QAccessibleEvent
+
+Class QAccessibleEvent
+ size=20 align=4
+ base size=20 base align=4
+QAccessibleEvent (0xb2a0d0c0) 0
+ vptr=((& QAccessibleEvent::_ZTV16QAccessibleEvent) + 8u)
+ QEvent (0xb2b7d924) 0
+ primary-for QAccessibleEvent (0xb2a0d0c0)
+
+Vtable for QAccessible2Interface
+QAccessible2Interface::_ZTV21QAccessible2Interface: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QAccessible2Interface)
+8 QAccessible2Interface::~QAccessible2Interface
+12 QAccessible2Interface::~QAccessible2Interface
+
+Class QAccessible2Interface
+ size=4 align=4
+ base size=4 base align=4
+QAccessible2Interface (0xb2a1b168) 0 nearly-empty
+ vptr=((& QAccessible2Interface::_ZTV21QAccessible2Interface) + 8u)
+
+Vtable for QAccessibleTextInterface
+QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
+8 QAccessibleTextInterface::~QAccessibleTextInterface
+12 QAccessibleTextInterface::~QAccessibleTextInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 __cxa_pure_virtual
+52 __cxa_pure_virtual
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+
+Class QAccessibleTextInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleTextInterface (0xb2a0d940) 0 nearly-empty
+ vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 8u)
+ QAccessible2Interface (0xb2a1b4ec) 0 nearly-empty
+ primary-for QAccessibleTextInterface (0xb2a0d940)
+
+Vtable for QAccessibleEditableTextInterface
+QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 11u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
+8 QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
+12 QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QAccessibleEditableTextInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleEditableTextInterface (0xb2a0dbc0) 0 nearly-empty
+ vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 8u)
+ QAccessible2Interface (0xb2a1b834) 0 nearly-empty
+ primary-for QAccessibleEditableTextInterface (0xb2a0dbc0)
+
+Vtable for QAccessibleSimpleEditableTextInterface
+QAccessibleSimpleEditableTextInterface::_ZTV38QAccessibleSimpleEditableTextInterface: 11u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI38QAccessibleSimpleEditableTextInterface)
+8 QAccessibleSimpleEditableTextInterface::~QAccessibleSimpleEditableTextInterface
+12 QAccessibleSimpleEditableTextInterface::~QAccessibleSimpleEditableTextInterface
+16 QAccessibleSimpleEditableTextInterface::copyText
+20 QAccessibleSimpleEditableTextInterface::deleteText
+24 QAccessibleSimpleEditableTextInterface::insertText
+28 QAccessibleSimpleEditableTextInterface::cutText
+32 QAccessibleSimpleEditableTextInterface::pasteText
+36 QAccessibleSimpleEditableTextInterface::replaceText
+40 QAccessibleSimpleEditableTextInterface::setAttributes
+
+Class QAccessibleSimpleEditableTextInterface
+ size=8 align=4
+ base size=8 base align=4
+QAccessibleSimpleEditableTextInterface (0xb2a0de40) 0
+ vptr=((& QAccessibleSimpleEditableTextInterface::_ZTV38QAccessibleSimpleEditableTextInterface) + 8u)
+ QAccessibleEditableTextInterface (0xb2a0de80) 0 nearly-empty
+ primary-for QAccessibleSimpleEditableTextInterface (0xb2a0de40)
+ QAccessible2Interface (0xb2a1bb7c) 0 nearly-empty
+ primary-for QAccessibleEditableTextInterface (0xb2a0de80)
+
+Vtable for QAccessibleValueInterface
+QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
+8 QAccessibleValueInterface::~QAccessibleValueInterface
+12 QAccessibleValueInterface::~QAccessibleValueInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+
+Class QAccessibleValueInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleValueInterface (0xb2a0df40) 0 nearly-empty
+ vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 8u)
+ QAccessible2Interface (0xb2a1bbb8) 0 nearly-empty
+ primary-for QAccessibleValueInterface (0xb2a0df40)
+
+Vtable for QAccessibleTableInterface
+QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 30u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
+8 QAccessibleTableInterface::~QAccessibleTableInterface
+12 QAccessibleTableInterface::~QAccessibleTableInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 __cxa_pure_virtual
+52 __cxa_pure_virtual
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+112 __cxa_pure_virtual
+116 __cxa_pure_virtual
+
+Class QAccessibleTableInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleTableInterface (0xb2a361c0) 0 nearly-empty
+ vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 8u)
+ QAccessible2Interface (0xb2a1bf00) 0 nearly-empty
+ primary-for QAccessibleTableInterface (0xb2a361c0)
+
+Vtable for QAccessibleActionInterface
+QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 10u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
+8 QAccessibleActionInterface::~QAccessibleActionInterface
+12 QAccessibleActionInterface::~QAccessibleActionInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+
+Class QAccessibleActionInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleActionInterface (0xb2a36280) 0 nearly-empty
+ vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 8u)
+ QAccessible2Interface (0xb2a1bf78) 0 nearly-empty
+ primary-for QAccessibleActionInterface (0xb2a36280)
+
+Vtable for QAccessibleImageInterface
+QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
+8 QAccessibleImageInterface::~QAccessibleImageInterface
+12 QAccessibleImageInterface::~QAccessibleImageInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+
+Class QAccessibleImageInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleImageInterface (0xb2a36340) 0 nearly-empty
+ vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 8u)
+ QAccessible2Interface (0xb2a42000) 0 nearly-empty
+ primary-for QAccessibleImageInterface (0xb2a36340)
+
+Vtable for QAccessibleBridge
+QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAccessibleBridge)
+8 QAccessibleBridge::~QAccessibleBridge
+12 QAccessibleBridge::~QAccessibleBridge
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QAccessibleBridge
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleBridge (0xb2a42078) 0 nearly-empty
+ vptr=((& QAccessibleBridge::_ZTV17QAccessibleBridge) + 8u)
+
+Vtable for QAccessibleBridgeFactoryInterface
+QAccessibleBridgeFactoryInterface::_ZTV33QAccessibleBridgeFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI33QAccessibleBridgeFactoryInterface)
+8 QAccessibleBridgeFactoryInterface::~QAccessibleBridgeFactoryInterface
+12 QAccessibleBridgeFactoryInterface::~QAccessibleBridgeFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QAccessibleBridgeFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleBridgeFactoryInterface (0xb2a36640) 0 nearly-empty
+ vptr=((& QAccessibleBridgeFactoryInterface::_ZTV33QAccessibleBridgeFactoryInterface) + 8u)
+ QFactoryInterface (0xb2a42294) 0 nearly-empty
+ primary-for QAccessibleBridgeFactoryInterface (0xb2a36640)
+
+Vtable for QAccessibleBridgePlugin
+QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QAccessibleBridgePlugin)
+8 QAccessibleBridgePlugin::metaObject
+12 QAccessibleBridgePlugin::qt_metacast
+16 QAccessibleBridgePlugin::qt_metacall
+20 QAccessibleBridgePlugin::~QAccessibleBridgePlugin
+24 QAccessibleBridgePlugin::~QAccessibleBridgePlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 (int (*)(...))-0x000000008
+68 (int (*)(...))(& _ZTI23QAccessibleBridgePlugin)
+72 QAccessibleBridgePlugin::_ZThn8_N23QAccessibleBridgePluginD1Ev
+76 QAccessibleBridgePlugin::_ZThn8_N23QAccessibleBridgePluginD0Ev
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+
+Class QAccessibleBridgePlugin
+ size=12 align=4
+ base size=12 base align=4
+QAccessibleBridgePlugin (0xb2a49eb0) 0
+ vptr=((& QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin) + 8u)
+ QObject (0xb2a425a0) 0
+ primary-for QAccessibleBridgePlugin (0xb2a49eb0)
+ QAccessibleBridgeFactoryInterface (0xb2a36900) 8 nearly-empty
+ vptr=((& QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin) + 72u)
+ QFactoryInterface (0xb2a425dc) 8 nearly-empty
+ primary-for QAccessibleBridgeFactoryInterface (0xb2a36900)
+
+Vtable for QAccessibleObject
+QAccessibleObject::_ZTV17QAccessibleObject: 19u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAccessibleObject)
+8 QAccessibleObject::~QAccessibleObject
+12 QAccessibleObject::~QAccessibleObject
+16 QAccessibleObject::isValid
+20 QAccessibleObject::object
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 QAccessibleObject::setText
+52 QAccessibleObject::rect
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 QAccessibleObject::userActionCount
+68 QAccessibleObject::actionText
+72 QAccessibleObject::doAction
+
+Class QAccessibleObject
+ size=8 align=4
+ base size=8 base align=4
+QAccessibleObject (0xb2a36b40) 0
+ vptr=((& QAccessibleObject::_ZTV17QAccessibleObject) + 8u)
+ QAccessibleInterface (0xb2a36b80) 0 nearly-empty
+ primary-for QAccessibleObject (0xb2a36b40)
+ QAccessible (0xb2a42708) 0 empty
+
+Vtable for QAccessibleObjectEx
+QAccessibleObjectEx::_ZTV19QAccessibleObjectEx: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAccessibleObjectEx)
+8 QAccessibleObjectEx::~QAccessibleObjectEx
+12 QAccessibleObjectEx::~QAccessibleObjectEx
+16 QAccessibleObjectEx::isValid
+20 QAccessibleObjectEx::object
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 QAccessibleObjectEx::setText
+52 QAccessibleObjectEx::rect
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 QAccessibleObjectEx::userActionCount
+68 QAccessibleObjectEx::actionText
+72 QAccessibleObjectEx::doAction
+76 __cxa_pure_virtual
+80 QAccessibleInterfaceEx::virtual_hook
+84 QAccessibleInterfaceEx::interface_cast
+
+Class QAccessibleObjectEx
+ size=8 align=4
+ base size=8 base align=4
+QAccessibleObjectEx (0xb2a36c00) 0
+ vptr=((& QAccessibleObjectEx::_ZTV19QAccessibleObjectEx) + 8u)
+ QAccessibleInterfaceEx (0xb2a36c40) 0 nearly-empty
+ primary-for QAccessibleObjectEx (0xb2a36c00)
+ QAccessibleInterface (0xb2a36c80) 0 nearly-empty
+ primary-for QAccessibleInterfaceEx (0xb2a36c40)
+ QAccessible (0xb2a42744) 0 empty
+
+Vtable for QAccessibleApplication
+QAccessibleApplication::_ZTV22QAccessibleApplication: 19u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QAccessibleApplication)
+8 QAccessibleApplication::~QAccessibleApplication
+12 QAccessibleApplication::~QAccessibleApplication
+16 QAccessibleObject::isValid
+20 QAccessibleObject::object
+24 QAccessibleApplication::childCount
+28 QAccessibleApplication::indexOfChild
+32 QAccessibleApplication::relationTo
+36 QAccessibleApplication::childAt
+40 QAccessibleApplication::navigate
+44 QAccessibleApplication::text
+48 QAccessibleObject::setText
+52 QAccessibleObject::rect
+56 QAccessibleApplication::role
+60 QAccessibleApplication::state
+64 QAccessibleApplication::userActionCount
+68 QAccessibleApplication::actionText
+72 QAccessibleApplication::doAction
+
+Class QAccessibleApplication
+ size=8 align=4
+ base size=8 base align=4
+QAccessibleApplication (0xb2a36d00) 0
+ vptr=((& QAccessibleApplication::_ZTV22QAccessibleApplication) + 8u)
+ QAccessibleObject (0xb2a36d40) 0
+ primary-for QAccessibleApplication (0xb2a36d00)
+ QAccessibleInterface (0xb2a36d80) 0 nearly-empty
+ primary-for QAccessibleObject (0xb2a36d40)
+ QAccessible (0xb2a42780) 0 empty
+
+Vtable for QAccessibleFactoryInterface
+QAccessibleFactoryInterface::_ZTV27QAccessibleFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QAccessibleFactoryInterface)
+8 QAccessibleFactoryInterface::~QAccessibleFactoryInterface
+12 QAccessibleFactoryInterface::~QAccessibleFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QAccessibleFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleFactoryInterface (0xb2a62b40) 0 nearly-empty
+ vptr=((& QAccessibleFactoryInterface::_ZTV27QAccessibleFactoryInterface) + 8u)
+ QAccessible (0xb2a427bc) 0 empty
+ QFactoryInterface (0xb2a427f8) 0 nearly-empty
+ primary-for QAccessibleFactoryInterface (0xb2a62b40)
+
+Vtable for QAccessiblePlugin
+QAccessiblePlugin::_ZTV17QAccessiblePlugin: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAccessiblePlugin)
+8 QAccessiblePlugin::metaObject
+12 QAccessiblePlugin::qt_metacast
+16 QAccessiblePlugin::qt_metacall
+20 QAccessiblePlugin::~QAccessiblePlugin
+24 QAccessiblePlugin::~QAccessiblePlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 (int (*)(...))-0x000000008
+68 (int (*)(...))(& _ZTI17QAccessiblePlugin)
+72 QAccessiblePlugin::_ZThn8_N17QAccessiblePluginD1Ev
+76 QAccessiblePlugin::_ZThn8_N17QAccessiblePluginD0Ev
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+
+Class QAccessiblePlugin
+ size=12 align=4
+ base size=12 base align=4
+QAccessiblePlugin (0xb2a6a550) 0
+ vptr=((& QAccessiblePlugin::_ZTV17QAccessiblePlugin) + 8u)
+ QObject (0xb2a42b04) 0
+ primary-for QAccessiblePlugin (0xb2a6a550)
+ QAccessibleFactoryInterface (0xb2a6a5a0) 8 nearly-empty
+ vptr=((& QAccessiblePlugin::_ZTV17QAccessiblePlugin) + 72u)
+ QAccessible (0xb2a42b40) 8 empty
+ QFactoryInterface (0xb2a42b7c) 8 nearly-empty
+ primary-for QAccessibleFactoryInterface (0xb2a6a5a0)
+
+Vtable for QAccessibleWidget
+QAccessibleWidget::_ZTV17QAccessibleWidget: 19u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAccessibleWidget)
+8 QAccessibleWidget::~QAccessibleWidget
+12 QAccessibleWidget::~QAccessibleWidget
+16 QAccessibleObject::isValid
+20 QAccessibleObject::object
+24 QAccessibleWidget::childCount
+28 QAccessibleWidget::indexOfChild
+32 QAccessibleWidget::relationTo
+36 QAccessibleWidget::childAt
+40 QAccessibleWidget::navigate
+44 QAccessibleWidget::text
+48 QAccessibleObject::setText
+52 QAccessibleWidget::rect
+56 QAccessibleWidget::role
+60 QAccessibleWidget::state
+64 QAccessibleWidget::userActionCount
+68 QAccessibleWidget::actionText
+72 QAccessibleWidget::doAction
+
+Class QAccessibleWidget
+ size=12 align=4
+ base size=12 base align=4
+QAccessibleWidget (0xb2a6d280) 0
+ vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 8u)
+ QAccessibleObject (0xb2a6d2c0) 0
+ primary-for QAccessibleWidget (0xb2a6d280)
+ QAccessibleInterface (0xb2a6d300) 0 nearly-empty
+ primary-for QAccessibleObject (0xb2a6d2c0)
+ QAccessible (0xb2a42ca8) 0 empty
+
+Vtable for QAccessibleWidgetEx
+QAccessibleWidgetEx::_ZTV19QAccessibleWidgetEx: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAccessibleWidgetEx)
+8 QAccessibleWidgetEx::~QAccessibleWidgetEx
+12 QAccessibleWidgetEx::~QAccessibleWidgetEx
+16 QAccessibleObjectEx::isValid
+20 QAccessibleObjectEx::object
+24 QAccessibleWidgetEx::childCount
+28 QAccessibleWidgetEx::indexOfChild
+32 QAccessibleWidgetEx::relationTo
+36 QAccessibleWidgetEx::childAt
+40 QAccessibleWidgetEx::navigate
+44 QAccessibleWidgetEx::text
+48 QAccessibleObjectEx::setText
+52 QAccessibleWidgetEx::rect
+56 QAccessibleWidgetEx::role
+60 QAccessibleWidgetEx::state
+64 QAccessibleObjectEx::userActionCount
+68 QAccessibleWidgetEx::actionText
+72 QAccessibleWidgetEx::doAction
+76 QAccessibleWidgetEx::invokeMethodEx
+80 QAccessibleInterfaceEx::virtual_hook
+84 QAccessibleInterfaceEx::interface_cast
+
+Class QAccessibleWidgetEx
+ size=12 align=4
+ base size=12 base align=4
+QAccessibleWidgetEx (0xb2a6d380) 0
+ vptr=((& QAccessibleWidgetEx::_ZTV19QAccessibleWidgetEx) + 8u)
+ QAccessibleObjectEx (0xb2a6d3c0) 0
+ primary-for QAccessibleWidgetEx (0xb2a6d380)
+ QAccessibleInterfaceEx (0xb2a6d400) 0 nearly-empty
+ primary-for QAccessibleObjectEx (0xb2a6d3c0)
+ QAccessibleInterface (0xb2a6d440) 0 nearly-empty
+ primary-for QAccessibleInterfaceEx (0xb2a6d400)
+ QAccessible (0xb2a42ce4) 0 empty
+
+Vtable for QAction
+QAction::_ZTV7QAction: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QAction)
+8 QAction::metaObject
+12 QAction::qt_metacast
+16 QAction::qt_metacall
+20 QAction::~QAction
+24 QAction::~QAction
+28 QAction::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QAction
+ size=8 align=4
+ base size=8 base align=4
+QAction (0xb2a6d4c0) 0
+ vptr=((& QAction::_ZTV7QAction) + 8u)
+ QObject (0xb2a42d20) 0
+ primary-for QAction (0xb2a6d4c0)
+
+Vtable for QActionGroup
+QActionGroup::_ZTV12QActionGroup: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QActionGroup)
+8 QActionGroup::metaObject
+12 QActionGroup::qt_metacast
+16 QActionGroup::qt_metacall
+20 QActionGroup::~QActionGroup
+24 QActionGroup::~QActionGroup
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QActionGroup
+ size=8 align=4
+ base size=8 base align=4
+QActionGroup (0xb2a6db40) 0
+ vptr=((& QActionGroup::_ZTV12QActionGroup) + 8u)
+ QObject (0xb2aa41e0) 0
+ primary-for QActionGroup (0xb2a6db40)
+
+Vtable for QApplication
+QApplication::_ZTV12QApplication: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QApplication)
+8 QApplication::metaObject
+12 QApplication::qt_metacast
+16 QApplication::qt_metacall
+20 QApplication::~QApplication
+24 QApplication::~QApplication
+28 QApplication::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QApplication::notify
+60 QApplication::compressEvent
+64 QApplication::x11EventFilter
+68 QApplication::x11ClientMessage
+72 QApplication::commitData
+76 QApplication::saveState
+
+Class QApplication
+ size=8 align=4
+ base size=8 base align=4
+QApplication (0xb2a6dfc0) 0
+ vptr=((& QApplication::_ZTV12QApplication) + 8u)
+ QCoreApplication (0xb2ad0000) 0
+ primary-for QApplication (0xb2a6dfc0)
+ QObject (0xb2aa4618) 0
+ primary-for QCoreApplication (0xb2ad0000)
+
+Vtable for QLayoutItem
+QLayoutItem::_ZTV11QLayoutItem: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QLayoutItem)
+8 QLayoutItem::~QLayoutItem
+12 QLayoutItem::~QLayoutItem
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 QLayoutItem::hasHeightForWidth
+48 QLayoutItem::heightForWidth
+52 QLayoutItem::minimumHeightForWidth
+56 QLayoutItem::invalidate
+60 QLayoutItem::widget
+64 QLayoutItem::layout
+68 QLayoutItem::spacerItem
+
+Class QLayoutItem
+ size=8 align=4
+ base size=8 base align=4
+QLayoutItem (0xb2aa4ca8) 0
+ vptr=((& QLayoutItem::_ZTV11QLayoutItem) + 8u)
+
+Vtable for QSpacerItem
+QSpacerItem::_ZTV11QSpacerItem: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QSpacerItem)
+8 QSpacerItem::~QSpacerItem
+12 QSpacerItem::~QSpacerItem
+16 QSpacerItem::sizeHint
+20 QSpacerItem::minimumSize
+24 QSpacerItem::maximumSize
+28 QSpacerItem::expandingDirections
+32 QSpacerItem::setGeometry
+36 QSpacerItem::geometry
+40 QSpacerItem::isEmpty
+44 QLayoutItem::hasHeightForWidth
+48 QLayoutItem::heightForWidth
+52 QLayoutItem::minimumHeightForWidth
+56 QLayoutItem::invalidate
+60 QLayoutItem::widget
+64 QLayoutItem::layout
+68 QSpacerItem::spacerItem
+
+Class QSpacerItem
+ size=36 align=4
+ base size=36 base align=4
+QSpacerItem (0xb2ad0bc0) 0
+ vptr=((& QSpacerItem::_ZTV11QSpacerItem) + 8u)
+ QLayoutItem (0xb2aa4ec4) 0
+ primary-for QSpacerItem (0xb2ad0bc0)
+
+Vtable for QWidgetItem
+QWidgetItem::_ZTV11QWidgetItem: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QWidgetItem)
+8 QWidgetItem::~QWidgetItem
+12 QWidgetItem::~QWidgetItem
+16 QWidgetItem::sizeHint
+20 QWidgetItem::minimumSize
+24 QWidgetItem::maximumSize
+28 QWidgetItem::expandingDirections
+32 QWidgetItem::setGeometry
+36 QWidgetItem::geometry
+40 QWidgetItem::isEmpty
+44 QWidgetItem::hasHeightForWidth
+48 QWidgetItem::heightForWidth
+52 QLayoutItem::minimumHeightForWidth
+56 QLayoutItem::invalidate
+60 QWidgetItem::widget
+64 QLayoutItem::layout
+68 QLayoutItem::spacerItem
+
+Class QWidgetItem
+ size=12 align=4
+ base size=12 base align=4
+QWidgetItem (0xb2ad0d00) 0
+ vptr=((& QWidgetItem::_ZTV11QWidgetItem) + 8u)
+ QLayoutItem (0xb29063fc) 0
+ primary-for QWidgetItem (0xb2ad0d00)
+
+Vtable for QWidgetItemV2
+QWidgetItemV2::_ZTV13QWidgetItemV2: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QWidgetItemV2)
+8 QWidgetItemV2::~QWidgetItemV2
+12 QWidgetItemV2::~QWidgetItemV2
+16 QWidgetItemV2::sizeHint
+20 QWidgetItemV2::minimumSize
+24 QWidgetItemV2::maximumSize
+28 QWidgetItem::expandingDirections
+32 QWidgetItem::setGeometry
+36 QWidgetItem::geometry
+40 QWidgetItem::isEmpty
+44 QWidgetItem::hasHeightForWidth
+48 QWidgetItemV2::heightForWidth
+52 QLayoutItem::minimumHeightForWidth
+56 QLayoutItem::invalidate
+60 QWidgetItem::widget
+64 QLayoutItem::layout
+68 QLayoutItem::spacerItem
+
+Class QWidgetItemV2
+ size=68 align=4
+ base size=68 base align=4
+QWidgetItemV2 (0xb2ad0e40) 0
+ vptr=((& QWidgetItemV2::_ZTV13QWidgetItemV2) + 8u)
+ QWidgetItem (0xb2ad0e80) 0
+ primary-for QWidgetItemV2 (0xb2ad0e40)
+ QLayoutItem (0xb2906708) 0
+ primary-for QWidgetItem (0xb2ad0e80)
+
+Class QLayoutIterator
+ size=8 align=4
+ base size=8 base align=4
+QLayoutIterator (0xb29067bc) 0
+
+Vtable for QLayout
+QLayout::_ZTV7QLayout: 45u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QLayout)
+8 QLayout::metaObject
+12 QLayout::qt_metacast
+16 QLayout::qt_metacall
+20 QLayout::~QLayout
+24 QLayout::~QLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QLayout::invalidate
+60 QLayout::geometry
+64 __cxa_pure_virtual
+68 QLayout::expandingDirections
+72 QLayout::minimumSize
+76 QLayout::maximumSize
+80 QLayout::setGeometry
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 QLayout::indexOf
+96 __cxa_pure_virtual
+100 QLayout::isEmpty
+104 QLayout::layout
+108 (int (*)(...))-0x000000008
+112 (int (*)(...))(& _ZTI7QLayout)
+116 QLayout::_ZThn8_N7QLayoutD1Ev
+120 QLayout::_ZThn8_N7QLayoutD0Ev
+124 __cxa_pure_virtual
+128 QLayout::_ZThn8_NK7QLayout11minimumSizeEv
+132 QLayout::_ZThn8_NK7QLayout11maximumSizeEv
+136 QLayout::_ZThn8_NK7QLayout19expandingDirectionsEv
+140 QLayout::_ZThn8_N7QLayout11setGeometryERK5QRect
+144 QLayout::_ZThn8_NK7QLayout8geometryEv
+148 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+152 QLayoutItem::hasHeightForWidth
+156 QLayoutItem::heightForWidth
+160 QLayoutItem::minimumHeightForWidth
+164 QLayout::_ZThn8_N7QLayout10invalidateEv
+168 QLayoutItem::widget
+172 QLayout::_ZThn8_N7QLayout6layoutEv
+176 QLayoutItem::spacerItem
+
+Class QLayout
+ size=16 align=4
+ base size=16 base align=4
+QLayout (0xb29196e0) 0
+ vptr=((& QLayout::_ZTV7QLayout) + 8u)
+ QObject (0xb2906ec4) 0
+ primary-for QLayout (0xb29196e0)
+ QLayoutItem (0xb2906f00) 8
+ vptr=((& QLayout::_ZTV7QLayout) + 116u)
+
+Vtable for QGridLayout
+QGridLayout::_ZTV11QGridLayout: 49u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QGridLayout)
+8 QGridLayout::metaObject
+12 QGridLayout::qt_metacast
+16 QGridLayout::qt_metacall
+20 QGridLayout::~QGridLayout
+24 QGridLayout::~QGridLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGridLayout::invalidate
+60 QLayout::geometry
+64 QGridLayout::addItem
+68 QGridLayout::expandingDirections
+72 QGridLayout::minimumSize
+76 QGridLayout::maximumSize
+80 QGridLayout::setGeometry
+84 QGridLayout::itemAt
+88 QGridLayout::takeAt
+92 QLayout::indexOf
+96 QGridLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QGridLayout::sizeHint
+112 QGridLayout::hasHeightForWidth
+116 QGridLayout::heightForWidth
+120 QGridLayout::minimumHeightForWidth
+124 (int (*)(...))-0x000000008
+128 (int (*)(...))(& _ZTI11QGridLayout)
+132 QGridLayout::_ZThn8_N11QGridLayoutD1Ev
+136 QGridLayout::_ZThn8_N11QGridLayoutD0Ev
+140 QGridLayout::_ZThn8_NK11QGridLayout8sizeHintEv
+144 QGridLayout::_ZThn8_NK11QGridLayout11minimumSizeEv
+148 QGridLayout::_ZThn8_NK11QGridLayout11maximumSizeEv
+152 QGridLayout::_ZThn8_NK11QGridLayout19expandingDirectionsEv
+156 QGridLayout::_ZThn8_N11QGridLayout11setGeometryERK5QRect
+160 QLayout::_ZThn8_NK7QLayout8geometryEv
+164 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+168 QGridLayout::_ZThn8_NK11QGridLayout17hasHeightForWidthEv
+172 QGridLayout::_ZThn8_NK11QGridLayout14heightForWidthEi
+176 QGridLayout::_ZThn8_NK11QGridLayout21minimumHeightForWidthEi
+180 QGridLayout::_ZThn8_N11QGridLayout10invalidateEv
+184 QLayoutItem::widget
+188 QLayout::_ZThn8_N7QLayout6layoutEv
+192 QLayoutItem::spacerItem
+
+Class QGridLayout
+ size=16 align=4
+ base size=16 base align=4
+QGridLayout (0xb291a900) 0
+ vptr=((& QGridLayout::_ZTV11QGridLayout) + 8u)
+ QLayout (0xb293b6e0) 0
+ primary-for QGridLayout (0xb291a900)
+ QObject (0xb293699c) 0
+ primary-for QLayout (0xb293b6e0)
+ QLayoutItem (0xb29369d8) 8
+ vptr=((& QGridLayout::_ZTV11QGridLayout) + 132u)
+
+Vtable for QBoxLayout
+QBoxLayout::_ZTV10QBoxLayout: 49u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QBoxLayout)
+8 QBoxLayout::metaObject
+12 QBoxLayout::qt_metacast
+16 QBoxLayout::qt_metacall
+20 QBoxLayout::~QBoxLayout
+24 QBoxLayout::~QBoxLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QBoxLayout::invalidate
+60 QLayout::geometry
+64 QBoxLayout::addItem
+68 QBoxLayout::expandingDirections
+72 QBoxLayout::minimumSize
+76 QBoxLayout::maximumSize
+80 QBoxLayout::setGeometry
+84 QBoxLayout::itemAt
+88 QBoxLayout::takeAt
+92 QLayout::indexOf
+96 QBoxLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QBoxLayout::sizeHint
+112 QBoxLayout::hasHeightForWidth
+116 QBoxLayout::heightForWidth
+120 QBoxLayout::minimumHeightForWidth
+124 (int (*)(...))-0x000000008
+128 (int (*)(...))(& _ZTI10QBoxLayout)
+132 QBoxLayout::_ZThn8_N10QBoxLayoutD1Ev
+136 QBoxLayout::_ZThn8_N10QBoxLayoutD0Ev
+140 QBoxLayout::_ZThn8_NK10QBoxLayout8sizeHintEv
+144 QBoxLayout::_ZThn8_NK10QBoxLayout11minimumSizeEv
+148 QBoxLayout::_ZThn8_NK10QBoxLayout11maximumSizeEv
+152 QBoxLayout::_ZThn8_NK10QBoxLayout19expandingDirectionsEv
+156 QBoxLayout::_ZThn8_N10QBoxLayout11setGeometryERK5QRect
+160 QLayout::_ZThn8_NK7QLayout8geometryEv
+164 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+168 QBoxLayout::_ZThn8_NK10QBoxLayout17hasHeightForWidthEv
+172 QBoxLayout::_ZThn8_NK10QBoxLayout14heightForWidthEi
+176 QBoxLayout::_ZThn8_NK10QBoxLayout21minimumHeightForWidthEi
+180 QBoxLayout::_ZThn8_N10QBoxLayout10invalidateEv
+184 QLayoutItem::widget
+188 QLayout::_ZThn8_N7QLayout6layoutEv
+192 QLayoutItem::spacerItem
+
+Class QBoxLayout
+ size=16 align=4
+ base size=16 base align=4
+QBoxLayout (0xb2965300) 0
+ vptr=((& QBoxLayout::_ZTV10QBoxLayout) + 8u)
+ QLayout (0xb296c3c0) 0
+ primary-for QBoxLayout (0xb2965300)
+ QObject (0xb2968168) 0
+ primary-for QLayout (0xb296c3c0)
+ QLayoutItem (0xb29681a4) 8
+ vptr=((& QBoxLayout::_ZTV10QBoxLayout) + 132u)
+
+Vtable for QHBoxLayout
+QHBoxLayout::_ZTV11QHBoxLayout: 49u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QHBoxLayout)
+8 QHBoxLayout::metaObject
+12 QHBoxLayout::qt_metacast
+16 QHBoxLayout::qt_metacall
+20 QHBoxLayout::~QHBoxLayout
+24 QHBoxLayout::~QHBoxLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QBoxLayout::invalidate
+60 QLayout::geometry
+64 QBoxLayout::addItem
+68 QBoxLayout::expandingDirections
+72 QBoxLayout::minimumSize
+76 QBoxLayout::maximumSize
+80 QBoxLayout::setGeometry
+84 QBoxLayout::itemAt
+88 QBoxLayout::takeAt
+92 QLayout::indexOf
+96 QBoxLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QBoxLayout::sizeHint
+112 QBoxLayout::hasHeightForWidth
+116 QBoxLayout::heightForWidth
+120 QBoxLayout::minimumHeightForWidth
+124 (int (*)(...))-0x000000008
+128 (int (*)(...))(& _ZTI11QHBoxLayout)
+132 QHBoxLayout::_ZThn8_N11QHBoxLayoutD1Ev
+136 QHBoxLayout::_ZThn8_N11QHBoxLayoutD0Ev
+140 QBoxLayout::_ZThn8_NK10QBoxLayout8sizeHintEv
+144 QBoxLayout::_ZThn8_NK10QBoxLayout11minimumSizeEv
+148 QBoxLayout::_ZThn8_NK10QBoxLayout11maximumSizeEv
+152 QBoxLayout::_ZThn8_NK10QBoxLayout19expandingDirectionsEv
+156 QBoxLayout::_ZThn8_N10QBoxLayout11setGeometryERK5QRect
+160 QLayout::_ZThn8_NK7QLayout8geometryEv
+164 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+168 QBoxLayout::_ZThn8_NK10QBoxLayout17hasHeightForWidthEv
+172 QBoxLayout::_ZThn8_NK10QBoxLayout14heightForWidthEi
+176 QBoxLayout::_ZThn8_NK10QBoxLayout21minimumHeightForWidthEi
+180 QBoxLayout::_ZThn8_N10QBoxLayout10invalidateEv
+184 QLayoutItem::widget
+188 QLayout::_ZThn8_N7QLayout6layoutEv
+192 QLayoutItem::spacerItem
+
+Class QHBoxLayout
+ size=16 align=4
+ base size=16 base align=4
+QHBoxLayout (0xb2965640) 0
+ vptr=((& QHBoxLayout::_ZTV11QHBoxLayout) + 8u)
+ QBoxLayout (0xb2965680) 0
+ primary-for QHBoxLayout (0xb2965640)
+ QLayout (0xb2982050) 0
+ primary-for QBoxLayout (0xb2965680)
+ QObject (0xb29684ec) 0
+ primary-for QLayout (0xb2982050)
+ QLayoutItem (0xb2968528) 8
+ vptr=((& QHBoxLayout::_ZTV11QHBoxLayout) + 132u)
+
+Vtable for QVBoxLayout
+QVBoxLayout::_ZTV11QVBoxLayout: 49u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QVBoxLayout)
+8 QVBoxLayout::metaObject
+12 QVBoxLayout::qt_metacast
+16 QVBoxLayout::qt_metacall
+20 QVBoxLayout::~QVBoxLayout
+24 QVBoxLayout::~QVBoxLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QBoxLayout::invalidate
+60 QLayout::geometry
+64 QBoxLayout::addItem
+68 QBoxLayout::expandingDirections
+72 QBoxLayout::minimumSize
+76 QBoxLayout::maximumSize
+80 QBoxLayout::setGeometry
+84 QBoxLayout::itemAt
+88 QBoxLayout::takeAt
+92 QLayout::indexOf
+96 QBoxLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QBoxLayout::sizeHint
+112 QBoxLayout::hasHeightForWidth
+116 QBoxLayout::heightForWidth
+120 QBoxLayout::minimumHeightForWidth
+124 (int (*)(...))-0x000000008
+128 (int (*)(...))(& _ZTI11QVBoxLayout)
+132 QVBoxLayout::_ZThn8_N11QVBoxLayoutD1Ev
+136 QVBoxLayout::_ZThn8_N11QVBoxLayoutD0Ev
+140 QBoxLayout::_ZThn8_NK10QBoxLayout8sizeHintEv
+144 QBoxLayout::_ZThn8_NK10QBoxLayout11minimumSizeEv
+148 QBoxLayout::_ZThn8_NK10QBoxLayout11maximumSizeEv
+152 QBoxLayout::_ZThn8_NK10QBoxLayout19expandingDirectionsEv
+156 QBoxLayout::_ZThn8_N10QBoxLayout11setGeometryERK5QRect
+160 QLayout::_ZThn8_NK7QLayout8geometryEv
+164 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+168 QBoxLayout::_ZThn8_NK10QBoxLayout17hasHeightForWidthEv
+172 QBoxLayout::_ZThn8_NK10QBoxLayout14heightForWidthEi
+176 QBoxLayout::_ZThn8_NK10QBoxLayout21minimumHeightForWidthEi
+180 QBoxLayout::_ZThn8_N10QBoxLayout10invalidateEv
+184 QLayoutItem::widget
+188 QLayout::_ZThn8_N7QLayout6layoutEv
+192 QLayoutItem::spacerItem
+
+Class QVBoxLayout
+ size=16 align=4
+ base size=16 base align=4
+QVBoxLayout (0xb29658c0) 0
+ vptr=((& QVBoxLayout::_ZTV11QVBoxLayout) + 8u)
+ QBoxLayout (0xb2965900) 0
+ primary-for QVBoxLayout (0xb29658c0)
+ QLayout (0xb2985f00) 0
+ primary-for QBoxLayout (0xb2965900)
+ QObject (0xb2968654) 0
+ primary-for QLayout (0xb2985f00)
+ QLayoutItem (0xb2968690) 8
+ vptr=((& QVBoxLayout::_ZTV11QVBoxLayout) + 132u)
+
+Vtable for QClipboard
+QClipboard::_ZTV10QClipboard: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QClipboard)
+8 QClipboard::metaObject
+12 QClipboard::qt_metacast
+16 QClipboard::qt_metacall
+20 QClipboard::~QClipboard
+24 QClipboard::~QClipboard
+28 QClipboard::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QClipboard::connectNotify
+52 QObject::disconnectNotify
+
+Class QClipboard
+ size=8 align=4
+ base size=8 base align=4
+QClipboard (0xb2965b40) 0
+ vptr=((& QClipboard::_ZTV10QClipboard) + 8u)
+ QObject (0xb29687bc) 0
+ primary-for QClipboard (0xb2965b40)
+
+Vtable for QDesktopWidget
+QDesktopWidget::_ZTV14QDesktopWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QDesktopWidget)
+8 QDesktopWidget::metaObject
+12 QDesktopWidget::qt_metacast
+16 QDesktopWidget::qt_metacall
+20 QDesktopWidget::~QDesktopWidget
+24 QDesktopWidget::~QDesktopWidget
+28 QWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDesktopWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI14QDesktopWidget)
+232 QDesktopWidget::_ZThn8_N14QDesktopWidgetD1Ev
+236 QDesktopWidget::_ZThn8_N14QDesktopWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDesktopWidget
+ size=20 align=4
+ base size=20 base align=4
+QDesktopWidget (0xb2965e00) 0
+ vptr=((& QDesktopWidget::_ZTV14QDesktopWidget) + 8u)
+ QWidget (0xb29a91e0) 0
+ primary-for QDesktopWidget (0xb2965e00)
+ QObject (0xb29689d8) 0
+ primary-for QWidget (0xb29a91e0)
+ QPaintDevice (0xb2968a14) 8
+ vptr=((& QDesktopWidget::_ZTV14QDesktopWidget) + 232u)
+
+Vtable for QFormLayout
+QFormLayout::_ZTV11QFormLayout: 48u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFormLayout)
+8 QFormLayout::metaObject
+12 QFormLayout::qt_metacast
+16 QFormLayout::qt_metacall
+20 QFormLayout::~QFormLayout
+24 QFormLayout::~QFormLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QFormLayout::invalidate
+60 QLayout::geometry
+64 QFormLayout::addItem
+68 QFormLayout::expandingDirections
+72 QFormLayout::minimumSize
+76 QLayout::maximumSize
+80 QFormLayout::setGeometry
+84 QFormLayout::itemAt
+88 QFormLayout::takeAt
+92 QLayout::indexOf
+96 QFormLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QFormLayout::sizeHint
+112 QFormLayout::hasHeightForWidth
+116 QFormLayout::heightForWidth
+120 (int (*)(...))-0x000000008
+124 (int (*)(...))(& _ZTI11QFormLayout)
+128 QFormLayout::_ZThn8_N11QFormLayoutD1Ev
+132 QFormLayout::_ZThn8_N11QFormLayoutD0Ev
+136 QFormLayout::_ZThn8_NK11QFormLayout8sizeHintEv
+140 QFormLayout::_ZThn8_NK11QFormLayout11minimumSizeEv
+144 QLayout::_ZThn8_NK7QLayout11maximumSizeEv
+148 QFormLayout::_ZThn8_NK11QFormLayout19expandingDirectionsEv
+152 QFormLayout::_ZThn8_N11QFormLayout11setGeometryERK5QRect
+156 QLayout::_ZThn8_NK7QLayout8geometryEv
+160 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+164 QFormLayout::_ZThn8_NK11QFormLayout17hasHeightForWidthEv
+168 QFormLayout::_ZThn8_NK11QFormLayout14heightForWidthEi
+172 QLayoutItem::minimumHeightForWidth
+176 QFormLayout::_ZThn8_N11QFormLayout10invalidateEv
+180 QLayoutItem::widget
+184 QLayout::_ZThn8_N7QLayout6layoutEv
+188 QLayoutItem::spacerItem
+
+Class QFormLayout
+ size=16 align=4
+ base size=16 base align=4
+QFormLayout (0xb29ba180) 0
+ vptr=((& QFormLayout::_ZTV11QFormLayout) + 8u)
+ QLayout (0xb29bf1e0) 0
+ primary-for QFormLayout (0xb29ba180)
+ QObject (0xb2968c6c) 0
+ primary-for QLayout (0xb29bf1e0)
+ QLayoutItem (0xb2968ca8) 8
+ vptr=((& QFormLayout::_ZTV11QFormLayout) + 128u)
+
+Vtable for QGesture
+QGesture::_ZTV8QGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QGesture)
+8 QGesture::metaObject
+12 QGesture::qt_metacast
+16 QGesture::qt_metacall
+20 QGesture::~QGesture
+24 QGesture::~QGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QGesture
+ size=8 align=4
+ base size=8 base align=4
+QGesture (0xb29ba580) 0
+ vptr=((& QGesture::_ZTV8QGesture) + 8u)
+ QObject (0xb2968f78) 0
+ primary-for QGesture (0xb29ba580)
+
+Vtable for QPanGesture
+QPanGesture::_ZTV11QPanGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QPanGesture)
+8 QPanGesture::metaObject
+12 QPanGesture::qt_metacast
+16 QPanGesture::qt_metacall
+20 QPanGesture::~QPanGesture
+24 QPanGesture::~QPanGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QPanGesture
+ size=8 align=4
+ base size=8 base align=4
+QPanGesture (0xb29ba840) 0
+ vptr=((& QPanGesture::_ZTV11QPanGesture) + 8u)
+ QGesture (0xb29ba880) 0
+ primary-for QPanGesture (0xb29ba840)
+ QObject (0xb29e31a4) 0
+ primary-for QGesture (0xb29ba880)
+
+Vtable for QPinchGesture
+QPinchGesture::_ZTV13QPinchGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QPinchGesture)
+8 QPinchGesture::metaObject
+12 QPinchGesture::qt_metacast
+16 QPinchGesture::qt_metacall
+20 QPinchGesture::~QPinchGesture
+24 QPinchGesture::~QPinchGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QPinchGesture
+ size=8 align=4
+ base size=8 base align=4
+QPinchGesture (0xb29bab40) 0
+ vptr=((& QPinchGesture::_ZTV13QPinchGesture) + 8u)
+ QGesture (0xb29bab80) 0
+ primary-for QPinchGesture (0xb29bab40)
+ QObject (0xb29e33c0) 0
+ primary-for QGesture (0xb29bab80)
+
+Vtable for QSwipeGesture
+QSwipeGesture::_ZTV13QSwipeGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QSwipeGesture)
+8 QSwipeGesture::metaObject
+12 QSwipeGesture::qt_metacast
+16 QSwipeGesture::qt_metacall
+20 QSwipeGesture::~QSwipeGesture
+24 QSwipeGesture::~QSwipeGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSwipeGesture
+ size=8 align=4
+ base size=8 base align=4
+QSwipeGesture (0xb29baf80) 0
+ vptr=((& QSwipeGesture::_ZTV13QSwipeGesture) + 8u)
+ QGesture (0xb29bafc0) 0
+ primary-for QSwipeGesture (0xb29baf80)
+ QObject (0xb29e3690) 0
+ primary-for QGesture (0xb29bafc0)
+
+Vtable for QTapGesture
+QTapGesture::_ZTV11QTapGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTapGesture)
+8 QTapGesture::metaObject
+12 QTapGesture::qt_metacast
+16 QTapGesture::qt_metacall
+20 QTapGesture::~QTapGesture
+24 QTapGesture::~QTapGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTapGesture
+ size=8 align=4
+ base size=8 base align=4
+QTapGesture (0xb2804280) 0
+ vptr=((& QTapGesture::_ZTV11QTapGesture) + 8u)
+ QGesture (0xb28042c0) 0
+ primary-for QTapGesture (0xb2804280)
+ QObject (0xb29e38ac) 0
+ primary-for QGesture (0xb28042c0)
+
+Vtable for QTapAndHoldGesture
+QTapAndHoldGesture::_ZTV18QTapAndHoldGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QTapAndHoldGesture)
+8 QTapAndHoldGesture::metaObject
+12 QTapAndHoldGesture::qt_metacast
+16 QTapAndHoldGesture::qt_metacall
+20 QTapAndHoldGesture::~QTapAndHoldGesture
+24 QTapAndHoldGesture::~QTapAndHoldGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTapAndHoldGesture
+ size=8 align=4
+ base size=8 base align=4
+QTapAndHoldGesture (0xb2804580) 0
+ vptr=((& QTapAndHoldGesture::_ZTV18QTapAndHoldGesture) + 8u)
+ QGesture (0xb28045c0) 0
+ primary-for QTapAndHoldGesture (0xb2804580)
+ QObject (0xb29e3ac8) 0
+ primary-for QGesture (0xb28045c0)
+
+Vtable for QGestureRecognizer
+QGestureRecognizer::_ZTV18QGestureRecognizer: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QGestureRecognizer)
+8 QGestureRecognizer::~QGestureRecognizer
+12 QGestureRecognizer::~QGestureRecognizer
+16 QGestureRecognizer::create
+20 __cxa_pure_virtual
+24 QGestureRecognizer::reset
+
+Class QGestureRecognizer
+ size=4 align=4
+ base size=4 base align=4
+QGestureRecognizer (0xb29e3d98) 0 nearly-empty
+ vptr=((& QGestureRecognizer::_ZTV18QGestureRecognizer) + 8u)
+
+Vtable for QSessionManager
+QSessionManager::_ZTV15QSessionManager: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QSessionManager)
+8 QSessionManager::metaObject
+12 QSessionManager::qt_metacast
+16 QSessionManager::qt_metacall
+20 QSessionManager::~QSessionManager
+24 QSessionManager::~QSessionManager
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSessionManager
+ size=8 align=4
+ base size=8 base align=4
+QSessionManager (0xb2804b80) 0
+ vptr=((& QSessionManager::_ZTV15QSessionManager) + 8u)
+ QObject (0xb29e3ec4) 0
+ primary-for QSessionManager (0xb2804b80)
+
+Vtable for QShortcut
+QShortcut::_ZTV9QShortcut: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QShortcut)
+8 QShortcut::metaObject
+12 QShortcut::qt_metacast
+16 QShortcut::qt_metacall
+20 QShortcut::~QShortcut
+24 QShortcut::~QShortcut
+28 QShortcut::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QShortcut
+ size=8 align=4
+ base size=8 base align=4
+QShortcut (0xb2804e40) 0
+ vptr=((& QShortcut::_ZTV9QShortcut) + 8u)
+ QObject (0xb28600f0) 0
+ primary-for QShortcut (0xb2804e40)
+
+Vtable for QSound
+QSound::_ZTV6QSound: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QSound)
+8 QSound::metaObject
+12 QSound::qt_metacast
+16 QSound::qt_metacall
+20 QSound::~QSound
+24 QSound::~QSound
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSound
+ size=8 align=4
+ base size=8 base align=4
+QSound (0xb286c140) 0
+ vptr=((& QSound::_ZTV6QSound) + 8u)
+ QObject (0xb2860384) 0
+ primary-for QSound (0xb286c140)
+
+Vtable for QStackedLayout
+QStackedLayout::_ZTV14QStackedLayout: 46u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QStackedLayout)
+8 QStackedLayout::metaObject
+12 QStackedLayout::qt_metacast
+16 QStackedLayout::qt_metacall
+20 QStackedLayout::~QStackedLayout
+24 QStackedLayout::~QStackedLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QLayout::invalidate
+60 QLayout::geometry
+64 QStackedLayout::addItem
+68 QLayout::expandingDirections
+72 QStackedLayout::minimumSize
+76 QLayout::maximumSize
+80 QStackedLayout::setGeometry
+84 QStackedLayout::itemAt
+88 QStackedLayout::takeAt
+92 QLayout::indexOf
+96 QStackedLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QStackedLayout::sizeHint
+112 (int (*)(...))-0x000000008
+116 (int (*)(...))(& _ZTI14QStackedLayout)
+120 QStackedLayout::_ZThn8_N14QStackedLayoutD1Ev
+124 QStackedLayout::_ZThn8_N14QStackedLayoutD0Ev
+128 QStackedLayout::_ZThn8_NK14QStackedLayout8sizeHintEv
+132 QStackedLayout::_ZThn8_NK14QStackedLayout11minimumSizeEv
+136 QLayout::_ZThn8_NK7QLayout11maximumSizeEv
+140 QLayout::_ZThn8_NK7QLayout19expandingDirectionsEv
+144 QStackedLayout::_ZThn8_N14QStackedLayout11setGeometryERK5QRect
+148 QLayout::_ZThn8_NK7QLayout8geometryEv
+152 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+156 QLayoutItem::hasHeightForWidth
+160 QLayoutItem::heightForWidth
+164 QLayoutItem::minimumHeightForWidth
+168 QLayout::_ZThn8_N7QLayout10invalidateEv
+172 QLayoutItem::widget
+176 QLayout::_ZThn8_N7QLayout6layoutEv
+180 QLayoutItem::spacerItem
+
+Class QStackedLayout
+ size=16 align=4
+ base size=16 base align=4
+QStackedLayout (0xb286c480) 0
+ vptr=((& QStackedLayout::_ZTV14QStackedLayout) + 8u)
+ QLayout (0xb2874f50) 0
+ primary-for QStackedLayout (0xb286c480)
+ QObject (0xb28605dc) 0
+ primary-for QLayout (0xb2874f50)
+ QLayoutItem (0xb2860618) 8
+ vptr=((& QStackedLayout::_ZTV14QStackedLayout) + 120u)
+
+Class QToolTip
+ size=1 align=1
+ base size=0 base align=1
+QToolTip (0xb2860834) 0 empty
+
+Class QWhatsThis
+ size=1 align=1
+ base size=0 base align=1
+QWhatsThis (0xb2860870) 0 empty
+
+Vtable for QWidgetAction
+QWidgetAction::_ZTV13QWidgetAction: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QWidgetAction)
+8 QWidgetAction::metaObject
+12 QWidgetAction::qt_metacast
+16 QWidgetAction::qt_metacall
+20 QWidgetAction::~QWidgetAction
+24 QWidgetAction::~QWidgetAction
+28 QWidgetAction::event
+32 QWidgetAction::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidgetAction::createWidget
+60 QWidgetAction::deleteWidget
+
+Class QWidgetAction
+ size=8 align=4
+ base size=8 base align=4
+QWidgetAction (0xb286c8c0) 0
+ vptr=((& QWidgetAction::_ZTV13QWidgetAction) + 8u)
+ QAction (0xb286c900) 0
+ primary-for QWidgetAction (0xb286c8c0)
+ QObject (0xb28608ac) 0
+ primary-for QAction (0xb286c900)
+
+Class QVector3D
+ size=12 align=4
+ base size=12 base align=4
+QVector3D (0xb27010b4) 0
+
+Class QVector4D
+ size=16 align=4
+ base size=16 base align=4
+QVector4D (0xb2732b04) 0
+
+Class QQuaternion
+ size=32 align=4
+ base size=32 base align=4
+QQuaternion (0xb276af3c) 0
+
+Class QMatrix4x4
+ size=132 align=4
+ base size=132 base align=4
+QMatrix4x4 (0xb27acd5c) 0
+
+Class QVector2D
+ size=8 align=4
+ base size=8 base align=4
+QVector2D (0xb26c1b04) 0
+
+Vtable for QCommonStyle
+QCommonStyle::_ZTV12QCommonStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QCommonStyle)
+8 QCommonStyle::metaObject
+12 QCommonStyle::qt_metacast
+16 QCommonStyle::qt_metacall
+20 QCommonStyle::~QCommonStyle
+24 QCommonStyle::~QCommonStyle
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QCommonStyle::polish
+60 QCommonStyle::unpolish
+64 QCommonStyle::polish
+68 QCommonStyle::unpolish
+72 QCommonStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QStyle::standardPalette
+96 QCommonStyle::drawPrimitive
+100 QCommonStyle::drawControl
+104 QCommonStyle::subElementRect
+108 QCommonStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QCommonStyle::subControlRect
+120 QCommonStyle::pixelMetric
+124 QCommonStyle::sizeFromContents
+128 QCommonStyle::styleHint
+132 QCommonStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QCommonStyle
+ size=8 align=4
+ base size=8 base align=4
+QCommonStyle (0xb25156c0) 0
+ vptr=((& QCommonStyle::_ZTV12QCommonStyle) + 8u)
+ QStyle (0xb2515700) 0
+ primary-for QCommonStyle (0xb25156c0)
+ QObject (0xb25231a4) 0
+ primary-for QStyle (0xb2515700)
+
+Vtable for QMotifStyle
+QMotifStyle::_ZTV11QMotifStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QMotifStyle)
+8 QMotifStyle::metaObject
+12 QMotifStyle::qt_metacast
+16 QMotifStyle::qt_metacall
+20 QMotifStyle::~QMotifStyle
+24 QMotifStyle::~QMotifStyle
+28 QMotifStyle::event
+32 QMotifStyle::eventFilter
+36 QMotifStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QMotifStyle::polish
+60 QMotifStyle::unpolish
+64 QMotifStyle::polish
+68 QMotifStyle::unpolish
+72 QMotifStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QMotifStyle::standardPalette
+96 QMotifStyle::drawPrimitive
+100 QMotifStyle::drawControl
+104 QMotifStyle::subElementRect
+108 QMotifStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QMotifStyle::subControlRect
+120 QMotifStyle::pixelMetric
+124 QMotifStyle::sizeFromContents
+128 QMotifStyle::styleHint
+132 QMotifStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QMotifStyle
+ size=16 align=4
+ base size=13 base align=4
+QMotifStyle (0xb25159c0) 0
+ vptr=((& QMotifStyle::_ZTV11QMotifStyle) + 8u)
+ QCommonStyle (0xb2515a00) 0
+ primary-for QMotifStyle (0xb25159c0)
+ QStyle (0xb2515a40) 0
+ primary-for QCommonStyle (0xb2515a00)
+ QObject (0xb25233c0) 0
+ primary-for QStyle (0xb2515a40)
+
+Vtable for QCDEStyle
+QCDEStyle::_ZTV9QCDEStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QCDEStyle)
+8 QCDEStyle::metaObject
+12 QCDEStyle::qt_metacast
+16 QCDEStyle::qt_metacall
+20 QCDEStyle::~QCDEStyle
+24 QCDEStyle::~QCDEStyle
+28 QMotifStyle::event
+32 QMotifStyle::eventFilter
+36 QMotifStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QMotifStyle::polish
+60 QMotifStyle::unpolish
+64 QMotifStyle::polish
+68 QMotifStyle::unpolish
+72 QMotifStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QCDEStyle::standardPalette
+96 QCDEStyle::drawPrimitive
+100 QCDEStyle::drawControl
+104 QMotifStyle::subElementRect
+108 QMotifStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QMotifStyle::subControlRect
+120 QCDEStyle::pixelMetric
+124 QMotifStyle::sizeFromContents
+128 QMotifStyle::styleHint
+132 QMotifStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QCDEStyle
+ size=16 align=4
+ base size=13 base align=4
+QCDEStyle (0xb2515d40) 0
+ vptr=((& QCDEStyle::_ZTV9QCDEStyle) + 8u)
+ QMotifStyle (0xb2515d80) 0
+ primary-for QCDEStyle (0xb2515d40)
+ QCommonStyle (0xb2515dc0) 0
+ primary-for QMotifStyle (0xb2515d80)
+ QStyle (0xb2515e00) 0
+ primary-for QCommonStyle (0xb2515dc0)
+ QObject (0xb2523618) 0
+ primary-for QStyle (0xb2515e00)
+
+Vtable for QWindowsStyle
+QWindowsStyle::_ZTV13QWindowsStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QWindowsStyle)
+8 QWindowsStyle::metaObject
+12 QWindowsStyle::qt_metacast
+16 QWindowsStyle::qt_metacall
+20 QWindowsStyle::~QWindowsStyle
+24 QWindowsStyle::~QWindowsStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWindowsStyle::polish
+60 QWindowsStyle::unpolish
+64 QWindowsStyle::polish
+68 QWindowsStyle::unpolish
+72 QWindowsStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QStyle::standardPalette
+96 QWindowsStyle::drawPrimitive
+100 QWindowsStyle::drawControl
+104 QWindowsStyle::subElementRect
+108 QWindowsStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QCommonStyle::subControlRect
+120 QWindowsStyle::pixelMetric
+124 QWindowsStyle::sizeFromContents
+128 QWindowsStyle::styleHint
+132 QWindowsStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QWindowsStyle
+ size=12 align=4
+ base size=12 base align=4
+QWindowsStyle (0xb2556040) 0
+ vptr=((& QWindowsStyle::_ZTV13QWindowsStyle) + 8u)
+ QCommonStyle (0xb2556080) 0
+ primary-for QWindowsStyle (0xb2556040)
+ QStyle (0xb25560c0) 0
+ primary-for QCommonStyle (0xb2556080)
+ QObject (0xb2523744) 0
+ primary-for QStyle (0xb25560c0)
+
+Vtable for QCleanlooksStyle
+QCleanlooksStyle::_ZTV16QCleanlooksStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QCleanlooksStyle)
+8 QCleanlooksStyle::metaObject
+12 QCleanlooksStyle::qt_metacast
+16 QCleanlooksStyle::qt_metacall
+20 QCleanlooksStyle::~QCleanlooksStyle
+24 QCleanlooksStyle::~QCleanlooksStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QCleanlooksStyle::polish
+60 QCleanlooksStyle::unpolish
+64 QCleanlooksStyle::polish
+68 QCleanlooksStyle::unpolish
+72 QCleanlooksStyle::polish
+76 QStyle::itemTextRect
+80 QCleanlooksStyle::itemPixmapRect
+84 QCleanlooksStyle::drawItemText
+88 QCleanlooksStyle::drawItemPixmap
+92 QCleanlooksStyle::standardPalette
+96 QCleanlooksStyle::drawPrimitive
+100 QCleanlooksStyle::drawControl
+104 QCleanlooksStyle::subElementRect
+108 QCleanlooksStyle::drawComplexControl
+112 QCleanlooksStyle::hitTestComplexControl
+116 QCleanlooksStyle::subControlRect
+120 QCleanlooksStyle::pixelMetric
+124 QCleanlooksStyle::sizeFromContents
+128 QCleanlooksStyle::styleHint
+132 QCleanlooksStyle::standardPixmap
+136 QCleanlooksStyle::generatedIconPixmap
+
+Class QCleanlooksStyle
+ size=12 align=4
+ base size=12 base align=4
+QCleanlooksStyle (0xb2556380) 0
+ vptr=((& QCleanlooksStyle::_ZTV16QCleanlooksStyle) + 8u)
+ QWindowsStyle (0xb25563c0) 0
+ primary-for QCleanlooksStyle (0xb2556380)
+ QCommonStyle (0xb2556400) 0
+ primary-for QWindowsStyle (0xb25563c0)
+ QStyle (0xb2556440) 0
+ primary-for QCommonStyle (0xb2556400)
+ QObject (0xb2523960) 0
+ primary-for QStyle (0xb2556440)
+
+Vtable for QGtkStyle
+QGtkStyle::_ZTV9QGtkStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QGtkStyle)
+8 QGtkStyle::metaObject
+12 QGtkStyle::qt_metacast
+16 QGtkStyle::qt_metacall
+20 QGtkStyle::~QGtkStyle
+24 QGtkStyle::~QGtkStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGtkStyle::polish
+60 QGtkStyle::unpolish
+64 QGtkStyle::polish
+68 QGtkStyle::unpolish
+72 QGtkStyle::polish
+76 QStyle::itemTextRect
+80 QGtkStyle::itemPixmapRect
+84 QGtkStyle::drawItemText
+88 QGtkStyle::drawItemPixmap
+92 QGtkStyle::standardPalette
+96 QGtkStyle::drawPrimitive
+100 QGtkStyle::drawControl
+104 QGtkStyle::subElementRect
+108 QGtkStyle::drawComplexControl
+112 QGtkStyle::hitTestComplexControl
+116 QGtkStyle::subControlRect
+120 QGtkStyle::pixelMetric
+124 QGtkStyle::sizeFromContents
+128 QGtkStyle::styleHint
+132 QGtkStyle::standardPixmap
+136 QGtkStyle::generatedIconPixmap
+
+Class QGtkStyle
+ size=12 align=4
+ base size=12 base align=4
+QGtkStyle (0xb2556700) 0
+ vptr=((& QGtkStyle::_ZTV9QGtkStyle) + 8u)
+ QCleanlooksStyle (0xb2556740) 0
+ primary-for QGtkStyle (0xb2556700)
+ QWindowsStyle (0xb2556780) 0
+ primary-for QCleanlooksStyle (0xb2556740)
+ QCommonStyle (0xb25567c0) 0
+ primary-for QWindowsStyle (0xb2556780)
+ QStyle (0xb2556800) 0
+ primary-for QCommonStyle (0xb25567c0)
+ QObject (0xb2523b7c) 0
+ primary-for QStyle (0xb2556800)
+
+Vtable for QPlastiqueStyle
+QPlastiqueStyle::_ZTV15QPlastiqueStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QPlastiqueStyle)
+8 QPlastiqueStyle::metaObject
+12 QPlastiqueStyle::qt_metacast
+16 QPlastiqueStyle::qt_metacall
+20 QPlastiqueStyle::~QPlastiqueStyle
+24 QPlastiqueStyle::~QPlastiqueStyle
+28 QObject::event
+32 QPlastiqueStyle::eventFilter
+36 QPlastiqueStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QPlastiqueStyle::polish
+60 QPlastiqueStyle::unpolish
+64 QPlastiqueStyle::polish
+68 QPlastiqueStyle::unpolish
+72 QPlastiqueStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QPlastiqueStyle::standardPalette
+96 QPlastiqueStyle::drawPrimitive
+100 QPlastiqueStyle::drawControl
+104 QPlastiqueStyle::subElementRect
+108 QPlastiqueStyle::drawComplexControl
+112 QPlastiqueStyle::hitTestComplexControl
+116 QPlastiqueStyle::subControlRect
+120 QPlastiqueStyle::pixelMetric
+124 QPlastiqueStyle::sizeFromContents
+128 QPlastiqueStyle::styleHint
+132 QPlastiqueStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QPlastiqueStyle
+ size=16 align=4
+ base size=16 base align=4
+QPlastiqueStyle (0xb2556ac0) 0
+ vptr=((& QPlastiqueStyle::_ZTV15QPlastiqueStyle) + 8u)
+ QWindowsStyle (0xb2556b00) 0
+ primary-for QPlastiqueStyle (0xb2556ac0)
+ QCommonStyle (0xb2556b40) 0
+ primary-for QWindowsStyle (0xb2556b00)
+ QStyle (0xb2556b80) 0
+ primary-for QCommonStyle (0xb2556b40)
+ QObject (0xb2523d98) 0
+ primary-for QStyle (0xb2556b80)
+
+Vtable for QProxyStyle
+QProxyStyle::_ZTV11QProxyStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QProxyStyle)
+8 QProxyStyle::metaObject
+12 QProxyStyle::qt_metacast
+16 QProxyStyle::qt_metacall
+20 QProxyStyle::~QProxyStyle
+24 QProxyStyle::~QProxyStyle
+28 QProxyStyle::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QProxyStyle::polish
+60 QProxyStyle::unpolish
+64 QProxyStyle::polish
+68 QProxyStyle::unpolish
+72 QProxyStyle::polish
+76 QProxyStyle::itemTextRect
+80 QProxyStyle::itemPixmapRect
+84 QProxyStyle::drawItemText
+88 QProxyStyle::drawItemPixmap
+92 QProxyStyle::standardPalette
+96 QProxyStyle::drawPrimitive
+100 QProxyStyle::drawControl
+104 QProxyStyle::subElementRect
+108 QProxyStyle::drawComplexControl
+112 QProxyStyle::hitTestComplexControl
+116 QProxyStyle::subControlRect
+120 QProxyStyle::pixelMetric
+124 QProxyStyle::sizeFromContents
+128 QProxyStyle::styleHint
+132 QProxyStyle::standardPixmap
+136 QProxyStyle::generatedIconPixmap
+
+Class QProxyStyle
+ size=8 align=4
+ base size=8 base align=4
+QProxyStyle (0xb2556e40) 0
+ vptr=((& QProxyStyle::_ZTV11QProxyStyle) + 8u)
+ QCommonStyle (0xb2556e80) 0
+ primary-for QProxyStyle (0xb2556e40)
+ QStyle (0xb2556ec0) 0
+ primary-for QCommonStyle (0xb2556e80)
+ QObject (0xb2523fb4) 0
+ primary-for QStyle (0xb2556ec0)
+
+Vtable for QS60Style
+QS60Style::_ZTV9QS60Style: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QS60Style)
+8 QS60Style::metaObject
+12 QS60Style::qt_metacast
+16 QS60Style::qt_metacall
+20 QS60Style::~QS60Style
+24 QS60Style::~QS60Style
+28 QS60Style::event
+32 QS60Style::eventFilter
+36 QS60Style::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QS60Style::polish
+60 QS60Style::unpolish
+64 QS60Style::polish
+68 QS60Style::unpolish
+72 QCommonStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QStyle::standardPalette
+96 QS60Style::drawPrimitive
+100 QS60Style::drawControl
+104 QS60Style::subElementRect
+108 QS60Style::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QS60Style::subControlRect
+120 QS60Style::pixelMetric
+124 QS60Style::sizeFromContents
+128 QS60Style::styleHint
+132 QCommonStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QS60Style
+ size=8 align=4
+ base size=8 base align=4
+QS60Style (0xb25ab180) 0
+ vptr=((& QS60Style::_ZTV9QS60Style) + 8u)
+ QCommonStyle (0xb25ab1c0) 0
+ primary-for QS60Style (0xb25ab180)
+ QStyle (0xb25ab200) 0
+ primary-for QCommonStyle (0xb25ab1c0)
+ QObject (0xb25ad1e0) 0
+ primary-for QStyle (0xb25ab200)
+
+Class QStyleFactory
+ size=1 align=1
+ base size=0 base align=1
+QStyleFactory (0xb25ad3fc) 0 empty
+
+Vtable for QStyleFactoryInterface
+QStyleFactoryInterface::_ZTV22QStyleFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QStyleFactoryInterface)
+8 QStyleFactoryInterface::~QStyleFactoryInterface
+12 QStyleFactoryInterface::~QStyleFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QStyleFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QStyleFactoryInterface (0xb25ab500) 0 nearly-empty
+ vptr=((& QStyleFactoryInterface::_ZTV22QStyleFactoryInterface) + 8u)
+ QFactoryInterface (0xb25ad438) 0 nearly-empty
+ primary-for QStyleFactoryInterface (0xb25ab500)
+
+Vtable for QStylePlugin
+QStylePlugin::_ZTV12QStylePlugin: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QStylePlugin)
+8 QStylePlugin::metaObject
+12 QStylePlugin::qt_metacast
+16 QStylePlugin::qt_metacall
+20 QStylePlugin::~QStylePlugin
+24 QStylePlugin::~QStylePlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 (int (*)(...))-0x000000008
+68 (int (*)(...))(& _ZTI12QStylePlugin)
+72 QStylePlugin::_ZThn8_N12QStylePluginD1Ev
+76 QStylePlugin::_ZThn8_N12QStylePluginD0Ev
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+
+Class QStylePlugin
+ size=12 align=4
+ base size=12 base align=4
+QStylePlugin (0xb25c2dc0) 0
+ vptr=((& QStylePlugin::_ZTV12QStylePlugin) + 8u)
+ QObject (0xb25ad744) 0
+ primary-for QStylePlugin (0xb25c2dc0)
+ QStyleFactoryInterface (0xb25ab7c0) 8 nearly-empty
+ vptr=((& QStylePlugin::_ZTV12QStylePlugin) + 72u)
+ QFactoryInterface (0xb25ad780) 8 nearly-empty
+ primary-for QStyleFactoryInterface (0xb25ab7c0)
+
+Vtable for QWindowsCEStyle
+QWindowsCEStyle::_ZTV15QWindowsCEStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QWindowsCEStyle)
+8 QWindowsCEStyle::metaObject
+12 QWindowsCEStyle::qt_metacast
+16 QWindowsCEStyle::qt_metacall
+20 QWindowsCEStyle::~QWindowsCEStyle
+24 QWindowsCEStyle::~QWindowsCEStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWindowsCEStyle::polish
+60 QWindowsStyle::unpolish
+64 QWindowsCEStyle::polish
+68 QWindowsStyle::unpolish
+72 QWindowsCEStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QWindowsCEStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QWindowsCEStyle::standardPalette
+96 QWindowsCEStyle::drawPrimitive
+100 QWindowsCEStyle::drawControl
+104 QWindowsCEStyle::subElementRect
+108 QWindowsCEStyle::drawComplexControl
+112 QWindowsCEStyle::hitTestComplexControl
+116 QWindowsCEStyle::subControlRect
+120 QWindowsCEStyle::pixelMetric
+124 QWindowsCEStyle::sizeFromContents
+128 QWindowsCEStyle::styleHint
+132 QWindowsCEStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QWindowsCEStyle
+ size=12 align=4
+ base size=12 base align=4
+QWindowsCEStyle (0xb25aba00) 0
+ vptr=((& QWindowsCEStyle::_ZTV15QWindowsCEStyle) + 8u)
+ QWindowsStyle (0xb25aba40) 0
+ primary-for QWindowsCEStyle (0xb25aba00)
+ QCommonStyle (0xb25aba80) 0
+ primary-for QWindowsStyle (0xb25aba40)
+ QStyle (0xb25abac0) 0
+ primary-for QCommonStyle (0xb25aba80)
+ QObject (0xb25ad8ac) 0
+ primary-for QStyle (0xb25abac0)
+
+Vtable for QWindowsMobileStyle
+QWindowsMobileStyle::_ZTV19QWindowsMobileStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QWindowsMobileStyle)
+8 QWindowsMobileStyle::metaObject
+12 QWindowsMobileStyle::qt_metacast
+16 QWindowsMobileStyle::qt_metacall
+20 QWindowsMobileStyle::~QWindowsMobileStyle
+24 QWindowsMobileStyle::~QWindowsMobileStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWindowsMobileStyle::polish
+60 QWindowsMobileStyle::unpolish
+64 QWindowsMobileStyle::polish
+68 QWindowsMobileStyle::unpolish
+72 QWindowsMobileStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QWindowsMobileStyle::standardPalette
+96 QWindowsMobileStyle::drawPrimitive
+100 QWindowsMobileStyle::drawControl
+104 QWindowsMobileStyle::subElementRect
+108 QWindowsMobileStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QWindowsMobileStyle::subControlRect
+120 QWindowsMobileStyle::pixelMetric
+124 QWindowsMobileStyle::sizeFromContents
+128 QWindowsMobileStyle::styleHint
+132 QWindowsMobileStyle::standardPixmap
+136 QWindowsMobileStyle::generatedIconPixmap
+
+Class QWindowsMobileStyle
+ size=12 align=4
+ base size=12 base align=4
+QWindowsMobileStyle (0xb25abd00) 0
+ vptr=((& QWindowsMobileStyle::_ZTV19QWindowsMobileStyle) + 8u)
+ QWindowsStyle (0xb25abd40) 0
+ primary-for QWindowsMobileStyle (0xb25abd00)
+ QCommonStyle (0xb25abd80) 0
+ primary-for QWindowsStyle (0xb25abd40)
+ QStyle (0xb25abdc0) 0
+ primary-for QCommonStyle (0xb25abd80)
+ QObject (0xb25ad9d8) 0
+ primary-for QStyle (0xb25abdc0)
+
+Vtable for QWindowsXPStyle
+QWindowsXPStyle::_ZTV15QWindowsXPStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QWindowsXPStyle)
+8 QWindowsXPStyle::metaObject
+12 QWindowsXPStyle::qt_metacast
+16 QWindowsXPStyle::qt_metacall
+20 QWindowsXPStyle::~QWindowsXPStyle
+24 QWindowsXPStyle::~QWindowsXPStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWindowsXPStyle::polish
+60 QWindowsXPStyle::unpolish
+64 QWindowsXPStyle::polish
+68 QWindowsXPStyle::unpolish
+72 QWindowsXPStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QWindowsXPStyle::standardPalette
+96 QWindowsXPStyle::drawPrimitive
+100 QWindowsXPStyle::drawControl
+104 QWindowsXPStyle::subElementRect
+108 QWindowsXPStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QWindowsXPStyle::subControlRect
+120 QWindowsXPStyle::pixelMetric
+124 QWindowsXPStyle::sizeFromContents
+128 QWindowsXPStyle::styleHint
+132 QWindowsXPStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QWindowsXPStyle
+ size=16 align=4
+ base size=16 base align=4
+QWindowsXPStyle (0xb25f3080) 0
+ vptr=((& QWindowsXPStyle::_ZTV15QWindowsXPStyle) + 8u)
+ QWindowsStyle (0xb25f30c0) 0
+ primary-for QWindowsXPStyle (0xb25f3080)
+ QCommonStyle (0xb25f3100) 0
+ primary-for QWindowsStyle (0xb25f30c0)
+ QStyle (0xb25f3140) 0
+ primary-for QCommonStyle (0xb25f3100)
+ QObject (0xb25adbf4) 0
+ primary-for QStyle (0xb25f3140)
+
+Vtable for QWindowsVistaStyle
+QWindowsVistaStyle::_ZTV18QWindowsVistaStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QWindowsVistaStyle)
+8 QWindowsVistaStyle::metaObject
+12 QWindowsVistaStyle::qt_metacast
+16 QWindowsVistaStyle::qt_metacall
+20 QWindowsVistaStyle::~QWindowsVistaStyle
+24 QWindowsVistaStyle::~QWindowsVistaStyle
+28 QWindowsVistaStyle::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWindowsVistaStyle::polish
+60 QWindowsVistaStyle::unpolish
+64 QWindowsVistaStyle::polish
+68 QWindowsVistaStyle::unpolish
+72 QWindowsVistaStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QWindowsVistaStyle::standardPalette
+96 QWindowsVistaStyle::drawPrimitive
+100 QWindowsVistaStyle::drawControl
+104 QWindowsVistaStyle::subElementRect
+108 QWindowsVistaStyle::drawComplexControl
+112 QWindowsVistaStyle::hitTestComplexControl
+116 QWindowsVistaStyle::subControlRect
+120 QWindowsVistaStyle::pixelMetric
+124 QWindowsVistaStyle::sizeFromContents
+128 QWindowsVistaStyle::styleHint
+132 QWindowsVistaStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QWindowsVistaStyle
+ size=16 align=4
+ base size=16 base align=4
+QWindowsVistaStyle (0xb25f3400) 0
+ vptr=((& QWindowsVistaStyle::_ZTV18QWindowsVistaStyle) + 8u)
+ QWindowsXPStyle (0xb25f3440) 0
+ primary-for QWindowsVistaStyle (0xb25f3400)
+ QWindowsStyle (0xb25f3480) 0
+ primary-for QWindowsXPStyle (0xb25f3440)
+ QCommonStyle (0xb25f34c0) 0
+ primary-for QWindowsStyle (0xb25f3480)
+ QStyle (0xb25f3500) 0
+ primary-for QCommonStyle (0xb25f34c0)
+ QObject (0xb25ade10) 0
+ primary-for QStyle (0xb25f3500)
+
+Vtable for QInputContext
+QInputContext::_ZTV13QInputContext: 26u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QInputContext)
+8 QInputContext::metaObject
+12 QInputContext::qt_metacast
+16 QInputContext::qt_metacall
+20 QInputContext::~QInputContext
+24 QInputContext::~QInputContext
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 QInputContext::update
+72 QInputContext::mouseHandler
+76 QInputContext::font
+80 __cxa_pure_virtual
+84 QInputContext::setFocusWidget
+88 QInputContext::widgetDestroyed
+92 QInputContext::actions
+96 QInputContext::x11FilterEvent
+100 QInputContext::filterEvent
+
+Class QInputContext
+ size=8 align=4
+ base size=8 base align=4
+QInputContext (0xb25f37c0) 0
+ vptr=((& QInputContext::_ZTV13QInputContext) + 8u)
+ QObject (0xb241603c) 0
+ primary-for QInputContext (0xb25f37c0)
+
+Class QInputContextFactory
+ size=1 align=1
+ base size=0 base align=1
+QInputContextFactory (0xb2416258) 0 empty
+
+Vtable for QInputContextFactoryInterface
+QInputContextFactoryInterface::_ZTV29QInputContextFactoryInterface: 9u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI29QInputContextFactoryInterface)
+8 QInputContextFactoryInterface::~QInputContextFactoryInterface
+12 QInputContextFactoryInterface::~QInputContextFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+
+Class QInputContextFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QInputContextFactoryInterface (0xb25f3ac0) 0 nearly-empty
+ vptr=((& QInputContextFactoryInterface::_ZTV29QInputContextFactoryInterface) + 8u)
+ QFactoryInterface (0xb2416294) 0 nearly-empty
+ primary-for QInputContextFactoryInterface (0xb25f3ac0)
+
+Vtable for QInputContextPlugin
+QInputContextPlugin::_ZTV19QInputContextPlugin: 28u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QInputContextPlugin)
+8 QInputContextPlugin::metaObject
+12 QInputContextPlugin::qt_metacast
+16 QInputContextPlugin::qt_metacall
+20 QInputContextPlugin::~QInputContextPlugin
+24 QInputContextPlugin::~QInputContextPlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 (int (*)(...))-0x000000008
+80 (int (*)(...))(& _ZTI19QInputContextPlugin)
+84 QInputContextPlugin::_ZThn8_N19QInputContextPluginD1Ev
+88 QInputContextPlugin::_ZThn8_N19QInputContextPluginD0Ev
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+
+Class QInputContextPlugin
+ size=12 align=4
+ base size=12 base align=4
+QInputContextPlugin (0xb2425d20) 0
+ vptr=((& QInputContextPlugin::_ZTV19QInputContextPlugin) + 8u)
+ QObject (0xb24165a0) 0
+ primary-for QInputContextPlugin (0xb2425d20)
+ QInputContextFactoryInterface (0xb25f3d80) 8 nearly-empty
+ vptr=((& QInputContextPlugin::_ZTV19QInputContextPlugin) + 84u)
+ QFactoryInterface (0xb24165dc) 8 nearly-empty
+ primary-for QInputContextFactoryInterface (0xb25f3d80)
+
+Vtable for QGraphicsItem
+QGraphicsItem::_ZTV13QGraphicsItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QGraphicsItem)
+8 QGraphicsItem::~QGraphicsItem
+12 QGraphicsItem::~QGraphicsItem
+16 QGraphicsItem::advance
+20 __cxa_pure_virtual
+24 QGraphicsItem::shape
+28 QGraphicsItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsItem::isObscuredBy
+44 QGraphicsItem::opaqueArea
+48 __cxa_pure_virtual
+52 QGraphicsItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsItem::supportsExtension
+148 QGraphicsItem::setExtension
+152 QGraphicsItem::extension
+
+Class QGraphicsItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsItem (0xb2416708) 0
+ vptr=((& QGraphicsItem::_ZTV13QGraphicsItem) + 8u)
+
+Vtable for QGraphicsObject
+QGraphicsObject::_ZTV15QGraphicsObject: 53u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QGraphicsObject)
+8 QGraphicsObject::metaObject
+12 QGraphicsObject::qt_metacast
+16 QGraphicsObject::qt_metacall
+20 QGraphicsObject::~QGraphicsObject
+24 QGraphicsObject::~QGraphicsObject
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 (int (*)(...))-0x000000008
+60 (int (*)(...))(& _ZTI15QGraphicsObject)
+64 QGraphicsObject::_ZThn8_N15QGraphicsObjectD1Ev
+68 QGraphicsObject::_ZThn8_N15QGraphicsObjectD0Ev
+72 QGraphicsItem::advance
+76 __cxa_pure_virtual
+80 QGraphicsItem::shape
+84 QGraphicsItem::contains
+88 QGraphicsItem::collidesWithItem
+92 QGraphicsItem::collidesWithPath
+96 QGraphicsItem::isObscuredBy
+100 QGraphicsItem::opaqueArea
+104 __cxa_pure_virtual
+108 QGraphicsItem::type
+112 QGraphicsItem::sceneEventFilter
+116 QGraphicsItem::sceneEvent
+120 QGraphicsItem::contextMenuEvent
+124 QGraphicsItem::dragEnterEvent
+128 QGraphicsItem::dragLeaveEvent
+132 QGraphicsItem::dragMoveEvent
+136 QGraphicsItem::dropEvent
+140 QGraphicsItem::focusInEvent
+144 QGraphicsItem::focusOutEvent
+148 QGraphicsItem::hoverEnterEvent
+152 QGraphicsItem::hoverMoveEvent
+156 QGraphicsItem::hoverLeaveEvent
+160 QGraphicsItem::keyPressEvent
+164 QGraphicsItem::keyReleaseEvent
+168 QGraphicsItem::mousePressEvent
+172 QGraphicsItem::mouseMoveEvent
+176 QGraphicsItem::mouseReleaseEvent
+180 QGraphicsItem::mouseDoubleClickEvent
+184 QGraphicsItem::wheelEvent
+188 QGraphicsItem::inputMethodEvent
+192 QGraphicsItem::inputMethodQuery
+196 QGraphicsItem::itemChange
+200 QGraphicsItem::supportsExtension
+204 QGraphicsItem::setExtension
+208 QGraphicsItem::extension
+
+Class QGraphicsObject
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsObject (0xb24b9910) 0
+ vptr=((& QGraphicsObject::_ZTV15QGraphicsObject) + 8u)
+ QObject (0xb24b18e8) 0
+ primary-for QGraphicsObject (0xb24b9910)
+ QGraphicsItem (0xb24b1924) 8
+ vptr=((& QGraphicsObject::_ZTV15QGraphicsObject) + 64u)
+
+Vtable for QAbstractGraphicsShapeItem
+QAbstractGraphicsShapeItem::_ZTV26QAbstractGraphicsShapeItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI26QAbstractGraphicsShapeItem)
+8 QAbstractGraphicsShapeItem::~QAbstractGraphicsShapeItem
+12 QAbstractGraphicsShapeItem::~QAbstractGraphicsShapeItem
+16 QGraphicsItem::advance
+20 __cxa_pure_virtual
+24 QGraphicsItem::shape
+28 QGraphicsItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QAbstractGraphicsShapeItem::isObscuredBy
+44 QAbstractGraphicsShapeItem::opaqueArea
+48 __cxa_pure_virtual
+52 QGraphicsItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsItem::supportsExtension
+148 QGraphicsItem::setExtension
+152 QGraphicsItem::extension
+
+Class QAbstractGraphicsShapeItem
+ size=8 align=4
+ base size=8 base align=4
+QAbstractGraphicsShapeItem (0xb245ee40) 0
+ vptr=((& QAbstractGraphicsShapeItem::_ZTV26QAbstractGraphicsShapeItem) + 8u)
+ QGraphicsItem (0xb24b1a50) 0
+ primary-for QAbstractGraphicsShapeItem (0xb245ee40)
+
+Vtable for QGraphicsPathItem
+QGraphicsPathItem::_ZTV17QGraphicsPathItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QGraphicsPathItem)
+8 QGraphicsPathItem::~QGraphicsPathItem
+12 QGraphicsPathItem::~QGraphicsPathItem
+16 QGraphicsItem::advance
+20 QGraphicsPathItem::boundingRect
+24 QGraphicsPathItem::shape
+28 QGraphicsPathItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsPathItem::isObscuredBy
+44 QGraphicsPathItem::opaqueArea
+48 QGraphicsPathItem::paint
+52 QGraphicsPathItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsPathItem::supportsExtension
+148 QGraphicsPathItem::setExtension
+152 QGraphicsPathItem::extension
+
+Class QGraphicsPathItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsPathItem (0xb245ef40) 0
+ vptr=((& QGraphicsPathItem::_ZTV17QGraphicsPathItem) + 8u)
+ QAbstractGraphicsShapeItem (0xb245ef80) 0
+ primary-for QGraphicsPathItem (0xb245ef40)
+ QGraphicsItem (0xb24b1b7c) 0
+ primary-for QAbstractGraphicsShapeItem (0xb245ef80)
+
+Vtable for QGraphicsRectItem
+QGraphicsRectItem::_ZTV17QGraphicsRectItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QGraphicsRectItem)
+8 QGraphicsRectItem::~QGraphicsRectItem
+12 QGraphicsRectItem::~QGraphicsRectItem
+16 QGraphicsItem::advance
+20 QGraphicsRectItem::boundingRect
+24 QGraphicsRectItem::shape
+28 QGraphicsRectItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsRectItem::isObscuredBy
+44 QGraphicsRectItem::opaqueArea
+48 QGraphicsRectItem::paint
+52 QGraphicsRectItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsRectItem::supportsExtension
+148 QGraphicsRectItem::setExtension
+152 QGraphicsRectItem::extension
+
+Class QGraphicsRectItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsRectItem (0xb24d7080) 0
+ vptr=((& QGraphicsRectItem::_ZTV17QGraphicsRectItem) + 8u)
+ QAbstractGraphicsShapeItem (0xb24d70c0) 0
+ primary-for QGraphicsRectItem (0xb24d7080)
+ QGraphicsItem (0xb24b1ca8) 0
+ primary-for QAbstractGraphicsShapeItem (0xb24d70c0)
+
+Vtable for QGraphicsEllipseItem
+QGraphicsEllipseItem::_ZTV20QGraphicsEllipseItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QGraphicsEllipseItem)
+8 QGraphicsEllipseItem::~QGraphicsEllipseItem
+12 QGraphicsEllipseItem::~QGraphicsEllipseItem
+16 QGraphicsItem::advance
+20 QGraphicsEllipseItem::boundingRect
+24 QGraphicsEllipseItem::shape
+28 QGraphicsEllipseItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsEllipseItem::isObscuredBy
+44 QGraphicsEllipseItem::opaqueArea
+48 QGraphicsEllipseItem::paint
+52 QGraphicsEllipseItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsEllipseItem::supportsExtension
+148 QGraphicsEllipseItem::setExtension
+152 QGraphicsEllipseItem::extension
+
+Class QGraphicsEllipseItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsEllipseItem (0xb24d7200) 0
+ vptr=((& QGraphicsEllipseItem::_ZTV20QGraphicsEllipseItem) + 8u)
+ QAbstractGraphicsShapeItem (0xb24d7240) 0
+ primary-for QGraphicsEllipseItem (0xb24d7200)
+ QGraphicsItem (0xb24b1e88) 0
+ primary-for QAbstractGraphicsShapeItem (0xb24d7240)
+
+Vtable for QGraphicsPolygonItem
+QGraphicsPolygonItem::_ZTV20QGraphicsPolygonItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QGraphicsPolygonItem)
+8 QGraphicsPolygonItem::~QGraphicsPolygonItem
+12 QGraphicsPolygonItem::~QGraphicsPolygonItem
+16 QGraphicsItem::advance
+20 QGraphicsPolygonItem::boundingRect
+24 QGraphicsPolygonItem::shape
+28 QGraphicsPolygonItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsPolygonItem::isObscuredBy
+44 QGraphicsPolygonItem::opaqueArea
+48 QGraphicsPolygonItem::paint
+52 QGraphicsPolygonItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsPolygonItem::supportsExtension
+148 QGraphicsPolygonItem::setExtension
+152 QGraphicsPolygonItem::extension
+
+Class QGraphicsPolygonItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsPolygonItem (0xb24d7380) 0
+ vptr=((& QGraphicsPolygonItem::_ZTV20QGraphicsPolygonItem) + 8u)
+ QAbstractGraphicsShapeItem (0xb24d73c0) 0
+ primary-for QGraphicsPolygonItem (0xb24d7380)
+ QGraphicsItem (0xb24f2078) 0
+ primary-for QAbstractGraphicsShapeItem (0xb24d73c0)
+
+Vtable for QGraphicsLineItem
+QGraphicsLineItem::_ZTV17QGraphicsLineItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QGraphicsLineItem)
+8 QGraphicsLineItem::~QGraphicsLineItem
+12 QGraphicsLineItem::~QGraphicsLineItem
+16 QGraphicsItem::advance
+20 QGraphicsLineItem::boundingRect
+24 QGraphicsLineItem::shape
+28 QGraphicsLineItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsLineItem::isObscuredBy
+44 QGraphicsLineItem::opaqueArea
+48 QGraphicsLineItem::paint
+52 QGraphicsLineItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsLineItem::supportsExtension
+148 QGraphicsLineItem::setExtension
+152 QGraphicsLineItem::extension
+
+Class QGraphicsLineItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsLineItem (0xb24d74c0) 0
+ vptr=((& QGraphicsLineItem::_ZTV17QGraphicsLineItem) + 8u)
+ QGraphicsItem (0xb24f21a4) 0
+ primary-for QGraphicsLineItem (0xb24d74c0)
+
+Vtable for QGraphicsPixmapItem
+QGraphicsPixmapItem::_ZTV19QGraphicsPixmapItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QGraphicsPixmapItem)
+8 QGraphicsPixmapItem::~QGraphicsPixmapItem
+12 QGraphicsPixmapItem::~QGraphicsPixmapItem
+16 QGraphicsItem::advance
+20 QGraphicsPixmapItem::boundingRect
+24 QGraphicsPixmapItem::shape
+28 QGraphicsPixmapItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsPixmapItem::isObscuredBy
+44 QGraphicsPixmapItem::opaqueArea
+48 QGraphicsPixmapItem::paint
+52 QGraphicsPixmapItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsPixmapItem::supportsExtension
+148 QGraphicsPixmapItem::setExtension
+152 QGraphicsPixmapItem::extension
+
+Class QGraphicsPixmapItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsPixmapItem (0xb24d7600) 0
+ vptr=((& QGraphicsPixmapItem::_ZTV19QGraphicsPixmapItem) + 8u)
+ QGraphicsItem (0xb24f2384) 0
+ primary-for QGraphicsPixmapItem (0xb24d7600)
+
+Vtable for QGraphicsTextItem
+QGraphicsTextItem::_ZTV17QGraphicsTextItem: 82u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QGraphicsTextItem)
+8 QGraphicsTextItem::metaObject
+12 QGraphicsTextItem::qt_metacast
+16 QGraphicsTextItem::qt_metacall
+20 QGraphicsTextItem::~QGraphicsTextItem
+24 QGraphicsTextItem::~QGraphicsTextItem
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsTextItem::boundingRect
+60 QGraphicsTextItem::shape
+64 QGraphicsTextItem::contains
+68 QGraphicsTextItem::paint
+72 QGraphicsTextItem::isObscuredBy
+76 QGraphicsTextItem::opaqueArea
+80 QGraphicsTextItem::type
+84 QGraphicsTextItem::sceneEvent
+88 QGraphicsTextItem::mousePressEvent
+92 QGraphicsTextItem::mouseMoveEvent
+96 QGraphicsTextItem::mouseReleaseEvent
+100 QGraphicsTextItem::mouseDoubleClickEvent
+104 QGraphicsTextItem::contextMenuEvent
+108 QGraphicsTextItem::keyPressEvent
+112 QGraphicsTextItem::keyReleaseEvent
+116 QGraphicsTextItem::focusInEvent
+120 QGraphicsTextItem::focusOutEvent
+124 QGraphicsTextItem::dragEnterEvent
+128 QGraphicsTextItem::dragLeaveEvent
+132 QGraphicsTextItem::dragMoveEvent
+136 QGraphicsTextItem::dropEvent
+140 QGraphicsTextItem::inputMethodEvent
+144 QGraphicsTextItem::hoverEnterEvent
+148 QGraphicsTextItem::hoverMoveEvent
+152 QGraphicsTextItem::hoverLeaveEvent
+156 QGraphicsTextItem::inputMethodQuery
+160 QGraphicsTextItem::supportsExtension
+164 QGraphicsTextItem::setExtension
+168 QGraphicsTextItem::extension
+172 (int (*)(...))-0x000000008
+176 (int (*)(...))(& _ZTI17QGraphicsTextItem)
+180 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItemD1Ev
+184 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItemD0Ev
+188 QGraphicsItem::advance
+192 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem12boundingRectEv
+196 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem5shapeEv
+200 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem8containsERK7QPointF
+204 QGraphicsItem::collidesWithItem
+208 QGraphicsItem::collidesWithPath
+212 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem12isObscuredByEPK13QGraphicsItem
+216 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem10opaqueAreaEv
+220 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+224 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem4typeEv
+228 QGraphicsItem::sceneEventFilter
+232 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem10sceneEventEP6QEvent
+236 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem16contextMenuEventEP30QGraphicsSceneContextMenuEvent
+240 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem14dragEnterEventEP27QGraphicsSceneDragDropEvent
+244 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem14dragLeaveEventEP27QGraphicsSceneDragDropEvent
+248 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem13dragMoveEventEP27QGraphicsSceneDragDropEvent
+252 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem9dropEventEP27QGraphicsSceneDragDropEvent
+256 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem12focusInEventEP11QFocusEvent
+260 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem13focusOutEventEP11QFocusEvent
+264 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem15hoverEnterEventEP24QGraphicsSceneHoverEvent
+268 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem14hoverMoveEventEP24QGraphicsSceneHoverEvent
+272 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+276 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem13keyPressEventEP9QKeyEvent
+280 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem15keyReleaseEventEP9QKeyEvent
+284 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem15mousePressEventEP24QGraphicsSceneMouseEvent
+288 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem14mouseMoveEventEP24QGraphicsSceneMouseEvent
+292 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem17mouseReleaseEventEP24QGraphicsSceneMouseEvent
+296 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent
+300 QGraphicsItem::wheelEvent
+304 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem16inputMethodEventEP17QInputMethodEvent
+308 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem16inputMethodQueryEN2Qt16InputMethodQueryE
+312 QGraphicsItem::itemChange
+316 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem17supportsExtensionEN13QGraphicsItem9ExtensionE
+320 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem12setExtensionEN13QGraphicsItem9ExtensionERK8QVariant
+324 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem9extensionERK8QVariant
+
+Class QGraphicsTextItem
+ size=20 align=4
+ base size=20 base align=4
+QGraphicsTextItem (0xb24d7740) 0
+ vptr=((& QGraphicsTextItem::_ZTV17QGraphicsTextItem) + 8u)
+ QGraphicsObject (0xb230ec80) 0
+ primary-for QGraphicsTextItem (0xb24d7740)
+ QObject (0xb24f24b0) 0
+ primary-for QGraphicsObject (0xb230ec80)
+ QGraphicsItem (0xb24f24ec) 8
+ vptr=((& QGraphicsTextItem::_ZTV17QGraphicsTextItem) + 180u)
+
+Vtable for QGraphicsSimpleTextItem
+QGraphicsSimpleTextItem::_ZTV23QGraphicsSimpleTextItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QGraphicsSimpleTextItem)
+8 QGraphicsSimpleTextItem::~QGraphicsSimpleTextItem
+12 QGraphicsSimpleTextItem::~QGraphicsSimpleTextItem
+16 QGraphicsItem::advance
+20 QGraphicsSimpleTextItem::boundingRect
+24 QGraphicsSimpleTextItem::shape
+28 QGraphicsSimpleTextItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsSimpleTextItem::isObscuredBy
+44 QGraphicsSimpleTextItem::opaqueArea
+48 QGraphicsSimpleTextItem::paint
+52 QGraphicsSimpleTextItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsSimpleTextItem::supportsExtension
+148 QGraphicsSimpleTextItem::setExtension
+152 QGraphicsSimpleTextItem::extension
+
+Class QGraphicsSimpleTextItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsSimpleTextItem (0xb24d79c0) 0
+ vptr=((& QGraphicsSimpleTextItem::_ZTV23QGraphicsSimpleTextItem) + 8u)
+ QAbstractGraphicsShapeItem (0xb24d7a00) 0
+ primary-for QGraphicsSimpleTextItem (0xb24d79c0)
+ QGraphicsItem (0xb24f26cc) 0
+ primary-for QAbstractGraphicsShapeItem (0xb24d7a00)
+
+Vtable for QGraphicsItemGroup
+QGraphicsItemGroup::_ZTV18QGraphicsItemGroup: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QGraphicsItemGroup)
+8 QGraphicsItemGroup::~QGraphicsItemGroup
+12 QGraphicsItemGroup::~QGraphicsItemGroup
+16 QGraphicsItem::advance
+20 QGraphicsItemGroup::boundingRect
+24 QGraphicsItem::shape
+28 QGraphicsItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsItemGroup::isObscuredBy
+44 QGraphicsItemGroup::opaqueArea
+48 QGraphicsItemGroup::paint
+52 QGraphicsItemGroup::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsItem::supportsExtension
+148 QGraphicsItem::setExtension
+152 QGraphicsItem::extension
+
+Class QGraphicsItemGroup
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsItemGroup (0xb24d7b00) 0
+ vptr=((& QGraphicsItemGroup::_ZTV18QGraphicsItemGroup) + 8u)
+ QGraphicsItem (0xb24f27f8) 0
+ primary-for QGraphicsItemGroup (0xb24d7b00)
+
+Vtable for QGraphicsLayoutItem
+QGraphicsLayoutItem::_ZTV19QGraphicsLayoutItem: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QGraphicsLayoutItem)
+8 QGraphicsLayoutItem::~QGraphicsLayoutItem
+12 QGraphicsLayoutItem::~QGraphicsLayoutItem
+16 QGraphicsLayoutItem::setGeometry
+20 QGraphicsLayoutItem::getContentsMargins
+24 QGraphicsLayoutItem::updateGeometry
+28 __cxa_pure_virtual
+
+Class QGraphicsLayoutItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsLayoutItem (0xb24f2a8c) 0
+ vptr=((& QGraphicsLayoutItem::_ZTV19QGraphicsLayoutItem) + 8u)
+
+Vtable for QGraphicsLayout
+QGraphicsLayout::_ZTV15QGraphicsLayout: 13u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QGraphicsLayout)
+8 QGraphicsLayout::~QGraphicsLayout
+12 QGraphicsLayout::~QGraphicsLayout
+16 QGraphicsLayoutItem::setGeometry
+20 QGraphicsLayout::getContentsMargins
+24 QGraphicsLayout::updateGeometry
+28 __cxa_pure_virtual
+32 QGraphicsLayout::invalidate
+36 QGraphicsLayout::widgetEvent
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 __cxa_pure_virtual
+
+Class QGraphicsLayout
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsLayout (0xb23515c0) 0
+ vptr=((& QGraphicsLayout::_ZTV15QGraphicsLayout) + 8u)
+ QGraphicsLayoutItem (0xb235f03c) 0
+ primary-for QGraphicsLayout (0xb23515c0)
+
+Vtable for QGraphicsAnchor
+QGraphicsAnchor::_ZTV15QGraphicsAnchor: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QGraphicsAnchor)
+8 QGraphicsAnchor::metaObject
+12 QGraphicsAnchor::qt_metacast
+16 QGraphicsAnchor::qt_metacall
+20 QGraphicsAnchor::~QGraphicsAnchor
+24 QGraphicsAnchor::~QGraphicsAnchor
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QGraphicsAnchor
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsAnchor (0xb2351900) 0
+ vptr=((& QGraphicsAnchor::_ZTV15QGraphicsAnchor) + 8u)
+ QObject (0xb235f4ec) 0
+ primary-for QGraphicsAnchor (0xb2351900)
+
+Vtable for QGraphicsAnchorLayout
+QGraphicsAnchorLayout::_ZTV21QGraphicsAnchorLayout: 13u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QGraphicsAnchorLayout)
+8 QGraphicsAnchorLayout::~QGraphicsAnchorLayout
+12 QGraphicsAnchorLayout::~QGraphicsAnchorLayout
+16 QGraphicsAnchorLayout::setGeometry
+20 QGraphicsLayout::getContentsMargins
+24 QGraphicsLayout::updateGeometry
+28 QGraphicsAnchorLayout::sizeHint
+32 QGraphicsAnchorLayout::invalidate
+36 QGraphicsLayout::widgetEvent
+40 QGraphicsAnchorLayout::count
+44 QGraphicsAnchorLayout::itemAt
+48 QGraphicsAnchorLayout::removeAt
+
+Class QGraphicsAnchorLayout
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsAnchorLayout (0xb2351bc0) 0
+ vptr=((& QGraphicsAnchorLayout::_ZTV21QGraphicsAnchorLayout) + 8u)
+ QGraphicsLayout (0xb2351c00) 0
+ primary-for QGraphicsAnchorLayout (0xb2351bc0)
+ QGraphicsLayoutItem (0xb235f708) 0
+ primary-for QGraphicsLayout (0xb2351c00)
+
+Vtable for QGraphicsGridLayout
+QGraphicsGridLayout::_ZTV19QGraphicsGridLayout: 13u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QGraphicsGridLayout)
+8 QGraphicsGridLayout::~QGraphicsGridLayout
+12 QGraphicsGridLayout::~QGraphicsGridLayout
+16 QGraphicsGridLayout::setGeometry
+20 QGraphicsLayout::getContentsMargins
+24 QGraphicsLayout::updateGeometry
+28 QGraphicsGridLayout::sizeHint
+32 QGraphicsGridLayout::invalidate
+36 QGraphicsLayout::widgetEvent
+40 QGraphicsGridLayout::count
+44 QGraphicsGridLayout::itemAt
+48 QGraphicsGridLayout::removeAt
+
+Class QGraphicsGridLayout
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsGridLayout (0xb2351d00) 0
+ vptr=((& QGraphicsGridLayout::_ZTV19QGraphicsGridLayout) + 8u)
+ QGraphicsLayout (0xb2351d40) 0
+ primary-for QGraphicsGridLayout (0xb2351d00)
+ QGraphicsLayoutItem (0xb235f834) 0
+ primary-for QGraphicsLayout (0xb2351d40)
+
+Vtable for QGraphicsItemAnimation
+QGraphicsItemAnimation::_ZTV22QGraphicsItemAnimation: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QGraphicsItemAnimation)
+8 QGraphicsItemAnimation::metaObject
+12 QGraphicsItemAnimation::qt_metacast
+16 QGraphicsItemAnimation::qt_metacall
+20 QGraphicsItemAnimation::~QGraphicsItemAnimation
+24 QGraphicsItemAnimation::~QGraphicsItemAnimation
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsItemAnimation::beforeAnimationStep
+60 QGraphicsItemAnimation::afterAnimationStep
+
+Class QGraphicsItemAnimation
+ size=12 align=4
+ base size=12 base align=4
+QGraphicsItemAnimation (0xb2351e80) 0
+ vptr=((& QGraphicsItemAnimation::_ZTV22QGraphicsItemAnimation) + 8u)
+ QObject (0xb235f960) 0
+ primary-for QGraphicsItemAnimation (0xb2351e80)
+
+Vtable for QGraphicsLinearLayout
+QGraphicsLinearLayout::_ZTV21QGraphicsLinearLayout: 13u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QGraphicsLinearLayout)
+8 QGraphicsLinearLayout::~QGraphicsLinearLayout
+12 QGraphicsLinearLayout::~QGraphicsLinearLayout
+16 QGraphicsLinearLayout::setGeometry
+20 QGraphicsLayout::getContentsMargins
+24 QGraphicsLayout::updateGeometry
+28 QGraphicsLinearLayout::sizeHint
+32 QGraphicsLinearLayout::invalidate
+36 QGraphicsLayout::widgetEvent
+40 QGraphicsLinearLayout::count
+44 QGraphicsLinearLayout::itemAt
+48 QGraphicsLinearLayout::removeAt
+
+Class QGraphicsLinearLayout
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsLinearLayout (0xb239a0c0) 0
+ vptr=((& QGraphicsLinearLayout::_ZTV21QGraphicsLinearLayout) + 8u)
+ QGraphicsLayout (0xb239a100) 0
+ primary-for QGraphicsLinearLayout (0xb239a0c0)
+ QGraphicsLayoutItem (0xb235fa8c) 0
+ primary-for QGraphicsLayout (0xb239a100)
+
+Vtable for QGraphicsWidget
+QGraphicsWidget::_ZTV15QGraphicsWidget: 92u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QGraphicsWidget)
+8 QGraphicsWidget::metaObject
+12 QGraphicsWidget::qt_metacast
+16 QGraphicsWidget::qt_metacall
+20 QGraphicsWidget::~QGraphicsWidget
+24 QGraphicsWidget::~QGraphicsWidget
+28 QGraphicsWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsWidget::setGeometry
+60 QGraphicsWidget::getContentsMargins
+64 QGraphicsWidget::type
+68 QGraphicsWidget::paint
+72 QGraphicsWidget::paintWindowFrame
+76 QGraphicsWidget::boundingRect
+80 QGraphicsWidget::shape
+84 QGraphicsWidget::initStyleOption
+88 QGraphicsWidget::sizeHint
+92 QGraphicsWidget::updateGeometry
+96 QGraphicsWidget::itemChange
+100 QGraphicsWidget::propertyChange
+104 QGraphicsWidget::sceneEvent
+108 QGraphicsWidget::windowFrameEvent
+112 QGraphicsWidget::windowFrameSectionAt
+116 QGraphicsWidget::changeEvent
+120 QGraphicsWidget::closeEvent
+124 QGraphicsWidget::focusInEvent
+128 QGraphicsWidget::focusNextPrevChild
+132 QGraphicsWidget::focusOutEvent
+136 QGraphicsWidget::hideEvent
+140 QGraphicsWidget::moveEvent
+144 QGraphicsWidget::polishEvent
+148 QGraphicsWidget::resizeEvent
+152 QGraphicsWidget::showEvent
+156 QGraphicsWidget::hoverMoveEvent
+160 QGraphicsWidget::hoverLeaveEvent
+164 QGraphicsWidget::grabMouseEvent
+168 QGraphicsWidget::ungrabMouseEvent
+172 QGraphicsWidget::grabKeyboardEvent
+176 QGraphicsWidget::ungrabKeyboardEvent
+180 (int (*)(...))-0x000000008
+184 (int (*)(...))(& _ZTI15QGraphicsWidget)
+188 QGraphicsWidget::_ZThn8_N15QGraphicsWidgetD1Ev
+192 QGraphicsWidget::_ZThn8_N15QGraphicsWidgetD0Ev
+196 QGraphicsItem::advance
+200 QGraphicsWidget::_ZThn8_NK15QGraphicsWidget12boundingRectEv
+204 QGraphicsWidget::_ZThn8_NK15QGraphicsWidget5shapeEv
+208 QGraphicsItem::contains
+212 QGraphicsItem::collidesWithItem
+216 QGraphicsItem::collidesWithPath
+220 QGraphicsItem::isObscuredBy
+224 QGraphicsItem::opaqueArea
+228 QGraphicsWidget::_ZThn8_N15QGraphicsWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+232 QGraphicsWidget::_ZThn8_NK15QGraphicsWidget4typeEv
+236 QGraphicsItem::sceneEventFilter
+240 QGraphicsWidget::_ZThn8_N15QGraphicsWidget10sceneEventEP6QEvent
+244 QGraphicsItem::contextMenuEvent
+248 QGraphicsItem::dragEnterEvent
+252 QGraphicsItem::dragLeaveEvent
+256 QGraphicsItem::dragMoveEvent
+260 QGraphicsItem::dropEvent
+264 QGraphicsWidget::_ZThn8_N15QGraphicsWidget12focusInEventEP11QFocusEvent
+268 QGraphicsWidget::_ZThn8_N15QGraphicsWidget13focusOutEventEP11QFocusEvent
+272 QGraphicsItem::hoverEnterEvent
+276 QGraphicsWidget::_ZThn8_N15QGraphicsWidget14hoverMoveEventEP24QGraphicsSceneHoverEvent
+280 QGraphicsWidget::_ZThn8_N15QGraphicsWidget15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+284 QGraphicsItem::keyPressEvent
+288 QGraphicsItem::keyReleaseEvent
+292 QGraphicsItem::mousePressEvent
+296 QGraphicsItem::mouseMoveEvent
+300 QGraphicsItem::mouseReleaseEvent
+304 QGraphicsItem::mouseDoubleClickEvent
+308 QGraphicsItem::wheelEvent
+312 QGraphicsItem::inputMethodEvent
+316 QGraphicsItem::inputMethodQuery
+320 QGraphicsWidget::_ZThn8_N15QGraphicsWidget10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant
+324 QGraphicsItem::supportsExtension
+328 QGraphicsItem::setExtension
+332 QGraphicsItem::extension
+336 (int (*)(...))-0x000000010
+340 (int (*)(...))(& _ZTI15QGraphicsWidget)
+344 QGraphicsWidget::_ZThn16_N15QGraphicsWidgetD1Ev
+348 QGraphicsWidget::_ZThn16_N15QGraphicsWidgetD0Ev
+352 QGraphicsWidget::_ZThn16_N15QGraphicsWidget11setGeometryERK6QRectF
+356 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget18getContentsMarginsEPdS0_S0_S0_
+360 QGraphicsWidget::_ZThn16_N15QGraphicsWidget14updateGeometryEv
+364 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget8sizeHintEN2Qt8SizeHintERK6QSizeF
+
+Class QGraphicsWidget
+ size=24 align=4
+ base size=24 base align=4
+QGraphicsWidget (0xb23a5a00) 0
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 8u)
+ QGraphicsObject (0xb23a5a50) 0
+ primary-for QGraphicsWidget (0xb23a5a00)
+ QObject (0xb235fbb8) 0
+ primary-for QGraphicsObject (0xb23a5a50)
+ QGraphicsItem (0xb235fbf4) 8
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 188u)
+ QGraphicsLayoutItem (0xb235fc30) 16
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 344u)
+
+Vtable for QGraphicsProxyWidget
+QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget: 105u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+8 QGraphicsProxyWidget::metaObject
+12 QGraphicsProxyWidget::qt_metacast
+16 QGraphicsProxyWidget::qt_metacall
+20 QGraphicsProxyWidget::~QGraphicsProxyWidget
+24 QGraphicsProxyWidget::~QGraphicsProxyWidget
+28 QGraphicsProxyWidget::event
+32 QGraphicsProxyWidget::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsProxyWidget::setGeometry
+60 QGraphicsWidget::getContentsMargins
+64 QGraphicsProxyWidget::type
+68 QGraphicsProxyWidget::paint
+72 QGraphicsWidget::paintWindowFrame
+76 QGraphicsWidget::boundingRect
+80 QGraphicsWidget::shape
+84 QGraphicsWidget::initStyleOption
+88 QGraphicsProxyWidget::sizeHint
+92 QGraphicsWidget::updateGeometry
+96 QGraphicsProxyWidget::itemChange
+100 QGraphicsWidget::propertyChange
+104 QGraphicsWidget::sceneEvent
+108 QGraphicsWidget::windowFrameEvent
+112 QGraphicsWidget::windowFrameSectionAt
+116 QGraphicsWidget::changeEvent
+120 QGraphicsWidget::closeEvent
+124 QGraphicsProxyWidget::focusInEvent
+128 QGraphicsProxyWidget::focusNextPrevChild
+132 QGraphicsProxyWidget::focusOutEvent
+136 QGraphicsProxyWidget::hideEvent
+140 QGraphicsWidget::moveEvent
+144 QGraphicsWidget::polishEvent
+148 QGraphicsProxyWidget::resizeEvent
+152 QGraphicsProxyWidget::showEvent
+156 QGraphicsProxyWidget::hoverMoveEvent
+160 QGraphicsProxyWidget::hoverLeaveEvent
+164 QGraphicsProxyWidget::grabMouseEvent
+168 QGraphicsProxyWidget::ungrabMouseEvent
+172 QGraphicsWidget::grabKeyboardEvent
+176 QGraphicsWidget::ungrabKeyboardEvent
+180 QGraphicsProxyWidget::contextMenuEvent
+184 QGraphicsProxyWidget::dragEnterEvent
+188 QGraphicsProxyWidget::dragLeaveEvent
+192 QGraphicsProxyWidget::dragMoveEvent
+196 QGraphicsProxyWidget::dropEvent
+200 QGraphicsProxyWidget::hoverEnterEvent
+204 QGraphicsProxyWidget::mouseMoveEvent
+208 QGraphicsProxyWidget::mousePressEvent
+212 QGraphicsProxyWidget::mouseReleaseEvent
+216 QGraphicsProxyWidget::mouseDoubleClickEvent
+220 QGraphicsProxyWidget::wheelEvent
+224 QGraphicsProxyWidget::keyPressEvent
+228 QGraphicsProxyWidget::keyReleaseEvent
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+240 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidgetD1Ev
+244 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidgetD0Ev
+248 QGraphicsItem::advance
+252 QGraphicsWidget::_ZThn8_NK15QGraphicsWidget12boundingRectEv
+256 QGraphicsWidget::_ZThn8_NK15QGraphicsWidget5shapeEv
+260 QGraphicsItem::contains
+264 QGraphicsItem::collidesWithItem
+268 QGraphicsItem::collidesWithPath
+272 QGraphicsItem::isObscuredBy
+276 QGraphicsItem::opaqueArea
+280 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+284 QGraphicsProxyWidget::_ZThn8_NK20QGraphicsProxyWidget4typeEv
+288 QGraphicsItem::sceneEventFilter
+292 QGraphicsWidget::_ZThn8_N15QGraphicsWidget10sceneEventEP6QEvent
+296 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget16contextMenuEventEP30QGraphicsSceneContextMenuEvent
+300 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget14dragEnterEventEP27QGraphicsSceneDragDropEvent
+304 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget14dragLeaveEventEP27QGraphicsSceneDragDropEvent
+308 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget13dragMoveEventEP27QGraphicsSceneDragDropEvent
+312 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget9dropEventEP27QGraphicsSceneDragDropEvent
+316 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget12focusInEventEP11QFocusEvent
+320 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget13focusOutEventEP11QFocusEvent
+324 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget15hoverEnterEventEP24QGraphicsSceneHoverEvent
+328 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget14hoverMoveEventEP24QGraphicsSceneHoverEvent
+332 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+336 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget13keyPressEventEP9QKeyEvent
+340 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget15keyReleaseEventEP9QKeyEvent
+344 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget15mousePressEventEP24QGraphicsSceneMouseEvent
+348 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget14mouseMoveEventEP24QGraphicsSceneMouseEvent
+352 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget17mouseReleaseEventEP24QGraphicsSceneMouseEvent
+356 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent
+360 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget10wheelEventEP24QGraphicsSceneWheelEvent
+364 QGraphicsItem::inputMethodEvent
+368 QGraphicsItem::inputMethodQuery
+372 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant
+376 QGraphicsItem::supportsExtension
+380 QGraphicsItem::setExtension
+384 QGraphicsItem::extension
+388 (int (*)(...))-0x000000010
+392 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+396 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidgetD1Ev
+400 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidgetD0Ev
+404 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget11setGeometryERK6QRectF
+408 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget18getContentsMarginsEPdS0_S0_S0_
+412 QGraphicsWidget::_ZThn16_N15QGraphicsWidget14updateGeometryEv
+416 QGraphicsProxyWidget::_ZThn16_NK20QGraphicsProxyWidget8sizeHintEN2Qt8SizeHintERK6QSizeF
+
+Class QGraphicsProxyWidget
+ size=24 align=4
+ base size=24 base align=4
+QGraphicsProxyWidget (0xb239a640) 0
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 8u)
+ QGraphicsWidget (0xb23c0b90) 0
+ primary-for QGraphicsProxyWidget (0xb239a640)
+ QGraphicsObject (0xb23c0be0) 0
+ primary-for QGraphicsWidget (0xb23c0b90)
+ QObject (0xb235ffb4) 0
+ primary-for QGraphicsObject (0xb23c0be0)
+ QGraphicsItem (0xb23cc000) 8
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 240u)
+ QGraphicsLayoutItem (0xb23cc03c) 16
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 396u)
+
+Vtable for QGraphicsScene
+QGraphicsScene::_ZTV14QGraphicsScene: 34u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QGraphicsScene)
+8 QGraphicsScene::metaObject
+12 QGraphicsScene::qt_metacast
+16 QGraphicsScene::qt_metacall
+20 QGraphicsScene::~QGraphicsScene
+24 QGraphicsScene::~QGraphicsScene
+28 QGraphicsScene::event
+32 QGraphicsScene::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsScene::inputMethodQuery
+60 QGraphicsScene::contextMenuEvent
+64 QGraphicsScene::dragEnterEvent
+68 QGraphicsScene::dragMoveEvent
+72 QGraphicsScene::dragLeaveEvent
+76 QGraphicsScene::dropEvent
+80 QGraphicsScene::focusInEvent
+84 QGraphicsScene::focusOutEvent
+88 QGraphicsScene::helpEvent
+92 QGraphicsScene::keyPressEvent
+96 QGraphicsScene::keyReleaseEvent
+100 QGraphicsScene::mousePressEvent
+104 QGraphicsScene::mouseMoveEvent
+108 QGraphicsScene::mouseReleaseEvent
+112 QGraphicsScene::mouseDoubleClickEvent
+116 QGraphicsScene::wheelEvent
+120 QGraphicsScene::inputMethodEvent
+124 QGraphicsScene::drawBackground
+128 QGraphicsScene::drawForeground
+132 QGraphicsScene::drawItems
+
+Class QGraphicsScene
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsScene (0xb239a940) 0
+ vptr=((& QGraphicsScene::_ZTV14QGraphicsScene) + 8u)
+ QObject (0xb23cc30c) 0
+ primary-for QGraphicsScene (0xb239a940)
+
+Vtable for QGraphicsSceneEvent
+QGraphicsSceneEvent::_ZTV19QGraphicsSceneEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QGraphicsSceneEvent)
+8 QGraphicsSceneEvent::~QGraphicsSceneEvent
+12 QGraphicsSceneEvent::~QGraphicsSceneEvent
+
+Class QGraphicsSceneEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneEvent (0xb2231100) 0
+ vptr=((& QGraphicsSceneEvent::_ZTV19QGraphicsSceneEvent) + 8u)
+ QEvent (0xb23ccf00) 0
+ primary-for QGraphicsSceneEvent (0xb2231100)
+
+Vtable for QGraphicsSceneMouseEvent
+QGraphicsSceneMouseEvent::_ZTV24QGraphicsSceneMouseEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QGraphicsSceneMouseEvent)
+8 QGraphicsSceneMouseEvent::~QGraphicsSceneMouseEvent
+12 QGraphicsSceneMouseEvent::~QGraphicsSceneMouseEvent
+
+Class QGraphicsSceneMouseEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneMouseEvent (0xb2231240) 0
+ vptr=((& QGraphicsSceneMouseEvent::_ZTV24QGraphicsSceneMouseEvent) + 8u)
+ QGraphicsSceneEvent (0xb2231280) 0
+ primary-for QGraphicsSceneMouseEvent (0xb2231240)
+ QEvent (0xb225d078) 0
+ primary-for QGraphicsSceneEvent (0xb2231280)
+
+Vtable for QGraphicsSceneWheelEvent
+QGraphicsSceneWheelEvent::_ZTV24QGraphicsSceneWheelEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QGraphicsSceneWheelEvent)
+8 QGraphicsSceneWheelEvent::~QGraphicsSceneWheelEvent
+12 QGraphicsSceneWheelEvent::~QGraphicsSceneWheelEvent
+
+Class QGraphicsSceneWheelEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneWheelEvent (0xb2231380) 0
+ vptr=((& QGraphicsSceneWheelEvent::_ZTV24QGraphicsSceneWheelEvent) + 8u)
+ QGraphicsSceneEvent (0xb22313c0) 0
+ primary-for QGraphicsSceneWheelEvent (0xb2231380)
+ QEvent (0xb225d1a4) 0
+ primary-for QGraphicsSceneEvent (0xb22313c0)
+
+Vtable for QGraphicsSceneContextMenuEvent
+QGraphicsSceneContextMenuEvent::_ZTV30QGraphicsSceneContextMenuEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI30QGraphicsSceneContextMenuEvent)
+8 QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent
+12 QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent
+
+Class QGraphicsSceneContextMenuEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneContextMenuEvent (0xb22314c0) 0
+ vptr=((& QGraphicsSceneContextMenuEvent::_ZTV30QGraphicsSceneContextMenuEvent) + 8u)
+ QGraphicsSceneEvent (0xb2231500) 0
+ primary-for QGraphicsSceneContextMenuEvent (0xb22314c0)
+ QEvent (0xb225d2d0) 0
+ primary-for QGraphicsSceneEvent (0xb2231500)
+
+Vtable for QGraphicsSceneHoverEvent
+QGraphicsSceneHoverEvent::_ZTV24QGraphicsSceneHoverEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QGraphicsSceneHoverEvent)
+8 QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent
+12 QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent
+
+Class QGraphicsSceneHoverEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneHoverEvent (0xb2231600) 0
+ vptr=((& QGraphicsSceneHoverEvent::_ZTV24QGraphicsSceneHoverEvent) + 8u)
+ QGraphicsSceneEvent (0xb2231640) 0
+ primary-for QGraphicsSceneHoverEvent (0xb2231600)
+ QEvent (0xb225d3fc) 0
+ primary-for QGraphicsSceneEvent (0xb2231640)
+
+Vtable for QGraphicsSceneHelpEvent
+QGraphicsSceneHelpEvent::_ZTV23QGraphicsSceneHelpEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QGraphicsSceneHelpEvent)
+8 QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent
+12 QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent
+
+Class QGraphicsSceneHelpEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneHelpEvent (0xb2231740) 0
+ vptr=((& QGraphicsSceneHelpEvent::_ZTV23QGraphicsSceneHelpEvent) + 8u)
+ QGraphicsSceneEvent (0xb2231780) 0
+ primary-for QGraphicsSceneHelpEvent (0xb2231740)
+ QEvent (0xb225d528) 0
+ primary-for QGraphicsSceneEvent (0xb2231780)
+
+Vtable for QGraphicsSceneDragDropEvent
+QGraphicsSceneDragDropEvent::_ZTV27QGraphicsSceneDragDropEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QGraphicsSceneDragDropEvent)
+8 QGraphicsSceneDragDropEvent::~QGraphicsSceneDragDropEvent
+12 QGraphicsSceneDragDropEvent::~QGraphicsSceneDragDropEvent
+
+Class QGraphicsSceneDragDropEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneDragDropEvent (0xb2231880) 0
+ vptr=((& QGraphicsSceneDragDropEvent::_ZTV27QGraphicsSceneDragDropEvent) + 8u)
+ QGraphicsSceneEvent (0xb22318c0) 0
+ primary-for QGraphicsSceneDragDropEvent (0xb2231880)
+ QEvent (0xb225d654) 0
+ primary-for QGraphicsSceneEvent (0xb22318c0)
+
+Vtable for QGraphicsSceneResizeEvent
+QGraphicsSceneResizeEvent::_ZTV25QGraphicsSceneResizeEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QGraphicsSceneResizeEvent)
+8 QGraphicsSceneResizeEvent::~QGraphicsSceneResizeEvent
+12 QGraphicsSceneResizeEvent::~QGraphicsSceneResizeEvent
+
+Class QGraphicsSceneResizeEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneResizeEvent (0xb22319c0) 0
+ vptr=((& QGraphicsSceneResizeEvent::_ZTV25QGraphicsSceneResizeEvent) + 8u)
+ QGraphicsSceneEvent (0xb2231a00) 0
+ primary-for QGraphicsSceneResizeEvent (0xb22319c0)
+ QEvent (0xb225d780) 0
+ primary-for QGraphicsSceneEvent (0xb2231a00)
+
+Vtable for QGraphicsSceneMoveEvent
+QGraphicsSceneMoveEvent::_ZTV23QGraphicsSceneMoveEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QGraphicsSceneMoveEvent)
+8 QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent
+12 QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent
+
+Class QGraphicsSceneMoveEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneMoveEvent (0xb2231b00) 0
+ vptr=((& QGraphicsSceneMoveEvent::_ZTV23QGraphicsSceneMoveEvent) + 8u)
+ QGraphicsSceneEvent (0xb2231b40) 0
+ primary-for QGraphicsSceneMoveEvent (0xb2231b00)
+ QEvent (0xb225d8ac) 0
+ primary-for QGraphicsSceneEvent (0xb2231b40)
+
+Vtable for QGraphicsTransform
+QGraphicsTransform::_ZTV18QGraphicsTransform: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QGraphicsTransform)
+8 QGraphicsTransform::metaObject
+12 QGraphicsTransform::qt_metacast
+16 QGraphicsTransform::qt_metacall
+20 QGraphicsTransform::~QGraphicsTransform
+24 QGraphicsTransform::~QGraphicsTransform
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+
+Class QGraphicsTransform
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsTransform (0xb2231c40) 0
+ vptr=((& QGraphicsTransform::_ZTV18QGraphicsTransform) + 8u)
+ QObject (0xb225d9d8) 0
+ primary-for QGraphicsTransform (0xb2231c40)
+
+Vtable for QGraphicsScale
+QGraphicsScale::_ZTV14QGraphicsScale: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QGraphicsScale)
+8 QGraphicsScale::metaObject
+12 QGraphicsScale::qt_metacast
+16 QGraphicsScale::qt_metacall
+20 QGraphicsScale::~QGraphicsScale
+24 QGraphicsScale::~QGraphicsScale
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsScale::applyTo
+
+Class QGraphicsScale
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsScale (0xb2231f00) 0
+ vptr=((& QGraphicsScale::_ZTV14QGraphicsScale) + 8u)
+ QGraphicsTransform (0xb2231f40) 0
+ primary-for QGraphicsScale (0xb2231f00)
+ QObject (0xb225dbf4) 0
+ primary-for QGraphicsTransform (0xb2231f40)
+
+Vtable for QGraphicsRotation
+QGraphicsRotation::_ZTV17QGraphicsRotation: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QGraphicsRotation)
+8 QGraphicsRotation::metaObject
+12 QGraphicsRotation::qt_metacast
+16 QGraphicsRotation::qt_metacall
+20 QGraphicsRotation::~QGraphicsRotation
+24 QGraphicsRotation::~QGraphicsRotation
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsRotation::applyTo
+
+Class QGraphicsRotation
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsRotation (0xb229f200) 0
+ vptr=((& QGraphicsRotation::_ZTV17QGraphicsRotation) + 8u)
+ QGraphicsTransform (0xb229f240) 0
+ primary-for QGraphicsRotation (0xb229f200)
+ QObject (0xb225de10) 0
+ primary-for QGraphicsTransform (0xb229f240)
+
+Vtable for QScrollArea
+QScrollArea::_ZTV11QScrollArea: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QScrollArea)
+8 QScrollArea::metaObject
+12 QScrollArea::qt_metacast
+16 QScrollArea::qt_metacall
+20 QScrollArea::~QScrollArea
+24 QScrollArea::~QScrollArea
+28 QScrollArea::event
+32 QScrollArea::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractScrollArea::mousePressEvent
+84 QAbstractScrollArea::mouseReleaseEvent
+88 QAbstractScrollArea::mouseDoubleClickEvent
+92 QAbstractScrollArea::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractScrollArea::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractScrollArea::paintEvent
+128 QWidget::moveEvent
+132 QScrollArea::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractScrollArea::dragEnterEvent
+156 QAbstractScrollArea::dragMoveEvent
+160 QAbstractScrollArea::dragLeaveEvent
+164 QAbstractScrollArea::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QScrollArea::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractScrollArea::viewportEvent
+228 QScrollArea::scrollContentsBy
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI11QScrollArea)
+240 QScrollArea::_ZThn8_N11QScrollAreaD1Ev
+244 QScrollArea::_ZThn8_N11QScrollAreaD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QScrollArea
+ size=20 align=4
+ base size=20 base align=4
+QScrollArea (0xb229f500) 0
+ vptr=((& QScrollArea::_ZTV11QScrollArea) + 8u)
+ QAbstractScrollArea (0xb229f540) 0
+ primary-for QScrollArea (0xb229f500)
+ QFrame (0xb229f580) 0
+ primary-for QAbstractScrollArea (0xb229f540)
+ QWidget (0xb22a9b90) 0
+ primary-for QFrame (0xb229f580)
+ QObject (0xb22b103c) 0
+ primary-for QWidget (0xb22a9b90)
+ QPaintDevice (0xb22b1078) 8
+ vptr=((& QScrollArea::_ZTV11QScrollArea) + 240u)
+
+Vtable for QGraphicsView
+QGraphicsView::_ZTV13QGraphicsView: 68u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QGraphicsView)
+8 QGraphicsView::metaObject
+12 QGraphicsView::qt_metacast
+16 QGraphicsView::qt_metacall
+20 QGraphicsView::~QGraphicsView
+24 QGraphicsView::~QGraphicsView
+28 QGraphicsView::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QGraphicsView::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QGraphicsView::mousePressEvent
+84 QGraphicsView::mouseReleaseEvent
+88 QGraphicsView::mouseDoubleClickEvent
+92 QGraphicsView::mouseMoveEvent
+96 QGraphicsView::wheelEvent
+100 QGraphicsView::keyPressEvent
+104 QGraphicsView::keyReleaseEvent
+108 QGraphicsView::focusInEvent
+112 QGraphicsView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QGraphicsView::paintEvent
+128 QWidget::moveEvent
+132 QGraphicsView::resizeEvent
+136 QWidget::closeEvent
+140 QGraphicsView::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QGraphicsView::dragEnterEvent
+156 QGraphicsView::dragMoveEvent
+160 QGraphicsView::dragLeaveEvent
+164 QGraphicsView::dropEvent
+168 QGraphicsView::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QGraphicsView::inputMethodEvent
+192 QGraphicsView::inputMethodQuery
+196 QGraphicsView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QGraphicsView::viewportEvent
+228 QGraphicsView::scrollContentsBy
+232 QGraphicsView::drawBackground
+236 QGraphicsView::drawForeground
+240 QGraphicsView::drawItems
+244 (int (*)(...))-0x000000008
+248 (int (*)(...))(& _ZTI13QGraphicsView)
+252 QGraphicsView::_ZThn8_N13QGraphicsViewD1Ev
+256 QGraphicsView::_ZThn8_N13QGraphicsViewD0Ev
+260 QWidget::_ZThn8_NK7QWidget7devTypeEv
+264 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+268 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QGraphicsView
+ size=20 align=4
+ base size=20 base align=4
+QGraphicsView (0xb229f840) 0
+ vptr=((& QGraphicsView::_ZTV13QGraphicsView) + 8u)
+ QAbstractScrollArea (0xb229f880) 0
+ primary-for QGraphicsView (0xb229f840)
+ QFrame (0xb229f8c0) 0
+ primary-for QAbstractScrollArea (0xb229f880)
+ QWidget (0xb22b9b90) 0
+ primary-for QFrame (0xb229f8c0)
+ QObject (0xb22b1294) 0
+ primary-for QWidget (0xb22b9b90)
+ QPaintDevice (0xb22b12d0) 8
+ vptr=((& QGraphicsView::_ZTV13QGraphicsView) + 252u)
+
+Vtable for QAbstractButton
+QAbstractButton::_ZTV15QAbstractButton: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QAbstractButton)
+8 QAbstractButton::metaObject
+12 QAbstractButton::qt_metacast
+16 QAbstractButton::qt_metacall
+20 QAbstractButton::~QAbstractButton
+24 QAbstractButton::~QAbstractButton
+28 QAbstractButton::event
+32 QObject::eventFilter
+36 QAbstractButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractButton::mousePressEvent
+84 QAbstractButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractButton::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QAbstractButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QAbstractButton::focusInEvent
+112 QAbstractButton::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 __cxa_pure_virtual
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractButton::hitButton
+228 QAbstractButton::checkStateSet
+232 QAbstractButton::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI15QAbstractButton)
+244 QAbstractButton::_ZThn8_N15QAbstractButtonD1Ev
+248 QAbstractButton::_ZThn8_N15QAbstractButtonD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractButton
+ size=20 align=4
+ base size=20 base align=4
+QAbstractButton (0xb2144100) 0
+ vptr=((& QAbstractButton::_ZTV15QAbstractButton) + 8u)
+ QWidget (0xb2148000) 0
+ primary-for QAbstractButton (0xb2144100)
+ QObject (0xb22b1c30) 0
+ primary-for QWidget (0xb2148000)
+ QPaintDevice (0xb22b1c6c) 8
+ vptr=((& QAbstractButton::_ZTV15QAbstractButton) + 244u)
+
+Vtable for QButtonGroup
+QButtonGroup::_ZTV12QButtonGroup: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QButtonGroup)
+8 QButtonGroup::metaObject
+12 QButtonGroup::qt_metacast
+16 QButtonGroup::qt_metacall
+20 QButtonGroup::~QButtonGroup
+24 QButtonGroup::~QButtonGroup
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QButtonGroup
+ size=8 align=4
+ base size=8 base align=4
+QButtonGroup (0xb2144600) 0
+ vptr=((& QButtonGroup::_ZTV12QButtonGroup) + 8u)
+ QObject (0xb2163000) 0
+ primary-for QButtonGroup (0xb2144600)
+
+Vtable for QCalendarWidget
+QCalendarWidget::_ZTV15QCalendarWidget: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QCalendarWidget)
+8 QCalendarWidget::metaObject
+12 QCalendarWidget::qt_metacast
+16 QCalendarWidget::qt_metacall
+20 QCalendarWidget::~QCalendarWidget
+24 QCalendarWidget::~QCalendarWidget
+28 QCalendarWidget::event
+32 QCalendarWidget::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QCalendarWidget::sizeHint
+68 QCalendarWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QCalendarWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QCalendarWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QCalendarWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QCalendarWidget::paintCell
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI15QCalendarWidget)
+236 QCalendarWidget::_ZThn8_N15QCalendarWidgetD1Ev
+240 QCalendarWidget::_ZThn8_N15QCalendarWidgetD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QCalendarWidget
+ size=20 align=4
+ base size=20 base align=4
+QCalendarWidget (0xb2144940) 0
+ vptr=((& QCalendarWidget::_ZTV15QCalendarWidget) + 8u)
+ QWidget (0xb216bc80) 0
+ primary-for QCalendarWidget (0xb2144940)
+ QObject (0xb216321c) 0
+ primary-for QWidget (0xb216bc80)
+ QPaintDevice (0xb2163258) 8
+ vptr=((& QCalendarWidget::_ZTV15QCalendarWidget) + 236u)
+
+Vtable for QCheckBox
+QCheckBox::_ZTV9QCheckBox: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QCheckBox)
+8 QCheckBox::metaObject
+12 QCheckBox::qt_metacast
+16 QCheckBox::qt_metacall
+20 QCheckBox::~QCheckBox
+24 QCheckBox::~QCheckBox
+28 QCheckBox::event
+32 QObject::eventFilter
+36 QAbstractButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QCheckBox::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractButton::mousePressEvent
+84 QAbstractButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QCheckBox::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QAbstractButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QAbstractButton::focusInEvent
+112 QAbstractButton::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QCheckBox::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QCheckBox::hitButton
+228 QCheckBox::checkStateSet
+232 QCheckBox::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI9QCheckBox)
+244 QCheckBox::_ZThn8_N9QCheckBoxD1Ev
+248 QCheckBox::_ZThn8_N9QCheckBoxD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QCheckBox
+ size=20 align=4
+ base size=20 base align=4
+QCheckBox (0xb2144c80) 0
+ vptr=((& QCheckBox::_ZTV9QCheckBox) + 8u)
+ QAbstractButton (0xb2144cc0) 0
+ primary-for QCheckBox (0xb2144c80)
+ QWidget (0xb218e0a0) 0
+ primary-for QAbstractButton (0xb2144cc0)
+ QObject (0xb21634b0) 0
+ primary-for QWidget (0xb218e0a0)
+ QPaintDevice (0xb21634ec) 8
+ vptr=((& QCheckBox::_ZTV9QCheckBox) + 244u)
+
+Vtable for QComboBox
+QComboBox::_ZTV9QComboBox: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QComboBox)
+8 QComboBox::metaObject
+12 QComboBox::qt_metacast
+16 QComboBox::qt_metacall
+20 QComboBox::~QComboBox
+24 QComboBox::~QComboBox
+28 QComboBox::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QComboBox::sizeHint
+68 QComboBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QComboBox::mousePressEvent
+84 QComboBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QComboBox::wheelEvent
+100 QComboBox::keyPressEvent
+104 QComboBox::keyReleaseEvent
+108 QComboBox::focusInEvent
+112 QComboBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QComboBox::paintEvent
+128 QWidget::moveEvent
+132 QComboBox::resizeEvent
+136 QWidget::closeEvent
+140 QComboBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QComboBox::showEvent
+172 QComboBox::hideEvent
+176 QWidget::x11Event
+180 QComboBox::changeEvent
+184 QWidget::metric
+188 QComboBox::inputMethodEvent
+192 QComboBox::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QComboBox::showPopup
+228 QComboBox::hidePopup
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI9QComboBox)
+240 QComboBox::_ZThn8_N9QComboBoxD1Ev
+244 QComboBox::_ZThn8_N9QComboBoxD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QComboBox
+ size=20 align=4
+ base size=20 base align=4
+QComboBox (0xb21a1040) 0
+ vptr=((& QComboBox::_ZTV9QComboBox) + 8u)
+ QWidget (0xb2195910) 0
+ primary-for QComboBox (0xb21a1040)
+ QObject (0xb2163744) 0
+ primary-for QWidget (0xb2195910)
+ QPaintDevice (0xb2163780) 8
+ vptr=((& QComboBox::_ZTV9QComboBox) + 240u)
+
+Vtable for QPushButton
+QPushButton::_ZTV11QPushButton: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QPushButton)
+8 QPushButton::metaObject
+12 QPushButton::qt_metacast
+16 QPushButton::qt_metacall
+20 QPushButton::~QPushButton
+24 QPushButton::~QPushButton
+28 QPushButton::event
+32 QObject::eventFilter
+36 QAbstractButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QPushButton::sizeHint
+68 QPushButton::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractButton::mousePressEvent
+84 QAbstractButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractButton::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QPushButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QPushButton::focusInEvent
+112 QPushButton::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QPushButton::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractButton::hitButton
+228 QAbstractButton::checkStateSet
+232 QAbstractButton::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI11QPushButton)
+244 QPushButton::_ZThn8_N11QPushButtonD1Ev
+248 QPushButton::_ZThn8_N11QPushButtonD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPushButton
+ size=20 align=4
+ base size=20 base align=4
+QPushButton (0xb21a1a00) 0
+ vptr=((& QPushButton::_ZTV11QPushButton) + 8u)
+ QAbstractButton (0xb21a1a40) 0
+ primary-for QPushButton (0xb21a1a00)
+ QWidget (0xb21db0a0) 0
+ primary-for QAbstractButton (0xb21a1a40)
+ QObject (0xb2163f78) 0
+ primary-for QWidget (0xb21db0a0)
+ QPaintDevice (0xb2163fb4) 8
+ vptr=((& QPushButton::_ZTV11QPushButton) + 244u)
+
+Vtable for QCommandLinkButton
+QCommandLinkButton::_ZTV18QCommandLinkButton: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QCommandLinkButton)
+8 QCommandLinkButton::metaObject
+12 QCommandLinkButton::qt_metacast
+16 QCommandLinkButton::qt_metacall
+20 QCommandLinkButton::~QCommandLinkButton
+24 QCommandLinkButton::~QCommandLinkButton
+28 QCommandLinkButton::event
+32 QObject::eventFilter
+36 QAbstractButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QCommandLinkButton::sizeHint
+68 QCommandLinkButton::minimumSizeHint
+72 QCommandLinkButton::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractButton::mousePressEvent
+84 QAbstractButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractButton::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QPushButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QPushButton::focusInEvent
+112 QPushButton::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QCommandLinkButton::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractButton::hitButton
+228 QAbstractButton::checkStateSet
+232 QAbstractButton::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI18QCommandLinkButton)
+244 QCommandLinkButton::_ZThn8_N18QCommandLinkButtonD1Ev
+248 QCommandLinkButton::_ZThn8_N18QCommandLinkButtonD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QCommandLinkButton
+ size=20 align=4
+ base size=20 base align=4
+QCommandLinkButton (0xb21a1e40) 0
+ vptr=((& QCommandLinkButton::_ZTV18QCommandLinkButton) + 8u)
+ QPushButton (0xb21a1e80) 0
+ primary-for QCommandLinkButton (0xb21a1e40)
+ QAbstractButton (0xb21a1ec0) 0
+ primary-for QPushButton (0xb21a1e80)
+ QWidget (0xb21ee5a0) 0
+ primary-for QAbstractButton (0xb21a1ec0)
+ QObject (0xb21eb21c) 0
+ primary-for QWidget (0xb21ee5a0)
+ QPaintDevice (0xb21eb258) 8
+ vptr=((& QCommandLinkButton::_ZTV18QCommandLinkButton) + 244u)
+
+Vtable for QDateTimeEdit
+QDateTimeEdit::_ZTV13QDateTimeEdit: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QDateTimeEdit)
+8 QDateTimeEdit::metaObject
+12 QDateTimeEdit::qt_metacast
+16 QDateTimeEdit::qt_metacall
+20 QDateTimeEdit::~QDateTimeEdit
+24 QDateTimeEdit::~QDateTimeEdit
+28 QDateTimeEdit::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QDateTimeEdit::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QDateTimeEdit::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QDateTimeEdit::wheelEvent
+100 QDateTimeEdit::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QDateTimeEdit::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QDateTimeEdit::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QDateTimeEdit::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDateTimeEdit::validate
+228 QDateTimeEdit::fixup
+232 QDateTimeEdit::stepBy
+236 QDateTimeEdit::clear
+240 QDateTimeEdit::stepEnabled
+244 QDateTimeEdit::dateTimeFromText
+248 QDateTimeEdit::textFromDateTime
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI13QDateTimeEdit)
+260 QDateTimeEdit::_ZThn8_N13QDateTimeEditD1Ev
+264 QDateTimeEdit::_ZThn8_N13QDateTimeEditD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDateTimeEdit
+ size=20 align=4
+ base size=20 base align=4
+QDateTimeEdit (0xb1ffd180) 0
+ vptr=((& QDateTimeEdit::_ZTV13QDateTimeEdit) + 8u)
+ QAbstractSpinBox (0xb1ffd1c0) 0
+ primary-for QDateTimeEdit (0xb1ffd180)
+ QWidget (0xb1fff370) 0
+ primary-for QAbstractSpinBox (0xb1ffd1c0)
+ QObject (0xb21eb474) 0
+ primary-for QWidget (0xb1fff370)
+ QPaintDevice (0xb21eb4b0) 8
+ vptr=((& QDateTimeEdit::_ZTV13QDateTimeEdit) + 260u)
+
+Vtable for QTimeEdit
+QTimeEdit::_ZTV9QTimeEdit: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QTimeEdit)
+8 QTimeEdit::metaObject
+12 QTimeEdit::qt_metacast
+16 QTimeEdit::qt_metacall
+20 QTimeEdit::~QTimeEdit
+24 QTimeEdit::~QTimeEdit
+28 QDateTimeEdit::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QDateTimeEdit::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QDateTimeEdit::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QDateTimeEdit::wheelEvent
+100 QDateTimeEdit::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QDateTimeEdit::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QDateTimeEdit::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QDateTimeEdit::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDateTimeEdit::validate
+228 QDateTimeEdit::fixup
+232 QDateTimeEdit::stepBy
+236 QDateTimeEdit::clear
+240 QDateTimeEdit::stepEnabled
+244 QDateTimeEdit::dateTimeFromText
+248 QDateTimeEdit::textFromDateTime
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI9QTimeEdit)
+260 QTimeEdit::_ZThn8_N9QTimeEditD1Ev
+264 QTimeEdit::_ZThn8_N9QTimeEditD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTimeEdit
+ size=20 align=4
+ base size=20 base align=4
+QTimeEdit (0xb1ffd480) 0
+ vptr=((& QTimeEdit::_ZTV9QTimeEdit) + 8u)
+ QDateTimeEdit (0xb1ffd4c0) 0
+ primary-for QTimeEdit (0xb1ffd480)
+ QAbstractSpinBox (0xb1ffd500) 0
+ primary-for QDateTimeEdit (0xb1ffd4c0)
+ QWidget (0xb2013870) 0
+ primary-for QAbstractSpinBox (0xb1ffd500)
+ QObject (0xb21eb6cc) 0
+ primary-for QWidget (0xb2013870)
+ QPaintDevice (0xb21eb708) 8
+ vptr=((& QTimeEdit::_ZTV9QTimeEdit) + 260u)
+
+Vtable for QDateEdit
+QDateEdit::_ZTV9QDateEdit: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QDateEdit)
+8 QDateEdit::metaObject
+12 QDateEdit::qt_metacast
+16 QDateEdit::qt_metacall
+20 QDateEdit::~QDateEdit
+24 QDateEdit::~QDateEdit
+28 QDateTimeEdit::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QDateTimeEdit::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QDateTimeEdit::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QDateTimeEdit::wheelEvent
+100 QDateTimeEdit::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QDateTimeEdit::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QDateTimeEdit::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QDateTimeEdit::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDateTimeEdit::validate
+228 QDateTimeEdit::fixup
+232 QDateTimeEdit::stepBy
+236 QDateTimeEdit::clear
+240 QDateTimeEdit::stepEnabled
+244 QDateTimeEdit::dateTimeFromText
+248 QDateTimeEdit::textFromDateTime
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI9QDateEdit)
+260 QDateEdit::_ZThn8_N9QDateEditD1Ev
+264 QDateEdit::_ZThn8_N9QDateEditD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDateEdit
+ size=20 align=4
+ base size=20 base align=4
+QDateEdit (0xb1ffd740) 0
+ vptr=((& QDateEdit::_ZTV9QDateEdit) + 8u)
+ QDateTimeEdit (0xb1ffd780) 0
+ primary-for QDateEdit (0xb1ffd740)
+ QAbstractSpinBox (0xb1ffd7c0) 0
+ primary-for QDateTimeEdit (0xb1ffd780)
+ QWidget (0xb201daf0) 0
+ primary-for QAbstractSpinBox (0xb1ffd7c0)
+ QObject (0xb21eb834) 0
+ primary-for QWidget (0xb201daf0)
+ QPaintDevice (0xb21eb870) 8
+ vptr=((& QDateEdit::_ZTV9QDateEdit) + 260u)
+
+Vtable for QDial
+QDial::_ZTV5QDial: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI5QDial)
+8 QDial::metaObject
+12 QDial::qt_metacast
+16 QDial::qt_metacall
+20 QDial::~QDial
+24 QDial::~QDial
+28 QDial::event
+32 QObject::eventFilter
+36 QAbstractSlider::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QDial::sizeHint
+68 QDial::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QDial::mousePressEvent
+84 QDial::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QDial::mouseMoveEvent
+96 QAbstractSlider::wheelEvent
+100 QAbstractSlider::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QDial::paintEvent
+128 QWidget::moveEvent
+132 QDial::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractSlider::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDial::sliderChange
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI5QDial)
+236 QDial::_ZThn8_N5QDialD1Ev
+240 QDial::_ZThn8_N5QDialD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDial
+ size=20 align=4
+ base size=20 base align=4
+QDial (0xb1ffdb40) 0
+ vptr=((& QDial::_ZTV5QDial) + 8u)
+ QAbstractSlider (0xb1ffdb80) 0
+ primary-for QDial (0xb1ffdb40)
+ QWidget (0xb203a500) 0
+ primary-for QAbstractSlider (0xb1ffdb80)
+ QObject (0xb21eba8c) 0
+ primary-for QWidget (0xb203a500)
+ QPaintDevice (0xb21ebac8) 8
+ vptr=((& QDial::_ZTV5QDial) + 236u)
+
+Vtable for QDialogButtonBox
+QDialogButtonBox::_ZTV16QDialogButtonBox: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QDialogButtonBox)
+8 QDialogButtonBox::metaObject
+12 QDialogButtonBox::qt_metacast
+16 QDialogButtonBox::qt_metacall
+20 QDialogButtonBox::~QDialogButtonBox
+24 QDialogButtonBox::~QDialogButtonBox
+28 QDialogButtonBox::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QDialogButtonBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI16QDialogButtonBox)
+232 QDialogButtonBox::_ZThn8_N16QDialogButtonBoxD1Ev
+236 QDialogButtonBox::_ZThn8_N16QDialogButtonBoxD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDialogButtonBox
+ size=20 align=4
+ base size=20 base align=4
+QDialogButtonBox (0xb1ffde40) 0
+ vptr=((& QDialogButtonBox::_ZTV16QDialogButtonBox) + 8u)
+ QWidget (0xb2066cd0) 0
+ primary-for QDialogButtonBox (0xb1ffde40)
+ QObject (0xb21ebce4) 0
+ primary-for QWidget (0xb2066cd0)
+ QPaintDevice (0xb21ebd20) 8
+ vptr=((& QDialogButtonBox::_ZTV16QDialogButtonBox) + 232u)
+
+Vtable for QDockWidget
+QDockWidget::_ZTV11QDockWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QDockWidget)
+8 QDockWidget::metaObject
+12 QDockWidget::qt_metacast
+16 QDockWidget::qt_metacall
+20 QDockWidget::~QDockWidget
+24 QDockWidget::~QDockWidget
+28 QDockWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QDockWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QDockWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QDockWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI11QDockWidget)
+232 QDockWidget::_ZThn8_N11QDockWidgetD1Ev
+236 QDockWidget::_ZThn8_N11QDockWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDockWidget
+ size=20 align=4
+ base size=20 base align=4
+QDockWidget (0xb2081240) 0
+ vptr=((& QDockWidget::_ZTV11QDockWidget) + 8u)
+ QWidget (0xb208c640) 0
+ primary-for QDockWidget (0xb2081240)
+ QObject (0xb20b003c) 0
+ primary-for QWidget (0xb208c640)
+ QPaintDevice (0xb20b0078) 8
+ vptr=((& QDockWidget::_ZTV11QDockWidget) + 232u)
+
+Vtable for QFocusFrame
+QFocusFrame::_ZTV11QFocusFrame: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFocusFrame)
+8 QFocusFrame::metaObject
+12 QFocusFrame::qt_metacast
+16 QFocusFrame::qt_metacall
+20 QFocusFrame::~QFocusFrame
+24 QFocusFrame::~QFocusFrame
+28 QFocusFrame::event
+32 QFocusFrame::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QFocusFrame::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI11QFocusFrame)
+232 QFocusFrame::_ZThn8_N11QFocusFrameD1Ev
+236 QFocusFrame::_ZThn8_N11QFocusFrameD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFocusFrame
+ size=20 align=4
+ base size=20 base align=4
+QFocusFrame (0xb2081700) 0
+ vptr=((& QFocusFrame::_ZTV11QFocusFrame) + 8u)
+ QWidget (0xb20cf820) 0
+ primary-for QFocusFrame (0xb2081700)
+ QObject (0xb20b0474) 0
+ primary-for QWidget (0xb20cf820)
+ QPaintDevice (0xb20b04b0) 8
+ vptr=((& QFocusFrame::_ZTV11QFocusFrame) + 232u)
+
+Vtable for QFontComboBox
+QFontComboBox::_ZTV13QFontComboBox: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QFontComboBox)
+8 QFontComboBox::metaObject
+12 QFontComboBox::qt_metacast
+16 QFontComboBox::qt_metacall
+20 QFontComboBox::~QFontComboBox
+24 QFontComboBox::~QFontComboBox
+28 QFontComboBox::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QFontComboBox::sizeHint
+68 QComboBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QComboBox::mousePressEvent
+84 QComboBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QComboBox::wheelEvent
+100 QComboBox::keyPressEvent
+104 QComboBox::keyReleaseEvent
+108 QComboBox::focusInEvent
+112 QComboBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QComboBox::paintEvent
+128 QWidget::moveEvent
+132 QComboBox::resizeEvent
+136 QWidget::closeEvent
+140 QComboBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QComboBox::showEvent
+172 QComboBox::hideEvent
+176 QWidget::x11Event
+180 QComboBox::changeEvent
+184 QWidget::metric
+188 QComboBox::inputMethodEvent
+192 QComboBox::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QComboBox::showPopup
+228 QComboBox::hidePopup
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI13QFontComboBox)
+240 QFontComboBox::_ZThn8_N13QFontComboBoxD1Ev
+244 QFontComboBox::_ZThn8_N13QFontComboBoxD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFontComboBox
+ size=20 align=4
+ base size=20 base align=4
+QFontComboBox (0xb20819c0) 0
+ vptr=((& QFontComboBox::_ZTV13QFontComboBox) + 8u)
+ QComboBox (0xb2081a00) 0
+ primary-for QFontComboBox (0xb20819c0)
+ QWidget (0xb1f04000) 0
+ primary-for QComboBox (0xb2081a00)
+ QObject (0xb20b06cc) 0
+ primary-for QWidget (0xb1f04000)
+ QPaintDevice (0xb20b0708) 8
+ vptr=((& QFontComboBox::_ZTV13QFontComboBox) + 240u)
+
+Vtable for QGroupBox
+QGroupBox::_ZTV9QGroupBox: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QGroupBox)
+8 QGroupBox::metaObject
+12 QGroupBox::qt_metacast
+16 QGroupBox::qt_metacall
+20 QGroupBox::~QGroupBox
+24 QGroupBox::~QGroupBox
+28 QGroupBox::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QGroupBox::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QGroupBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QGroupBox::mousePressEvent
+84 QGroupBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QGroupBox::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QGroupBox::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QGroupBox::paintEvent
+128 QWidget::moveEvent
+132 QGroupBox::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QGroupBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI9QGroupBox)
+232 QGroupBox::_ZThn8_N9QGroupBoxD1Ev
+236 QGroupBox::_ZThn8_N9QGroupBoxD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QGroupBox
+ size=20 align=4
+ base size=20 base align=4
+QGroupBox (0xb2081e00) 0
+ vptr=((& QGroupBox::_ZTV9QGroupBox) + 8u)
+ QWidget (0xb1f401e0) 0
+ primary-for QGroupBox (0xb2081e00)
+ QObject (0xb20b0a14) 0
+ primary-for QWidget (0xb1f401e0)
+ QPaintDevice (0xb20b0a50) 8
+ vptr=((& QGroupBox::_ZTV9QGroupBox) + 232u)
+
+Vtable for QLabel
+QLabel::_ZTV6QLabel: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QLabel)
+8 QLabel::metaObject
+12 QLabel::qt_metacast
+16 QLabel::qt_metacall
+20 QLabel::~QLabel
+24 QLabel::~QLabel
+28 QLabel::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QLabel::sizeHint
+68 QLabel::minimumSizeHint
+72 QLabel::heightForWidth
+76 QWidget::paintEngine
+80 QLabel::mousePressEvent
+84 QLabel::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QLabel::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QLabel::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QLabel::focusInEvent
+112 QLabel::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QLabel::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QLabel::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QLabel::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QLabel::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI6QLabel)
+232 QLabel::_ZThn8_N6QLabelD1Ev
+236 QLabel::_ZThn8_N6QLabelD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QLabel
+ size=20 align=4
+ base size=20 base align=4
+QLabel (0xb1f500c0) 0
+ vptr=((& QLabel::_ZTV6QLabel) + 8u)
+ QFrame (0xb1f50100) 0
+ primary-for QLabel (0xb1f500c0)
+ QWidget (0xb1f47be0) 0
+ primary-for QFrame (0xb1f50100)
+ QObject (0xb20b0c6c) 0
+ primary-for QWidget (0xb1f47be0)
+ QPaintDevice (0xb20b0ca8) 8
+ vptr=((& QLabel::_ZTV6QLabel) + 232u)
+
+Vtable for QLCDNumber
+QLCDNumber::_ZTV10QLCDNumber: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QLCDNumber)
+8 QLCDNumber::metaObject
+12 QLCDNumber::qt_metacast
+16 QLCDNumber::qt_metacall
+20 QLCDNumber::~QLCDNumber
+24 QLCDNumber::~QLCDNumber
+28 QLCDNumber::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QLCDNumber::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QLCDNumber::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI10QLCDNumber)
+232 QLCDNumber::_ZThn8_N10QLCDNumberD1Ev
+236 QLCDNumber::_ZThn8_N10QLCDNumberD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QLCDNumber
+ size=20 align=4
+ base size=20 base align=4
+QLCDNumber (0xb1f50400) 0
+ vptr=((& QLCDNumber::_ZTV10QLCDNumber) + 8u)
+ QFrame (0xb1f50440) 0
+ primary-for QLCDNumber (0xb1f50400)
+ QWidget (0xb1f60c80) 0
+ primary-for QFrame (0xb1f50440)
+ QObject (0xb20b0ec4) 0
+ primary-for QWidget (0xb1f60c80)
+ QPaintDevice (0xb20b0f00) 8
+ vptr=((& QLCDNumber::_ZTV10QLCDNumber) + 232u)
+
+Vtable for QMainWindow
+QMainWindow::_ZTV11QMainWindow: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QMainWindow)
+8 QMainWindow::metaObject
+12 QMainWindow::qt_metacast
+16 QMainWindow::qt_metacall
+20 QMainWindow::~QMainWindow
+24 QMainWindow::~QMainWindow
+28 QMainWindow::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QMainWindow::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QMainWindow::createPopupMenu
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI11QMainWindow)
+236 QMainWindow::_ZThn8_N11QMainWindowD1Ev
+240 QMainWindow::_ZThn8_N11QMainWindowD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMainWindow
+ size=20 align=4
+ base size=20 base align=4
+QMainWindow (0xb1f50780) 0
+ vptr=((& QMainWindow::_ZTV11QMainWindow) + 8u)
+ QWidget (0xb1f73af0) 0
+ primary-for QMainWindow (0xb1f50780)
+ QObject (0xb1f7e258) 0
+ primary-for QWidget (0xb1f73af0)
+ QPaintDevice (0xb1f7e294) 8
+ vptr=((& QMainWindow::_ZTV11QMainWindow) + 236u)
+
+Vtable for QMdiArea
+QMdiArea::_ZTV8QMdiArea: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QMdiArea)
+8 QMdiArea::metaObject
+12 QMdiArea::qt_metacast
+16 QMdiArea::qt_metacall
+20 QMdiArea::~QMdiArea
+24 QMdiArea::~QMdiArea
+28 QMdiArea::event
+32 QMdiArea::eventFilter
+36 QMdiArea::timerEvent
+40 QMdiArea::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QMdiArea::sizeHint
+68 QMdiArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractScrollArea::mousePressEvent
+84 QAbstractScrollArea::mouseReleaseEvent
+88 QAbstractScrollArea::mouseDoubleClickEvent
+92 QAbstractScrollArea::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractScrollArea::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QMdiArea::paintEvent
+128 QWidget::moveEvent
+132 QMdiArea::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractScrollArea::dragEnterEvent
+156 QAbstractScrollArea::dragMoveEvent
+160 QAbstractScrollArea::dragLeaveEvent
+164 QAbstractScrollArea::dropEvent
+168 QMdiArea::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QMdiArea::viewportEvent
+228 QMdiArea::scrollContentsBy
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI8QMdiArea)
+240 QMdiArea::_ZThn8_N8QMdiAreaD1Ev
+244 QMdiArea::_ZThn8_N8QMdiAreaD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMdiArea
+ size=20 align=4
+ base size=20 base align=4
+QMdiArea (0xb1f50b80) 0
+ vptr=((& QMdiArea::_ZTV8QMdiArea) + 8u)
+ QAbstractScrollArea (0xb1f50bc0) 0
+ primary-for QMdiArea (0xb1f50b80)
+ QFrame (0xb1f50c00) 0
+ primary-for QAbstractScrollArea (0xb1f50bc0)
+ QWidget (0xb1f9beb0) 0
+ primary-for QFrame (0xb1f50c00)
+ QObject (0xb1f7e5a0) 0
+ primary-for QWidget (0xb1f9beb0)
+ QPaintDevice (0xb1f7e5dc) 8
+ vptr=((& QMdiArea::_ZTV8QMdiArea) + 240u)
+
+Vtable for QMdiSubWindow
+QMdiSubWindow::_ZTV13QMdiSubWindow: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QMdiSubWindow)
+8 QMdiSubWindow::metaObject
+12 QMdiSubWindow::qt_metacast
+16 QMdiSubWindow::qt_metacall
+20 QMdiSubWindow::~QMdiSubWindow
+24 QMdiSubWindow::~QMdiSubWindow
+28 QMdiSubWindow::event
+32 QMdiSubWindow::eventFilter
+36 QMdiSubWindow::timerEvent
+40 QMdiSubWindow::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QMdiSubWindow::sizeHint
+68 QMdiSubWindow::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QMdiSubWindow::mousePressEvent
+84 QMdiSubWindow::mouseReleaseEvent
+88 QMdiSubWindow::mouseDoubleClickEvent
+92 QMdiSubWindow::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QMdiSubWindow::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QMdiSubWindow::focusInEvent
+112 QMdiSubWindow::focusOutEvent
+116 QWidget::enterEvent
+120 QMdiSubWindow::leaveEvent
+124 QMdiSubWindow::paintEvent
+128 QMdiSubWindow::moveEvent
+132 QMdiSubWindow::resizeEvent
+136 QMdiSubWindow::closeEvent
+140 QMdiSubWindow::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QMdiSubWindow::showEvent
+172 QMdiSubWindow::hideEvent
+176 QWidget::x11Event
+180 QMdiSubWindow::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI13QMdiSubWindow)
+232 QMdiSubWindow::_ZThn8_N13QMdiSubWindowD1Ev
+236 QMdiSubWindow::_ZThn8_N13QMdiSubWindowD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMdiSubWindow
+ size=20 align=4
+ base size=20 base align=4
+QMdiSubWindow (0xb1de6000) 0
+ vptr=((& QMdiSubWindow::_ZTV13QMdiSubWindow) + 8u)
+ QWidget (0xb1de4190) 0
+ primary-for QMdiSubWindow (0xb1de6000)
+ QObject (0xb1f7e924) 0
+ primary-for QWidget (0xb1de4190)
+ QPaintDevice (0xb1f7e960) 8
+ vptr=((& QMdiSubWindow::_ZTV13QMdiSubWindow) + 232u)
+
+Vtable for QMenu
+QMenu::_ZTV5QMenu: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI5QMenu)
+8 QMenu::metaObject
+12 QMenu::qt_metacast
+16 QMenu::qt_metacall
+20 QMenu::~QMenu
+24 QMenu::~QMenu
+28 QMenu::event
+32 QObject::eventFilter
+36 QMenu::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QMenu::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QMenu::mousePressEvent
+84 QMenu::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QMenu::mouseMoveEvent
+96 QMenu::wheelEvent
+100 QMenu::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QMenu::enterEvent
+120 QMenu::leaveEvent
+124 QMenu::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QMenu::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QMenu::hideEvent
+176 QWidget::x11Event
+180 QMenu::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QMenu::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI5QMenu)
+232 QMenu::_ZThn8_N5QMenuD1Ev
+236 QMenu::_ZThn8_N5QMenuD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMenu
+ size=20 align=4
+ base size=20 base align=4
+QMenu (0xb1de6440) 0
+ vptr=((& QMenu::_ZTV5QMenu) + 8u)
+ QWidget (0xb1e02550) 0
+ primary-for QMenu (0xb1de6440)
+ QObject (0xb1f7ec6c) 0
+ primary-for QWidget (0xb1e02550)
+ QPaintDevice (0xb1f7eca8) 8
+ vptr=((& QMenu::_ZTV5QMenu) + 232u)
+
+Vtable for QMenuBar
+QMenuBar::_ZTV8QMenuBar: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QMenuBar)
+8 QMenuBar::metaObject
+12 QMenuBar::qt_metacast
+16 QMenuBar::qt_metacall
+20 QMenuBar::~QMenuBar
+24 QMenuBar::~QMenuBar
+28 QMenuBar::event
+32 QMenuBar::eventFilter
+36 QMenuBar::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QMenuBar::setVisible
+64 QMenuBar::sizeHint
+68 QMenuBar::minimumSizeHint
+72 QMenuBar::heightForWidth
+76 QWidget::paintEngine
+80 QMenuBar::mousePressEvent
+84 QMenuBar::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QMenuBar::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QMenuBar::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QMenuBar::focusInEvent
+112 QMenuBar::focusOutEvent
+116 QWidget::enterEvent
+120 QMenuBar::leaveEvent
+124 QMenuBar::paintEvent
+128 QWidget::moveEvent
+132 QMenuBar::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QMenuBar::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QMenuBar::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI8QMenuBar)
+232 QMenuBar::_ZThn8_N8QMenuBarD1Ev
+236 QMenuBar::_ZThn8_N8QMenuBarD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMenuBar
+ size=20 align=4
+ base size=20 base align=4
+QMenuBar (0xb1e81080) 0
+ vptr=((& QMenuBar::_ZTV8QMenuBar) + 8u)
+ QWidget (0xb1e7d780) 0
+ primary-for QMenuBar (0xb1e81080)
+ QObject (0xb1e7c384) 0
+ primary-for QWidget (0xb1e7d780)
+ QPaintDevice (0xb1e7c3c0) 8
+ vptr=((& QMenuBar::_ZTV8QMenuBar) + 232u)
+
+Vtable for QMenuItem
+QMenuItem::_ZTV9QMenuItem: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QMenuItem)
+8 QMenuItem::metaObject
+12 QMenuItem::qt_metacast
+16 QMenuItem::qt_metacall
+20 QMenuItem::~QMenuItem
+24 QMenuItem::~QMenuItem
+28 QAction::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QMenuItem
+ size=8 align=4
+ base size=8 base align=4
+QMenuItem (0xb1ebfcc0) 0
+ vptr=((& QMenuItem::_ZTV9QMenuItem) + 8u)
+ QAction (0xb1ebfd00) 0
+ primary-for QMenuItem (0xb1ebfcc0)
+ QObject (0xb1ec4b04) 0
+ primary-for QAction (0xb1ebfd00)
+
+Class QTextEdit::ExtraSelection
+ size=12 align=4
+ base size=12 base align=4
+QTextEdit::ExtraSelection (0xb1ec4ca8) 0
+
+Vtable for QTextEdit
+QTextEdit::_ZTV9QTextEdit: 69u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QTextEdit)
+8 QTextEdit::metaObject
+12 QTextEdit::qt_metacast
+16 QTextEdit::qt_metacall
+20 QTextEdit::~QTextEdit
+24 QTextEdit::~QTextEdit
+28 QTextEdit::event
+32 QObject::eventFilter
+36 QTextEdit::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QTextEdit::mousePressEvent
+84 QTextEdit::mouseReleaseEvent
+88 QTextEdit::mouseDoubleClickEvent
+92 QTextEdit::mouseMoveEvent
+96 QTextEdit::wheelEvent
+100 QTextEdit::keyPressEvent
+104 QTextEdit::keyReleaseEvent
+108 QTextEdit::focusInEvent
+112 QTextEdit::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTextEdit::paintEvent
+128 QWidget::moveEvent
+132 QTextEdit::resizeEvent
+136 QWidget::closeEvent
+140 QTextEdit::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QTextEdit::dragEnterEvent
+156 QTextEdit::dragMoveEvent
+160 QTextEdit::dragLeaveEvent
+164 QTextEdit::dropEvent
+168 QTextEdit::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QTextEdit::changeEvent
+184 QWidget::metric
+188 QTextEdit::inputMethodEvent
+192 QTextEdit::inputMethodQuery
+196 QTextEdit::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractScrollArea::viewportEvent
+228 QTextEdit::scrollContentsBy
+232 QTextEdit::loadResource
+236 QTextEdit::createMimeDataFromSelection
+240 QTextEdit::canInsertFromMimeData
+244 QTextEdit::insertFromMimeData
+248 (int (*)(...))-0x000000008
+252 (int (*)(...))(& _ZTI9QTextEdit)
+256 QTextEdit::_ZThn8_N9QTextEditD1Ev
+260 QTextEdit::_ZThn8_N9QTextEditD0Ev
+264 QWidget::_ZThn8_NK7QWidget7devTypeEv
+268 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+272 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTextEdit
+ size=20 align=4
+ base size=20 base align=4
+QTextEdit (0xb1ebff40) 0
+ vptr=((& QTextEdit::_ZTV9QTextEdit) + 8u)
+ QAbstractScrollArea (0xb1ebff80) 0
+ primary-for QTextEdit (0xb1ebff40)
+ QFrame (0xb1ebffc0) 0
+ primary-for QAbstractScrollArea (0xb1ebff80)
+ QWidget (0xb1cd9e60) 0
+ primary-for QFrame (0xb1ebffc0)
+ QObject (0xb1ec4c30) 0
+ primary-for QWidget (0xb1cd9e60)
+ QPaintDevice (0xb1ec4c6c) 8
+ vptr=((& QTextEdit::_ZTV9QTextEdit) + 256u)
+
+Vtable for QPlainTextEdit
+QPlainTextEdit::_ZTV14QPlainTextEdit: 69u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QPlainTextEdit)
+8 QPlainTextEdit::metaObject
+12 QPlainTextEdit::qt_metacast
+16 QPlainTextEdit::qt_metacall
+20 QPlainTextEdit::~QPlainTextEdit
+24 QPlainTextEdit::~QPlainTextEdit
+28 QPlainTextEdit::event
+32 QObject::eventFilter
+36 QPlainTextEdit::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QPlainTextEdit::mousePressEvent
+84 QPlainTextEdit::mouseReleaseEvent
+88 QPlainTextEdit::mouseDoubleClickEvent
+92 QPlainTextEdit::mouseMoveEvent
+96 QPlainTextEdit::wheelEvent
+100 QPlainTextEdit::keyPressEvent
+104 QPlainTextEdit::keyReleaseEvent
+108 QPlainTextEdit::focusInEvent
+112 QPlainTextEdit::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QPlainTextEdit::paintEvent
+128 QWidget::moveEvent
+132 QPlainTextEdit::resizeEvent
+136 QWidget::closeEvent
+140 QPlainTextEdit::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QPlainTextEdit::dragEnterEvent
+156 QPlainTextEdit::dragMoveEvent
+160 QPlainTextEdit::dragLeaveEvent
+164 QPlainTextEdit::dropEvent
+168 QPlainTextEdit::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QPlainTextEdit::changeEvent
+184 QWidget::metric
+188 QPlainTextEdit::inputMethodEvent
+192 QPlainTextEdit::inputMethodQuery
+196 QPlainTextEdit::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractScrollArea::viewportEvent
+228 QPlainTextEdit::scrollContentsBy
+232 QPlainTextEdit::loadResource
+236 QPlainTextEdit::createMimeDataFromSelection
+240 QPlainTextEdit::canInsertFromMimeData
+244 QPlainTextEdit::insertFromMimeData
+248 (int (*)(...))-0x000000008
+252 (int (*)(...))(& _ZTI14QPlainTextEdit)
+256 QPlainTextEdit::_ZThn8_N14QPlainTextEditD1Ev
+260 QPlainTextEdit::_ZThn8_N14QPlainTextEditD0Ev
+264 QWidget::_ZThn8_NK7QWidget7devTypeEv
+268 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+272 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPlainTextEdit
+ size=20 align=4
+ base size=20 base align=4
+QPlainTextEdit (0xb1cdfcc0) 0
+ vptr=((& QPlainTextEdit::_ZTV14QPlainTextEdit) + 8u)
+ QAbstractScrollArea (0xb1cdfd00) 0
+ primary-for QPlainTextEdit (0xb1cdfcc0)
+ QFrame (0xb1cdfd40) 0
+ primary-for QAbstractScrollArea (0xb1cdfd00)
+ QWidget (0xb1d275f0) 0
+ primary-for QFrame (0xb1cdfd40)
+ QObject (0xb1d134ec) 0
+ primary-for QWidget (0xb1d275f0)
+ QPaintDevice (0xb1d13528) 8
+ vptr=((& QPlainTextEdit::_ZTV14QPlainTextEdit) + 256u)
+
+Vtable for QPlainTextDocumentLayout
+QPlainTextDocumentLayout::_ZTV24QPlainTextDocumentLayout: 24u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QPlainTextDocumentLayout)
+8 QPlainTextDocumentLayout::metaObject
+12 QPlainTextDocumentLayout::qt_metacast
+16 QPlainTextDocumentLayout::qt_metacall
+20 QPlainTextDocumentLayout::~QPlainTextDocumentLayout
+24 QPlainTextDocumentLayout::~QPlainTextDocumentLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QPlainTextDocumentLayout::draw
+60 QPlainTextDocumentLayout::hitTest
+64 QPlainTextDocumentLayout::pageCount
+68 QPlainTextDocumentLayout::documentSize
+72 QPlainTextDocumentLayout::frameBoundingRect
+76 QPlainTextDocumentLayout::blockBoundingRect
+80 QPlainTextDocumentLayout::documentChanged
+84 QAbstractTextDocumentLayout::resizeInlineObject
+88 QAbstractTextDocumentLayout::positionInlineObject
+92 QAbstractTextDocumentLayout::drawInlineObject
+
+Class QPlainTextDocumentLayout
+ size=8 align=4
+ base size=8 base align=4
+QPlainTextDocumentLayout (0xb1d6d1c0) 0
+ vptr=((& QPlainTextDocumentLayout::_ZTV24QPlainTextDocumentLayout) + 8u)
+ QAbstractTextDocumentLayout (0xb1d6d200) 0
+ primary-for QPlainTextDocumentLayout (0xb1d6d1c0)
+ QObject (0xb1d13870) 0
+ primary-for QAbstractTextDocumentLayout (0xb1d6d200)
+
+Vtable for QPrintPreviewWidget
+QPrintPreviewWidget::_ZTV19QPrintPreviewWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QPrintPreviewWidget)
+8 QPrintPreviewWidget::metaObject
+12 QPrintPreviewWidget::qt_metacast
+16 QPrintPreviewWidget::qt_metacall
+20 QPrintPreviewWidget::~QPrintPreviewWidget
+24 QPrintPreviewWidget::~QPrintPreviewWidget
+28 QWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QPrintPreviewWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI19QPrintPreviewWidget)
+232 QPrintPreviewWidget::_ZThn8_N19QPrintPreviewWidgetD1Ev
+236 QPrintPreviewWidget::_ZThn8_N19QPrintPreviewWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPrintPreviewWidget
+ size=24 align=4
+ base size=24 base align=4
+QPrintPreviewWidget (0xb1d6d4c0) 0
+ vptr=((& QPrintPreviewWidget::_ZTV19QPrintPreviewWidget) + 8u)
+ QWidget (0xb1d776e0) 0
+ primary-for QPrintPreviewWidget (0xb1d6d4c0)
+ QObject (0xb1d13a8c) 0
+ primary-for QWidget (0xb1d776e0)
+ QPaintDevice (0xb1d13ac8) 8
+ vptr=((& QPrintPreviewWidget::_ZTV19QPrintPreviewWidget) + 232u)
+
+Vtable for QProgressBar
+QProgressBar::_ZTV12QProgressBar: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QProgressBar)
+8 QProgressBar::metaObject
+12 QProgressBar::qt_metacast
+16 QProgressBar::qt_metacall
+20 QProgressBar::~QProgressBar
+24 QProgressBar::~QProgressBar
+28 QProgressBar::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QProgressBar::sizeHint
+68 QProgressBar::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QProgressBar::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QProgressBar::text
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI12QProgressBar)
+236 QProgressBar::_ZThn8_N12QProgressBarD1Ev
+240 QProgressBar::_ZThn8_N12QProgressBarD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QProgressBar
+ size=20 align=4
+ base size=20 base align=4
+QProgressBar (0xb1d6d780) 0
+ vptr=((& QProgressBar::_ZTV12QProgressBar) + 8u)
+ QWidget (0xb1d879b0) 0
+ primary-for QProgressBar (0xb1d6d780)
+ QObject (0xb1d13ce4) 0
+ primary-for QWidget (0xb1d879b0)
+ QPaintDevice (0xb1d13d20) 8
+ vptr=((& QProgressBar::_ZTV12QProgressBar) + 236u)
+
+Vtable for QRadioButton
+QRadioButton::_ZTV12QRadioButton: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QRadioButton)
+8 QRadioButton::metaObject
+12 QRadioButton::qt_metacast
+16 QRadioButton::qt_metacall
+20 QRadioButton::~QRadioButton
+24 QRadioButton::~QRadioButton
+28 QRadioButton::event
+32 QObject::eventFilter
+36 QAbstractButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QRadioButton::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractButton::mousePressEvent
+84 QAbstractButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QRadioButton::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QAbstractButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QAbstractButton::focusInEvent
+112 QAbstractButton::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QRadioButton::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QRadioButton::hitButton
+228 QAbstractButton::checkStateSet
+232 QAbstractButton::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI12QRadioButton)
+244 QRadioButton::_ZThn8_N12QRadioButtonD1Ev
+248 QRadioButton::_ZThn8_N12QRadioButtonD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QRadioButton
+ size=20 align=4
+ base size=20 base align=4
+QRadioButton (0xb1d6da40) 0
+ vptr=((& QRadioButton::_ZTV12QRadioButton) + 8u)
+ QAbstractButton (0xb1d6da80) 0
+ primary-for QRadioButton (0xb1d6da40)
+ QWidget (0xb1d99b90) 0
+ primary-for QAbstractButton (0xb1d6da80)
+ QObject (0xb1d13f3c) 0
+ primary-for QWidget (0xb1d99b90)
+ QPaintDevice (0xb1d13f78) 8
+ vptr=((& QRadioButton::_ZTV12QRadioButton) + 244u)
+
+Vtable for QScrollBar
+QScrollBar::_ZTV10QScrollBar: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QScrollBar)
+8 QScrollBar::metaObject
+12 QScrollBar::qt_metacast
+16 QScrollBar::qt_metacall
+20 QScrollBar::~QScrollBar
+24 QScrollBar::~QScrollBar
+28 QScrollBar::event
+32 QObject::eventFilter
+36 QAbstractSlider::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QScrollBar::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QScrollBar::mousePressEvent
+84 QScrollBar::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QScrollBar::mouseMoveEvent
+96 QAbstractSlider::wheelEvent
+100 QAbstractSlider::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QScrollBar::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QScrollBar::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QScrollBar::hideEvent
+176 QWidget::x11Event
+180 QAbstractSlider::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QScrollBar::sliderChange
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI10QScrollBar)
+236 QScrollBar::_ZThn8_N10QScrollBarD1Ev
+240 QScrollBar::_ZThn8_N10QScrollBarD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QScrollBar
+ size=20 align=4
+ base size=20 base align=4
+QScrollBar (0xb1d6dd40) 0
+ vptr=((& QScrollBar::_ZTV10QScrollBar) + 8u)
+ QAbstractSlider (0xb1d6dd80) 0
+ primary-for QScrollBar (0xb1d6dd40)
+ QWidget (0xb1daac30) 0
+ primary-for QAbstractSlider (0xb1d6dd80)
+ QObject (0xb1db21a4) 0
+ primary-for QWidget (0xb1daac30)
+ QPaintDevice (0xb1db21e0) 8
+ vptr=((& QScrollBar::_ZTV10QScrollBar) + 236u)
+
+Vtable for QSizeGrip
+QSizeGrip::_ZTV9QSizeGrip: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QSizeGrip)
+8 QSizeGrip::metaObject
+12 QSizeGrip::qt_metacast
+16 QSizeGrip::qt_metacall
+20 QSizeGrip::~QSizeGrip
+24 QSizeGrip::~QSizeGrip
+28 QSizeGrip::event
+32 QSizeGrip::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QSizeGrip::setVisible
+64 QSizeGrip::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QSizeGrip::mousePressEvent
+84 QSizeGrip::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QSizeGrip::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QSizeGrip::paintEvent
+128 QSizeGrip::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QSizeGrip::showEvent
+172 QSizeGrip::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI9QSizeGrip)
+232 QSizeGrip::_ZThn8_N9QSizeGripD1Ev
+236 QSizeGrip::_ZThn8_N9QSizeGripD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSizeGrip
+ size=20 align=4
+ base size=20 base align=4
+QSizeGrip (0xb1dc7080) 0
+ vptr=((& QSizeGrip::_ZTV9QSizeGrip) + 8u)
+ QWidget (0xb1dbf9b0) 0
+ primary-for QSizeGrip (0xb1dc7080)
+ QObject (0xb1db2474) 0
+ primary-for QWidget (0xb1dbf9b0)
+ QPaintDevice (0xb1db24b0) 8
+ vptr=((& QSizeGrip::_ZTV9QSizeGrip) + 232u)
+
+Vtable for QSpinBox
+QSpinBox::_ZTV8QSpinBox: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QSpinBox)
+8 QSpinBox::metaObject
+12 QSpinBox::qt_metacast
+16 QSpinBox::qt_metacall
+20 QSpinBox::~QSpinBox
+24 QSpinBox::~QSpinBox
+28 QSpinBox::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractSpinBox::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractSpinBox::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QAbstractSpinBox::wheelEvent
+100 QAbstractSpinBox::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QAbstractSpinBox::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractSpinBox::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QSpinBox::validate
+228 QSpinBox::fixup
+232 QAbstractSpinBox::stepBy
+236 QAbstractSpinBox::clear
+240 QAbstractSpinBox::stepEnabled
+244 QSpinBox::valueFromText
+248 QSpinBox::textFromValue
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI8QSpinBox)
+260 QSpinBox::_ZThn8_N8QSpinBoxD1Ev
+264 QSpinBox::_ZThn8_N8QSpinBoxD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSpinBox
+ size=20 align=4
+ base size=20 base align=4
+QSpinBox (0xb1dc7340) 0
+ vptr=((& QSpinBox::_ZTV8QSpinBox) + 8u)
+ QAbstractSpinBox (0xb1dc7380) 0
+ primary-for QSpinBox (0xb1dc7340)
+ QWidget (0xb1dce780) 0
+ primary-for QAbstractSpinBox (0xb1dc7380)
+ QObject (0xb1db26cc) 0
+ primary-for QWidget (0xb1dce780)
+ QPaintDevice (0xb1db2708) 8
+ vptr=((& QSpinBox::_ZTV8QSpinBox) + 260u)
+
+Vtable for QDoubleSpinBox
+QDoubleSpinBox::_ZTV14QDoubleSpinBox: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QDoubleSpinBox)
+8 QDoubleSpinBox::metaObject
+12 QDoubleSpinBox::qt_metacast
+16 QDoubleSpinBox::qt_metacall
+20 QDoubleSpinBox::~QDoubleSpinBox
+24 QDoubleSpinBox::~QDoubleSpinBox
+28 QAbstractSpinBox::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractSpinBox::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractSpinBox::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QAbstractSpinBox::wheelEvent
+100 QAbstractSpinBox::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QAbstractSpinBox::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractSpinBox::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDoubleSpinBox::validate
+228 QDoubleSpinBox::fixup
+232 QAbstractSpinBox::stepBy
+236 QAbstractSpinBox::clear
+240 QAbstractSpinBox::stepEnabled
+244 QDoubleSpinBox::valueFromText
+248 QDoubleSpinBox::textFromValue
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI14QDoubleSpinBox)
+260 QDoubleSpinBox::_ZThn8_N14QDoubleSpinBoxD1Ev
+264 QDoubleSpinBox::_ZThn8_N14QDoubleSpinBoxD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDoubleSpinBox
+ size=20 align=4
+ base size=20 base align=4
+QDoubleSpinBox (0xb1dc7780) 0
+ vptr=((& QDoubleSpinBox::_ZTV14QDoubleSpinBox) + 8u)
+ QAbstractSpinBox (0xb1dc77c0) 0
+ primary-for QDoubleSpinBox (0xb1dc7780)
+ QWidget (0xb1be7500) 0
+ primary-for QAbstractSpinBox (0xb1dc77c0)
+ QObject (0xb1db299c) 0
+ primary-for QWidget (0xb1be7500)
+ QPaintDevice (0xb1db29d8) 8
+ vptr=((& QDoubleSpinBox::_ZTV14QDoubleSpinBox) + 260u)
+
+Vtable for QSplashScreen
+QSplashScreen::_ZTV13QSplashScreen: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QSplashScreen)
+8 QSplashScreen::metaObject
+12 QSplashScreen::qt_metacast
+16 QSplashScreen::qt_metacall
+20 QSplashScreen::~QSplashScreen
+24 QSplashScreen::~QSplashScreen
+28 QSplashScreen::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QSplashScreen::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QSplashScreen::drawContents
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI13QSplashScreen)
+236 QSplashScreen::_ZThn8_N13QSplashScreenD1Ev
+240 QSplashScreen::_ZThn8_N13QSplashScreenD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSplashScreen
+ size=20 align=4
+ base size=20 base align=4
+QSplashScreen (0xb1dc7a80) 0
+ vptr=((& QSplashScreen::_ZTV13QSplashScreen) + 8u)
+ QWidget (0xb1bf6500) 0
+ primary-for QSplashScreen (0xb1dc7a80)
+ QObject (0xb1db2bf4) 0
+ primary-for QWidget (0xb1bf6500)
+ QPaintDevice (0xb1db2c30) 8
+ vptr=((& QSplashScreen::_ZTV13QSplashScreen) + 236u)
+
+Vtable for QSplitter
+QSplitter::_ZTV9QSplitter: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QSplitter)
+8 QSplitter::metaObject
+12 QSplitter::qt_metacast
+16 QSplitter::qt_metacall
+20 QSplitter::~QSplitter
+24 QSplitter::~QSplitter
+28 QSplitter::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QSplitter::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QSplitter::sizeHint
+68 QSplitter::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QFrame::paintEvent
+128 QWidget::moveEvent
+132 QSplitter::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QSplitter::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QSplitter::createHandle
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI9QSplitter)
+236 QSplitter::_ZThn8_N9QSplitterD1Ev
+240 QSplitter::_ZThn8_N9QSplitterD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSplitter
+ size=20 align=4
+ base size=20 base align=4
+QSplitter (0xb1dc7dc0) 0
+ vptr=((& QSplitter::_ZTV9QSplitter) + 8u)
+ QFrame (0xb1dc7e00) 0
+ primary-for QSplitter (0xb1dc7dc0)
+ QWidget (0xb1c066e0) 0
+ primary-for QFrame (0xb1dc7e00)
+ QObject (0xb1db2e4c) 0
+ primary-for QWidget (0xb1c066e0)
+ QPaintDevice (0xb1db2e88) 8
+ vptr=((& QSplitter::_ZTV9QSplitter) + 236u)
+
+Vtable for QSplitterHandle
+QSplitterHandle::_ZTV15QSplitterHandle: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QSplitterHandle)
+8 QSplitterHandle::metaObject
+12 QSplitterHandle::qt_metacast
+16 QSplitterHandle::qt_metacall
+20 QSplitterHandle::~QSplitterHandle
+24 QSplitterHandle::~QSplitterHandle
+28 QSplitterHandle::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QSplitterHandle::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QSplitterHandle::mousePressEvent
+84 QSplitterHandle::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QSplitterHandle::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QSplitterHandle::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI15QSplitterHandle)
+232 QSplitterHandle::_ZThn8_N15QSplitterHandleD1Ev
+236 QSplitterHandle::_ZThn8_N15QSplitterHandleD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSplitterHandle
+ size=20 align=4
+ base size=20 base align=4
+QSplitterHandle (0xb1c20200) 0
+ vptr=((& QSplitterHandle::_ZTV15QSplitterHandle) + 8u)
+ QWidget (0xb1c251e0) 0
+ primary-for QSplitterHandle (0xb1c20200)
+ QObject (0xb1c2321c) 0
+ primary-for QWidget (0xb1c251e0)
+ QPaintDevice (0xb1c23258) 8
+ vptr=((& QSplitterHandle::_ZTV15QSplitterHandle) + 232u)
+
+Vtable for QStackedWidget
+QStackedWidget::_ZTV14QStackedWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QStackedWidget)
+8 QStackedWidget::metaObject
+12 QStackedWidget::qt_metacast
+16 QStackedWidget::qt_metacall
+20 QStackedWidget::~QStackedWidget
+24 QStackedWidget::~QStackedWidget
+28 QStackedWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QFrame::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QFrame::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI14QStackedWidget)
+232 QStackedWidget::_ZThn8_N14QStackedWidgetD1Ev
+236 QStackedWidget::_ZThn8_N14QStackedWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QStackedWidget
+ size=20 align=4
+ base size=20 base align=4
+QStackedWidget (0xb1c204c0) 0
+ vptr=((& QStackedWidget::_ZTV14QStackedWidget) + 8u)
+ QFrame (0xb1c20500) 0
+ primary-for QStackedWidget (0xb1c204c0)
+ QWidget (0xb1c2bd70) 0
+ primary-for QFrame (0xb1c20500)
+ QObject (0xb1c23474) 0
+ primary-for QWidget (0xb1c2bd70)
+ QPaintDevice (0xb1c234b0) 8
+ vptr=((& QStackedWidget::_ZTV14QStackedWidget) + 232u)
+
+Vtable for QStatusBar
+QStatusBar::_ZTV10QStatusBar: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QStatusBar)
+8 QStatusBar::metaObject
+12 QStatusBar::qt_metacast
+16 QStatusBar::qt_metacall
+20 QStatusBar::~QStatusBar
+24 QStatusBar::~QStatusBar
+28 QStatusBar::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QStatusBar::paintEvent
+128 QWidget::moveEvent
+132 QStatusBar::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QStatusBar::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI10QStatusBar)
+232 QStatusBar::_ZThn8_N10QStatusBarD1Ev
+236 QStatusBar::_ZThn8_N10QStatusBarD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QStatusBar
+ size=20 align=4
+ base size=20 base align=4
+QStatusBar (0xb1c207c0) 0
+ vptr=((& QStatusBar::_ZTV10QStatusBar) + 8u)
+ QWidget (0xb1c3c8c0) 0
+ primary-for QStatusBar (0xb1c207c0)
+ QObject (0xb1c236cc) 0
+ primary-for QWidget (0xb1c3c8c0)
+ QPaintDevice (0xb1c23708) 8
+ vptr=((& QStatusBar::_ZTV10QStatusBar) + 232u)
+
+Vtable for QTextBrowser
+QTextBrowser::_ZTV12QTextBrowser: 74u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QTextBrowser)
+8 QTextBrowser::metaObject
+12 QTextBrowser::qt_metacast
+16 QTextBrowser::qt_metacall
+20 QTextBrowser::~QTextBrowser
+24 QTextBrowser::~QTextBrowser
+28 QTextBrowser::event
+32 QObject::eventFilter
+36 QTextEdit::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QTextBrowser::mousePressEvent
+84 QTextBrowser::mouseReleaseEvent
+88 QTextEdit::mouseDoubleClickEvent
+92 QTextBrowser::mouseMoveEvent
+96 QTextEdit::wheelEvent
+100 QTextBrowser::keyPressEvent
+104 QTextEdit::keyReleaseEvent
+108 QTextEdit::focusInEvent
+112 QTextBrowser::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTextBrowser::paintEvent
+128 QWidget::moveEvent
+132 QTextEdit::resizeEvent
+136 QWidget::closeEvent
+140 QTextEdit::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QTextEdit::dragEnterEvent
+156 QTextEdit::dragMoveEvent
+160 QTextEdit::dragLeaveEvent
+164 QTextEdit::dropEvent
+168 QTextEdit::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QTextEdit::changeEvent
+184 QWidget::metric
+188 QTextEdit::inputMethodEvent
+192 QTextEdit::inputMethodQuery
+196 QTextBrowser::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractScrollArea::viewportEvent
+228 QTextEdit::scrollContentsBy
+232 QTextBrowser::loadResource
+236 QTextEdit::createMimeDataFromSelection
+240 QTextEdit::canInsertFromMimeData
+244 QTextEdit::insertFromMimeData
+248 QTextBrowser::setSource
+252 QTextBrowser::backward
+256 QTextBrowser::forward
+260 QTextBrowser::home
+264 QTextBrowser::reload
+268 (int (*)(...))-0x000000008
+272 (int (*)(...))(& _ZTI12QTextBrowser)
+276 QTextBrowser::_ZThn8_N12QTextBrowserD1Ev
+280 QTextBrowser::_ZThn8_N12QTextBrowserD0Ev
+284 QWidget::_ZThn8_NK7QWidget7devTypeEv
+288 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+292 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTextBrowser
+ size=20 align=4
+ base size=20 base align=4
+QTextBrowser (0xb1c20bc0) 0
+ vptr=((& QTextBrowser::_ZTV12QTextBrowser) + 8u)
+ QTextEdit (0xb1c20c00) 0
+ primary-for QTextBrowser (0xb1c20bc0)
+ QAbstractScrollArea (0xb1c20c40) 0
+ primary-for QTextEdit (0xb1c20c00)
+ QFrame (0xb1c20c80) 0
+ primary-for QAbstractScrollArea (0xb1c20c40)
+ QWidget (0xb1c56050) 0
+ primary-for QFrame (0xb1c20c80)
+ QObject (0xb1c23924) 0
+ primary-for QWidget (0xb1c56050)
+ QPaintDevice (0xb1c23960) 8
+ vptr=((& QTextBrowser::_ZTV12QTextBrowser) + 276u)
+
+Vtable for QToolBar
+QToolBar::_ZTV8QToolBar: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QToolBar)
+8 QToolBar::metaObject
+12 QToolBar::qt_metacast
+16 QToolBar::qt_metacall
+20 QToolBar::~QToolBar
+24 QToolBar::~QToolBar
+28 QToolBar::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QToolBar::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QToolBar::paintEvent
+128 QWidget::moveEvent
+132 QToolBar::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QToolBar::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QToolBar::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI8QToolBar)
+232 QToolBar::_ZThn8_N8QToolBarD1Ev
+236 QToolBar::_ZThn8_N8QToolBarD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QToolBar
+ size=20 align=4
+ base size=20 base align=4
+QToolBar (0xb1c20f40) 0
+ vptr=((& QToolBar::_ZTV8QToolBar) + 8u)
+ QWidget (0xb1c5f910) 0
+ primary-for QToolBar (0xb1c20f40)
+ QObject (0xb1c23b7c) 0
+ primary-for QWidget (0xb1c5f910)
+ QPaintDevice (0xb1c23bb8) 8
+ vptr=((& QToolBar::_ZTV8QToolBar) + 232u)
+
+Vtable for QToolBox
+QToolBox::_ZTV8QToolBox: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QToolBox)
+8 QToolBox::metaObject
+12 QToolBox::qt_metacast
+16 QToolBox::qt_metacall
+20 QToolBox::~QToolBox
+24 QToolBox::~QToolBox
+28 QToolBox::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QFrame::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QFrame::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QToolBox::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QToolBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QToolBox::itemInserted
+228 QToolBox::itemRemoved
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI8QToolBox)
+240 QToolBox::_ZThn8_N8QToolBoxD1Ev
+244 QToolBox::_ZThn8_N8QToolBoxD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QToolBox
+ size=20 align=4
+ base size=20 base align=4
+QToolBox (0xb1c7b340) 0
+ vptr=((& QToolBox::_ZTV8QToolBox) + 8u)
+ QFrame (0xb1c7b380) 0
+ primary-for QToolBox (0xb1c7b340)
+ QWidget (0xb1c8c280) 0
+ primary-for QFrame (0xb1c7b380)
+ QObject (0xb1c23f00) 0
+ primary-for QWidget (0xb1c8c280)
+ QPaintDevice (0xb1c23f3c) 8
+ vptr=((& QToolBox::_ZTV8QToolBox) + 240u)
+
+Vtable for QToolButton
+QToolButton::_ZTV11QToolButton: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QToolButton)
+8 QToolButton::metaObject
+12 QToolButton::qt_metacast
+16 QToolButton::qt_metacall
+20 QToolButton::~QToolButton
+24 QToolButton::~QToolButton
+28 QToolButton::event
+32 QObject::eventFilter
+36 QToolButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QToolButton::sizeHint
+68 QToolButton::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QToolButton::mousePressEvent
+84 QToolButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractButton::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QAbstractButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QAbstractButton::focusInEvent
+112 QAbstractButton::focusOutEvent
+116 QToolButton::enterEvent
+120 QToolButton::leaveEvent
+124 QToolButton::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QToolButton::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QToolButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QToolButton::hitButton
+228 QAbstractButton::checkStateSet
+232 QToolButton::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI11QToolButton)
+244 QToolButton::_ZThn8_N11QToolButtonD1Ev
+248 QToolButton::_ZThn8_N11QToolButtonD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QToolButton
+ size=20 align=4
+ base size=20 base align=4
+QToolButton (0xb1c7b980) 0
+ vptr=((& QToolButton::_ZTV11QToolButton) + 8u)
+ QAbstractButton (0xb1c7b9c0) 0
+ primary-for QToolButton (0xb1c7b980)
+ QWidget (0xb1ca70f0) 0
+ primary-for QAbstractButton (0xb1c7b9c0)
+ QObject (0xb1c9d618) 0
+ primary-for QWidget (0xb1ca70f0)
+ QPaintDevice (0xb1c9d654) 8
+ vptr=((& QToolButton::_ZTV11QToolButton) + 244u)
+
+Vtable for QWorkspace
+QWorkspace::_ZTV10QWorkspace: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QWorkspace)
+8 QWorkspace::metaObject
+12 QWorkspace::qt_metacast
+16 QWorkspace::qt_metacall
+20 QWorkspace::~QWorkspace
+24 QWorkspace::~QWorkspace
+28 QWorkspace::event
+32 QWorkspace::eventFilter
+36 QObject::timerEvent
+40 QWorkspace::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWorkspace::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWorkspace::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWorkspace::paintEvent
+128 QWidget::moveEvent
+132 QWorkspace::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWorkspace::showEvent
+172 QWorkspace::hideEvent
+176 QWidget::x11Event
+180 QWorkspace::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI10QWorkspace)
+232 QWorkspace::_ZThn8_N10QWorkspaceD1Ev
+236 QWorkspace::_ZThn8_N10QWorkspaceD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWorkspace
+ size=20 align=4
+ base size=20 base align=4
+QWorkspace (0xb1cc8100) 0
+ vptr=((& QWorkspace::_ZTV10QWorkspace) + 8u)
+ QWidget (0xb1ccd230) 0
+ primary-for QWorkspace (0xb1cc8100)
+ QObject (0xb1c9dca8) 0
+ primary-for QWidget (0xb1ccd230)
+ QPaintDevice (0xb1c9dce4) 8
+ vptr=((& QWorkspace::_ZTV10QWorkspace) + 232u)
+
+Class QAudioFormat
+ size=4 align=4
+ base size=4 base align=4
+QAudioFormat (0xb1ae812c) 0
+
+Class QAudioDeviceInfo
+ size=4 align=4
+ base size=4 base align=4
+QAudioDeviceInfo (0xb1ae81a4) 0
+
+Vtable for QAbstractAudioDeviceInfo
+QAbstractAudioDeviceInfo::_ZTV24QAbstractAudioDeviceInfo: 24u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QAbstractAudioDeviceInfo)
+8 QAbstractAudioDeviceInfo::metaObject
+12 QAbstractAudioDeviceInfo::qt_metacast
+16 QAbstractAudioDeviceInfo::qt_metacall
+20 QAbstractAudioDeviceInfo::~QAbstractAudioDeviceInfo
+24 QAbstractAudioDeviceInfo::~QAbstractAudioDeviceInfo
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 __cxa_pure_virtual
+
+Class QAbstractAudioDeviceInfo
+ size=8 align=4
+ base size=8 base align=4
+QAbstractAudioDeviceInfo (0xb1cc8a00) 0
+ vptr=((& QAbstractAudioDeviceInfo::_ZTV24QAbstractAudioDeviceInfo) + 8u)
+ QObject (0xb1ae82d0) 0
+ primary-for QAbstractAudioDeviceInfo (0xb1cc8a00)
+
+Vtable for QAbstractAudioOutput
+QAbstractAudioOutput::_ZTV20QAbstractAudioOutput: 30u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QAbstractAudioOutput)
+8 QAbstractAudioOutput::metaObject
+12 QAbstractAudioOutput::qt_metacast
+16 QAbstractAudioOutput::qt_metacall
+20 QAbstractAudioOutput::~QAbstractAudioOutput
+24 QAbstractAudioOutput::~QAbstractAudioOutput
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+112 __cxa_pure_virtual
+116 __cxa_pure_virtual
+
+Class QAbstractAudioOutput
+ size=8 align=4
+ base size=8 base align=4
+QAbstractAudioOutput (0xb1cc8c40) 0
+ vptr=((& QAbstractAudioOutput::_ZTV20QAbstractAudioOutput) + 8u)
+ QObject (0xb1ae83fc) 0
+ primary-for QAbstractAudioOutput (0xb1cc8c40)
+
+Vtable for QAbstractAudioInput
+QAbstractAudioInput::_ZTV19QAbstractAudioInput: 30u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractAudioInput)
+8 QAbstractAudioInput::metaObject
+12 QAbstractAudioInput::qt_metacast
+16 QAbstractAudioInput::qt_metacall
+20 QAbstractAudioInput::~QAbstractAudioInput
+24 QAbstractAudioInput::~QAbstractAudioInput
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+112 __cxa_pure_virtual
+116 __cxa_pure_virtual
+
+Class QAbstractAudioInput
+ size=8 align=4
+ base size=8 base align=4
+QAbstractAudioInput (0xb1cc8e80) 0
+ vptr=((& QAbstractAudioInput::_ZTV19QAbstractAudioInput) + 8u)
+ QObject (0xb1ae8528) 0
+ primary-for QAbstractAudioInput (0xb1cc8e80)
+
+Vtable for QAudioEngineFactoryInterface
+QAudioEngineFactoryInterface::_ZTV28QAudioEngineFactoryInterface: 9u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI28QAudioEngineFactoryInterface)
+8 QAudioEngineFactoryInterface::~QAudioEngineFactoryInterface
+12 QAudioEngineFactoryInterface::~QAudioEngineFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+
+Class QAudioEngineFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QAudioEngineFactoryInterface (0xb1b230c0) 0 nearly-empty
+ vptr=((& QAudioEngineFactoryInterface::_ZTV28QAudioEngineFactoryInterface) + 8u)
+ QFactoryInterface (0xb1ae8654) 0 nearly-empty
+ primary-for QAudioEngineFactoryInterface (0xb1b230c0)
+
+Vtable for QAudioEnginePlugin
+QAudioEnginePlugin::_ZTV18QAudioEnginePlugin: 28u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QAudioEnginePlugin)
+8 QAudioEnginePlugin::metaObject
+12 QAudioEnginePlugin::qt_metacast
+16 QAudioEnginePlugin::qt_metacall
+20 QAudioEnginePlugin::~QAudioEnginePlugin
+24 QAudioEnginePlugin::~QAudioEnginePlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 (int (*)(...))-0x000000008
+80 (int (*)(...))(& _ZTI18QAudioEnginePlugin)
+84 QAudioEnginePlugin::_ZThn8_N18QAudioEnginePluginD1Ev
+88 QAudioEnginePlugin::_ZThn8_N18QAudioEnginePluginD0Ev
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+
+Class QAudioEnginePlugin
+ size=12 align=4
+ base size=12 base align=4
+QAudioEnginePlugin (0xb1b2c1e0) 0
+ vptr=((& QAudioEnginePlugin::_ZTV18QAudioEnginePlugin) + 8u)
+ QObject (0xb1ae8960) 0
+ primary-for QAudioEnginePlugin (0xb1b2c1e0)
+ QAudioEngineFactoryInterface (0xb1b23380) 8 nearly-empty
+ vptr=((& QAudioEnginePlugin::_ZTV18QAudioEnginePlugin) + 84u)
+ QFactoryInterface (0xb1ae899c) 8 nearly-empty
+ primary-for QAudioEngineFactoryInterface (0xb1b23380)
+
+Vtable for QAudioInput
+QAudioInput::_ZTV11QAudioInput: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QAudioInput)
+8 QAudioInput::metaObject
+12 QAudioInput::qt_metacast
+16 QAudioInput::qt_metacall
+20 QAudioInput::~QAudioInput
+24 QAudioInput::~QAudioInput
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QAudioInput
+ size=12 align=4
+ base size=12 base align=4
+QAudioInput (0xb1b235c0) 0
+ vptr=((& QAudioInput::_ZTV11QAudioInput) + 8u)
+ QObject (0xb1ae8ac8) 0
+ primary-for QAudioInput (0xb1b235c0)
+
+Vtable for QAudioOutput
+QAudioOutput::_ZTV12QAudioOutput: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QAudioOutput)
+8 QAudioOutput::metaObject
+12 QAudioOutput::qt_metacast
+16 QAudioOutput::qt_metacall
+20 QAudioOutput::~QAudioOutput
+24 QAudioOutput::~QAudioOutput
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QAudioOutput
+ size=12 align=4
+ base size=12 base align=4
+QAudioOutput (0xb1b23800) 0
+ vptr=((& QAudioOutput::_ZTV12QAudioOutput) + 8u)
+ QObject (0xb1ae8bf4) 0
+ primary-for QAudioOutput (0xb1b23800)
+
+Vtable for QAbstractVideoBuffer
+QAbstractVideoBuffer::_ZTV20QAbstractVideoBuffer: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QAbstractVideoBuffer)
+8 QAbstractVideoBuffer::~QAbstractVideoBuffer
+12 QAbstractVideoBuffer::~QAbstractVideoBuffer
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 QAbstractVideoBuffer::handle
+
+Class QAbstractVideoBuffer
+ size=8 align=4
+ base size=8 base align=4
+QAbstractVideoBuffer (0xb1ae8d20) 0
+ vptr=((& QAbstractVideoBuffer::_ZTV20QAbstractVideoBuffer) + 8u)
+
+Class QVideoFrame
+ size=4 align=4
+ base size=4 base align=4
+QVideoFrame (0xb1b61000) 0
+
+Vtable for QAbstractVideoSurface
+QAbstractVideoSurface::_ZTV21QAbstractVideoSurface: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QAbstractVideoSurface)
+8 QAbstractVideoSurface::metaObject
+12 QAbstractVideoSurface::qt_metacast
+16 QAbstractVideoSurface::qt_metacall
+20 QAbstractVideoSurface::~QAbstractVideoSurface
+24 QAbstractVideoSurface::~QAbstractVideoSurface
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 QAbstractVideoSurface::isFormatSupported
+64 QAbstractVideoSurface::nearestFormat
+68 QAbstractVideoSurface::start
+72 QAbstractVideoSurface::stop
+76 __cxa_pure_virtual
+
+Class QAbstractVideoSurface
+ size=8 align=4
+ base size=8 base align=4
+QAbstractVideoSurface (0xb1b76080) 0
+ vptr=((& QAbstractVideoSurface::_ZTV21QAbstractVideoSurface) + 8u)
+ QObject (0xb1b611e0) 0
+ primary-for QAbstractVideoSurface (0xb1b76080)
+
+Class QVideoSurfaceFormat
+ size=4 align=4
+ base size=4 base align=4
+QVideoSurfaceFormat (0xb1b613fc) 0
+
diff --git a/tests/auto/bic/data/QtMultimedia.4.7.0.linux-gcc-ia32.txt b/tests/auto/bic/data/QtMultimedia.4.7.0.linux-gcc-ia32.txt
new file mode 100644
index 000000000..3a27226fc
--- /dev/null
+++ b/tests/auto/bic/data/QtMultimedia.4.7.0.linux-gcc-ia32.txt
@@ -0,0 +1,17075 @@
+Class QSysInfo
+ size=1 align=1
+ base size=0 base align=1
+QSysInfo (0xb6c94c6c) 0 empty
+
+Class QBool
+ size=1 align=1
+ base size=1 base align=1
+QBool (0xb6c94e10) 0
+
+Class qIsNull(double)::U
+ size=8 align=4
+ base size=8 base align=4
+qIsNull(double)::U (0xb62c74ec) 0
+
+Class qIsNull(float)::U
+ size=4 align=4
+ base size=4 base align=4
+qIsNull(float)::U (0xb62c75a0) 0
+
+Class QFlag
+ size=4 align=4
+ base size=4 base align=4
+QFlag (0xb62c7dd4) 0
+
+Class QIncompatibleFlag
+ size=4 align=4
+ base size=4 base align=4
+QIncompatibleFlag (0xb62c7f00) 0
+
+Class QInternal
+ size=1 align=1
+ base size=0 base align=1
+QInternal (0xb5a49078) 0 empty
+
+Class QGenericArgument
+ size=8 align=4
+ base size=8 base align=4
+QGenericArgument (0xb5a490b4) 0
+
+Class QGenericReturnArgument
+ size=8 align=4
+ base size=8 base align=4
+QGenericReturnArgument (0xb5a21680) 0
+ QGenericArgument (0xb5a492d0) 0
+
+Class QMetaObject
+ size=16 align=4
+ base size=16 base align=4
+QMetaObject (0xb5a49474) 0
+
+Class QMetaObjectExtraData
+ size=8 align=4
+ base size=8 base align=4
+QMetaObjectExtraData (0xb5a495a0) 0
+
+Class QLatin1Char
+ size=1 align=1
+ base size=1 base align=1
+QLatin1Char (0xb5a49780) 0
+
+Class QChar
+ size=2 align=2
+ base size=2 base align=2
+QChar (0xb5a49960) 0
+
+Class QBasicAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QBasicAtomicInt (0xb58af0b4) 0
+
+Class QAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QAtomicInt (0xb58c3fc0) 0
+ QBasicAtomicInt (0xb58af7bc) 0
+
+Class __locale_struct
+ size=116 align=4
+ base size=116 base align=4
+__locale_struct (0xb58afca8) 0
+
+Class QByteArray::Data
+ size=20 align=4
+ base size=20 base align=4
+QByteArray::Data (0xb590012c) 0
+
+Class QByteArray
+ size=4 align=4
+ base size=4 base align=4
+QByteArray (0xb59000f0) 0
+
+Class QByteRef
+ size=8 align=4
+ base size=8 base align=4
+QByteRef (0xb595703c) 0
+
+Class QString::Null
+ size=1 align=1
+ base size=0 base align=1
+QString::Null (0xb578e7f8) 0 empty
+
+Class QString::Data
+ size=20 align=4
+ base size=20 base align=4
+QString::Data (0xb578e834) 0
+
+Class QString
+ size=4 align=4
+ base size=4 base align=4
+QString (0xb578e7bc) 0
+
+Class QLatin1String
+ size=4 align=4
+ base size=4 base align=4
+QLatin1String (0xb5857438) 0
+
+Class QCharRef
+ size=8 align=4
+ base size=8 base align=4
+QCharRef (0xb56b512c) 0
+
+Class QConstString
+ size=4 align=4
+ base size=4 base align=4
+QConstString (0xb573f780) 0
+ QString (0xb575a870) 0
+
+Class QStringRef
+ size=12 align=4
+ base size=12 base align=4
+QStringRef (0xb575abb8) 0
+
+Vtable for std::exception
+std::exception::_ZTVSt9exception: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTISt9exception)
+8 std::exception::~exception
+12 std::exception::~exception
+16 std::exception::what
+
+Class std::exception
+ size=4 align=4
+ base size=4 base align=4
+std::exception (0xb5596c6c) 0 nearly-empty
+ vptr=((& std::exception::_ZTVSt9exception) + 8u)
+
+Vtable for std::bad_exception
+std::bad_exception::_ZTVSt13bad_exception: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTISt13bad_exception)
+8 std::bad_exception::~bad_exception
+12 std::bad_exception::~bad_exception
+16 std::bad_exception::what
+
+Class std::bad_exception
+ size=4 align=4
+ base size=4 base align=4
+std::bad_exception (0xb55e5380) 0 nearly-empty
+ vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 8u)
+ std::exception (0xb5596d5c) 0 nearly-empty
+ primary-for std::bad_exception (0xb55e5380)
+
+Vtable for std::bad_alloc
+std::bad_alloc::_ZTVSt9bad_alloc: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTISt9bad_alloc)
+8 std::bad_alloc::~bad_alloc
+12 std::bad_alloc::~bad_alloc
+16 std::bad_alloc::what
+
+Class std::bad_alloc
+ size=4 align=4
+ base size=4 base align=4
+std::bad_alloc (0xb55e5500) 0 nearly-empty
+ vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 8u)
+ std::exception (0xb5596fb4) 0 nearly-empty
+ primary-for std::bad_alloc (0xb55e5500)
+
+Class std::nothrow_t
+ size=1 align=1
+ base size=0 base align=1
+std::nothrow_t (0xb55f621c) 0 empty
+
+Class QListData::Data
+ size=24 align=4
+ base size=24 base align=4
+QListData::Data (0xb55f630c) 0
+
+Class QListData
+ size=4 align=4
+ base size=4 base align=4
+QListData (0xb55f62d0) 0
+
+Class QScopedPointerPodDeleter
+ size=1 align=1
+ base size=0 base align=1
+QScopedPointerPodDeleter (0xb55f6b40) 0 empty
+
+Vtable for QObjectData
+QObjectData::_ZTV11QObjectData: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QObjectData)
+8 __cxa_pure_virtual
+12 __cxa_pure_virtual
+
+Class QObjectData
+ size=28 align=4
+ base size=28 base align=4
+QObjectData (0xb55f6bf4) 0
+ vptr=((& QObjectData::_ZTV11QObjectData) + 8u)
+
+Vtable for QObject
+QObject::_ZTV7QObject: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QObject)
+8 QObject::metaObject
+12 QObject::qt_metacast
+16 QObject::qt_metacall
+20 QObject::~QObject
+24 QObject::~QObject
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QObject
+ size=8 align=4
+ base size=8 base align=4
+QObject (0xb55f6ca8) 0
+ vptr=((& QObject::_ZTV7QObject) + 8u)
+
+Vtable for QObjectUserData
+QObjectUserData::_ZTV15QObjectUserData: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QObjectUserData)
+8 QObjectUserData::~QObjectUserData
+12 QObjectUserData::~QObjectUserData
+
+Class QObjectUserData
+ size=4 align=4
+ base size=4 base align=4
+QObjectUserData (0xb54fc528) 0 nearly-empty
+ vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 8u)
+
+Vtable for QIODevice
+QIODevice::_ZTV9QIODevice: 30u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QIODevice)
+8 QIODevice::metaObject
+12 QIODevice::qt_metacast
+16 QIODevice::qt_metacall
+20 QIODevice::~QIODevice
+24 QIODevice::~QIODevice
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QIODevice::isSequential
+60 QIODevice::open
+64 QIODevice::close
+68 QIODevice::pos
+72 QIODevice::size
+76 QIODevice::seek
+80 QIODevice::atEnd
+84 QIODevice::reset
+88 QIODevice::bytesAvailable
+92 QIODevice::bytesToWrite
+96 QIODevice::canReadLine
+100 QIODevice::waitForReadyRead
+104 QIODevice::waitForBytesWritten
+108 __cxa_pure_virtual
+112 QIODevice::readLineData
+116 __cxa_pure_virtual
+
+Class QIODevice
+ size=8 align=4
+ base size=8 base align=4
+QIODevice (0xb550b280) 0
+ vptr=((& QIODevice::_ZTV9QIODevice) + 8u)
+ QObject (0xb54fc654) 0
+ primary-for QIODevice (0xb550b280)
+
+Class wait
+ size=4 align=4
+ base size=4 base align=4
+wait (0xb55393c0) 0
+
+Class timespec
+ size=8 align=4
+ base size=8 base align=4
+timespec (0xb55395a0) 0
+
+Class timeval
+ size=8 align=4
+ base size=8 base align=4
+timeval (0xb55395dc) 0
+
+Class __pthread_internal_slist
+ size=4 align=4
+ base size=4 base align=4
+__pthread_internal_slist (0xb5539690) 0
+
+Class random_data
+ size=28 align=4
+ base size=28 base align=4
+random_data (0xb553999c) 0
+
+Class drand48_data
+ size=24 align=4
+ base size=24 base align=4
+drand48_data (0xb55399d8) 0
+
+Class QVectorData
+ size=16 align=4
+ base size=16 base align=4
+QVectorData (0xb5539a14) 0
+
+Class QXmlStreamStringRef
+ size=12 align=4
+ base size=12 base align=4
+QXmlStreamStringRef (0xb5539bf4) 0
+
+Class QXmlStreamAttribute
+ size=56 align=4
+ base size=53 base align=4
+QXmlStreamAttribute (0xb54008ac) 0
+
+Class QXmlStreamAttributes
+ size=4 align=4
+ base size=4 base align=4
+QXmlStreamAttributes (0xb53f5980) 0
+ QVector<QXmlStreamAttribute> (0xb541c30c) 0
+
+Class QXmlStreamNamespaceDeclaration
+ size=28 align=4
+ base size=28 base align=4
+QXmlStreamNamespaceDeclaration (0xb541c3fc) 0
+
+Class QXmlStreamNotationDeclaration
+ size=40 align=4
+ base size=40 base align=4
+QXmlStreamNotationDeclaration (0xb541c870) 0
+
+Class QXmlStreamEntityDeclaration
+ size=64 align=4
+ base size=64 base align=4
+QXmlStreamEntityDeclaration (0xb541ce4c) 0
+
+Vtable for QXmlStreamEntityResolver
+QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QXmlStreamEntityResolver)
+8 QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+12 QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+16 QXmlStreamEntityResolver::resolveEntity
+20 QXmlStreamEntityResolver::resolveUndeclaredEntity
+
+Class QXmlStreamEntityResolver
+ size=4 align=4
+ base size=4 base align=4
+QXmlStreamEntityResolver (0xb5455708) 0 nearly-empty
+ vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 8u)
+
+Class QXmlStreamReader
+ size=4 align=4
+ base size=4 base align=4
+QXmlStreamReader (0xb5455744) 0
+
+Class QXmlStreamWriter
+ size=4 align=4
+ base size=4 base align=4
+QXmlStreamWriter (0xb54558ac) 0
+
+Class QBitArray
+ size=4 align=4
+ base size=4 base align=4
+QBitArray (0xb5455a14) 0
+
+Class QBitRef
+ size=8 align=4
+ base size=8 base align=4
+QBitRef (0xb52a8ec4) 0
+
+Class QByteArrayMatcher::Data
+ size=264 align=4
+ base size=264 base align=4
+QByteArrayMatcher::Data (0xb52c94ec) 0
+
+Class QByteArrayMatcher
+ size=1032 align=4
+ base size=1032 base align=4
+QByteArrayMatcher (0xb52c94b0) 0
+
+Vtable for QDataStream
+QDataStream::_ZTV11QDataStream: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QDataStream)
+8 QDataStream::~QDataStream
+12 QDataStream::~QDataStream
+
+Class QDataStream
+ size=28 align=4
+ base size=28 base align=4
+QDataStream (0xb52c9744) 0
+ vptr=((& QDataStream::_ZTV11QDataStream) + 8u)
+
+Class QHashData::Node
+ size=8 align=4
+ base size=8 base align=4
+QHashData::Node (0xb532330c) 0
+
+Class QHashData
+ size=32 align=4
+ base size=32 base align=4
+QHashData (0xb53232d0) 0
+
+Class QHashDummyValue
+ size=1 align=1
+ base size=0 base align=1
+QHashDummyValue (0xb5323a14) 0 empty
+
+Class QContiguousCacheData
+ size=24 align=4
+ base size=24 base align=4
+QContiguousCacheData (0xb535b1a4) 0
+
+Class QCryptographicHash
+ size=4 align=4
+ base size=4 base align=4
+QCryptographicHash (0xb535b348) 0
+
+Class QSharedData
+ size=4 align=4
+ base size=4 base align=4
+QSharedData (0xb535b384) 0
+
+Vtable for QtSharedPointer::ExternalRefCountData
+QtSharedPointer::ExternalRefCountData::_ZTVN15QtSharedPointer20ExternalRefCountDataE: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN15QtSharedPointer20ExternalRefCountDataE)
+8 QtSharedPointer::ExternalRefCountData::~ExternalRefCountData
+12 QtSharedPointer::ExternalRefCountData::~ExternalRefCountData
+16 QtSharedPointer::ExternalRefCountData::destroy
+
+Class QtSharedPointer::ExternalRefCountData
+ size=12 align=4
+ base size=12 base align=4
+QtSharedPointer::ExternalRefCountData (0xb535b708) 0
+ vptr=((& QtSharedPointer::ExternalRefCountData::_ZTVN15QtSharedPointer20ExternalRefCountDataE) + 8u)
+
+Vtable for QtSharedPointer::ExternalRefCountWithDestroyFn
+QtSharedPointer::ExternalRefCountWithDestroyFn::_ZTVN15QtSharedPointer29ExternalRefCountWithDestroyFnE: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN15QtSharedPointer29ExternalRefCountWithDestroyFnE)
+8 QtSharedPointer::ExternalRefCountWithDestroyFn::~ExternalRefCountWithDestroyFn
+12 QtSharedPointer::ExternalRefCountWithDestroyFn::~ExternalRefCountWithDestroyFn
+16 QtSharedPointer::ExternalRefCountWithDestroyFn::destroy
+
+Class QtSharedPointer::ExternalRefCountWithDestroyFn
+ size=16 align=4
+ base size=16 base align=4
+QtSharedPointer::ExternalRefCountWithDestroyFn (0xb525d500) 0
+ vptr=((& QtSharedPointer::ExternalRefCountWithDestroyFn::_ZTVN15QtSharedPointer29ExternalRefCountWithDestroyFnE) + 8u)
+ QtSharedPointer::ExternalRefCountData (0xb535bf00) 0
+ primary-for QtSharedPointer::ExternalRefCountWithDestroyFn (0xb525d500)
+
+Class QDate
+ size=4 align=4
+ base size=4 base align=4
+QDate (0xb506a438) 0
+
+Class QTime
+ size=4 align=4
+ base size=4 base align=4
+QTime (0xb506aa50) 0
+
+Class QDateTime
+ size=4 align=4
+ base size=4 base align=4
+QDateTime (0xb506afb4) 0
+
+Class QEasingCurve
+ size=4 align=4
+ base size=4 base align=4
+QEasingCurve (0xb50e6294) 0
+
+Class QElapsedTimer
+ size=16 align=4
+ base size=16 base align=4
+QElapsedTimer (0xb50e630c) 0
+
+Class QPoint
+ size=8 align=4
+ base size=8 base align=4
+QPoint (0xb50e6528) 0
+
+Class QPointF
+ size=16 align=4
+ base size=16 base align=4
+QPointF (0xb5126ac8) 0
+
+Class QLine
+ size=16 align=4
+ base size=16 base align=4
+QLine (0xb514d1e0) 0
+
+Class QLineF
+ size=32 align=4
+ base size=32 base align=4
+QLineF (0xb514df00) 0
+
+Class QLinkedListData
+ size=20 align=4
+ base size=20 base align=4
+QLinkedListData (0xb4f9f000) 0
+
+Vtable for QSystemLocale
+QSystemLocale::_ZTV13QSystemLocale: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QSystemLocale)
+8 QSystemLocale::~QSystemLocale
+12 QSystemLocale::~QSystemLocale
+16 QSystemLocale::query
+20 QSystemLocale::fallbackLocale
+
+Class QSystemLocale
+ size=4 align=4
+ base size=4 base align=4
+QSystemLocale (0xb4f9f21c) 0 nearly-empty
+ vptr=((& QSystemLocale::_ZTV13QSystemLocale) + 8u)
+
+Class QLocale::Data
+ size=4 align=2
+ base size=4 base align=2
+QLocale::Data (0xb4f9f294) 0
+
+Class QLocale
+ size=4 align=4
+ base size=4 base align=4
+QLocale (0xb4f9f258) 0
+
+Class QMapData::Node
+ size=8 align=4
+ base size=8 base align=4
+QMapData::Node (0xb4f9f8e8) 0
+
+Class QMapData
+ size=72 align=4
+ base size=72 base align=4
+QMapData (0xb4f9f8ac) 0
+
+Class QMargins
+ size=16 align=4
+ base size=16 base align=4
+QMargins (0xb4f9fbf4) 0
+
+Class QSize
+ size=8 align=4
+ base size=8 base align=4
+QSize (0xb4f03d5c) 0
+
+Class QSizeF
+ size=16 align=4
+ base size=16 base align=4
+QSizeF (0xb4f2d7f8) 0
+
+Class QRect
+ size=16 align=4
+ base size=16 base align=4
+QRect (0xb4f583fc) 0
+
+Class QRectF
+ size=32 align=4
+ base size=32 base align=4
+QRectF (0xb4dba03c) 0
+
+Class QRegExp
+ size=4 align=4
+ base size=4 base align=4
+QRegExp (0xb4e05d98) 0
+
+Class QLatin1Literal
+ size=8 align=4
+ base size=8 base align=4
+QLatin1Literal (0xb4e288e8) 0
+
+Class QAbstractConcatenable
+ size=1 align=1
+ base size=0 base align=1
+QAbstractConcatenable (0xb4e2899c) 0 empty
+
+Class QStringMatcher::Data
+ size=264 align=4
+ base size=264 base align=4
+QStringMatcher::Data (0xb4c89f78) 0
+
+Class QStringMatcher
+ size=1036 align=4
+ base size=1036 base align=4
+QStringMatcher (0xb4c89f3c) 0
+
+Class QStringList
+ size=4 align=4
+ base size=4 base align=4
+QStringList (0xb4ca2440) 0
+ QList<QString> (0xb4cb00b4) 0
+
+Class QTextBoundaryFinder
+ size=28 align=4
+ base size=28 base align=4
+QTextBoundaryFinder (0xb4cf5618) 0
+
+Vtable for QTimeLine
+QTimeLine::_ZTV9QTimeLine: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QTimeLine)
+8 QTimeLine::metaObject
+12 QTimeLine::qt_metacast
+16 QTimeLine::qt_metacall
+20 QTimeLine::~QTimeLine
+24 QTimeLine::~QTimeLine
+28 QObject::event
+32 QObject::eventFilter
+36 QTimeLine::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QTimeLine::valueForTime
+
+Class QTimeLine
+ size=8 align=4
+ base size=8 base align=4
+QTimeLine (0xb4cfb3c0) 0
+ vptr=((& QTimeLine::_ZTV9QTimeLine) + 8u)
+ QObject (0xb4cf56cc) 0
+ primary-for QTimeLine (0xb4cfb3c0)
+
+Class QMutex
+ size=4 align=4
+ base size=4 base align=4
+QMutex (0xb4cf5960) 0
+
+Class QMutexLocker
+ size=4 align=4
+ base size=4 base align=4
+QMutexLocker (0xb4d3d000) 0
+
+Class QReadWriteLock
+ size=4 align=4
+ base size=4 base align=4
+QReadWriteLock (0xb4d3d564) 0
+
+Class QReadLocker
+ size=4 align=4
+ base size=4 base align=4
+QReadLocker (0xb4d3d5a0) 0
+
+Class QWriteLocker
+ size=4 align=4
+ base size=4 base align=4
+QWriteLocker (0xb4d3da8c) 0
+
+Class QSemaphore
+ size=4 align=4
+ base size=4 base align=4
+QSemaphore (0xb4d3df78) 0
+
+Vtable for QThread
+QThread::_ZTV7QThread: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QThread)
+8 QThread::metaObject
+12 QThread::qt_metacast
+16 QThread::qt_metacall
+20 QThread::~QThread
+24 QThread::~QThread
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QThread::run
+
+Class QThread
+ size=8 align=4
+ base size=8 base align=4
+QThread (0xb4b5f380) 0
+ vptr=((& QThread::_ZTV7QThread) + 8u)
+ QObject (0xb4d3dfb4) 0
+ primary-for QThread (0xb4b5f380)
+
+Class QThreadStorageData
+ size=4 align=4
+ base size=4 base align=4
+QThreadStorageData (0xb4b72258) 0
+
+Class QWaitCondition
+ size=4 align=4
+ base size=4 base align=4
+QWaitCondition (0xb4b722d0) 0
+
+Vtable for QAbstractState
+QAbstractState::_ZTV14QAbstractState: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QAbstractState)
+8 QAbstractState::metaObject
+12 QAbstractState::qt_metacast
+16 QAbstractState::qt_metacall
+20 QAbstractState::~QAbstractState
+24 QAbstractState::~QAbstractState
+28 QAbstractState::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+
+Class QAbstractState
+ size=8 align=4
+ base size=8 base align=4
+QAbstractState (0xb4b5fe40) 0
+ vptr=((& QAbstractState::_ZTV14QAbstractState) + 8u)
+ QObject (0xb4b7230c) 0
+ primary-for QAbstractState (0xb4b5fe40)
+
+Vtable for QAbstractTransition
+QAbstractTransition::_ZTV19QAbstractTransition: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractTransition)
+8 QAbstractTransition::metaObject
+12 QAbstractTransition::qt_metacast
+16 QAbstractTransition::qt_metacall
+20 QAbstractTransition::~QAbstractTransition
+24 QAbstractTransition::~QAbstractTransition
+28 QAbstractTransition::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+
+Class QAbstractTransition
+ size=8 align=4
+ base size=8 base align=4
+QAbstractTransition (0xb4b8e100) 0
+ vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 8u)
+ QObject (0xb4b72528) 0
+ primary-for QAbstractTransition (0xb4b8e100)
+
+Vtable for QEvent
+QEvent::_ZTV6QEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QEvent)
+8 QEvent::~QEvent
+12 QEvent::~QEvent
+
+Class QEvent
+ size=12 align=4
+ base size=12 base align=4
+QEvent (0xb4b72744) 0
+ vptr=((& QEvent::_ZTV6QEvent) + 8u)
+
+Vtable for QTimerEvent
+QTimerEvent::_ZTV11QTimerEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTimerEvent)
+8 QTimerEvent::~QTimerEvent
+12 QTimerEvent::~QTimerEvent
+
+Class QTimerEvent
+ size=16 align=4
+ base size=16 base align=4
+QTimerEvent (0xb4b8e680) 0
+ vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 8u)
+ QEvent (0xb4b72924) 0
+ primary-for QTimerEvent (0xb4b8e680)
+
+Vtable for QChildEvent
+QChildEvent::_ZTV11QChildEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QChildEvent)
+8 QChildEvent::~QChildEvent
+12 QChildEvent::~QChildEvent
+
+Class QChildEvent
+ size=16 align=4
+ base size=16 base align=4
+QChildEvent (0xb4b8e740) 0
+ vptr=((& QChildEvent::_ZTV11QChildEvent) + 8u)
+ QEvent (0xb4b7299c) 0
+ primary-for QChildEvent (0xb4b8e740)
+
+Vtable for QCustomEvent
+QCustomEvent::_ZTV12QCustomEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QCustomEvent)
+8 QCustomEvent::~QCustomEvent
+12 QCustomEvent::~QCustomEvent
+
+Class QCustomEvent
+ size=12 align=4
+ base size=12 base align=4
+QCustomEvent (0xb4b8ea00) 0
+ vptr=((& QCustomEvent::_ZTV12QCustomEvent) + 8u)
+ QEvent (0xb4b72b04) 0
+ primary-for QCustomEvent (0xb4b8ea00)
+
+Vtable for QDynamicPropertyChangeEvent
+QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QDynamicPropertyChangeEvent)
+8 QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+12 QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+
+Class QDynamicPropertyChangeEvent
+ size=16 align=4
+ base size=16 base align=4
+QDynamicPropertyChangeEvent (0xb4b8eb00) 0
+ vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 8u)
+ QEvent (0xb4b72bf4) 0
+ primary-for QDynamicPropertyChangeEvent (0xb4b8eb00)
+
+Vtable for QEventTransition
+QEventTransition::_ZTV16QEventTransition: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QEventTransition)
+8 QEventTransition::metaObject
+12 QEventTransition::qt_metacast
+16 QEventTransition::qt_metacall
+20 QEventTransition::~QEventTransition
+24 QEventTransition::~QEventTransition
+28 QEventTransition::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QEventTransition::eventTest
+60 QEventTransition::onTransition
+
+Class QEventTransition
+ size=8 align=4
+ base size=8 base align=4
+QEventTransition (0xb4b8ebc0) 0
+ vptr=((& QEventTransition::_ZTV16QEventTransition) + 8u)
+ QAbstractTransition (0xb4b8ec00) 0
+ primary-for QEventTransition (0xb4b8ebc0)
+ QObject (0xb4b72ca8) 0
+ primary-for QAbstractTransition (0xb4b8ec00)
+
+Vtable for QFinalState
+QFinalState::_ZTV11QFinalState: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFinalState)
+8 QFinalState::metaObject
+12 QFinalState::qt_metacast
+16 QFinalState::qt_metacall
+20 QFinalState::~QFinalState
+24 QFinalState::~QFinalState
+28 QFinalState::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QFinalState::onEntry
+60 QFinalState::onExit
+
+Class QFinalState
+ size=8 align=4
+ base size=8 base align=4
+QFinalState (0xb4b8eec0) 0
+ vptr=((& QFinalState::_ZTV11QFinalState) + 8u)
+ QAbstractState (0xb4b8ef00) 0
+ primary-for QFinalState (0xb4b8eec0)
+ QObject (0xb4b72ec4) 0
+ primary-for QAbstractState (0xb4b8ef00)
+
+Vtable for QHistoryState
+QHistoryState::_ZTV13QHistoryState: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QHistoryState)
+8 QHistoryState::metaObject
+12 QHistoryState::qt_metacast
+16 QHistoryState::qt_metacall
+20 QHistoryState::~QHistoryState
+24 QHistoryState::~QHistoryState
+28 QHistoryState::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QHistoryState::onEntry
+60 QHistoryState::onExit
+
+Class QHistoryState
+ size=8 align=4
+ base size=8 base align=4
+QHistoryState (0xb4bd61c0) 0
+ vptr=((& QHistoryState::_ZTV13QHistoryState) + 8u)
+ QAbstractState (0xb4bd6200) 0
+ primary-for QHistoryState (0xb4bd61c0)
+ QObject (0xb4bda0f0) 0
+ primary-for QAbstractState (0xb4bd6200)
+
+Vtable for QSignalTransition
+QSignalTransition::_ZTV17QSignalTransition: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QSignalTransition)
+8 QSignalTransition::metaObject
+12 QSignalTransition::qt_metacast
+16 QSignalTransition::qt_metacall
+20 QSignalTransition::~QSignalTransition
+24 QSignalTransition::~QSignalTransition
+28 QSignalTransition::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QSignalTransition::eventTest
+60 QSignalTransition::onTransition
+
+Class QSignalTransition
+ size=8 align=4
+ base size=8 base align=4
+QSignalTransition (0xb4bd64c0) 0
+ vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 8u)
+ QAbstractTransition (0xb4bd6500) 0
+ primary-for QSignalTransition (0xb4bd64c0)
+ QObject (0xb4bda30c) 0
+ primary-for QAbstractTransition (0xb4bd6500)
+
+Vtable for QState
+QState::_ZTV6QState: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QState)
+8 QState::metaObject
+12 QState::qt_metacast
+16 QState::qt_metacall
+20 QState::~QState
+24 QState::~QState
+28 QState::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QState::onEntry
+60 QState::onExit
+
+Class QState
+ size=8 align=4
+ base size=8 base align=4
+QState (0xb4bd67c0) 0
+ vptr=((& QState::_ZTV6QState) + 8u)
+ QAbstractState (0xb4bd6800) 0
+ primary-for QState (0xb4bd67c0)
+ QObject (0xb4bda528) 0
+ primary-for QAbstractState (0xb4bd6800)
+
+Class QMetaType
+ size=1 align=1
+ base size=0 base align=1
+QMetaType (0xb4bda744) 0 empty
+
+Class QVariant::PrivateShared
+ size=8 align=4
+ base size=8 base align=4
+QVariant::PrivateShared (0xb4a5a564) 0
+
+Class QVariant::Private::Data
+ size=8 align=4
+ base size=8 base align=4
+QVariant::Private::Data (0xb4a5a5dc) 0
+
+Class QVariant::Private
+ size=12 align=4
+ base size=12 base align=4
+QVariant::Private (0xb4a5a5a0) 0
+
+Class QVariant::Handler
+ size=36 align=4
+ base size=36 base align=4
+QVariant::Handler (0xb4a5a654) 0
+
+Class QVariant
+ size=12 align=4
+ base size=12 base align=4
+QVariant (0xb4a5a528) 0
+
+Class QVariantComparisonHelper
+ size=4 align=4
+ base size=4 base align=4
+QVariantComparisonHelper (0xb4aa8f00) 0
+
+Vtable for QStateMachine::SignalEvent
+QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN13QStateMachine11SignalEventE)
+8 QStateMachine::SignalEvent::~SignalEvent
+12 QStateMachine::SignalEvent::~SignalEvent
+
+Class QStateMachine::SignalEvent
+ size=24 align=4
+ base size=24 base align=4
+QStateMachine::SignalEvent (0xb4b04600) 0
+ vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 8u)
+ QEvent (0xb4afb3c0) 0
+ primary-for QStateMachine::SignalEvent (0xb4b04600)
+
+Vtable for QStateMachine::WrappedEvent
+QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN13QStateMachine12WrappedEventE)
+8 QStateMachine::WrappedEvent::~WrappedEvent
+12 QStateMachine::WrappedEvent::~WrappedEvent
+
+Class QStateMachine::WrappedEvent
+ size=20 align=4
+ base size=20 base align=4
+QStateMachine::WrappedEvent (0xb4b04680) 0
+ vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 8u)
+ QEvent (0xb4afb3fc) 0
+ primary-for QStateMachine::WrappedEvent (0xb4b04680)
+
+Vtable for QStateMachine
+QStateMachine::_ZTV13QStateMachine: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QStateMachine)
+8 QStateMachine::metaObject
+12 QStateMachine::qt_metacast
+16 QStateMachine::qt_metacall
+20 QStateMachine::~QStateMachine
+24 QStateMachine::~QStateMachine
+28 QStateMachine::event
+32 QStateMachine::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QStateMachine::onEntry
+60 QStateMachine::onExit
+64 QStateMachine::beginSelectTransitions
+68 QStateMachine::endSelectTransitions
+72 QStateMachine::beginMicrostep
+76 QStateMachine::endMicrostep
+
+Class QStateMachine
+ size=8 align=4
+ base size=8 base align=4
+QStateMachine (0xb4b044c0) 0
+ vptr=((& QStateMachine::_ZTV13QStateMachine) + 8u)
+ QState (0xb4b04500) 0
+ primary-for QStateMachine (0xb4b044c0)
+ QAbstractState (0xb4b04540) 0
+ primary-for QState (0xb4b04500)
+ QObject (0xb4afb384) 0
+ primary-for QAbstractState (0xb4b04540)
+
+Vtable for QFactoryInterface
+QFactoryInterface::_ZTV17QFactoryInterface: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QFactoryInterface)
+8 QFactoryInterface::~QFactoryInterface
+12 QFactoryInterface::~QFactoryInterface
+16 __cxa_pure_virtual
+
+Class QFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QFactoryInterface (0xb4afb780) 0 nearly-empty
+ vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 8u)
+
+Vtable for QLibrary
+QLibrary::_ZTV8QLibrary: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QLibrary)
+8 QLibrary::metaObject
+12 QLibrary::qt_metacast
+16 QLibrary::qt_metacall
+20 QLibrary::~QLibrary
+24 QLibrary::~QLibrary
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QLibrary
+ size=16 align=4
+ base size=13 base align=4
+QLibrary (0xb4b32000) 0
+ vptr=((& QLibrary::_ZTV8QLibrary) + 8u)
+ QObject (0xb4afbd20) 0
+ primary-for QLibrary (0xb4b32000)
+
+Vtable for QPluginLoader
+QPluginLoader::_ZTV13QPluginLoader: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QPluginLoader)
+8 QPluginLoader::metaObject
+12 QPluginLoader::qt_metacast
+16 QPluginLoader::qt_metacall
+20 QPluginLoader::~QPluginLoader
+24 QPluginLoader::~QPluginLoader
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QPluginLoader
+ size=16 align=4
+ base size=13 base align=4
+QPluginLoader (0xb4b32e40) 0
+ vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 8u)
+ QObject (0xb4afbfb4) 0
+ primary-for QPluginLoader (0xb4b32e40)
+
+Class QUuid
+ size=16 align=4
+ base size=16 base align=4
+QUuid (0xb49640f0) 0
+
+Vtable for QEventLoop
+QEventLoop::_ZTV10QEventLoop: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QEventLoop)
+8 QEventLoop::metaObject
+12 QEventLoop::qt_metacast
+16 QEventLoop::qt_metacall
+20 QEventLoop::~QEventLoop
+24 QEventLoop::~QEventLoop
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QEventLoop
+ size=8 align=4
+ base size=8 base align=4
+QEventLoop (0xb49676c0) 0
+ vptr=((& QEventLoop::_ZTV10QEventLoop) + 8u)
+ QObject (0xb49790f0) 0
+ primary-for QEventLoop (0xb49676c0)
+
+Vtable for QAbstractEventDispatcher
+QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 27u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
+8 QAbstractEventDispatcher::metaObject
+12 QAbstractEventDispatcher::qt_metacast
+16 QAbstractEventDispatcher::qt_metacall
+20 QAbstractEventDispatcher::~QAbstractEventDispatcher
+24 QAbstractEventDispatcher::~QAbstractEventDispatcher
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 QAbstractEventDispatcher::startingUp
+104 QAbstractEventDispatcher::closingDown
+
+Class QAbstractEventDispatcher
+ size=8 align=4
+ base size=8 base align=4
+QAbstractEventDispatcher (0xb4967ac0) 0
+ vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 8u)
+ QObject (0xb49793fc) 0
+ primary-for QAbstractEventDispatcher (0xb4967ac0)
+
+Class QModelIndex
+ size=16 align=4
+ base size=16 base align=4
+QModelIndex (0xb4979618) 0
+
+Class QPersistentModelIndex
+ size=4 align=4
+ base size=4 base align=4
+QPersistentModelIndex (0xb49baac8) 0
+
+Vtable for QAbstractItemModel
+QAbstractItemModel::_ZTV18QAbstractItemModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QAbstractItemModel)
+8 QAbstractItemModel::metaObject
+12 QAbstractItemModel::qt_metacast
+16 QAbstractItemModel::qt_metacall
+20 QAbstractItemModel::~QAbstractItemModel
+24 QAbstractItemModel::~QAbstractItemModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 QAbstractItemModel::hasChildren
+76 __cxa_pure_virtual
+80 QAbstractItemModel::setData
+84 QAbstractItemModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QAbstractItemModel::mimeTypes
+104 QAbstractItemModel::mimeData
+108 QAbstractItemModel::dropMimeData
+112 QAbstractItemModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QAbstractItemModel::flags
+144 QAbstractItemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QAbstractItemModel
+ size=8 align=4
+ base size=8 base align=4
+QAbstractItemModel (0xb49bb700) 0
+ vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 8u)
+ QObject (0xb49bac30) 0
+ primary-for QAbstractItemModel (0xb49bb700)
+
+Vtable for QAbstractTableModel
+QAbstractTableModel::_ZTV19QAbstractTableModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractTableModel)
+8 QAbstractTableModel::metaObject
+12 QAbstractTableModel::qt_metacast
+16 QAbstractTableModel::qt_metacall
+20 QAbstractTableModel::~QAbstractTableModel
+24 QAbstractTableModel::~QAbstractTableModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QAbstractTableModel::index
+60 QAbstractTableModel::parent
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 QAbstractTableModel::hasChildren
+76 __cxa_pure_virtual
+80 QAbstractItemModel::setData
+84 QAbstractItemModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QAbstractItemModel::mimeTypes
+104 QAbstractItemModel::mimeData
+108 QAbstractTableModel::dropMimeData
+112 QAbstractItemModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QAbstractItemModel::flags
+144 QAbstractItemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QAbstractTableModel
+ size=8 align=4
+ base size=8 base align=4
+QAbstractTableModel (0xb49bbd40) 0
+ vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 8u)
+ QAbstractItemModel (0xb49bbd80) 0
+ primary-for QAbstractTableModel (0xb49bbd40)
+ QObject (0xb49f45a0) 0
+ primary-for QAbstractItemModel (0xb49bbd80)
+
+Vtable for QAbstractListModel
+QAbstractListModel::_ZTV18QAbstractListModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QAbstractListModel)
+8 QAbstractListModel::metaObject
+12 QAbstractListModel::qt_metacast
+16 QAbstractListModel::qt_metacall
+20 QAbstractListModel::~QAbstractListModel
+24 QAbstractListModel::~QAbstractListModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QAbstractListModel::index
+60 QAbstractListModel::parent
+64 __cxa_pure_virtual
+68 QAbstractListModel::columnCount
+72 QAbstractListModel::hasChildren
+76 __cxa_pure_virtual
+80 QAbstractItemModel::setData
+84 QAbstractItemModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QAbstractItemModel::mimeTypes
+104 QAbstractItemModel::mimeData
+108 QAbstractListModel::dropMimeData
+112 QAbstractItemModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QAbstractItemModel::flags
+144 QAbstractItemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QAbstractListModel
+ size=8 align=4
+ base size=8 base align=4
+QAbstractListModel (0xb49bbfc0) 0
+ vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 8u)
+ QAbstractItemModel (0xb4a0a000) 0
+ primary-for QAbstractListModel (0xb49bbfc0)
+ QObject (0xb49f46cc) 0
+ primary-for QAbstractItemModel (0xb4a0a000)
+
+Class QBasicTimer
+ size=4 align=4
+ base size=4 base align=4
+QBasicTimer (0xb4a1c5a0) 0
+
+Vtable for QCoreApplication
+QCoreApplication::_ZTV16QCoreApplication: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QCoreApplication)
+8 QCoreApplication::metaObject
+12 QCoreApplication::qt_metacast
+16 QCoreApplication::qt_metacall
+20 QCoreApplication::~QCoreApplication
+24 QCoreApplication::~QCoreApplication
+28 QCoreApplication::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QCoreApplication::notify
+60 QCoreApplication::compressEvent
+
+Class QCoreApplication
+ size=8 align=4
+ base size=8 base align=4
+QCoreApplication (0xb4a0aac0) 0
+ vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 8u)
+ QObject (0xb4a1c834) 0
+ primary-for QCoreApplication (0xb4a0aac0)
+
+Class __exception
+ size=32 align=4
+ base size=32 base align=4
+__exception (0xb4a1cdd4) 0
+
+Class QMetaMethod
+ size=8 align=4
+ base size=8 base align=4
+QMetaMethod (0xb4876b04) 0
+
+Class QMetaEnum
+ size=8 align=4
+ base size=8 base align=4
+QMetaEnum (0xb4876e10) 0
+
+Class QMetaProperty
+ size=20 align=4
+ base size=20 base align=4
+QMetaProperty (0xb489a078) 0
+
+Class QMetaClassInfo
+ size=8 align=4
+ base size=8 base align=4
+QMetaClassInfo (0xb489a12c) 0
+
+Vtable for QMimeData
+QMimeData::_ZTV9QMimeData: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QMimeData)
+8 QMimeData::metaObject
+12 QMimeData::qt_metacast
+16 QMimeData::qt_metacall
+20 QMimeData::~QMimeData
+24 QMimeData::~QMimeData
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QMimeData::hasFormat
+60 QMimeData::formats
+64 QMimeData::retrieveData
+
+Class QMimeData
+ size=8 align=4
+ base size=8 base align=4
+QMimeData (0xb4883900) 0
+ vptr=((& QMimeData::_ZTV9QMimeData) + 8u)
+ QObject (0xb489a384) 0
+ primary-for QMimeData (0xb4883900)
+
+Vtable for QObjectCleanupHandler
+QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QObjectCleanupHandler)
+8 QObjectCleanupHandler::metaObject
+12 QObjectCleanupHandler::qt_metacast
+16 QObjectCleanupHandler::qt_metacall
+20 QObjectCleanupHandler::~QObjectCleanupHandler
+24 QObjectCleanupHandler::~QObjectCleanupHandler
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QObjectCleanupHandler
+ size=12 align=4
+ base size=12 base align=4
+QObjectCleanupHandler (0xb4883bc0) 0
+ vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 8u)
+ QObject (0xb489a5a0) 0
+ primary-for QObjectCleanupHandler (0xb4883bc0)
+
+Vtable for QSharedMemory
+QSharedMemory::_ZTV13QSharedMemory: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QSharedMemory)
+8 QSharedMemory::metaObject
+12 QSharedMemory::qt_metacast
+16 QSharedMemory::qt_metacall
+20 QSharedMemory::~QSharedMemory
+24 QSharedMemory::~QSharedMemory
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSharedMemory
+ size=8 align=4
+ base size=8 base align=4
+QSharedMemory (0xb4883e00) 0
+ vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 8u)
+ QObject (0xb489a6cc) 0
+ primary-for QSharedMemory (0xb4883e00)
+
+Vtable for QSignalMapper
+QSignalMapper::_ZTV13QSignalMapper: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QSignalMapper)
+8 QSignalMapper::metaObject
+12 QSignalMapper::qt_metacast
+16 QSignalMapper::qt_metacall
+20 QSignalMapper::~QSignalMapper
+24 QSignalMapper::~QSignalMapper
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSignalMapper
+ size=8 align=4
+ base size=8 base align=4
+QSignalMapper (0xb48cc0c0) 0
+ vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 8u)
+ QObject (0xb489a8e8) 0
+ primary-for QSignalMapper (0xb48cc0c0)
+
+Vtable for QSocketNotifier
+QSocketNotifier::_ZTV15QSocketNotifier: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QSocketNotifier)
+8 QSocketNotifier::metaObject
+12 QSocketNotifier::qt_metacast
+16 QSocketNotifier::qt_metacall
+20 QSocketNotifier::~QSocketNotifier
+24 QSocketNotifier::~QSocketNotifier
+28 QSocketNotifier::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSocketNotifier
+ size=20 align=4
+ base size=17 base align=4
+QSocketNotifier (0xb48cc380) 0
+ vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 8u)
+ QObject (0xb489ab04) 0
+ primary-for QSocketNotifier (0xb48cc380)
+
+Class QSystemSemaphore
+ size=4 align=4
+ base size=4 base align=4
+QSystemSemaphore (0xb489add4) 0
+
+Vtable for QTimer
+QTimer::_ZTV6QTimer: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QTimer)
+8 QTimer::metaObject
+12 QTimer::qt_metacast
+16 QTimer::qt_metacall
+20 QTimer::~QTimer
+24 QTimer::~QTimer
+28 QObject::event
+32 QObject::eventFilter
+36 QTimer::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTimer
+ size=24 align=4
+ base size=21 base align=4
+QTimer (0xb48cc740) 0
+ vptr=((& QTimer::_ZTV6QTimer) + 8u)
+ QObject (0xb489ae88) 0
+ primary-for QTimer (0xb48cc740)
+
+Vtable for QTranslator
+QTranslator::_ZTV11QTranslator: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTranslator)
+8 QTranslator::metaObject
+12 QTranslator::qt_metacast
+16 QTranslator::qt_metacall
+20 QTranslator::~QTranslator
+24 QTranslator::~QTranslator
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QTranslator::translate
+60 QTranslator::isEmpty
+
+Class QTranslator
+ size=8 align=4
+ base size=8 base align=4
+QTranslator (0xb48ccc80) 0
+ vptr=((& QTranslator::_ZTV11QTranslator) + 8u)
+ QObject (0xb490112c) 0
+ primary-for QTranslator (0xb48ccc80)
+
+Class _IO_marker
+ size=12 align=4
+ base size=12 base align=4
+_IO_marker (0xb49014ec) 0
+
+Class _IO_FILE
+ size=148 align=4
+ base size=148 base align=4
+_IO_FILE (0xb4901528) 0
+
+Vtable for QFile
+QFile::_ZTV5QFile: 31u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI5QFile)
+8 QFile::metaObject
+12 QFile::qt_metacast
+16 QFile::qt_metacall
+20 QFile::~QFile
+24 QFile::~QFile
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QFile::isSequential
+60 QFile::open
+64 QFile::close
+68 QFile::pos
+72 QFile::size
+76 QFile::seek
+80 QFile::atEnd
+84 QIODevice::reset
+88 QIODevice::bytesAvailable
+92 QIODevice::bytesToWrite
+96 QIODevice::canReadLine
+100 QIODevice::waitForReadyRead
+104 QIODevice::waitForBytesWritten
+108 QFile::readData
+112 QFile::readLineData
+116 QFile::writeData
+120 QFile::fileEngine
+
+Class QFile
+ size=8 align=4
+ base size=8 base align=4
+QFile (0xb4913180) 0
+ vptr=((& QFile::_ZTV5QFile) + 8u)
+ QIODevice (0xb49131c0) 0
+ primary-for QFile (0xb4913180)
+ QObject (0xb49015a0) 0
+ primary-for QIODevice (0xb49131c0)
+
+Class QFileInfo
+ size=4 align=4
+ base size=4 base align=4
+QFileInfo (0xb4901a14) 0
+
+Class QDir
+ size=4 align=4
+ base size=4 base align=4
+QDir (0xb4797078) 0
+
+Class QAbstractFileEngine::ExtensionOption
+ size=1 align=1
+ base size=0 base align=1
+QAbstractFileEngine::ExtensionOption (0xb47977f8) 0 empty
+
+Class QAbstractFileEngine::ExtensionReturn
+ size=1 align=1
+ base size=0 base align=1
+QAbstractFileEngine::ExtensionReturn (0xb4797834) 0 empty
+
+Class QAbstractFileEngine::MapExtensionOption
+ size=20 align=4
+ base size=20 base align=4
+QAbstractFileEngine::MapExtensionOption (0xb47d39c0) 0
+ QAbstractFileEngine::ExtensionOption (0xb4797870) 0 empty
+
+Class QAbstractFileEngine::MapExtensionReturn
+ size=4 align=4
+ base size=4 base align=4
+QAbstractFileEngine::MapExtensionReturn (0xb47d3a40) 0
+ QAbstractFileEngine::ExtensionReturn (0xb47978ac) 0 empty
+
+Class QAbstractFileEngine::UnMapExtensionOption
+ size=4 align=4
+ base size=4 base align=4
+QAbstractFileEngine::UnMapExtensionOption (0xb47d3ac0) 0
+ QAbstractFileEngine::ExtensionOption (0xb47978e8) 0 empty
+
+Vtable for QAbstractFileEngine
+QAbstractFileEngine::_ZTV19QAbstractFileEngine: 36u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractFileEngine)
+8 QAbstractFileEngine::~QAbstractFileEngine
+12 QAbstractFileEngine::~QAbstractFileEngine
+16 QAbstractFileEngine::open
+20 QAbstractFileEngine::close
+24 QAbstractFileEngine::flush
+28 QAbstractFileEngine::size
+32 QAbstractFileEngine::pos
+36 QAbstractFileEngine::seek
+40 QAbstractFileEngine::isSequential
+44 QAbstractFileEngine::remove
+48 QAbstractFileEngine::copy
+52 QAbstractFileEngine::rename
+56 QAbstractFileEngine::link
+60 QAbstractFileEngine::mkdir
+64 QAbstractFileEngine::rmdir
+68 QAbstractFileEngine::setSize
+72 QAbstractFileEngine::caseSensitive
+76 QAbstractFileEngine::isRelativePath
+80 QAbstractFileEngine::entryList
+84 QAbstractFileEngine::fileFlags
+88 QAbstractFileEngine::setPermissions
+92 QAbstractFileEngine::fileName
+96 QAbstractFileEngine::ownerId
+100 QAbstractFileEngine::owner
+104 QAbstractFileEngine::fileTime
+108 QAbstractFileEngine::setFileName
+112 QAbstractFileEngine::handle
+116 QAbstractFileEngine::beginEntryList
+120 QAbstractFileEngine::endEntryList
+124 QAbstractFileEngine::read
+128 QAbstractFileEngine::readLine
+132 QAbstractFileEngine::write
+136 QAbstractFileEngine::extension
+140 QAbstractFileEngine::supportsExtension
+
+Class QAbstractFileEngine
+ size=8 align=4
+ base size=8 base align=4
+QAbstractFileEngine (0xb47977bc) 0
+ vptr=((& QAbstractFileEngine::_ZTV19QAbstractFileEngine) + 8u)
+
+Vtable for QAbstractFileEngineHandler
+QAbstractFileEngineHandler::_ZTV26QAbstractFileEngineHandler: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI26QAbstractFileEngineHandler)
+8 QAbstractFileEngineHandler::~QAbstractFileEngineHandler
+12 QAbstractFileEngineHandler::~QAbstractFileEngineHandler
+16 __cxa_pure_virtual
+
+Class QAbstractFileEngineHandler
+ size=4 align=4
+ base size=4 base align=4
+QAbstractFileEngineHandler (0xb4797b40) 0 nearly-empty
+ vptr=((& QAbstractFileEngineHandler::_ZTV26QAbstractFileEngineHandler) + 8u)
+
+Vtable for QAbstractFileEngineIterator
+QAbstractFileEngineIterator::_ZTV27QAbstractFileEngineIterator: 9u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QAbstractFileEngineIterator)
+8 QAbstractFileEngineIterator::~QAbstractFileEngineIterator
+12 QAbstractFileEngineIterator::~QAbstractFileEngineIterator
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 QAbstractFileEngineIterator::currentFileInfo
+32 QAbstractFileEngineIterator::entryInfo
+
+Class QAbstractFileEngineIterator
+ size=8 align=4
+ base size=8 base align=4
+QAbstractFileEngineIterator (0xb4797b7c) 0
+ vptr=((& QAbstractFileEngineIterator::_ZTV27QAbstractFileEngineIterator) + 8u)
+
+Vtable for QBuffer
+QBuffer::_ZTV7QBuffer: 30u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QBuffer)
+8 QBuffer::metaObject
+12 QBuffer::qt_metacast
+16 QBuffer::qt_metacall
+20 QBuffer::~QBuffer
+24 QBuffer::~QBuffer
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QBuffer::connectNotify
+52 QBuffer::disconnectNotify
+56 QIODevice::isSequential
+60 QBuffer::open
+64 QBuffer::close
+68 QBuffer::pos
+72 QBuffer::size
+76 QBuffer::seek
+80 QBuffer::atEnd
+84 QIODevice::reset
+88 QIODevice::bytesAvailable
+92 QIODevice::bytesToWrite
+96 QBuffer::canReadLine
+100 QIODevice::waitForReadyRead
+104 QIODevice::waitForBytesWritten
+108 QBuffer::readData
+112 QIODevice::readLineData
+116 QBuffer::writeData
+
+Class QBuffer
+ size=8 align=4
+ base size=8 base align=4
+QBuffer (0xb47d3e00) 0
+ vptr=((& QBuffer::_ZTV7QBuffer) + 8u)
+ QIODevice (0xb47d3e40) 0
+ primary-for QBuffer (0xb47d3e00)
+ QObject (0xb4797bf4) 0
+ primary-for QIODevice (0xb47d3e40)
+
+Class QTextCodec::ConverterState
+ size=28 align=4
+ base size=28 base align=4
+QTextCodec::ConverterState (0xb4797e4c) 0
+
+Vtable for QTextCodec
+QTextCodec::_ZTV10QTextCodec: 9u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QTextCodec)
+8 __cxa_pure_virtual
+12 QTextCodec::aliases
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 QTextCodec::~QTextCodec
+32 QTextCodec::~QTextCodec
+
+Class QTextCodec
+ size=4 align=4
+ base size=4 base align=4
+QTextCodec (0xb4797e10) 0 nearly-empty
+ vptr=((& QTextCodec::_ZTV10QTextCodec) + 8u)
+
+Class QTextEncoder
+ size=32 align=4
+ base size=32 base align=4
+QTextEncoder (0xb465db40) 0
+
+Class QTextDecoder
+ size=32 align=4
+ base size=32 base align=4
+QTextDecoder (0xb465dd98) 0
+
+Vtable for QTextStream
+QTextStream::_ZTV11QTextStream: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTextStream)
+8 QTextStream::~QTextStream
+12 QTextStream::~QTextStream
+
+Class QTextStream
+ size=8 align=4
+ base size=8 base align=4
+QTextStream (0xb4697000) 0
+ vptr=((& QTextStream::_ZTV11QTextStream) + 8u)
+
+Class QTextStreamManipulator
+ size=24 align=4
+ base size=22 base align=4
+QTextStreamManipulator (0xb4697690) 0
+
+Vtable for QTextIStream
+QTextIStream::_ZTV12QTextIStream: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QTextIStream)
+8 QTextIStream::~QTextIStream
+12 QTextIStream::~QTextIStream
+
+Class QTextIStream
+ size=8 align=4
+ base size=8 base align=4
+QTextIStream (0xb46c6840) 0
+ vptr=((& QTextIStream::_ZTV12QTextIStream) + 8u)
+ QTextStream (0xb46e9870) 0
+ primary-for QTextIStream (0xb46c6840)
+
+Vtable for QTextOStream
+QTextOStream::_ZTV12QTextOStream: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QTextOStream)
+8 QTextOStream::~QTextOStream
+12 QTextOStream::~QTextOStream
+
+Class QTextOStream
+ size=8 align=4
+ base size=8 base align=4
+QTextOStream (0xb46c6b00) 0
+ vptr=((& QTextOStream::_ZTV12QTextOStream) + 8u)
+ QTextStream (0xb46e9f00) 0
+ primary-for QTextOStream (0xb46c6b00)
+
+Class QDebug::Stream
+ size=24 align=4
+ base size=22 base align=4
+QDebug::Stream (0xb47005dc) 0
+
+Class QDebug
+ size=4 align=4
+ base size=4 base align=4
+QDebug (0xb47005a0) 0
+
+Class QNoDebug
+ size=1 align=1
+ base size=0 base align=1
+QNoDebug (0xb457821c) 0 empty
+
+Vtable for QDirIterator
+QDirIterator::_ZTV12QDirIterator: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QDirIterator)
+8 QDirIterator::~QDirIterator
+12 QDirIterator::~QDirIterator
+
+Class QDirIterator
+ size=8 align=4
+ base size=8 base align=4
+QDirIterator (0xb45784b0) 0
+ vptr=((& QDirIterator::_ZTV12QDirIterator) + 8u)
+
+Vtable for QFileSystemWatcher
+QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QFileSystemWatcher)
+8 QFileSystemWatcher::metaObject
+12 QFileSystemWatcher::qt_metacast
+16 QFileSystemWatcher::qt_metacall
+20 QFileSystemWatcher::~QFileSystemWatcher
+24 QFileSystemWatcher::~QFileSystemWatcher
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QFileSystemWatcher
+ size=8 align=4
+ base size=8 base align=4
+QFileSystemWatcher (0xb45a24c0) 0
+ vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 8u)
+ QObject (0xb4578618) 0
+ primary-for QFileSystemWatcher (0xb45a24c0)
+
+Vtable for QFSFileEngine
+QFSFileEngine::_ZTV13QFSFileEngine: 36u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QFSFileEngine)
+8 QFSFileEngine::~QFSFileEngine
+12 QFSFileEngine::~QFSFileEngine
+16 QFSFileEngine::open
+20 QFSFileEngine::close
+24 QFSFileEngine::flush
+28 QFSFileEngine::size
+32 QFSFileEngine::pos
+36 QFSFileEngine::seek
+40 QFSFileEngine::isSequential
+44 QFSFileEngine::remove
+48 QFSFileEngine::copy
+52 QFSFileEngine::rename
+56 QFSFileEngine::link
+60 QFSFileEngine::mkdir
+64 QFSFileEngine::rmdir
+68 QFSFileEngine::setSize
+72 QFSFileEngine::caseSensitive
+76 QFSFileEngine::isRelativePath
+80 QFSFileEngine::entryList
+84 QFSFileEngine::fileFlags
+88 QFSFileEngine::setPermissions
+92 QFSFileEngine::fileName
+96 QFSFileEngine::ownerId
+100 QFSFileEngine::owner
+104 QFSFileEngine::fileTime
+108 QFSFileEngine::setFileName
+112 QFSFileEngine::handle
+116 QFSFileEngine::beginEntryList
+120 QFSFileEngine::endEntryList
+124 QFSFileEngine::read
+128 QFSFileEngine::readLine
+132 QFSFileEngine::write
+136 QFSFileEngine::extension
+140 QFSFileEngine::supportsExtension
+
+Class QFSFileEngine
+ size=8 align=4
+ base size=8 base align=4
+QFSFileEngine (0xb45a2780) 0
+ vptr=((& QFSFileEngine::_ZTV13QFSFileEngine) + 8u)
+ QAbstractFileEngine (0xb4578834) 0
+ primary-for QFSFileEngine (0xb45a2780)
+
+Class QProcessEnvironment
+ size=4 align=4
+ base size=4 base align=4
+QProcessEnvironment (0xb4578960) 0
+
+Vtable for QProcess
+QProcess::_ZTV8QProcess: 31u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QProcess)
+8 QProcess::metaObject
+12 QProcess::qt_metacast
+16 QProcess::qt_metacall
+20 QProcess::~QProcess
+24 QProcess::~QProcess
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QProcess::isSequential
+60 QIODevice::open
+64 QProcess::close
+68 QIODevice::pos
+72 QIODevice::size
+76 QIODevice::seek
+80 QProcess::atEnd
+84 QIODevice::reset
+88 QProcess::bytesAvailable
+92 QProcess::bytesToWrite
+96 QProcess::canReadLine
+100 QProcess::waitForReadyRead
+104 QProcess::waitForBytesWritten
+108 QProcess::readData
+112 QIODevice::readLineData
+116 QProcess::writeData
+120 QProcess::setupChildProcess
+
+Class QProcess
+ size=8 align=4
+ base size=8 base align=4
+QProcess (0xb45a2940) 0
+ vptr=((& QProcess::_ZTV8QProcess) + 8u)
+ QIODevice (0xb45a2980) 0
+ primary-for QProcess (0xb45a2940)
+ QObject (0xb4578a14) 0
+ primary-for QIODevice (0xb45a2980)
+
+Class QResource
+ size=4 align=4
+ base size=4 base align=4
+QResource (0xb4578c30) 0
+
+Vtable for QSettings
+QSettings::_ZTV9QSettings: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QSettings)
+8 QSettings::metaObject
+12 QSettings::qt_metacast
+16 QSettings::qt_metacall
+20 QSettings::~QSettings
+24 QSettings::~QSettings
+28 QSettings::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSettings
+ size=8 align=4
+ base size=8 base align=4
+QSettings (0xb45a2dc0) 0
+ vptr=((& QSettings::_ZTV9QSettings) + 8u)
+ QObject (0xb4578dd4) 0
+ primary-for QSettings (0xb45a2dc0)
+
+Vtable for QTemporaryFile
+QTemporaryFile::_ZTV14QTemporaryFile: 31u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QTemporaryFile)
+8 QTemporaryFile::metaObject
+12 QTemporaryFile::qt_metacast
+16 QTemporaryFile::qt_metacall
+20 QTemporaryFile::~QTemporaryFile
+24 QTemporaryFile::~QTemporaryFile
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QFile::isSequential
+60 QTemporaryFile::open
+64 QFile::close
+68 QFile::pos
+72 QFile::size
+76 QFile::seek
+80 QFile::atEnd
+84 QIODevice::reset
+88 QIODevice::bytesAvailable
+92 QIODevice::bytesToWrite
+96 QIODevice::canReadLine
+100 QIODevice::waitForReadyRead
+104 QIODevice::waitForBytesWritten
+108 QFile::readData
+112 QFile::readLineData
+116 QFile::writeData
+120 QTemporaryFile::fileEngine
+
+Class QTemporaryFile
+ size=8 align=4
+ base size=8 base align=4
+QTemporaryFile (0xb463d9c0) 0
+ vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 8u)
+ QFile (0xb463da00) 0
+ primary-for QTemporaryFile (0xb463d9c0)
+ QIODevice (0xb463da40) 0
+ primary-for QFile (0xb463da00)
+ QObject (0xb46428e8) 0
+ primary-for QIODevice (0xb463da40)
+
+Class QUrl
+ size=4 align=4
+ base size=4 base align=4
+QUrl (0xb4642bf4) 0
+
+Class QLibraryInfo
+ size=1 align=1
+ base size=0 base align=1
+QLibraryInfo (0xb44cf7bc) 0 empty
+
+Vtable for QRunnable
+QRunnable::_ZTV9QRunnable: 5u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QRunnable)
+8 __cxa_pure_virtual
+12 QRunnable::~QRunnable
+16 QRunnable::~QRunnable
+
+Class QRunnable
+ size=8 align=4
+ base size=8 base align=4
+QRunnable (0xb44cf7f8) 0
+ vptr=((& QRunnable::_ZTV9QRunnable) + 8u)
+
+Vtable for QtConcurrent::Exception
+QtConcurrent::Exception::_ZTVN12QtConcurrent9ExceptionE: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN12QtConcurrent9ExceptionE)
+8 QtConcurrent::Exception::~Exception
+12 QtConcurrent::Exception::~Exception
+16 std::exception::what
+20 QtConcurrent::Exception::raise
+24 QtConcurrent::Exception::clone
+
+Class QtConcurrent::Exception
+ size=4 align=4
+ base size=4 base align=4
+QtConcurrent::Exception (0xb44dcd80) 0 nearly-empty
+ vptr=((& QtConcurrent::Exception::_ZTVN12QtConcurrent9ExceptionE) + 8u)
+ std::exception (0xb44cfc6c) 0 nearly-empty
+ primary-for QtConcurrent::Exception (0xb44dcd80)
+
+Vtable for QtConcurrent::UnhandledException
+QtConcurrent::UnhandledException::_ZTVN12QtConcurrent18UnhandledExceptionE: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN12QtConcurrent18UnhandledExceptionE)
+8 QtConcurrent::UnhandledException::~UnhandledException
+12 QtConcurrent::UnhandledException::~UnhandledException
+16 std::exception::what
+20 QtConcurrent::UnhandledException::raise
+24 QtConcurrent::UnhandledException::clone
+
+Class QtConcurrent::UnhandledException
+ size=4 align=4
+ base size=4 base align=4
+QtConcurrent::UnhandledException (0xb44dce80) 0 nearly-empty
+ vptr=((& QtConcurrent::UnhandledException::_ZTVN12QtConcurrent18UnhandledExceptionE) + 8u)
+ QtConcurrent::Exception (0xb44dcec0) 0 nearly-empty
+ primary-for QtConcurrent::UnhandledException (0xb44dce80)
+ std::exception (0xb44cfca8) 0 nearly-empty
+ primary-for QtConcurrent::Exception (0xb44dcec0)
+
+Class QtConcurrent::internal::ExceptionHolder
+ size=4 align=4
+ base size=4 base align=4
+QtConcurrent::internal::ExceptionHolder (0xb44cfce4) 0
+
+Class QtConcurrent::internal::ExceptionStore
+ size=4 align=4
+ base size=4 base align=4
+QtConcurrent::internal::ExceptionStore (0xb44cfd20) 0
+
+Class QtConcurrent::ResultItem
+ size=8 align=4
+ base size=8 base align=4
+QtConcurrent::ResultItem (0xb44cfd5c) 0
+
+Class QtConcurrent::ResultIteratorBase
+ size=8 align=4
+ base size=8 base align=4
+QtConcurrent::ResultIteratorBase (0xb44f7348) 0
+
+Vtable for QtConcurrent::ResultStoreBase
+QtConcurrent::ResultStoreBase::_ZTVN12QtConcurrent15ResultStoreBaseE: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN12QtConcurrent15ResultStoreBaseE)
+8 QtConcurrent::ResultStoreBase::~ResultStoreBase
+12 QtConcurrent::ResultStoreBase::~ResultStoreBase
+
+Class QtConcurrent::ResultStoreBase
+ size=28 align=4
+ base size=28 base align=4
+QtConcurrent::ResultStoreBase (0xb44f7474) 0
+ vptr=((& QtConcurrent::ResultStoreBase::_ZTVN12QtConcurrent15ResultStoreBaseE) + 8u)
+
+Vtable for QFutureInterfaceBase
+QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QFutureInterfaceBase)
+8 QFutureInterfaceBase::~QFutureInterfaceBase
+12 QFutureInterfaceBase::~QFutureInterfaceBase
+
+Class QFutureInterfaceBase
+ size=8 align=4
+ base size=8 base align=4
+QFutureInterfaceBase (0xb44f78ac) 0
+ vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 8u)
+
+Vtable for QFutureWatcherBase
+QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QFutureWatcherBase)
+8 QFutureWatcherBase::metaObject
+12 QFutureWatcherBase::qt_metacast
+16 QFutureWatcherBase::qt_metacall
+20 QFutureWatcherBase::~QFutureWatcherBase
+24 QFutureWatcherBase::~QFutureWatcherBase
+28 QFutureWatcherBase::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QFutureWatcherBase::connectNotify
+52 QFutureWatcherBase::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+
+Class QFutureWatcherBase
+ size=8 align=4
+ base size=8 base align=4
+QFutureWatcherBase (0xb4386cc0) 0
+ vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 8u)
+ QObject (0xb4393294) 0
+ primary-for QFutureWatcherBase (0xb4386cc0)
+
+Vtable for QThreadPool
+QThreadPool::_ZTV11QThreadPool: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QThreadPool)
+8 QThreadPool::metaObject
+12 QThreadPool::qt_metacast
+16 QThreadPool::qt_metacall
+20 QThreadPool::~QThreadPool
+24 QThreadPool::~QThreadPool
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QThreadPool
+ size=8 align=4
+ base size=8 base align=4
+QThreadPool (0xb43ace80) 0
+ vptr=((& QThreadPool::_ZTV11QThreadPool) + 8u)
+ QObject (0xb43bf294) 0
+ primary-for QThreadPool (0xb43ace80)
+
+Class QtConcurrent::ThreadEngineBarrier
+ size=12 align=4
+ base size=12 base align=4
+QtConcurrent::ThreadEngineBarrier (0xb43bf4b0) 0
+
+Vtable for QtConcurrent::ThreadEngineBase
+QtConcurrent::ThreadEngineBase::_ZTVN12QtConcurrent16ThreadEngineBaseE: 11u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTIN12QtConcurrent16ThreadEngineBaseE)
+8 QtConcurrent::ThreadEngineBase::run
+12 QtConcurrent::ThreadEngineBase::~ThreadEngineBase
+16 QtConcurrent::ThreadEngineBase::~ThreadEngineBase
+20 QtConcurrent::ThreadEngineBase::start
+24 QtConcurrent::ThreadEngineBase::finish
+28 QtConcurrent::ThreadEngineBase::threadFunction
+32 QtConcurrent::ThreadEngineBase::shouldStartThread
+36 QtConcurrent::ThreadEngineBase::shouldThrottleThread
+40 __cxa_pure_virtual
+
+Class QtConcurrent::ThreadEngineBase
+ size=32 align=4
+ base size=32 base align=4
+QtConcurrent::ThreadEngineBase (0xb43cf180) 0
+ vptr=((& QtConcurrent::ThreadEngineBase::_ZTVN12QtConcurrent16ThreadEngineBaseE) + 8u)
+ QRunnable (0xb43bf4ec) 0
+ primary-for QtConcurrent::ThreadEngineBase (0xb43cf180)
+
+VTT for QtConcurrent::ThreadEngine<void>
+QtConcurrent::ThreadEngine<void>::_ZTTN12QtConcurrent12ThreadEngineIvEE: 2u entries
+0 ((& QtConcurrent::ThreadEngine<void>::_ZTVN12QtConcurrent12ThreadEngineIvEE) + 12u)
+4 ((& QtConcurrent::ThreadEngine<void>::_ZTVN12QtConcurrent12ThreadEngineIvEE) + 68u)
+
+Class QtConcurrent::BlockSizeManager
+ size=72 align=4
+ base size=72 base align=4
+QtConcurrent::BlockSizeManager (0xb43f3ac8) 0
+
+Vtable for QTextCodecFactoryInterface
+QTextCodecFactoryInterface::_ZTV26QTextCodecFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI26QTextCodecFactoryInterface)
+8 QTextCodecFactoryInterface::~QTextCodecFactoryInterface
+12 QTextCodecFactoryInterface::~QTextCodecFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QTextCodecFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QTextCodecFactoryInterface (0xb407a700) 0 nearly-empty
+ vptr=((& QTextCodecFactoryInterface::_ZTV26QTextCodecFactoryInterface) + 8u)
+ QFactoryInterface (0xb4068384) 0 nearly-empty
+ primary-for QTextCodecFactoryInterface (0xb407a700)
+
+Vtable for QTextCodecPlugin
+QTextCodecPlugin::_ZTV16QTextCodecPlugin: 27u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QTextCodecPlugin)
+8 QTextCodecPlugin::metaObject
+12 QTextCodecPlugin::qt_metacast
+16 QTextCodecPlugin::qt_metacall
+20 QTextCodecPlugin::~QTextCodecPlugin
+24 QTextCodecPlugin::~QTextCodecPlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 QTextCodecPlugin::keys
+80 QTextCodecPlugin::create
+84 (int (*)(...))-0x000000008
+88 (int (*)(...))(& _ZTI16QTextCodecPlugin)
+92 QTextCodecPlugin::_ZThn8_N16QTextCodecPluginD1Ev
+96 QTextCodecPlugin::_ZThn8_N16QTextCodecPluginD0Ev
+100 QTextCodecPlugin::_ZThn8_NK16QTextCodecPlugin4keysEv
+104 QTextCodecPlugin::_ZThn8_N16QTextCodecPlugin6createERK7QString
+
+Class QTextCodecPlugin
+ size=12 align=4
+ base size=12 base align=4
+QTextCodecPlugin (0xb408e320) 0
+ vptr=((& QTextCodecPlugin::_ZTV16QTextCodecPlugin) + 8u)
+ QObject (0xb4068690) 0
+ primary-for QTextCodecPlugin (0xb408e320)
+ QTextCodecFactoryInterface (0xb407a9c0) 8 nearly-empty
+ vptr=((& QTextCodecPlugin::_ZTV16QTextCodecPlugin) + 92u)
+ QFactoryInterface (0xb40686cc) 8 nearly-empty
+ primary-for QTextCodecFactoryInterface (0xb407a9c0)
+
+Vtable for QAbstractAnimation
+QAbstractAnimation::_ZTV18QAbstractAnimation: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QAbstractAnimation)
+8 QAbstractAnimation::metaObject
+12 QAbstractAnimation::qt_metacast
+16 QAbstractAnimation::qt_metacall
+20 QAbstractAnimation::~QAbstractAnimation
+24 QAbstractAnimation::~QAbstractAnimation
+28 QAbstractAnimation::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 QAbstractAnimation::updateState
+68 QAbstractAnimation::updateDirection
+
+Class QAbstractAnimation
+ size=8 align=4
+ base size=8 base align=4
+QAbstractAnimation (0xb407ac00) 0
+ vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 8u)
+ QObject (0xb40687f8) 0
+ primary-for QAbstractAnimation (0xb407ac00)
+
+Vtable for QAnimationGroup
+QAnimationGroup::_ZTV15QAnimationGroup: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QAnimationGroup)
+8 QAnimationGroup::metaObject
+12 QAnimationGroup::qt_metacast
+16 QAnimationGroup::qt_metacall
+20 QAnimationGroup::~QAnimationGroup
+24 QAnimationGroup::~QAnimationGroup
+28 QAnimationGroup::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 QAbstractAnimation::updateState
+68 QAbstractAnimation::updateDirection
+
+Class QAnimationGroup
+ size=8 align=4
+ base size=8 base align=4
+QAnimationGroup (0xb407aec0) 0
+ vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 8u)
+ QAbstractAnimation (0xb407af00) 0
+ primary-for QAnimationGroup (0xb407aec0)
+ QObject (0xb4068a50) 0
+ primary-for QAbstractAnimation (0xb407af00)
+
+Vtable for QParallelAnimationGroup
+QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QParallelAnimationGroup)
+8 QParallelAnimationGroup::metaObject
+12 QParallelAnimationGroup::qt_metacast
+16 QParallelAnimationGroup::qt_metacall
+20 QParallelAnimationGroup::~QParallelAnimationGroup
+24 QParallelAnimationGroup::~QParallelAnimationGroup
+28 QParallelAnimationGroup::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QParallelAnimationGroup::duration
+60 QParallelAnimationGroup::updateCurrentTime
+64 QParallelAnimationGroup::updateState
+68 QParallelAnimationGroup::updateDirection
+
+Class QParallelAnimationGroup
+ size=8 align=4
+ base size=8 base align=4
+QParallelAnimationGroup (0xb40b21c0) 0
+ vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 8u)
+ QAnimationGroup (0xb40b2200) 0
+ primary-for QParallelAnimationGroup (0xb40b21c0)
+ QAbstractAnimation (0xb40b2240) 0
+ primary-for QAnimationGroup (0xb40b2200)
+ QObject (0xb4068c6c) 0
+ primary-for QAbstractAnimation (0xb40b2240)
+
+Vtable for QPauseAnimation
+QPauseAnimation::_ZTV15QPauseAnimation: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QPauseAnimation)
+8 QPauseAnimation::metaObject
+12 QPauseAnimation::qt_metacast
+16 QPauseAnimation::qt_metacall
+20 QPauseAnimation::~QPauseAnimation
+24 QPauseAnimation::~QPauseAnimation
+28 QPauseAnimation::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QPauseAnimation::duration
+60 QPauseAnimation::updateCurrentTime
+64 QAbstractAnimation::updateState
+68 QAbstractAnimation::updateDirection
+
+Class QPauseAnimation
+ size=8 align=4
+ base size=8 base align=4
+QPauseAnimation (0xb40b2500) 0
+ vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 8u)
+ QAbstractAnimation (0xb40b2540) 0
+ primary-for QPauseAnimation (0xb40b2500)
+ QObject (0xb4068e88) 0
+ primary-for QAbstractAnimation (0xb40b2540)
+
+Vtable for QVariantAnimation
+QVariantAnimation::_ZTV17QVariantAnimation: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QVariantAnimation)
+8 QVariantAnimation::metaObject
+12 QVariantAnimation::qt_metacast
+16 QVariantAnimation::qt_metacall
+20 QVariantAnimation::~QVariantAnimation
+24 QVariantAnimation::~QVariantAnimation
+28 QVariantAnimation::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QVariantAnimation::duration
+60 QVariantAnimation::updateCurrentTime
+64 QVariantAnimation::updateState
+68 QAbstractAnimation::updateDirection
+72 __cxa_pure_virtual
+76 QVariantAnimation::interpolated
+
+Class QVariantAnimation
+ size=8 align=4
+ base size=8 base align=4
+QVariantAnimation (0xb40b2800) 0
+ vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 8u)
+ QAbstractAnimation (0xb40b2840) 0
+ primary-for QVariantAnimation (0xb40b2800)
+ QObject (0xb40d20b4) 0
+ primary-for QAbstractAnimation (0xb40b2840)
+
+Vtable for QPropertyAnimation
+QPropertyAnimation::_ZTV18QPropertyAnimation: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QPropertyAnimation)
+8 QPropertyAnimation::metaObject
+12 QPropertyAnimation::qt_metacast
+16 QPropertyAnimation::qt_metacall
+20 QPropertyAnimation::~QPropertyAnimation
+24 QPropertyAnimation::~QPropertyAnimation
+28 QPropertyAnimation::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QVariantAnimation::duration
+60 QVariantAnimation::updateCurrentTime
+64 QPropertyAnimation::updateState
+68 QAbstractAnimation::updateDirection
+72 QPropertyAnimation::updateCurrentValue
+76 QVariantAnimation::interpolated
+
+Class QPropertyAnimation
+ size=8 align=4
+ base size=8 base align=4
+QPropertyAnimation (0xb40b2c40) 0
+ vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 8u)
+ QVariantAnimation (0xb40b2c80) 0
+ primary-for QPropertyAnimation (0xb40b2c40)
+ QAbstractAnimation (0xb40b2cc0) 0
+ primary-for QVariantAnimation (0xb40b2c80)
+ QObject (0xb40d22d0) 0
+ primary-for QAbstractAnimation (0xb40b2cc0)
+
+Vtable for QSequentialAnimationGroup
+QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QSequentialAnimationGroup)
+8 QSequentialAnimationGroup::metaObject
+12 QSequentialAnimationGroup::qt_metacast
+16 QSequentialAnimationGroup::qt_metacall
+20 QSequentialAnimationGroup::~QSequentialAnimationGroup
+24 QSequentialAnimationGroup::~QSequentialAnimationGroup
+28 QSequentialAnimationGroup::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QSequentialAnimationGroup::duration
+60 QSequentialAnimationGroup::updateCurrentTime
+64 QSequentialAnimationGroup::updateState
+68 QSequentialAnimationGroup::updateDirection
+
+Class QSequentialAnimationGroup
+ size=8 align=4
+ base size=8 base align=4
+QSequentialAnimationGroup (0xb40b2f80) 0
+ vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 8u)
+ QAnimationGroup (0xb40b2fc0) 0
+ primary-for QSequentialAnimationGroup (0xb40b2f80)
+ QAbstractAnimation (0xb40f4000) 0
+ primary-for QAnimationGroup (0xb40b2fc0)
+ QObject (0xb40d24ec) 0
+ primary-for QAbstractAnimation (0xb40f4000)
+
+Vtable for QPaintDevice
+QPaintDevice::_ZTV12QPaintDevice: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QPaintDevice)
+8 QPaintDevice::~QPaintDevice
+12 QPaintDevice::~QPaintDevice
+16 QPaintDevice::devType
+20 __cxa_pure_virtual
+24 QPaintDevice::metric
+
+Class QPaintDevice
+ size=8 align=4
+ base size=6 base align=4
+QPaintDevice (0xb40d2708) 0
+ vptr=((& QPaintDevice::_ZTV12QPaintDevice) + 8u)
+
+Class QColor
+ size=16 align=4
+ base size=14 base align=4
+QColor (0xb41142d0) 0
+
+Class QPolygon
+ size=4 align=4
+ base size=4 base align=4
+QPolygon (0xb4118c80) 0
+ QVector<QPoint> (0xb4114960) 0
+
+Class QPolygonF
+ size=4 align=4
+ base size=4 base align=4
+QPolygonF (0xb3f492c0) 0
+ QVector<QPointF> (0xb3f4d348) 0
+
+Class QRegion::QRegionData
+ size=16 align=4
+ base size=16 base align=4
+QRegion::QRegionData (0xb3f4dca8) 0
+
+Class QRegion
+ size=4 align=4
+ base size=4 base align=4
+QRegion (0xb3f4dc6c) 0
+
+Class QMatrix
+ size=48 align=4
+ base size=48 base align=4
+QMatrix (0xb3f90000) 0
+
+Class QPainterPath::Element
+ size=20 align=4
+ base size=20 base align=4
+QPainterPath::Element (0xb3fb21a4) 0
+
+Class QPainterPath
+ size=4 align=4
+ base size=4 base align=4
+QPainterPath (0xb3fb2168) 0
+
+Class QPainterPathPrivate
+ size=8 align=4
+ base size=8 base align=4
+QPainterPathPrivate (0xb3fb2690) 0
+
+Class QPainterPathStroker
+ size=4 align=4
+ base size=4 base align=4
+QPainterPathStroker (0xb3fb27bc) 0
+
+Class QTransform
+ size=80 align=4
+ base size=80 base align=4
+QTransform (0xb4011744) 0
+
+Class QImageTextKeyLang
+ size=8 align=4
+ base size=8 base align=4
+QImageTextKeyLang (0xb3e73690) 0
+
+Vtable for QImage
+QImage::_ZTV6QImage: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QImage)
+8 QImage::~QImage
+12 QImage::~QImage
+16 QImage::devType
+20 QImage::paintEngine
+24 QImage::metric
+
+Class QImage
+ size=12 align=4
+ base size=12 base align=4
+QImage (0xb3e63900) 0
+ vptr=((& QImage::_ZTV6QImage) + 8u)
+ QPaintDevice (0xb3ea1078) 0
+ primary-for QImage (0xb3e63900)
+
+Vtable for QPixmap
+QPixmap::_ZTV7QPixmap: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QPixmap)
+8 QPixmap::~QPixmap
+12 QPixmap::~QPixmap
+16 QPixmap::devType
+20 QPixmap::paintEngine
+24 QPixmap::metric
+
+Class QPixmap
+ size=12 align=4
+ base size=12 base align=4
+QPixmap (0xb3ee3200) 0
+ vptr=((& QPixmap::_ZTV7QPixmap) + 8u)
+ QPaintDevice (0xb3ea1c30) 0
+ primary-for QPixmap (0xb3ee3200)
+
+Class QIcon
+ size=4 align=4
+ base size=4 base align=4
+QIcon (0xb3f18294) 0
+
+Class QKeySequence
+ size=4 align=4
+ base size=4 base align=4
+QKeySequence (0xb3f184ec) 0
+
+Class QBrush
+ size=4 align=4
+ base size=4 base align=4
+QBrush (0xb3f18708) 0
+
+Class QBrushData
+ size=104 align=4
+ base size=104 base align=4
+QBrushData (0xb3f188ac) 0
+
+Class QGradient
+ size=56 align=4
+ base size=56 base align=4
+QGradient (0xb3f18c6c) 0
+
+Class QLinearGradient
+ size=56 align=4
+ base size=56 base align=4
+QLinearGradient (0xb3d6d780) 0
+ QGradient (0xb3f18f00) 0
+
+Class QRadialGradient
+ size=56 align=4
+ base size=56 base align=4
+QRadialGradient (0xb3d6d880) 0
+ QGradient (0xb3f18f3c) 0
+
+Class QConicalGradient
+ size=56 align=4
+ base size=56 base align=4
+QConicalGradient (0xb3d6d980) 0
+ QGradient (0xb3f18f78) 0
+
+Class QPalette
+ size=8 align=4
+ base size=8 base align=4
+QPalette (0xb3f18fb4) 0
+
+Class QColorGroup
+ size=8 align=4
+ base size=8 base align=4
+QColorGroup (0xb3dc63c0) 0
+ QPalette (0xb3dbb8ac) 0
+
+Class QFont
+ size=8 align=4
+ base size=8 base align=4
+QFont (0xb3de0a14) 0
+
+Class QFontMetrics
+ size=4 align=4
+ base size=4 base align=4
+QFontMetrics (0xb3de0c30) 0
+
+Class QFontMetricsF
+ size=4 align=4
+ base size=4 base align=4
+QFontMetricsF (0xb3de0e88) 0
+
+Class QFontInfo
+ size=4 align=4
+ base size=4 base align=4
+QFontInfo (0xb3de0f3c) 0
+
+Class QSizePolicy
+ size=4 align=4
+ base size=4 base align=4
+QSizePolicy (0xb3de0f78) 0
+
+Class QCursor
+ size=4 align=4
+ base size=4 base align=4
+QCursor (0xb3c76e4c) 0
+
+Class QWidgetData
+ size=64 align=4
+ base size=64 base align=4
+QWidgetData (0xb3c76e88) 0
+
+Vtable for QWidget
+QWidget::_ZTV7QWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QWidget)
+8 QWidget::metaObject
+12 QWidget::qt_metacast
+16 QWidget::qt_metacall
+20 QWidget::~QWidget
+24 QWidget::~QWidget
+28 QWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI7QWidget)
+232 QWidget::_ZThn8_N7QWidgetD1Ev
+236 QWidget::_ZThn8_N7QWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWidget
+ size=20 align=4
+ base size=20 base align=4
+QWidget (0xb3ca5f50) 0
+ vptr=((& QWidget::_ZTV7QWidget) + 8u)
+ QObject (0xb3c76ec4) 0
+ primary-for QWidget (0xb3ca5f50)
+ QPaintDevice (0xb3c76f00) 8
+ vptr=((& QWidget::_ZTV7QWidget) + 232u)
+
+Vtable for QAbstractButton
+QAbstractButton::_ZTV15QAbstractButton: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QAbstractButton)
+8 QAbstractButton::metaObject
+12 QAbstractButton::qt_metacast
+16 QAbstractButton::qt_metacall
+20 QAbstractButton::~QAbstractButton
+24 QAbstractButton::~QAbstractButton
+28 QAbstractButton::event
+32 QObject::eventFilter
+36 QAbstractButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractButton::mousePressEvent
+84 QAbstractButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractButton::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QAbstractButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QAbstractButton::focusInEvent
+112 QAbstractButton::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 __cxa_pure_virtual
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractButton::hitButton
+228 QAbstractButton::checkStateSet
+232 QAbstractButton::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI15QAbstractButton)
+244 QAbstractButton::_ZThn8_N15QAbstractButtonD1Ev
+248 QAbstractButton::_ZThn8_N15QAbstractButtonD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractButton
+ size=20 align=4
+ base size=20 base align=4
+QAbstractButton (0xb3b3ff00) 0
+ vptr=((& QAbstractButton::_ZTV15QAbstractButton) + 8u)
+ QWidget (0xb3b68780) 0
+ primary-for QAbstractButton (0xb3b3ff00)
+ QObject (0xb3b53654) 0
+ primary-for QWidget (0xb3b68780)
+ QPaintDevice (0xb3b53690) 8
+ vptr=((& QAbstractButton::_ZTV15QAbstractButton) + 244u)
+
+Vtable for QFrame
+QFrame::_ZTV6QFrame: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QFrame)
+8 QFrame::metaObject
+12 QFrame::qt_metacast
+16 QFrame::qt_metacall
+20 QFrame::~QFrame
+24 QFrame::~QFrame
+28 QFrame::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QFrame::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QFrame::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI6QFrame)
+232 QFrame::_ZThn8_N6QFrameD1Ev
+236 QFrame::_ZThn8_N6QFrameD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFrame
+ size=20 align=4
+ base size=20 base align=4
+QFrame (0xb3b7d400) 0
+ vptr=((& QFrame::_ZTV6QFrame) + 8u)
+ QWidget (0xb3b853c0) 0
+ primary-for QFrame (0xb3b7d400)
+ QObject (0xb3b53a14) 0
+ primary-for QWidget (0xb3b853c0)
+ QPaintDevice (0xb3b53a50) 8
+ vptr=((& QFrame::_ZTV6QFrame) + 232u)
+
+Vtable for QAbstractScrollArea
+QAbstractScrollArea::_ZTV19QAbstractScrollArea: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractScrollArea)
+8 QAbstractScrollArea::metaObject
+12 QAbstractScrollArea::qt_metacast
+16 QAbstractScrollArea::qt_metacall
+20 QAbstractScrollArea::~QAbstractScrollArea
+24 QAbstractScrollArea::~QAbstractScrollArea
+28 QAbstractScrollArea::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractScrollArea::mousePressEvent
+84 QAbstractScrollArea::mouseReleaseEvent
+88 QAbstractScrollArea::mouseDoubleClickEvent
+92 QAbstractScrollArea::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractScrollArea::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractScrollArea::paintEvent
+128 QWidget::moveEvent
+132 QAbstractScrollArea::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractScrollArea::dragEnterEvent
+156 QAbstractScrollArea::dragMoveEvent
+160 QAbstractScrollArea::dragLeaveEvent
+164 QAbstractScrollArea::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractScrollArea::viewportEvent
+228 QAbstractScrollArea::scrollContentsBy
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI19QAbstractScrollArea)
+240 QAbstractScrollArea::_ZThn8_N19QAbstractScrollAreaD1Ev
+244 QAbstractScrollArea::_ZThn8_N19QAbstractScrollAreaD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractScrollArea
+ size=20 align=4
+ base size=20 base align=4
+QAbstractScrollArea (0xb3b7d6c0) 0
+ vptr=((& QAbstractScrollArea::_ZTV19QAbstractScrollArea) + 8u)
+ QFrame (0xb3b7d700) 0
+ primary-for QAbstractScrollArea (0xb3b7d6c0)
+ QWidget (0xb3b91960) 0
+ primary-for QFrame (0xb3b7d700)
+ QObject (0xb3b53c6c) 0
+ primary-for QWidget (0xb3b91960)
+ QPaintDevice (0xb3b53ca8) 8
+ vptr=((& QAbstractScrollArea::_ZTV19QAbstractScrollArea) + 240u)
+
+Vtable for QAbstractSlider
+QAbstractSlider::_ZTV15QAbstractSlider: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QAbstractSlider)
+8 QAbstractSlider::metaObject
+12 QAbstractSlider::qt_metacast
+16 QAbstractSlider::qt_metacall
+20 QAbstractSlider::~QAbstractSlider
+24 QAbstractSlider::~QAbstractSlider
+28 QAbstractSlider::event
+32 QObject::eventFilter
+36 QAbstractSlider::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QAbstractSlider::wheelEvent
+100 QAbstractSlider::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractSlider::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractSlider::sliderChange
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI15QAbstractSlider)
+236 QAbstractSlider::_ZThn8_N15QAbstractSliderD1Ev
+240 QAbstractSlider::_ZThn8_N15QAbstractSliderD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractSlider
+ size=20 align=4
+ base size=20 base align=4
+QAbstractSlider (0xb3b7d9c0) 0
+ vptr=((& QAbstractSlider::_ZTV15QAbstractSlider) + 8u)
+ QWidget (0xb3ba5c30) 0
+ primary-for QAbstractSlider (0xb3b7d9c0)
+ QObject (0xb3b53ec4) 0
+ primary-for QWidget (0xb3ba5c30)
+ QPaintDevice (0xb3b53f00) 8
+ vptr=((& QAbstractSlider::_ZTV15QAbstractSlider) + 236u)
+
+Vtable for QValidator
+QValidator::_ZTV10QValidator: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QValidator)
+8 QValidator::metaObject
+12 QValidator::qt_metacast
+16 QValidator::qt_metacall
+20 QValidator::~QValidator
+24 QValidator::~QValidator
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 QValidator::fixup
+
+Class QValidator
+ size=8 align=4
+ base size=8 base align=4
+QValidator (0xb3b7df40) 0
+ vptr=((& QValidator::_ZTV10QValidator) + 8u)
+ QObject (0xb3bc51e0) 0
+ primary-for QValidator (0xb3b7df40)
+
+Vtable for QIntValidator
+QIntValidator::_ZTV13QIntValidator: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QIntValidator)
+8 QIntValidator::metaObject
+12 QIntValidator::qt_metacast
+16 QIntValidator::qt_metacall
+20 QIntValidator::~QIntValidator
+24 QIntValidator::~QIntValidator
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QIntValidator::validate
+60 QIntValidator::fixup
+64 QIntValidator::setRange
+
+Class QIntValidator
+ size=16 align=4
+ base size=16 base align=4
+QIntValidator (0xb3bd4200) 0
+ vptr=((& QIntValidator::_ZTV13QIntValidator) + 8u)
+ QValidator (0xb3bd4240) 0
+ primary-for QIntValidator (0xb3bd4200)
+ QObject (0xb3bc53fc) 0
+ primary-for QValidator (0xb3bd4240)
+
+Vtable for QDoubleValidator
+QDoubleValidator::_ZTV16QDoubleValidator: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QDoubleValidator)
+8 QDoubleValidator::metaObject
+12 QDoubleValidator::qt_metacast
+16 QDoubleValidator::qt_metacall
+20 QDoubleValidator::~QDoubleValidator
+24 QDoubleValidator::~QDoubleValidator
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QDoubleValidator::validate
+60 QValidator::fixup
+64 QDoubleValidator::setRange
+
+Class QDoubleValidator
+ size=28 align=4
+ base size=28 base align=4
+QDoubleValidator (0xb3bd4500) 0
+ vptr=((& QDoubleValidator::_ZTV16QDoubleValidator) + 8u)
+ QValidator (0xb3bd4540) 0
+ primary-for QDoubleValidator (0xb3bd4500)
+ QObject (0xb3bc55a0) 0
+ primary-for QValidator (0xb3bd4540)
+
+Vtable for QRegExpValidator
+QRegExpValidator::_ZTV16QRegExpValidator: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QRegExpValidator)
+8 QRegExpValidator::metaObject
+12 QRegExpValidator::qt_metacast
+16 QRegExpValidator::qt_metacall
+20 QRegExpValidator::~QRegExpValidator
+24 QRegExpValidator::~QRegExpValidator
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QRegExpValidator::validate
+60 QValidator::fixup
+
+Class QRegExpValidator
+ size=12 align=4
+ base size=12 base align=4
+QRegExpValidator (0xb3bd48c0) 0
+ vptr=((& QRegExpValidator::_ZTV16QRegExpValidator) + 8u)
+ QValidator (0xb3bd4900) 0
+ primary-for QRegExpValidator (0xb3bd48c0)
+ QObject (0xb3bc5870) 0
+ primary-for QValidator (0xb3bd4900)
+
+Vtable for QAbstractSpinBox
+QAbstractSpinBox::_ZTV16QAbstractSpinBox: 68u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QAbstractSpinBox)
+8 QAbstractSpinBox::metaObject
+12 QAbstractSpinBox::qt_metacast
+16 QAbstractSpinBox::qt_metacall
+20 QAbstractSpinBox::~QAbstractSpinBox
+24 QAbstractSpinBox::~QAbstractSpinBox
+28 QAbstractSpinBox::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractSpinBox::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractSpinBox::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QAbstractSpinBox::wheelEvent
+100 QAbstractSpinBox::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QAbstractSpinBox::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractSpinBox::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractSpinBox::validate
+228 QAbstractSpinBox::fixup
+232 QAbstractSpinBox::stepBy
+236 QAbstractSpinBox::clear
+240 QAbstractSpinBox::stepEnabled
+244 (int (*)(...))-0x000000008
+248 (int (*)(...))(& _ZTI16QAbstractSpinBox)
+252 QAbstractSpinBox::_ZThn8_N16QAbstractSpinBoxD1Ev
+256 QAbstractSpinBox::_ZThn8_N16QAbstractSpinBoxD0Ev
+260 QWidget::_ZThn8_NK7QWidget7devTypeEv
+264 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+268 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractSpinBox
+ size=20 align=4
+ base size=20 base align=4
+QAbstractSpinBox (0xb3bd4b80) 0
+ vptr=((& QAbstractSpinBox::_ZTV16QAbstractSpinBox) + 8u)
+ QWidget (0xb3bfca00) 0
+ primary-for QAbstractSpinBox (0xb3bd4b80)
+ QObject (0xb3bc59d8) 0
+ primary-for QWidget (0xb3bfca00)
+ QPaintDevice (0xb3bc5a14) 8
+ vptr=((& QAbstractSpinBox::_ZTV16QAbstractSpinBox) + 252u)
+
+Vtable for QButtonGroup
+QButtonGroup::_ZTV12QButtonGroup: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QButtonGroup)
+8 QButtonGroup::metaObject
+12 QButtonGroup::qt_metacast
+16 QButtonGroup::qt_metacall
+20 QButtonGroup::~QButtonGroup
+24 QButtonGroup::~QButtonGroup
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QButtonGroup
+ size=8 align=4
+ base size=8 base align=4
+QButtonGroup (0xb3bd4f80) 0
+ vptr=((& QButtonGroup::_ZTV12QButtonGroup) + 8u)
+ QObject (0xb3bc5d20) 0
+ primary-for QButtonGroup (0xb3bd4f80)
+
+Vtable for QCalendarWidget
+QCalendarWidget::_ZTV15QCalendarWidget: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QCalendarWidget)
+8 QCalendarWidget::metaObject
+12 QCalendarWidget::qt_metacast
+16 QCalendarWidget::qt_metacall
+20 QCalendarWidget::~QCalendarWidget
+24 QCalendarWidget::~QCalendarWidget
+28 QCalendarWidget::event
+32 QCalendarWidget::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QCalendarWidget::sizeHint
+68 QCalendarWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QCalendarWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QCalendarWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QCalendarWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QCalendarWidget::paintCell
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI15QCalendarWidget)
+236 QCalendarWidget::_ZThn8_N15QCalendarWidgetD1Ev
+240 QCalendarWidget::_ZThn8_N15QCalendarWidgetD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QCalendarWidget
+ size=20 align=4
+ base size=20 base align=4
+QCalendarWidget (0xb3a352c0) 0
+ vptr=((& QCalendarWidget::_ZTV15QCalendarWidget) + 8u)
+ QWidget (0xb3a3bcd0) 0
+ primary-for QCalendarWidget (0xb3a352c0)
+ QObject (0xb3bc5f3c) 0
+ primary-for QWidget (0xb3a3bcd0)
+ QPaintDevice (0xb3bc5f78) 8
+ vptr=((& QCalendarWidget::_ZTV15QCalendarWidget) + 236u)
+
+Vtable for QCheckBox
+QCheckBox::_ZTV9QCheckBox: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QCheckBox)
+8 QCheckBox::metaObject
+12 QCheckBox::qt_metacast
+16 QCheckBox::qt_metacall
+20 QCheckBox::~QCheckBox
+24 QCheckBox::~QCheckBox
+28 QCheckBox::event
+32 QObject::eventFilter
+36 QAbstractButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QCheckBox::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractButton::mousePressEvent
+84 QAbstractButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QCheckBox::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QAbstractButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QAbstractButton::focusInEvent
+112 QAbstractButton::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QCheckBox::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QCheckBox::hitButton
+228 QCheckBox::checkStateSet
+232 QCheckBox::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI9QCheckBox)
+244 QCheckBox::_ZThn8_N9QCheckBoxD1Ev
+248 QCheckBox::_ZThn8_N9QCheckBoxD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QCheckBox
+ size=20 align=4
+ base size=20 base align=4
+QCheckBox (0xb3a35600) 0
+ vptr=((& QCheckBox::_ZTV9QCheckBox) + 8u)
+ QAbstractButton (0xb3a35640) 0
+ primary-for QCheckBox (0xb3a35600)
+ QWidget (0xb3a5d140) 0
+ primary-for QAbstractButton (0xb3a35640)
+ QObject (0xb3a5a1e0) 0
+ primary-for QWidget (0xb3a5d140)
+ QPaintDevice (0xb3a5a21c) 8
+ vptr=((& QCheckBox::_ZTV9QCheckBox) + 244u)
+
+Vtable for QSlider
+QSlider::_ZTV7QSlider: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QSlider)
+8 QSlider::metaObject
+12 QSlider::qt_metacast
+16 QSlider::qt_metacall
+20 QSlider::~QSlider
+24 QSlider::~QSlider
+28 QSlider::event
+32 QObject::eventFilter
+36 QAbstractSlider::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QSlider::sizeHint
+68 QSlider::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QSlider::mousePressEvent
+84 QSlider::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QSlider::mouseMoveEvent
+96 QAbstractSlider::wheelEvent
+100 QAbstractSlider::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QSlider::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractSlider::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractSlider::sliderChange
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI7QSlider)
+236 QSlider::_ZThn8_N7QSliderD1Ev
+240 QSlider::_ZThn8_N7QSliderD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSlider
+ size=20 align=4
+ base size=20 base align=4
+QSlider (0xb3a359c0) 0
+ vptr=((& QSlider::_ZTV7QSlider) + 8u)
+ QAbstractSlider (0xb3a35a00) 0
+ primary-for QSlider (0xb3a359c0)
+ QWidget (0xb3a68a00) 0
+ primary-for QAbstractSlider (0xb3a35a00)
+ QObject (0xb3a5a474) 0
+ primary-for QWidget (0xb3a68a00)
+ QPaintDevice (0xb3a5a4b0) 8
+ vptr=((& QSlider::_ZTV7QSlider) + 236u)
+
+Vtable for QStyle
+QStyle::_ZTV6QStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QStyle)
+8 QStyle::metaObject
+12 QStyle::qt_metacast
+16 QStyle::qt_metacall
+20 QStyle::~QStyle
+24 QStyle::~QStyle
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QStyle::polish
+60 QStyle::unpolish
+64 QStyle::polish
+68 QStyle::unpolish
+72 QStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QStyle::standardPalette
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+112 __cxa_pure_virtual
+116 __cxa_pure_virtual
+120 __cxa_pure_virtual
+124 __cxa_pure_virtual
+128 __cxa_pure_virtual
+132 __cxa_pure_virtual
+136 __cxa_pure_virtual
+
+Class QStyle
+ size=8 align=4
+ base size=8 base align=4
+QStyle (0xb3a35dc0) 0
+ vptr=((& QStyle::_ZTV6QStyle) + 8u)
+ QObject (0xb3a5a780) 0
+ primary-for QStyle (0xb3a35dc0)
+
+Vtable for QTabBar
+QTabBar::_ZTV7QTabBar: 67u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QTabBar)
+8 QTabBar::metaObject
+12 QTabBar::qt_metacast
+16 QTabBar::qt_metacall
+20 QTabBar::~QTabBar
+24 QTabBar::~QTabBar
+28 QTabBar::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QTabBar::sizeHint
+68 QTabBar::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QTabBar::mousePressEvent
+84 QTabBar::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QTabBar::mouseMoveEvent
+96 QTabBar::wheelEvent
+100 QTabBar::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTabBar::paintEvent
+128 QWidget::moveEvent
+132 QTabBar::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QTabBar::showEvent
+172 QTabBar::hideEvent
+176 QWidget::x11Event
+180 QTabBar::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QTabBar::tabSizeHint
+228 QTabBar::tabInserted
+232 QTabBar::tabRemoved
+236 QTabBar::tabLayoutChange
+240 (int (*)(...))-0x000000008
+244 (int (*)(...))(& _ZTI7QTabBar)
+248 QTabBar::_ZThn8_N7QTabBarD1Ev
+252 QTabBar::_ZThn8_N7QTabBarD0Ev
+256 QWidget::_ZThn8_NK7QWidget7devTypeEv
+260 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+264 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTabBar
+ size=20 align=4
+ base size=20 base align=4
+QTabBar (0xb3ab6340) 0
+ vptr=((& QTabBar::_ZTV7QTabBar) + 8u)
+ QWidget (0xb3ad6dc0) 0
+ primary-for QTabBar (0xb3ab6340)
+ QObject (0xb3a5ab7c) 0
+ primary-for QWidget (0xb3ad6dc0)
+ QPaintDevice (0xb3a5abb8) 8
+ vptr=((& QTabBar::_ZTV7QTabBar) + 248u)
+
+Vtable for QTabWidget
+QTabWidget::_ZTV10QTabWidget: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QTabWidget)
+8 QTabWidget::metaObject
+12 QTabWidget::qt_metacast
+16 QTabWidget::qt_metacall
+20 QTabWidget::~QTabWidget
+24 QTabWidget::~QTabWidget
+28 QTabWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QTabWidget::sizeHint
+68 QTabWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QTabWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTabWidget::paintEvent
+128 QWidget::moveEvent
+132 QTabWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QTabWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QTabWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QTabWidget::tabInserted
+228 QTabWidget::tabRemoved
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI10QTabWidget)
+240 QTabWidget::_ZThn8_N10QTabWidgetD1Ev
+244 QTabWidget::_ZThn8_N10QTabWidgetD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTabWidget
+ size=20 align=4
+ base size=20 base align=4
+QTabWidget (0xb3ab6640) 0
+ vptr=((& QTabWidget::_ZTV10QTabWidget) + 8u)
+ QWidget (0xb3b05500) 0
+ primary-for QTabWidget (0xb3ab6640)
+ QObject (0xb3a5add4) 0
+ primary-for QWidget (0xb3b05500)
+ QPaintDevice (0xb3a5ae10) 8
+ vptr=((& QTabWidget::_ZTV10QTabWidget) + 240u)
+
+Vtable for QRubberBand
+QRubberBand::_ZTV11QRubberBand: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QRubberBand)
+8 QRubberBand::metaObject
+12 QRubberBand::qt_metacast
+16 QRubberBand::qt_metacall
+20 QRubberBand::~QRubberBand
+24 QRubberBand::~QRubberBand
+28 QRubberBand::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QRubberBand::paintEvent
+128 QRubberBand::moveEvent
+132 QRubberBand::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QRubberBand::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QRubberBand::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI11QRubberBand)
+232 QRubberBand::_ZThn8_N11QRubberBandD1Ev
+236 QRubberBand::_ZThn8_N11QRubberBandD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QRubberBand
+ size=20 align=4
+ base size=20 base align=4
+QRubberBand (0xb3ab6e80) 0
+ vptr=((& QRubberBand::_ZTV11QRubberBand) + 8u)
+ QWidget (0xb392d870) 0
+ primary-for QRubberBand (0xb3ab6e80)
+ QObject (0xb3b28348) 0
+ primary-for QWidget (0xb392d870)
+ QPaintDevice (0xb3b28384) 8
+ vptr=((& QRubberBand::_ZTV11QRubberBand) + 232u)
+
+Class QStyleOption
+ size=44 align=4
+ base size=44 base align=4
+QStyleOption (0xb3b287bc) 0
+
+Class QStyleOptionFocusRect
+ size=60 align=4
+ base size=60 base align=4
+QStyleOptionFocusRect (0xb393f300) 0
+ QStyleOption (0xb3b287f8) 0
+
+Class QStyleOptionFrame
+ size=52 align=4
+ base size=52 base align=4
+QStyleOptionFrame (0xb393f500) 0
+ QStyleOption (0xb3b28b7c) 0
+
+Class QStyleOptionFrameV2
+ size=56 align=4
+ base size=56 base align=4
+QStyleOptionFrameV2 (0xb393f700) 0
+ QStyleOptionFrame (0xb393f740) 0
+ QStyleOption (0xb3b28ec4) 0
+
+Class QStyleOptionFrameV3
+ size=60 align=4
+ base size=60 base align=4
+QStyleOptionFrameV3 (0xb393fc00) 0
+ QStyleOptionFrameV2 (0xb393fc40) 0
+ QStyleOptionFrame (0xb393fc80) 0
+ QStyleOption (0xb39663fc) 0
+
+Class QStyleOptionTabWidgetFrame
+ size=80 align=4
+ base size=80 base align=4
+QStyleOptionTabWidgetFrame (0xb393ffc0) 0
+ QStyleOption (0xb39667f8) 0
+
+Class QStyleOptionTabWidgetFrameV2
+ size=112 align=4
+ base size=112 base align=4
+QStyleOptionTabWidgetFrameV2 (0xb39871c0) 0
+ QStyleOptionTabWidgetFrame (0xb3987200) 0
+ QStyleOption (0xb3966e88) 0
+
+Class QStyleOptionTabBarBase
+ size=80 align=4
+ base size=80 base align=4
+QStyleOptionTabBarBase (0xb3987540) 0
+ QStyleOption (0xb3994384) 0
+
+Class QStyleOptionTabBarBaseV2
+ size=84 align=4
+ base size=81 base align=4
+QStyleOptionTabBarBaseV2 (0xb3987740) 0
+ QStyleOptionTabBarBase (0xb3987780) 0
+ QStyleOption (0xb3994834) 0
+
+Class QStyleOptionHeader
+ size=80 align=4
+ base size=80 base align=4
+QStyleOptionHeader (0xb3987ac0) 0
+ QStyleOption (0xb3994bb8) 0
+
+Class QStyleOptionButton
+ size=64 align=4
+ base size=64 base align=4
+QStyleOptionButton (0xb3987d80) 0
+ QStyleOption (0xb39af690) 0
+
+Class QStyleOptionTab
+ size=72 align=4
+ base size=72 base align=4
+QStyleOptionTab (0xb39c3100) 0
+ QStyleOption (0xb39affb4) 0
+
+Class QStyleOptionTabV2
+ size=80 align=4
+ base size=80 base align=4
+QStyleOptionTabV2 (0xb39c34c0) 0
+ QStyleOptionTab (0xb39c3500) 0
+ QStyleOption (0xb39dc9d8) 0
+
+Class QStyleOptionTabV3
+ size=100 align=4
+ base size=100 base align=4
+QStyleOptionTabV3 (0xb39c3840) 0
+ QStyleOptionTabV2 (0xb39c3880) 0
+ QStyleOptionTab (0xb39c38c0) 0
+ QStyleOption (0xb39dcf3c) 0
+
+Class QStyleOptionToolBar
+ size=68 align=4
+ base size=68 base align=4
+QStyleOptionToolBar (0xb39c3cc0) 0
+ QStyleOption (0xb3a0c834) 0
+
+Class QStyleOptionProgressBar
+ size=68 align=4
+ base size=65 base align=4
+QStyleOptionProgressBar (0xb3832040) 0
+ QStyleOption (0xb3a0cf00) 0
+
+Class QStyleOptionProgressBarV2
+ size=76 align=4
+ base size=74 base align=4
+QStyleOptionProgressBarV2 (0xb3832280) 0
+ QStyleOptionProgressBar (0xb38322c0) 0
+ QStyleOption (0xb3839654) 0
+
+Class QStyleOptionMenuItem
+ size=96 align=4
+ base size=96 base align=4
+QStyleOptionMenuItem (0xb3832340) 0
+ QStyleOption (0xb3839690) 0
+
+Class QStyleOptionQ3ListViewItem
+ size=64 align=4
+ base size=64 base align=4
+QStyleOptionQ3ListViewItem (0xb3832540) 0
+ QStyleOption (0xb384c258) 0
+
+Class QStyleOptionQ3DockWindow
+ size=48 align=4
+ base size=46 base align=4
+QStyleOptionQ3DockWindow (0xb38328c0) 0
+ QStyleOption (0xb384c8ac) 0
+
+Class QStyleOptionDockWidget
+ size=52 align=4
+ base size=51 base align=4
+QStyleOptionDockWidget (0xb3832ac0) 0
+ QStyleOption (0xb384cbf4) 0
+
+Class QStyleOptionDockWidgetV2
+ size=52 align=4
+ base size=52 base align=4
+QStyleOptionDockWidgetV2 (0xb3832cc0) 0
+ QStyleOptionDockWidget (0xb3832d00) 0
+ QStyleOption (0xb387f1a4) 0
+
+Class QStyleOptionViewItem
+ size=80 align=4
+ base size=77 base align=4
+QStyleOptionViewItem (0xb3889040) 0
+ QStyleOption (0xb387f5dc) 0
+
+Class QStyleOptionViewItemV2
+ size=84 align=4
+ base size=84 base align=4
+QStyleOptionViewItemV2 (0xb38892c0) 0
+ QStyleOptionViewItem (0xb3889300) 0
+ QStyleOption (0xb387fec4) 0
+
+Class QStyleOptionViewItemV3
+ size=92 align=4
+ base size=92 base align=4
+QStyleOptionViewItemV3 (0xb38897c0) 0
+ QStyleOptionViewItemV2 (0xb3889800) 0
+ QStyleOptionViewItem (0xb3889840) 0
+ QStyleOption (0xb38a04ec) 0
+
+Class QStyleOptionViewItemV4
+ size=128 align=4
+ base size=128 base align=4
+QStyleOptionViewItemV4 (0xb3889b80) 0
+ QStyleOptionViewItemV3 (0xb3889bc0) 0
+ QStyleOptionViewItemV2 (0xb3889c00) 0
+ QStyleOptionViewItem (0xb3889c40) 0
+ QStyleOption (0xb38a099c) 0
+
+Class QStyleOptionToolBox
+ size=52 align=4
+ base size=52 base align=4
+QStyleOptionToolBox (0xb3889f80) 0
+ QStyleOption (0xb38cf4ec) 0
+
+Class QStyleOptionToolBoxV2
+ size=60 align=4
+ base size=60 base align=4
+QStyleOptionToolBoxV2 (0xb38d4180) 0
+ QStyleOptionToolBox (0xb38d41c0) 0
+ QStyleOption (0xb38cfb04) 0
+
+Class QStyleOptionRubberBand
+ size=52 align=4
+ base size=49 base align=4
+QStyleOptionRubberBand (0xb38d4500) 0
+ QStyleOption (0xb38e3078) 0
+
+Class QStyleOptionComplex
+ size=52 align=4
+ base size=52 base align=4
+QStyleOptionComplex (0xb38d4700) 0
+ QStyleOption (0xb38e33c0) 0
+
+Class QStyleOptionSlider
+ size=104 align=4
+ base size=101 base align=4
+QStyleOptionSlider (0xb38d4980) 0
+ QStyleOptionComplex (0xb38d49c0) 0
+ QStyleOption (0xb38e3870) 0
+
+Class QStyleOptionSpinBox
+ size=64 align=4
+ base size=61 base align=4
+QStyleOptionSpinBox (0xb38d4d00) 0
+ QStyleOptionComplex (0xb38d4d40) 0
+ QStyleOption (0xb38f912c) 0
+
+Class QStyleOptionQ3ListView
+ size=84 align=4
+ base size=81 base align=4
+QStyleOptionQ3ListView (0xb38d4f80) 0
+ QStyleOptionComplex (0xb38d4fc0) 0
+ QStyleOption (0xb38f95a0) 0
+
+Class QStyleOptionToolButton
+ size=96 align=4
+ base size=96 base align=4
+QStyleOptionToolButton (0xb3901280) 0
+ QStyleOptionComplex (0xb39012c0) 0
+ QStyleOption (0xb38f9ec4) 0
+
+Class QStyleOptionComboBox
+ size=92 align=4
+ base size=92 base align=4
+QStyleOptionComboBox (0xb3901640) 0
+ QStyleOptionComplex (0xb3901680) 0
+ QStyleOption (0xb372bbb8) 0
+
+Class QStyleOptionTitleBar
+ size=68 align=4
+ base size=68 base align=4
+QStyleOptionTitleBar (0xb3901880) 0
+ QStyleOptionComplex (0xb39018c0) 0
+ QStyleOption (0xb374f4b0) 0
+
+Class QStyleOptionGroupBox
+ size=88 align=4
+ base size=88 base align=4
+QStyleOptionGroupBox (0xb3901b00) 0
+ QStyleOptionComplex (0xb3901b40) 0
+ QStyleOption (0xb374fc6c) 0
+
+Class QStyleOptionSizeGrip
+ size=56 align=4
+ base size=56 base align=4
+QStyleOptionSizeGrip (0xb3901dc0) 0
+ QStyleOptionComplex (0xb3901e00) 0
+ QStyleOption (0xb3766528) 0
+
+Class QStyleOptionGraphicsItem
+ size=132 align=4
+ base size=132 base align=4
+QStyleOptionGraphicsItem (0xb376d000) 0
+ QStyleOption (0xb37667f8) 0
+
+Class QStyleHintReturn
+ size=8 align=4
+ base size=8 base align=4
+QStyleHintReturn (0xb3766ce4) 0
+
+Class QStyleHintReturnMask
+ size=12 align=4
+ base size=12 base align=4
+QStyleHintReturnMask (0xb376d440) 0
+ QStyleHintReturn (0xb3766d20) 0
+
+Class QStyleHintReturnVariant
+ size=20 align=4
+ base size=20 base align=4
+QStyleHintReturnVariant (0xb376d4c0) 0
+ QStyleHintReturn (0xb3766d5c) 0
+
+Vtable for QAbstractItemDelegate
+QAbstractItemDelegate::_ZTV21QAbstractItemDelegate: 21u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QAbstractItemDelegate)
+8 QAbstractItemDelegate::metaObject
+12 QAbstractItemDelegate::qt_metacast
+16 QAbstractItemDelegate::qt_metacall
+20 QAbstractItemDelegate::~QAbstractItemDelegate
+24 QAbstractItemDelegate::~QAbstractItemDelegate
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 QAbstractItemDelegate::createEditor
+68 QAbstractItemDelegate::setEditorData
+72 QAbstractItemDelegate::setModelData
+76 QAbstractItemDelegate::updateEditorGeometry
+80 QAbstractItemDelegate::editorEvent
+
+Class QAbstractItemDelegate
+ size=8 align=4
+ base size=8 base align=4
+QAbstractItemDelegate (0xb376d740) 0
+ vptr=((& QAbstractItemDelegate::_ZTV21QAbstractItemDelegate) + 8u)
+ QObject (0xb3766d98) 0
+ primary-for QAbstractItemDelegate (0xb376d740)
+
+Vtable for QComboBox
+QComboBox::_ZTV9QComboBox: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QComboBox)
+8 QComboBox::metaObject
+12 QComboBox::qt_metacast
+16 QComboBox::qt_metacall
+20 QComboBox::~QComboBox
+24 QComboBox::~QComboBox
+28 QComboBox::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QComboBox::sizeHint
+68 QComboBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QComboBox::mousePressEvent
+84 QComboBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QComboBox::wheelEvent
+100 QComboBox::keyPressEvent
+104 QComboBox::keyReleaseEvent
+108 QComboBox::focusInEvent
+112 QComboBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QComboBox::paintEvent
+128 QWidget::moveEvent
+132 QComboBox::resizeEvent
+136 QWidget::closeEvent
+140 QComboBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QComboBox::showEvent
+172 QComboBox::hideEvent
+176 QWidget::x11Event
+180 QComboBox::changeEvent
+184 QWidget::metric
+188 QComboBox::inputMethodEvent
+192 QComboBox::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QComboBox::showPopup
+228 QComboBox::hidePopup
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI9QComboBox)
+240 QComboBox::_ZThn8_N9QComboBoxD1Ev
+244 QComboBox::_ZThn8_N9QComboBoxD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QComboBox
+ size=20 align=4
+ base size=20 base align=4
+QComboBox (0xb376d980) 0
+ vptr=((& QComboBox::_ZTV9QComboBox) + 8u)
+ QWidget (0xb3792e60) 0
+ primary-for QComboBox (0xb376d980)
+ QObject (0xb3766ec4) 0
+ primary-for QWidget (0xb3792e60)
+ QPaintDevice (0xb3766f00) 8
+ vptr=((& QComboBox::_ZTV9QComboBox) + 240u)
+
+Vtable for QPushButton
+QPushButton::_ZTV11QPushButton: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QPushButton)
+8 QPushButton::metaObject
+12 QPushButton::qt_metacast
+16 QPushButton::qt_metacall
+20 QPushButton::~QPushButton
+24 QPushButton::~QPushButton
+28 QPushButton::event
+32 QObject::eventFilter
+36 QAbstractButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QPushButton::sizeHint
+68 QPushButton::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractButton::mousePressEvent
+84 QAbstractButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractButton::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QPushButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QPushButton::focusInEvent
+112 QPushButton::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QPushButton::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractButton::hitButton
+228 QAbstractButton::checkStateSet
+232 QAbstractButton::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI11QPushButton)
+244 QPushButton::_ZThn8_N11QPushButtonD1Ev
+248 QPushButton::_ZThn8_N11QPushButtonD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPushButton
+ size=20 align=4
+ base size=20 base align=4
+QPushButton (0xb37cc340) 0
+ vptr=((& QPushButton::_ZTV11QPushButton) + 8u)
+ QAbstractButton (0xb37cc380) 0
+ primary-for QPushButton (0xb37cc340)
+ QWidget (0xb37d7690) 0
+ primary-for QAbstractButton (0xb37cc380)
+ QObject (0xb37bf708) 0
+ primary-for QWidget (0xb37d7690)
+ QPaintDevice (0xb37bf744) 8
+ vptr=((& QPushButton::_ZTV11QPushButton) + 244u)
+
+Vtable for QCommandLinkButton
+QCommandLinkButton::_ZTV18QCommandLinkButton: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QCommandLinkButton)
+8 QCommandLinkButton::metaObject
+12 QCommandLinkButton::qt_metacast
+16 QCommandLinkButton::qt_metacall
+20 QCommandLinkButton::~QCommandLinkButton
+24 QCommandLinkButton::~QCommandLinkButton
+28 QCommandLinkButton::event
+32 QObject::eventFilter
+36 QAbstractButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QCommandLinkButton::sizeHint
+68 QCommandLinkButton::minimumSizeHint
+72 QCommandLinkButton::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractButton::mousePressEvent
+84 QAbstractButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractButton::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QPushButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QPushButton::focusInEvent
+112 QPushButton::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QCommandLinkButton::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractButton::hitButton
+228 QAbstractButton::checkStateSet
+232 QAbstractButton::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI18QCommandLinkButton)
+244 QCommandLinkButton::_ZThn8_N18QCommandLinkButtonD1Ev
+248 QCommandLinkButton::_ZThn8_N18QCommandLinkButtonD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QCommandLinkButton
+ size=20 align=4
+ base size=20 base align=4
+QCommandLinkButton (0xb37cc780) 0
+ vptr=((& QCommandLinkButton::_ZTV18QCommandLinkButton) + 8u)
+ QPushButton (0xb37cc7c0) 0
+ primary-for QCommandLinkButton (0xb37cc780)
+ QAbstractButton (0xb37cc800) 0
+ primary-for QPushButton (0xb37cc7c0)
+ QWidget (0xb37e3be0) 0
+ primary-for QAbstractButton (0xb37cc800)
+ QObject (0xb37bf99c) 0
+ primary-for QWidget (0xb37e3be0)
+ QPaintDevice (0xb37bf9d8) 8
+ vptr=((& QCommandLinkButton::_ZTV18QCommandLinkButton) + 244u)
+
+Vtable for QDateTimeEdit
+QDateTimeEdit::_ZTV13QDateTimeEdit: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QDateTimeEdit)
+8 QDateTimeEdit::metaObject
+12 QDateTimeEdit::qt_metacast
+16 QDateTimeEdit::qt_metacall
+20 QDateTimeEdit::~QDateTimeEdit
+24 QDateTimeEdit::~QDateTimeEdit
+28 QDateTimeEdit::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QDateTimeEdit::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QDateTimeEdit::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QDateTimeEdit::wheelEvent
+100 QDateTimeEdit::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QDateTimeEdit::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QDateTimeEdit::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QDateTimeEdit::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDateTimeEdit::validate
+228 QDateTimeEdit::fixup
+232 QDateTimeEdit::stepBy
+236 QDateTimeEdit::clear
+240 QDateTimeEdit::stepEnabled
+244 QDateTimeEdit::dateTimeFromText
+248 QDateTimeEdit::textFromDateTime
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI13QDateTimeEdit)
+260 QDateTimeEdit::_ZThn8_N13QDateTimeEditD1Ev
+264 QDateTimeEdit::_ZThn8_N13QDateTimeEditD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDateTimeEdit
+ size=20 align=4
+ base size=20 base align=4
+QDateTimeEdit (0xb37ccac0) 0
+ vptr=((& QDateTimeEdit::_ZTV13QDateTimeEdit) + 8u)
+ QAbstractSpinBox (0xb37ccb00) 0
+ primary-for QDateTimeEdit (0xb37ccac0)
+ QWidget (0xb37f2a00) 0
+ primary-for QAbstractSpinBox (0xb37ccb00)
+ QObject (0xb37bfbf4) 0
+ primary-for QWidget (0xb37f2a00)
+ QPaintDevice (0xb37bfc30) 8
+ vptr=((& QDateTimeEdit::_ZTV13QDateTimeEdit) + 260u)
+
+Vtable for QTimeEdit
+QTimeEdit::_ZTV9QTimeEdit: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QTimeEdit)
+8 QTimeEdit::metaObject
+12 QTimeEdit::qt_metacast
+16 QTimeEdit::qt_metacall
+20 QTimeEdit::~QTimeEdit
+24 QTimeEdit::~QTimeEdit
+28 QDateTimeEdit::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QDateTimeEdit::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QDateTimeEdit::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QDateTimeEdit::wheelEvent
+100 QDateTimeEdit::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QDateTimeEdit::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QDateTimeEdit::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QDateTimeEdit::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDateTimeEdit::validate
+228 QDateTimeEdit::fixup
+232 QDateTimeEdit::stepBy
+236 QDateTimeEdit::clear
+240 QDateTimeEdit::stepEnabled
+244 QDateTimeEdit::dateTimeFromText
+248 QDateTimeEdit::textFromDateTime
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI9QTimeEdit)
+260 QTimeEdit::_ZThn8_N9QTimeEditD1Ev
+264 QTimeEdit::_ZThn8_N9QTimeEditD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTimeEdit
+ size=20 align=4
+ base size=20 base align=4
+QTimeEdit (0xb37ccdc0) 0
+ vptr=((& QTimeEdit::_ZTV9QTimeEdit) + 8u)
+ QDateTimeEdit (0xb37cce00) 0
+ primary-for QTimeEdit (0xb37ccdc0)
+ QAbstractSpinBox (0xb37cce40) 0
+ primary-for QDateTimeEdit (0xb37cce00)
+ QWidget (0xb380eeb0) 0
+ primary-for QAbstractSpinBox (0xb37cce40)
+ QObject (0xb37bfe4c) 0
+ primary-for QWidget (0xb380eeb0)
+ QPaintDevice (0xb37bfe88) 8
+ vptr=((& QTimeEdit::_ZTV9QTimeEdit) + 260u)
+
+Vtable for QDateEdit
+QDateEdit::_ZTV9QDateEdit: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QDateEdit)
+8 QDateEdit::metaObject
+12 QDateEdit::qt_metacast
+16 QDateEdit::qt_metacall
+20 QDateEdit::~QDateEdit
+24 QDateEdit::~QDateEdit
+28 QDateTimeEdit::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QDateTimeEdit::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QDateTimeEdit::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QDateTimeEdit::wheelEvent
+100 QDateTimeEdit::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QDateTimeEdit::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QDateTimeEdit::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QDateTimeEdit::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDateTimeEdit::validate
+228 QDateTimeEdit::fixup
+232 QDateTimeEdit::stepBy
+236 QDateTimeEdit::clear
+240 QDateTimeEdit::stepEnabled
+244 QDateTimeEdit::dateTimeFromText
+248 QDateTimeEdit::textFromDateTime
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI9QDateEdit)
+260 QDateEdit::_ZThn8_N9QDateEditD1Ev
+264 QDateEdit::_ZThn8_N9QDateEditD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDateEdit
+ size=20 align=4
+ base size=20 base align=4
+QDateEdit (0xb381f080) 0
+ vptr=((& QDateEdit::_ZTV9QDateEdit) + 8u)
+ QDateTimeEdit (0xb381f0c0) 0
+ primary-for QDateEdit (0xb381f080)
+ QAbstractSpinBox (0xb381f100) 0
+ primary-for QDateTimeEdit (0xb381f0c0)
+ QWidget (0xb38200f0) 0
+ primary-for QAbstractSpinBox (0xb381f100)
+ QObject (0xb37bffb4) 0
+ primary-for QWidget (0xb38200f0)
+ QPaintDevice (0xb3821000) 8
+ vptr=((& QDateEdit::_ZTV9QDateEdit) + 260u)
+
+Vtable for QDial
+QDial::_ZTV5QDial: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI5QDial)
+8 QDial::metaObject
+12 QDial::qt_metacast
+16 QDial::qt_metacall
+20 QDial::~QDial
+24 QDial::~QDial
+28 QDial::event
+32 QObject::eventFilter
+36 QAbstractSlider::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QDial::sizeHint
+68 QDial::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QDial::mousePressEvent
+84 QDial::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QDial::mouseMoveEvent
+96 QAbstractSlider::wheelEvent
+100 QAbstractSlider::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QDial::paintEvent
+128 QWidget::moveEvent
+132 QDial::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractSlider::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDial::sliderChange
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI5QDial)
+236 QDial::_ZThn8_N5QDialD1Ev
+240 QDial::_ZThn8_N5QDialD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDial
+ size=20 align=4
+ base size=20 base align=4
+QDial (0xb381f480) 0
+ vptr=((& QDial::_ZTV5QDial) + 8u)
+ QAbstractSlider (0xb381f4c0) 0
+ primary-for QDial (0xb381f480)
+ QWidget (0xb3634b40) 0
+ primary-for QAbstractSlider (0xb381f4c0)
+ QObject (0xb382121c) 0
+ primary-for QWidget (0xb3634b40)
+ QPaintDevice (0xb3821258) 8
+ vptr=((& QDial::_ZTV5QDial) + 236u)
+
+Vtable for QDialogButtonBox
+QDialogButtonBox::_ZTV16QDialogButtonBox: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QDialogButtonBox)
+8 QDialogButtonBox::metaObject
+12 QDialogButtonBox::qt_metacast
+16 QDialogButtonBox::qt_metacall
+20 QDialogButtonBox::~QDialogButtonBox
+24 QDialogButtonBox::~QDialogButtonBox
+28 QDialogButtonBox::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QDialogButtonBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI16QDialogButtonBox)
+232 QDialogButtonBox::_ZThn8_N16QDialogButtonBoxD1Ev
+236 QDialogButtonBox::_ZThn8_N16QDialogButtonBoxD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDialogButtonBox
+ size=20 align=4
+ base size=20 base align=4
+QDialogButtonBox (0xb381f780) 0
+ vptr=((& QDialogButtonBox::_ZTV16QDialogButtonBox) + 8u)
+ QWidget (0xb365c2d0) 0
+ primary-for QDialogButtonBox (0xb381f780)
+ QObject (0xb3821474) 0
+ primary-for QWidget (0xb365c2d0)
+ QPaintDevice (0xb38214b0) 8
+ vptr=((& QDialogButtonBox::_ZTV16QDialogButtonBox) + 232u)
+
+Vtable for QDockWidget
+QDockWidget::_ZTV11QDockWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QDockWidget)
+8 QDockWidget::metaObject
+12 QDockWidget::qt_metacast
+16 QDockWidget::qt_metacall
+20 QDockWidget::~QDockWidget
+24 QDockWidget::~QDockWidget
+28 QDockWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QDockWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QDockWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QDockWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI11QDockWidget)
+232 QDockWidget::_ZThn8_N11QDockWidgetD1Ev
+236 QDockWidget::_ZThn8_N11QDockWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDockWidget
+ size=20 align=4
+ base size=20 base align=4
+QDockWidget (0xb381fb80) 0
+ vptr=((& QDockWidget::_ZTV11QDockWidget) + 8u)
+ QWidget (0xb3676c80) 0
+ primary-for QDockWidget (0xb381fb80)
+ QObject (0xb38217bc) 0
+ primary-for QWidget (0xb3676c80)
+ QPaintDevice (0xb38217f8) 8
+ vptr=((& QDockWidget::_ZTV11QDockWidget) + 232u)
+
+Vtable for QFocusFrame
+QFocusFrame::_ZTV11QFocusFrame: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFocusFrame)
+8 QFocusFrame::metaObject
+12 QFocusFrame::qt_metacast
+16 QFocusFrame::qt_metacall
+20 QFocusFrame::~QFocusFrame
+24 QFocusFrame::~QFocusFrame
+28 QFocusFrame::event
+32 QFocusFrame::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QFocusFrame::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI11QFocusFrame)
+232 QFocusFrame::_ZThn8_N11QFocusFrameD1Ev
+236 QFocusFrame::_ZThn8_N11QFocusFrameD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFocusFrame
+ size=20 align=4
+ base size=20 base align=4
+QFocusFrame (0xb36cb040) 0
+ vptr=((& QFocusFrame::_ZTV11QFocusFrame) + 8u)
+ QWidget (0xb36b0eb0) 0
+ primary-for QFocusFrame (0xb36cb040)
+ QObject (0xb3821bf4) 0
+ primary-for QWidget (0xb36b0eb0)
+ QPaintDevice (0xb3821c30) 8
+ vptr=((& QFocusFrame::_ZTV11QFocusFrame) + 232u)
+
+Class QFontDatabase
+ size=4 align=4
+ base size=4 base align=4
+QFontDatabase (0xb3821e4c) 0
+
+Vtable for QFontComboBox
+QFontComboBox::_ZTV13QFontComboBox: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QFontComboBox)
+8 QFontComboBox::metaObject
+12 QFontComboBox::qt_metacast
+16 QFontComboBox::qt_metacall
+20 QFontComboBox::~QFontComboBox
+24 QFontComboBox::~QFontComboBox
+28 QFontComboBox::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QFontComboBox::sizeHint
+68 QComboBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QComboBox::mousePressEvent
+84 QComboBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QComboBox::wheelEvent
+100 QComboBox::keyPressEvent
+104 QComboBox::keyReleaseEvent
+108 QComboBox::focusInEvent
+112 QComboBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QComboBox::paintEvent
+128 QWidget::moveEvent
+132 QComboBox::resizeEvent
+136 QWidget::closeEvent
+140 QComboBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QComboBox::showEvent
+172 QComboBox::hideEvent
+176 QWidget::x11Event
+180 QComboBox::changeEvent
+184 QWidget::metric
+188 QComboBox::inputMethodEvent
+192 QComboBox::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QComboBox::showPopup
+228 QComboBox::hidePopup
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI13QFontComboBox)
+240 QFontComboBox::_ZThn8_N13QFontComboBoxD1Ev
+244 QFontComboBox::_ZThn8_N13QFontComboBoxD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFontComboBox
+ size=20 align=4
+ base size=20 base align=4
+QFontComboBox (0xb36cb340) 0
+ vptr=((& QFontComboBox::_ZTV13QFontComboBox) + 8u)
+ QComboBox (0xb36cb380) 0
+ primary-for QFontComboBox (0xb36cb340)
+ QWidget (0xb36e07d0) 0
+ primary-for QComboBox (0xb36cb380)
+ QObject (0xb3821e88) 0
+ primary-for QWidget (0xb36e07d0)
+ QPaintDevice (0xb3821ec4) 8
+ vptr=((& QFontComboBox::_ZTV13QFontComboBox) + 240u)
+
+Vtable for QGroupBox
+QGroupBox::_ZTV9QGroupBox: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QGroupBox)
+8 QGroupBox::metaObject
+12 QGroupBox::qt_metacast
+16 QGroupBox::qt_metacall
+20 QGroupBox::~QGroupBox
+24 QGroupBox::~QGroupBox
+28 QGroupBox::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QGroupBox::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QGroupBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QGroupBox::mousePressEvent
+84 QGroupBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QGroupBox::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QGroupBox::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QGroupBox::paintEvent
+128 QWidget::moveEvent
+132 QGroupBox::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QGroupBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI9QGroupBox)
+232 QGroupBox::_ZThn8_N9QGroupBoxD1Ev
+236 QGroupBox::_ZThn8_N9QGroupBoxD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QGroupBox
+ size=20 align=4
+ base size=20 base align=4
+QGroupBox (0xb36cb780) 0
+ vptr=((& QGroupBox::_ZTV9QGroupBox) + 8u)
+ QWidget (0xb36f9960) 0
+ primary-for QGroupBox (0xb36cb780)
+ QObject (0xb36f21e0) 0
+ primary-for QWidget (0xb36f9960)
+ QPaintDevice (0xb36f221c) 8
+ vptr=((& QGroupBox::_ZTV9QGroupBox) + 232u)
+
+Vtable for QLabel
+QLabel::_ZTV6QLabel: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QLabel)
+8 QLabel::metaObject
+12 QLabel::qt_metacast
+16 QLabel::qt_metacall
+20 QLabel::~QLabel
+24 QLabel::~QLabel
+28 QLabel::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QLabel::sizeHint
+68 QLabel::minimumSizeHint
+72 QLabel::heightForWidth
+76 QWidget::paintEngine
+80 QLabel::mousePressEvent
+84 QLabel::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QLabel::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QLabel::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QLabel::focusInEvent
+112 QLabel::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QLabel::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QLabel::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QLabel::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QLabel::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI6QLabel)
+232 QLabel::_ZThn8_N6QLabelD1Ev
+236 QLabel::_ZThn8_N6QLabelD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QLabel
+ size=20 align=4
+ base size=20 base align=4
+QLabel (0xb36cba40) 0
+ vptr=((& QLabel::_ZTV6QLabel) + 8u)
+ QFrame (0xb36cba80) 0
+ primary-for QLabel (0xb36cba40)
+ QWidget (0xb3523370) 0
+ primary-for QFrame (0xb36cba80)
+ QObject (0xb36f2438) 0
+ primary-for QWidget (0xb3523370)
+ QPaintDevice (0xb36f2474) 8
+ vptr=((& QLabel::_ZTV6QLabel) + 232u)
+
+Vtable for QLCDNumber
+QLCDNumber::_ZTV10QLCDNumber: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QLCDNumber)
+8 QLCDNumber::metaObject
+12 QLCDNumber::qt_metacast
+16 QLCDNumber::qt_metacall
+20 QLCDNumber::~QLCDNumber
+24 QLCDNumber::~QLCDNumber
+28 QLCDNumber::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QLCDNumber::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QLCDNumber::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI10QLCDNumber)
+232 QLCDNumber::_ZThn8_N10QLCDNumberD1Ev
+236 QLCDNumber::_ZThn8_N10QLCDNumberD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QLCDNumber
+ size=20 align=4
+ base size=20 base align=4
+QLCDNumber (0xb36cbd80) 0
+ vptr=((& QLCDNumber::_ZTV10QLCDNumber) + 8u)
+ QFrame (0xb36cbdc0) 0
+ primary-for QLCDNumber (0xb36cbd80)
+ QWidget (0xb3539690) 0
+ primary-for QFrame (0xb36cbdc0)
+ QObject (0xb36f2690) 0
+ primary-for QWidget (0xb3539690)
+ QPaintDevice (0xb36f26cc) 8
+ vptr=((& QLCDNumber::_ZTV10QLCDNumber) + 232u)
+
+Vtable for QLineEdit
+QLineEdit::_ZTV9QLineEdit: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QLineEdit)
+8 QLineEdit::metaObject
+12 QLineEdit::qt_metacast
+16 QLineEdit::qt_metacall
+20 QLineEdit::~QLineEdit
+24 QLineEdit::~QLineEdit
+28 QLineEdit::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QLineEdit::sizeHint
+68 QLineEdit::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QLineEdit::mousePressEvent
+84 QLineEdit::mouseReleaseEvent
+88 QLineEdit::mouseDoubleClickEvent
+92 QLineEdit::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QLineEdit::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QLineEdit::focusInEvent
+112 QLineEdit::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QLineEdit::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QLineEdit::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QLineEdit::dragEnterEvent
+156 QLineEdit::dragMoveEvent
+160 QLineEdit::dragLeaveEvent
+164 QLineEdit::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QLineEdit::changeEvent
+184 QWidget::metric
+188 QLineEdit::inputMethodEvent
+192 QLineEdit::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI9QLineEdit)
+232 QLineEdit::_ZThn8_N9QLineEditD1Ev
+236 QLineEdit::_ZThn8_N9QLineEditD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QLineEdit
+ size=20 align=4
+ base size=20 base align=4
+QLineEdit (0xb3551100) 0
+ vptr=((& QLineEdit::_ZTV9QLineEdit) + 8u)
+ QWidget (0xb354f4b0) 0
+ primary-for QLineEdit (0xb3551100)
+ QObject (0xb36f2a14) 0
+ primary-for QWidget (0xb354f4b0)
+ QPaintDevice (0xb36f2a50) 8
+ vptr=((& QLineEdit::_ZTV9QLineEdit) + 232u)
+
+Vtable for QMainWindow
+QMainWindow::_ZTV11QMainWindow: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QMainWindow)
+8 QMainWindow::metaObject
+12 QMainWindow::qt_metacast
+16 QMainWindow::qt_metacall
+20 QMainWindow::~QMainWindow
+24 QMainWindow::~QMainWindow
+28 QMainWindow::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QMainWindow::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QMainWindow::createPopupMenu
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI11QMainWindow)
+236 QMainWindow::_ZThn8_N11QMainWindowD1Ev
+240 QMainWindow::_ZThn8_N11QMainWindowD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMainWindow
+ size=20 align=4
+ base size=20 base align=4
+QMainWindow (0xb3551980) 0
+ vptr=((& QMainWindow::_ZTV11QMainWindow) + 8u)
+ QWidget (0xb357b500) 0
+ primary-for QMainWindow (0xb3551980)
+ QObject (0xb35800b4) 0
+ primary-for QWidget (0xb357b500)
+ QPaintDevice (0xb35800f0) 8
+ vptr=((& QMainWindow::_ZTV11QMainWindow) + 236u)
+
+Vtable for QMdiArea
+QMdiArea::_ZTV8QMdiArea: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QMdiArea)
+8 QMdiArea::metaObject
+12 QMdiArea::qt_metacast
+16 QMdiArea::qt_metacall
+20 QMdiArea::~QMdiArea
+24 QMdiArea::~QMdiArea
+28 QMdiArea::event
+32 QMdiArea::eventFilter
+36 QMdiArea::timerEvent
+40 QMdiArea::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QMdiArea::sizeHint
+68 QMdiArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractScrollArea::mousePressEvent
+84 QAbstractScrollArea::mouseReleaseEvent
+88 QAbstractScrollArea::mouseDoubleClickEvent
+92 QAbstractScrollArea::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractScrollArea::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QMdiArea::paintEvent
+128 QWidget::moveEvent
+132 QMdiArea::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractScrollArea::dragEnterEvent
+156 QAbstractScrollArea::dragMoveEvent
+160 QAbstractScrollArea::dragLeaveEvent
+164 QAbstractScrollArea::dropEvent
+168 QMdiArea::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QMdiArea::viewportEvent
+228 QMdiArea::scrollContentsBy
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI8QMdiArea)
+240 QMdiArea::_ZThn8_N8QMdiAreaD1Ev
+244 QMdiArea::_ZThn8_N8QMdiAreaD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMdiArea
+ size=20 align=4
+ base size=20 base align=4
+QMdiArea (0xb3551d80) 0
+ vptr=((& QMdiArea::_ZTV8QMdiArea) + 8u)
+ QAbstractScrollArea (0xb3551dc0) 0
+ primary-for QMdiArea (0xb3551d80)
+ QFrame (0xb3551e00) 0
+ primary-for QAbstractScrollArea (0xb3551dc0)
+ QWidget (0xb359d910) 0
+ primary-for QFrame (0xb3551e00)
+ QObject (0xb35803fc) 0
+ primary-for QWidget (0xb359d910)
+ QPaintDevice (0xb3580438) 8
+ vptr=((& QMdiArea::_ZTV8QMdiArea) + 240u)
+
+Vtable for QMdiSubWindow
+QMdiSubWindow::_ZTV13QMdiSubWindow: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QMdiSubWindow)
+8 QMdiSubWindow::metaObject
+12 QMdiSubWindow::qt_metacast
+16 QMdiSubWindow::qt_metacall
+20 QMdiSubWindow::~QMdiSubWindow
+24 QMdiSubWindow::~QMdiSubWindow
+28 QMdiSubWindow::event
+32 QMdiSubWindow::eventFilter
+36 QMdiSubWindow::timerEvent
+40 QMdiSubWindow::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QMdiSubWindow::sizeHint
+68 QMdiSubWindow::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QMdiSubWindow::mousePressEvent
+84 QMdiSubWindow::mouseReleaseEvent
+88 QMdiSubWindow::mouseDoubleClickEvent
+92 QMdiSubWindow::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QMdiSubWindow::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QMdiSubWindow::focusInEvent
+112 QMdiSubWindow::focusOutEvent
+116 QWidget::enterEvent
+120 QMdiSubWindow::leaveEvent
+124 QMdiSubWindow::paintEvent
+128 QMdiSubWindow::moveEvent
+132 QMdiSubWindow::resizeEvent
+136 QMdiSubWindow::closeEvent
+140 QMdiSubWindow::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QMdiSubWindow::showEvent
+172 QMdiSubWindow::hideEvent
+176 QWidget::x11Event
+180 QMdiSubWindow::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI13QMdiSubWindow)
+232 QMdiSubWindow::_ZThn8_N13QMdiSubWindowD1Ev
+236 QMdiSubWindow::_ZThn8_N13QMdiSubWindowD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMdiSubWindow
+ size=20 align=4
+ base size=20 base align=4
+QMdiSubWindow (0xb35ca200) 0
+ vptr=((& QMdiSubWindow::_ZTV13QMdiSubWindow) + 8u)
+ QWidget (0xb35d3be0) 0
+ primary-for QMdiSubWindow (0xb35ca200)
+ QObject (0xb3580780) 0
+ primary-for QWidget (0xb35d3be0)
+ QPaintDevice (0xb35807bc) 8
+ vptr=((& QMdiSubWindow::_ZTV13QMdiSubWindow) + 232u)
+
+Vtable for QAction
+QAction::_ZTV7QAction: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QAction)
+8 QAction::metaObject
+12 QAction::qt_metacast
+16 QAction::qt_metacall
+20 QAction::~QAction
+24 QAction::~QAction
+28 QAction::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QAction
+ size=8 align=4
+ base size=8 base align=4
+QAction (0xb35ca640) 0
+ vptr=((& QAction::_ZTV7QAction) + 8u)
+ QObject (0xb3580ac8) 0
+ primary-for QAction (0xb35ca640)
+
+Vtable for QActionGroup
+QActionGroup::_ZTV12QActionGroup: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QActionGroup)
+8 QActionGroup::metaObject
+12 QActionGroup::qt_metacast
+16 QActionGroup::qt_metacall
+20 QActionGroup::~QActionGroup
+24 QActionGroup::~QActionGroup
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QActionGroup
+ size=8 align=4
+ base size=8 base align=4
+QActionGroup (0xb35cacc0) 0
+ vptr=((& QActionGroup::_ZTV12QActionGroup) + 8u)
+ QObject (0xb3580f78) 0
+ primary-for QActionGroup (0xb35cacc0)
+
+Vtable for QMenu
+QMenu::_ZTV5QMenu: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI5QMenu)
+8 QMenu::metaObject
+12 QMenu::qt_metacast
+16 QMenu::qt_metacall
+20 QMenu::~QMenu
+24 QMenu::~QMenu
+28 QMenu::event
+32 QObject::eventFilter
+36 QMenu::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QMenu::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QMenu::mousePressEvent
+84 QMenu::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QMenu::mouseMoveEvent
+96 QMenu::wheelEvent
+100 QMenu::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QMenu::enterEvent
+120 QMenu::leaveEvent
+124 QMenu::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QMenu::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QMenu::hideEvent
+176 QWidget::x11Event
+180 QMenu::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QMenu::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI5QMenu)
+232 QMenu::_ZThn8_N5QMenuD1Ev
+236 QMenu::_ZThn8_N5QMenuD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMenu
+ size=20 align=4
+ base size=20 base align=4
+QMenu (0xb345a140) 0
+ vptr=((& QMenu::_ZTV5QMenu) + 8u)
+ QWidget (0xb346f910) 0
+ primary-for QMenu (0xb345a140)
+ QObject (0xb34543c0) 0
+ primary-for QWidget (0xb346f910)
+ QPaintDevice (0xb34543fc) 8
+ vptr=((& QMenu::_ZTV5QMenu) + 232u)
+
+Vtable for QMenuBar
+QMenuBar::_ZTV8QMenuBar: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QMenuBar)
+8 QMenuBar::metaObject
+12 QMenuBar::qt_metacast
+16 QMenuBar::qt_metacall
+20 QMenuBar::~QMenuBar
+24 QMenuBar::~QMenuBar
+28 QMenuBar::event
+32 QMenuBar::eventFilter
+36 QMenuBar::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QMenuBar::setVisible
+64 QMenuBar::sizeHint
+68 QMenuBar::minimumSizeHint
+72 QMenuBar::heightForWidth
+76 QWidget::paintEngine
+80 QMenuBar::mousePressEvent
+84 QMenuBar::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QMenuBar::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QMenuBar::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QMenuBar::focusInEvent
+112 QMenuBar::focusOutEvent
+116 QWidget::enterEvent
+120 QMenuBar::leaveEvent
+124 QMenuBar::paintEvent
+128 QWidget::moveEvent
+132 QMenuBar::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QMenuBar::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QMenuBar::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI8QMenuBar)
+232 QMenuBar::_ZThn8_N8QMenuBarD1Ev
+236 QMenuBar::_ZThn8_N8QMenuBarD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMenuBar
+ size=20 align=4
+ base size=20 base align=4
+QMenuBar (0xb34add80) 0
+ vptr=((& QMenuBar::_ZTV8QMenuBar) + 8u)
+ QWidget (0xb34c0b90) 0
+ primary-for QMenuBar (0xb34add80)
+ QObject (0xb34b4ac8) 0
+ primary-for QWidget (0xb34c0b90)
+ QPaintDevice (0xb34b4b04) 8
+ vptr=((& QMenuBar::_ZTV8QMenuBar) + 232u)
+
+Vtable for QMenuItem
+QMenuItem::_ZTV9QMenuItem: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QMenuItem)
+8 QMenuItem::metaObject
+12 QMenuItem::qt_metacast
+16 QMenuItem::qt_metacall
+20 QMenuItem::~QMenuItem
+24 QMenuItem::~QMenuItem
+28 QAction::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QMenuItem
+ size=8 align=4
+ base size=8 base align=4
+QMenuItem (0xb350c9c0) 0
+ vptr=((& QMenuItem::_ZTV9QMenuItem) + 8u)
+ QAction (0xb350ca00) 0
+ primary-for QMenuItem (0xb350c9c0)
+ QObject (0xb3517258) 0
+ primary-for QAction (0xb350ca00)
+
+Vtable for QAbstractUndoItem
+QAbstractUndoItem::_ZTV17QAbstractUndoItem: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAbstractUndoItem)
+8 __cxa_pure_virtual
+12 __cxa_pure_virtual
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QAbstractUndoItem
+ size=4 align=4
+ base size=4 base align=4
+QAbstractUndoItem (0xb3517384) 0 nearly-empty
+ vptr=((& QAbstractUndoItem::_ZTV17QAbstractUndoItem) + 8u)
+
+Vtable for QTextDocument
+QTextDocument::_ZTV13QTextDocument: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QTextDocument)
+8 QTextDocument::metaObject
+12 QTextDocument::qt_metacast
+16 QTextDocument::qt_metacall
+20 QTextDocument::~QTextDocument
+24 QTextDocument::~QTextDocument
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QTextDocument::clear
+60 QTextDocument::createObject
+64 QTextDocument::loadResource
+
+Class QTextDocument
+ size=8 align=4
+ base size=8 base align=4
+QTextDocument (0xb350ce40) 0
+ vptr=((& QTextDocument::_ZTV13QTextDocument) + 8u)
+ QObject (0xb35175a0) 0
+ primary-for QTextDocument (0xb350ce40)
+
+Class QTextOption::Tab
+ size=16 align=4
+ base size=14 base align=4
+QTextOption::Tab (0xb35178e8) 0
+
+Class QTextOption
+ size=24 align=4
+ base size=24 base align=4
+QTextOption (0xb35178ac) 0
+
+Class QPen
+ size=4 align=4
+ base size=4 base align=4
+QPen (0xb3383690) 0
+
+Class QTextLength
+ size=12 align=4
+ base size=12 base align=4
+QTextLength (0xb33837f8) 0
+
+Class QTextFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextFormat (0xb33cb078) 0
+
+Class QTextCharFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextCharFormat (0xb33c0c00) 0
+ QTextFormat (0xb33cb5dc) 0
+
+Class QTextBlockFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextBlockFormat (0xb324fb40) 0
+ QTextFormat (0xb325bbb8) 0
+
+Class QTextListFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextListFormat (0xb327b100) 0
+ QTextFormat (0xb3278384) 0
+
+Class QTextImageFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextImageFormat (0xb327b2c0) 0
+ QTextCharFormat (0xb327b300) 0
+ QTextFormat (0xb32785dc) 0
+
+Class QTextFrameFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextFrameFormat (0xb327b540) 0
+ QTextFormat (0xb32788ac) 0
+
+Class QTextTableFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextTableFormat (0xb327bbc0) 0
+ QTextFrameFormat (0xb327bc00) 0
+ QTextFormat (0xb32a80f0) 0
+
+Class QTextTableCellFormat
+ size=8 align=4
+ base size=8 base align=4
+QTextTableCellFormat (0xb32b6100) 0
+ QTextCharFormat (0xb32b6140) 0
+ QTextFormat (0xb32a86cc) 0
+
+Class QTextCursor
+ size=4 align=4
+ base size=4 base align=4
+QTextCursor (0xb32a8a50) 0
+
+Vtable for QTextObject
+QTextObject::_ZTV11QTextObject: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTextObject)
+8 QTextObject::metaObject
+12 QTextObject::qt_metacast
+16 QTextObject::qt_metacall
+20 QTextObject::~QTextObject
+24 QTextObject::~QTextObject
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTextObject
+ size=8 align=4
+ base size=8 base align=4
+QTextObject (0xb32b6480) 0
+ vptr=((& QTextObject::_ZTV11QTextObject) + 8u)
+ QObject (0xb32a8ac8) 0
+ primary-for QTextObject (0xb32b6480)
+
+Vtable for QTextBlockGroup
+QTextBlockGroup::_ZTV15QTextBlockGroup: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QTextBlockGroup)
+8 QTextBlockGroup::metaObject
+12 QTextBlockGroup::qt_metacast
+16 QTextBlockGroup::qt_metacall
+20 QTextBlockGroup::~QTextBlockGroup
+24 QTextBlockGroup::~QTextBlockGroup
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QTextBlockGroup::blockInserted
+60 QTextBlockGroup::blockRemoved
+64 QTextBlockGroup::blockFormatChanged
+
+Class QTextBlockGroup
+ size=8 align=4
+ base size=8 base align=4
+QTextBlockGroup (0xb32b6780) 0
+ vptr=((& QTextBlockGroup::_ZTV15QTextBlockGroup) + 8u)
+ QTextObject (0xb32b67c0) 0
+ primary-for QTextBlockGroup (0xb32b6780)
+ QObject (0xb32a8ce4) 0
+ primary-for QTextObject (0xb32b67c0)
+
+Vtable for QTextFrameLayoutData
+QTextFrameLayoutData::_ZTV20QTextFrameLayoutData: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QTextFrameLayoutData)
+8 QTextFrameLayoutData::~QTextFrameLayoutData
+12 QTextFrameLayoutData::~QTextFrameLayoutData
+
+Class QTextFrameLayoutData
+ size=4 align=4
+ base size=4 base align=4
+QTextFrameLayoutData (0xb32a8f00) 0 nearly-empty
+ vptr=((& QTextFrameLayoutData::_ZTV20QTextFrameLayoutData) + 8u)
+
+Class QTextFrame::iterator
+ size=20 align=4
+ base size=20 base align=4
+QTextFrame::iterator (0xb32a8f78) 0
+
+Vtable for QTextFrame
+QTextFrame::_ZTV10QTextFrame: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QTextFrame)
+8 QTextFrame::metaObject
+12 QTextFrame::qt_metacast
+16 QTextFrame::qt_metacall
+20 QTextFrame::~QTextFrame
+24 QTextFrame::~QTextFrame
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTextFrame
+ size=8 align=4
+ base size=8 base align=4
+QTextFrame (0xb32b6ac0) 0
+ vptr=((& QTextFrame::_ZTV10QTextFrame) + 8u)
+ QTextObject (0xb32b6b00) 0
+ primary-for QTextFrame (0xb32b6ac0)
+ QObject (0xb32a8f3c) 0
+ primary-for QTextObject (0xb32b6b00)
+
+Vtable for QTextBlockUserData
+QTextBlockUserData::_ZTV18QTextBlockUserData: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QTextBlockUserData)
+8 QTextBlockUserData::~QTextBlockUserData
+12 QTextBlockUserData::~QTextBlockUserData
+
+Class QTextBlockUserData
+ size=4 align=4
+ base size=4 base align=4
+QTextBlockUserData (0xb3306c30) 0 nearly-empty
+ vptr=((& QTextBlockUserData::_ZTV18QTextBlockUserData) + 8u)
+
+Class QTextBlock::iterator
+ size=16 align=4
+ base size=16 base align=4
+QTextBlock::iterator (0xb3306ca8) 0
+
+Class QTextBlock
+ size=8 align=4
+ base size=8 base align=4
+QTextBlock (0xb3306c6c) 0
+
+Class QTextFragment
+ size=12 align=4
+ base size=12 base align=4
+QTextFragment (0xb312f924) 0
+
+Vtable for QMimeSource
+QMimeSource::_ZTV11QMimeSource: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QMimeSource)
+8 QMimeSource::~QMimeSource
+12 QMimeSource::~QMimeSource
+16 __cxa_pure_virtual
+20 QMimeSource::provides
+24 __cxa_pure_virtual
+
+Class QMimeSource
+ size=4 align=4
+ base size=4 base align=4
+QMimeSource (0xb3144870) 0 nearly-empty
+ vptr=((& QMimeSource::_ZTV11QMimeSource) + 8u)
+
+Vtable for QDrag
+QDrag::_ZTV5QDrag: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI5QDrag)
+8 QDrag::metaObject
+12 QDrag::qt_metacast
+16 QDrag::qt_metacall
+20 QDrag::~QDrag
+24 QDrag::~QDrag
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QDrag
+ size=8 align=4
+ base size=8 base align=4
+QDrag (0xb3134840) 0
+ vptr=((& QDrag::_ZTV5QDrag) + 8u)
+ QObject (0xb31448ac) 0
+ primary-for QDrag (0xb3134840)
+
+Vtable for QInputEvent
+QInputEvent::_ZTV11QInputEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QInputEvent)
+8 QInputEvent::~QInputEvent
+12 QInputEvent::~QInputEvent
+
+Class QInputEvent
+ size=16 align=4
+ base size=16 base align=4
+QInputEvent (0xb3134b00) 0
+ vptr=((& QInputEvent::_ZTV11QInputEvent) + 8u)
+ QEvent (0xb3144ac8) 0
+ primary-for QInputEvent (0xb3134b00)
+
+Vtable for QMouseEvent
+QMouseEvent::_ZTV11QMouseEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QMouseEvent)
+8 QMouseEvent::~QMouseEvent
+12 QMouseEvent::~QMouseEvent
+
+Class QMouseEvent
+ size=40 align=4
+ base size=40 base align=4
+QMouseEvent (0xb3134c00) 0
+ vptr=((& QMouseEvent::_ZTV11QMouseEvent) + 8u)
+ QInputEvent (0xb3134c40) 0
+ primary-for QMouseEvent (0xb3134c00)
+ QEvent (0xb3144bb8) 0
+ primary-for QInputEvent (0xb3134c40)
+
+Vtable for QHoverEvent
+QHoverEvent::_ZTV11QHoverEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QHoverEvent)
+8 QHoverEvent::~QHoverEvent
+12 QHoverEvent::~QHoverEvent
+
+Class QHoverEvent
+ size=28 align=4
+ base size=28 base align=4
+QHoverEvent (0xb317c040) 0
+ vptr=((& QHoverEvent::_ZTV11QHoverEvent) + 8u)
+ QEvent (0xb31780b4) 0
+ primary-for QHoverEvent (0xb317c040)
+
+Vtable for QWheelEvent
+QWheelEvent::_ZTV11QWheelEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QWheelEvent)
+8 QWheelEvent::~QWheelEvent
+12 QWheelEvent::~QWheelEvent
+
+Class QWheelEvent
+ size=44 align=4
+ base size=44 base align=4
+QWheelEvent (0xb317c140) 0
+ vptr=((& QWheelEvent::_ZTV11QWheelEvent) + 8u)
+ QInputEvent (0xb317c180) 0
+ primary-for QWheelEvent (0xb317c140)
+ QEvent (0xb3178168) 0
+ primary-for QInputEvent (0xb317c180)
+
+Vtable for QTabletEvent
+QTabletEvent::_ZTV12QTabletEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QTabletEvent)
+8 QTabletEvent::~QTabletEvent
+12 QTabletEvent::~QTabletEvent
+
+Class QTabletEvent
+ size=104 align=4
+ base size=104 base align=4
+QTabletEvent (0xb317c4c0) 0
+ vptr=((& QTabletEvent::_ZTV12QTabletEvent) + 8u)
+ QInputEvent (0xb317c500) 0
+ primary-for QTabletEvent (0xb317c4c0)
+ QEvent (0xb3178528) 0
+ primary-for QInputEvent (0xb317c500)
+
+Vtable for QKeyEvent
+QKeyEvent::_ZTV9QKeyEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QKeyEvent)
+8 QKeyEvent::~QKeyEvent
+12 QKeyEvent::~QKeyEvent
+
+Class QKeyEvent
+ size=28 align=4
+ base size=27 base align=4
+QKeyEvent (0xb317ca00) 0
+ vptr=((& QKeyEvent::_ZTV9QKeyEvent) + 8u)
+ QInputEvent (0xb317ca40) 0
+ primary-for QKeyEvent (0xb317ca00)
+ QEvent (0xb3178b7c) 0
+ primary-for QInputEvent (0xb317ca40)
+
+Vtable for QFocusEvent
+QFocusEvent::_ZTV11QFocusEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFocusEvent)
+8 QFocusEvent::~QFocusEvent
+12 QFocusEvent::~QFocusEvent
+
+Class QFocusEvent
+ size=16 align=4
+ base size=16 base align=4
+QFocusEvent (0xb317cf80) 0
+ vptr=((& QFocusEvent::_ZTV11QFocusEvent) + 8u)
+ QEvent (0xb31a65dc) 0
+ primary-for QFocusEvent (0xb317cf80)
+
+Vtable for QPaintEvent
+QPaintEvent::_ZTV11QPaintEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QPaintEvent)
+8 QPaintEvent::~QPaintEvent
+12 QPaintEvent::~QPaintEvent
+
+Class QPaintEvent
+ size=36 align=4
+ base size=33 base align=4
+QPaintEvent (0xb31af100) 0
+ vptr=((& QPaintEvent::_ZTV11QPaintEvent) + 8u)
+ QEvent (0xb31a6690) 0
+ primary-for QPaintEvent (0xb31af100)
+
+Vtable for QUpdateLaterEvent
+QUpdateLaterEvent::_ZTV17QUpdateLaterEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QUpdateLaterEvent)
+8 QUpdateLaterEvent::~QUpdateLaterEvent
+12 QUpdateLaterEvent::~QUpdateLaterEvent
+
+Class QUpdateLaterEvent
+ size=16 align=4
+ base size=16 base align=4
+QUpdateLaterEvent (0xb31af280) 0
+ vptr=((& QUpdateLaterEvent::_ZTV17QUpdateLaterEvent) + 8u)
+ QEvent (0xb31a67bc) 0
+ primary-for QUpdateLaterEvent (0xb31af280)
+
+Vtable for QMoveEvent
+QMoveEvent::_ZTV10QMoveEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QMoveEvent)
+8 QMoveEvent::~QMoveEvent
+12 QMoveEvent::~QMoveEvent
+
+Class QMoveEvent
+ size=28 align=4
+ base size=28 base align=4
+QMoveEvent (0xb31af340) 0
+ vptr=((& QMoveEvent::_ZTV10QMoveEvent) + 8u)
+ QEvent (0xb31a6834) 0
+ primary-for QMoveEvent (0xb31af340)
+
+Vtable for QResizeEvent
+QResizeEvent::_ZTV12QResizeEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QResizeEvent)
+8 QResizeEvent::~QResizeEvent
+12 QResizeEvent::~QResizeEvent
+
+Class QResizeEvent
+ size=28 align=4
+ base size=28 base align=4
+QResizeEvent (0xb31af440) 0
+ vptr=((& QResizeEvent::_ZTV12QResizeEvent) + 8u)
+ QEvent (0xb31a68e8) 0
+ primary-for QResizeEvent (0xb31af440)
+
+Vtable for QCloseEvent
+QCloseEvent::_ZTV11QCloseEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QCloseEvent)
+8 QCloseEvent::~QCloseEvent
+12 QCloseEvent::~QCloseEvent
+
+Class QCloseEvent
+ size=12 align=4
+ base size=12 base align=4
+QCloseEvent (0xb31af540) 0
+ vptr=((& QCloseEvent::_ZTV11QCloseEvent) + 8u)
+ QEvent (0xb31a699c) 0
+ primary-for QCloseEvent (0xb31af540)
+
+Vtable for QIconDragEvent
+QIconDragEvent::_ZTV14QIconDragEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QIconDragEvent)
+8 QIconDragEvent::~QIconDragEvent
+12 QIconDragEvent::~QIconDragEvent
+
+Class QIconDragEvent
+ size=12 align=4
+ base size=12 base align=4
+QIconDragEvent (0xb31af5c0) 0
+ vptr=((& QIconDragEvent::_ZTV14QIconDragEvent) + 8u)
+ QEvent (0xb31a69d8) 0
+ primary-for QIconDragEvent (0xb31af5c0)
+
+Vtable for QShowEvent
+QShowEvent::_ZTV10QShowEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QShowEvent)
+8 QShowEvent::~QShowEvent
+12 QShowEvent::~QShowEvent
+
+Class QShowEvent
+ size=12 align=4
+ base size=12 base align=4
+QShowEvent (0xb31af640) 0
+ vptr=((& QShowEvent::_ZTV10QShowEvent) + 8u)
+ QEvent (0xb31a6a14) 0
+ primary-for QShowEvent (0xb31af640)
+
+Vtable for QHideEvent
+QHideEvent::_ZTV10QHideEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QHideEvent)
+8 QHideEvent::~QHideEvent
+12 QHideEvent::~QHideEvent
+
+Class QHideEvent
+ size=12 align=4
+ base size=12 base align=4
+QHideEvent (0xb31af6c0) 0
+ vptr=((& QHideEvent::_ZTV10QHideEvent) + 8u)
+ QEvent (0xb31a6a50) 0
+ primary-for QHideEvent (0xb31af6c0)
+
+Vtable for QContextMenuEvent
+QContextMenuEvent::_ZTV17QContextMenuEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QContextMenuEvent)
+8 QContextMenuEvent::~QContextMenuEvent
+12 QContextMenuEvent::~QContextMenuEvent
+
+Class QContextMenuEvent
+ size=36 align=4
+ base size=33 base align=4
+QContextMenuEvent (0xb31af740) 0
+ vptr=((& QContextMenuEvent::_ZTV17QContextMenuEvent) + 8u)
+ QInputEvent (0xb31af780) 0
+ primary-for QContextMenuEvent (0xb31af740)
+ QEvent (0xb31a6a8c) 0
+ primary-for QInputEvent (0xb31af780)
+
+Class QInputMethodEvent::Attribute
+ size=24 align=4
+ base size=24 base align=4
+QInputMethodEvent::Attribute (0xb31a6dd4) 0
+
+Vtable for QInputMethodEvent
+QInputMethodEvent::_ZTV17QInputMethodEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QInputMethodEvent)
+8 QInputMethodEvent::~QInputMethodEvent
+12 QInputMethodEvent::~QInputMethodEvent
+
+Class QInputMethodEvent
+ size=32 align=4
+ base size=32 base align=4
+QInputMethodEvent (0xb31af9c0) 0
+ vptr=((& QInputMethodEvent::_ZTV17QInputMethodEvent) + 8u)
+ QEvent (0xb31a6d98) 0
+ primary-for QInputMethodEvent (0xb31af9c0)
+
+Vtable for QDropEvent
+QDropEvent::_ZTV10QDropEvent: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QDropEvent)
+8 QDropEvent::~QDropEvent
+12 QDropEvent::~QDropEvent
+16 QDropEvent::format
+20 QDropEvent::encodedData
+24 QDropEvent::provides
+28 (int (*)(...))-0x00000000c
+32 (int (*)(...))(& _ZTI10QDropEvent)
+36 QDropEvent::_ZThn12_N10QDropEventD1Ev
+40 QDropEvent::_ZThn12_N10QDropEventD0Ev
+44 QDropEvent::_ZThn12_NK10QDropEvent6formatEi
+48 QDropEvent::_ZThn12_NK10QDropEvent8providesEPKc
+52 QDropEvent::_ZThn12_NK10QDropEvent11encodedDataEPKc
+
+Class QDropEvent
+ size=52 align=4
+ base size=52 base align=4
+QDropEvent (0xb31e85f0) 0
+ vptr=((& QDropEvent::_ZTV10QDropEvent) + 8u)
+ QEvent (0xb31ea348) 0
+ primary-for QDropEvent (0xb31e85f0)
+ QMimeSource (0xb31ea384) 12 nearly-empty
+ vptr=((& QDropEvent::_ZTV10QDropEvent) + 36u)
+
+Vtable for QDragMoveEvent
+QDragMoveEvent::_ZTV14QDragMoveEvent: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QDragMoveEvent)
+8 QDragMoveEvent::~QDragMoveEvent
+12 QDragMoveEvent::~QDragMoveEvent
+16 QDropEvent::format
+20 QDropEvent::encodedData
+24 QDropEvent::provides
+28 (int (*)(...))-0x00000000c
+32 (int (*)(...))(& _ZTI14QDragMoveEvent)
+36 QDragMoveEvent::_ZThn12_N14QDragMoveEventD1Ev
+40 QDragMoveEvent::_ZThn12_N14QDragMoveEventD0Ev
+44 QDropEvent::_ZThn12_NK10QDropEvent6formatEi
+48 QDropEvent::_ZThn12_NK10QDropEvent8providesEPKc
+52 QDropEvent::_ZThn12_NK10QDropEvent11encodedDataEPKc
+
+Class QDragMoveEvent
+ size=68 align=4
+ base size=68 base align=4
+QDragMoveEvent (0xb31f9280) 0
+ vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 8u)
+ QDropEvent (0xb31fb2d0) 0
+ primary-for QDragMoveEvent (0xb31f9280)
+ QEvent (0xb31ea8ac) 0
+ primary-for QDropEvent (0xb31fb2d0)
+ QMimeSource (0xb31ea8e8) 12 nearly-empty
+ vptr=((& QDragMoveEvent::_ZTV14QDragMoveEvent) + 36u)
+
+Vtable for QDragEnterEvent
+QDragEnterEvent::_ZTV15QDragEnterEvent: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QDragEnterEvent)
+8 QDragEnterEvent::~QDragEnterEvent
+12 QDragEnterEvent::~QDragEnterEvent
+16 QDropEvent::format
+20 QDropEvent::encodedData
+24 QDropEvent::provides
+28 (int (*)(...))-0x00000000c
+32 (int (*)(...))(& _ZTI15QDragEnterEvent)
+36 QDragEnterEvent::_ZThn12_N15QDragEnterEventD1Ev
+40 QDragEnterEvent::_ZThn12_N15QDragEnterEventD0Ev
+44 QDropEvent::_ZThn12_NK10QDropEvent6formatEi
+48 QDropEvent::_ZThn12_NK10QDropEvent8providesEPKc
+52 QDropEvent::_ZThn12_NK10QDropEvent11encodedDataEPKc
+
+Class QDragEnterEvent
+ size=68 align=4
+ base size=68 base align=4
+QDragEnterEvent (0xb31f9480) 0
+ vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 8u)
+ QDragMoveEvent (0xb31f94c0) 0
+ primary-for QDragEnterEvent (0xb31f9480)
+ QDropEvent (0xb3203370) 0
+ primary-for QDragMoveEvent (0xb31f94c0)
+ QEvent (0xb31eaac8) 0
+ primary-for QDropEvent (0xb3203370)
+ QMimeSource (0xb31eab04) 12 nearly-empty
+ vptr=((& QDragEnterEvent::_ZTV15QDragEnterEvent) + 36u)
+
+Vtable for QDragResponseEvent
+QDragResponseEvent::_ZTV18QDragResponseEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QDragResponseEvent)
+8 QDragResponseEvent::~QDragResponseEvent
+12 QDragResponseEvent::~QDragResponseEvent
+
+Class QDragResponseEvent
+ size=16 align=4
+ base size=13 base align=4
+QDragResponseEvent (0xb31f9540) 0
+ vptr=((& QDragResponseEvent::_ZTV18QDragResponseEvent) + 8u)
+ QEvent (0xb31eab40) 0
+ primary-for QDragResponseEvent (0xb31f9540)
+
+Vtable for QDragLeaveEvent
+QDragLeaveEvent::_ZTV15QDragLeaveEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QDragLeaveEvent)
+8 QDragLeaveEvent::~QDragLeaveEvent
+12 QDragLeaveEvent::~QDragLeaveEvent
+
+Class QDragLeaveEvent
+ size=12 align=4
+ base size=12 base align=4
+QDragLeaveEvent (0xb31f9600) 0
+ vptr=((& QDragLeaveEvent::_ZTV15QDragLeaveEvent) + 8u)
+ QEvent (0xb31eabb8) 0
+ primary-for QDragLeaveEvent (0xb31f9600)
+
+Vtable for QHelpEvent
+QHelpEvent::_ZTV10QHelpEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QHelpEvent)
+8 QHelpEvent::~QHelpEvent
+12 QHelpEvent::~QHelpEvent
+
+Class QHelpEvent
+ size=28 align=4
+ base size=28 base align=4
+QHelpEvent (0xb31f9680) 0
+ vptr=((& QHelpEvent::_ZTV10QHelpEvent) + 8u)
+ QEvent (0xb31eabf4) 0
+ primary-for QHelpEvent (0xb31f9680)
+
+Vtable for QStatusTipEvent
+QStatusTipEvent::_ZTV15QStatusTipEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QStatusTipEvent)
+8 QStatusTipEvent::~QStatusTipEvent
+12 QStatusTipEvent::~QStatusTipEvent
+
+Class QStatusTipEvent
+ size=16 align=4
+ base size=16 base align=4
+QStatusTipEvent (0xb31f9880) 0
+ vptr=((& QStatusTipEvent::_ZTV15QStatusTipEvent) + 8u)
+ QEvent (0xb31eae88) 0
+ primary-for QStatusTipEvent (0xb31f9880)
+
+Vtable for QWhatsThisClickedEvent
+QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QWhatsThisClickedEvent)
+8 QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+12 QWhatsThisClickedEvent::~QWhatsThisClickedEvent
+
+Class QWhatsThisClickedEvent
+ size=16 align=4
+ base size=16 base align=4
+QWhatsThisClickedEvent (0xb31f9940) 0
+ vptr=((& QWhatsThisClickedEvent::_ZTV22QWhatsThisClickedEvent) + 8u)
+ QEvent (0xb31eaf3c) 0
+ primary-for QWhatsThisClickedEvent (0xb31f9940)
+
+Vtable for QActionEvent
+QActionEvent::_ZTV12QActionEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QActionEvent)
+8 QActionEvent::~QActionEvent
+12 QActionEvent::~QActionEvent
+
+Class QActionEvent
+ size=20 align=4
+ base size=20 base align=4
+QActionEvent (0xb31f9a00) 0
+ vptr=((& QActionEvent::_ZTV12QActionEvent) + 8u)
+ QEvent (0xb3216000) 0
+ primary-for QActionEvent (0xb31f9a00)
+
+Vtable for QFileOpenEvent
+QFileOpenEvent::_ZTV14QFileOpenEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QFileOpenEvent)
+8 QFileOpenEvent::~QFileOpenEvent
+12 QFileOpenEvent::~QFileOpenEvent
+
+Class QFileOpenEvent
+ size=16 align=4
+ base size=16 base align=4
+QFileOpenEvent (0xb31f9b00) 0
+ vptr=((& QFileOpenEvent::_ZTV14QFileOpenEvent) + 8u)
+ QEvent (0xb32160b4) 0
+ primary-for QFileOpenEvent (0xb31f9b00)
+
+Vtable for QToolBarChangeEvent
+QToolBarChangeEvent::_ZTV19QToolBarChangeEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QToolBarChangeEvent)
+8 QToolBarChangeEvent::~QToolBarChangeEvent
+12 QToolBarChangeEvent::~QToolBarChangeEvent
+
+Class QToolBarChangeEvent
+ size=16 align=4
+ base size=13 base align=4
+QToolBarChangeEvent (0xb31f9bc0) 0
+ vptr=((& QToolBarChangeEvent::_ZTV19QToolBarChangeEvent) + 8u)
+ QEvent (0xb3216168) 0
+ primary-for QToolBarChangeEvent (0xb31f9bc0)
+
+Vtable for QShortcutEvent
+QShortcutEvent::_ZTV14QShortcutEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QShortcutEvent)
+8 QShortcutEvent::~QShortcutEvent
+12 QShortcutEvent::~QShortcutEvent
+
+Class QShortcutEvent
+ size=24 align=4
+ base size=24 base align=4
+QShortcutEvent (0xb31f9d00) 0
+ vptr=((& QShortcutEvent::_ZTV14QShortcutEvent) + 8u)
+ QEvent (0xb32161e0) 0
+ primary-for QShortcutEvent (0xb31f9d00)
+
+Vtable for QClipboardEvent
+QClipboardEvent::_ZTV15QClipboardEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QClipboardEvent)
+8 QClipboardEvent::~QClipboardEvent
+12 QClipboardEvent::~QClipboardEvent
+
+Class QClipboardEvent
+ size=12 align=4
+ base size=12 base align=4
+QClipboardEvent (0xb31f9f00) 0
+ vptr=((& QClipboardEvent::_ZTV15QClipboardEvent) + 8u)
+ QEvent (0xb3216384) 0
+ primary-for QClipboardEvent (0xb31f9f00)
+
+Vtable for QWindowStateChangeEvent
+QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QWindowStateChangeEvent)
+8 QWindowStateChangeEvent::~QWindowStateChangeEvent
+12 QWindowStateChangeEvent::~QWindowStateChangeEvent
+
+Class QWindowStateChangeEvent
+ size=16 align=4
+ base size=16 base align=4
+QWindowStateChangeEvent (0xb31f9fc0) 0
+ vptr=((& QWindowStateChangeEvent::_ZTV23QWindowStateChangeEvent) + 8u)
+ QEvent (0xb32163fc) 0
+ primary-for QWindowStateChangeEvent (0xb31f9fc0)
+
+Vtable for QMenubarUpdatedEvent
+QMenubarUpdatedEvent::_ZTV20QMenubarUpdatedEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QMenubarUpdatedEvent)
+8 QMenubarUpdatedEvent::~QMenubarUpdatedEvent
+12 QMenubarUpdatedEvent::~QMenubarUpdatedEvent
+
+Class QMenubarUpdatedEvent
+ size=16 align=4
+ base size=16 base align=4
+QMenubarUpdatedEvent (0xb3026080) 0
+ vptr=((& QMenubarUpdatedEvent::_ZTV20QMenubarUpdatedEvent) + 8u)
+ QEvent (0xb32164b0) 0
+ primary-for QMenubarUpdatedEvent (0xb3026080)
+
+Class QTouchEvent::TouchPoint
+ size=4 align=4
+ base size=4 base align=4
+QTouchEvent::TouchPoint (0xb32166cc) 0
+
+Vtable for QTouchEvent
+QTouchEvent::_ZTV11QTouchEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTouchEvent)
+8 QTouchEvent::~QTouchEvent
+12 QTouchEvent::~QTouchEvent
+
+Class QTouchEvent
+ size=32 align=4
+ base size=32 base align=4
+QTouchEvent (0xb30261c0) 0
+ vptr=((& QTouchEvent::_ZTV11QTouchEvent) + 8u)
+ QInputEvent (0xb3026200) 0
+ primary-for QTouchEvent (0xb30261c0)
+ QEvent (0xb3216690) 0
+ primary-for QInputEvent (0xb3026200)
+
+Vtable for QGestureEvent
+QGestureEvent::_ZTV13QGestureEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QGestureEvent)
+8 QGestureEvent::~QGestureEvent
+12 QGestureEvent::~QGestureEvent
+
+Class QGestureEvent
+ size=12 align=4
+ base size=12 base align=4
+QGestureEvent (0xb30265c0) 0
+ vptr=((& QGestureEvent::_ZTV13QGestureEvent) + 8u)
+ QEvent (0xb321699c) 0
+ primary-for QGestureEvent (0xb30265c0)
+
+Class QTextInlineObject
+ size=8 align=4
+ base size=8 base align=4
+QTextInlineObject (0xb32169d8) 0
+
+Class QTextLayout::FormatRange
+ size=16 align=4
+ base size=16 base align=4
+QTextLayout::FormatRange (0xb3216d5c) 0
+
+Class QTextLayout
+ size=4 align=4
+ base size=4 base align=4
+QTextLayout (0xb3216d20) 0
+
+Class QTextLine
+ size=8 align=4
+ base size=8 base align=4
+QTextLine (0xb3216f00) 0
+
+Class QTextEdit::ExtraSelection
+ size=12 align=4
+ base size=12 base align=4
+QTextEdit::ExtraSelection (0xb3086348) 0
+
+Vtable for QTextEdit
+QTextEdit::_ZTV9QTextEdit: 69u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QTextEdit)
+8 QTextEdit::metaObject
+12 QTextEdit::qt_metacast
+16 QTextEdit::qt_metacall
+20 QTextEdit::~QTextEdit
+24 QTextEdit::~QTextEdit
+28 QTextEdit::event
+32 QObject::eventFilter
+36 QTextEdit::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QTextEdit::mousePressEvent
+84 QTextEdit::mouseReleaseEvent
+88 QTextEdit::mouseDoubleClickEvent
+92 QTextEdit::mouseMoveEvent
+96 QTextEdit::wheelEvent
+100 QTextEdit::keyPressEvent
+104 QTextEdit::keyReleaseEvent
+108 QTextEdit::focusInEvent
+112 QTextEdit::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTextEdit::paintEvent
+128 QWidget::moveEvent
+132 QTextEdit::resizeEvent
+136 QWidget::closeEvent
+140 QTextEdit::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QTextEdit::dragEnterEvent
+156 QTextEdit::dragMoveEvent
+160 QTextEdit::dragLeaveEvent
+164 QTextEdit::dropEvent
+168 QTextEdit::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QTextEdit::changeEvent
+184 QWidget::metric
+188 QTextEdit::inputMethodEvent
+192 QTextEdit::inputMethodQuery
+196 QTextEdit::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractScrollArea::viewportEvent
+228 QTextEdit::scrollContentsBy
+232 QTextEdit::loadResource
+236 QTextEdit::createMimeDataFromSelection
+240 QTextEdit::canInsertFromMimeData
+244 QTextEdit::insertFromMimeData
+248 (int (*)(...))-0x000000008
+252 (int (*)(...))(& _ZTI9QTextEdit)
+256 QTextEdit::_ZThn8_N9QTextEditD1Ev
+260 QTextEdit::_ZThn8_N9QTextEditD0Ev
+264 QWidget::_ZThn8_NK7QWidget7devTypeEv
+268 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+272 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTextEdit
+ size=20 align=4
+ base size=20 base align=4
+QTextEdit (0xb3026d80) 0
+ vptr=((& QTextEdit::_ZTV9QTextEdit) + 8u)
+ QAbstractScrollArea (0xb3026dc0) 0
+ primary-for QTextEdit (0xb3026d80)
+ QFrame (0xb3026e00) 0
+ primary-for QAbstractScrollArea (0xb3026dc0)
+ QWidget (0xb3081cd0) 0
+ primary-for QFrame (0xb3026e00)
+ QObject (0xb30862d0) 0
+ primary-for QWidget (0xb3081cd0)
+ QPaintDevice (0xb308630c) 8
+ vptr=((& QTextEdit::_ZTV9QTextEdit) + 256u)
+
+Class QAbstractTextDocumentLayout::Selection
+ size=12 align=4
+ base size=12 base align=4
+QAbstractTextDocumentLayout::Selection (0xb3086bb8) 0
+
+Class QAbstractTextDocumentLayout::PaintContext
+ size=48 align=4
+ base size=48 base align=4
+QAbstractTextDocumentLayout::PaintContext (0xb3086bf4) 0
+
+Vtable for QAbstractTextDocumentLayout
+QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout: 24u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QAbstractTextDocumentLayout)
+8 QAbstractTextDocumentLayout::metaObject
+12 QAbstractTextDocumentLayout::qt_metacast
+16 QAbstractTextDocumentLayout::qt_metacall
+20 QAbstractTextDocumentLayout::~QAbstractTextDocumentLayout
+24 QAbstractTextDocumentLayout::~QAbstractTextDocumentLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 QAbstractTextDocumentLayout::resizeInlineObject
+88 QAbstractTextDocumentLayout::positionInlineObject
+92 QAbstractTextDocumentLayout::drawInlineObject
+
+Class QAbstractTextDocumentLayout
+ size=8 align=4
+ base size=8 base align=4
+QAbstractTextDocumentLayout (0xb30aeb00) 0
+ vptr=((& QAbstractTextDocumentLayout::_ZTV27QAbstractTextDocumentLayout) + 8u)
+ QObject (0xb3086b7c) 0
+ primary-for QAbstractTextDocumentLayout (0xb30aeb00)
+
+Vtable for QTextObjectInterface
+QTextObjectInterface::_ZTV20QTextObjectInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QTextObjectInterface)
+8 QTextObjectInterface::~QTextObjectInterface
+12 QTextObjectInterface::~QTextObjectInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QTextObjectInterface
+ size=4 align=4
+ base size=4 base align=4
+QTextObjectInterface (0xb310d348) 0 nearly-empty
+ vptr=((& QTextObjectInterface::_ZTV20QTextObjectInterface) + 8u)
+
+Vtable for QPlainTextEdit
+QPlainTextEdit::_ZTV14QPlainTextEdit: 69u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QPlainTextEdit)
+8 QPlainTextEdit::metaObject
+12 QPlainTextEdit::qt_metacast
+16 QPlainTextEdit::qt_metacall
+20 QPlainTextEdit::~QPlainTextEdit
+24 QPlainTextEdit::~QPlainTextEdit
+28 QPlainTextEdit::event
+32 QObject::eventFilter
+36 QPlainTextEdit::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QPlainTextEdit::mousePressEvent
+84 QPlainTextEdit::mouseReleaseEvent
+88 QPlainTextEdit::mouseDoubleClickEvent
+92 QPlainTextEdit::mouseMoveEvent
+96 QPlainTextEdit::wheelEvent
+100 QPlainTextEdit::keyPressEvent
+104 QPlainTextEdit::keyReleaseEvent
+108 QPlainTextEdit::focusInEvent
+112 QPlainTextEdit::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QPlainTextEdit::paintEvent
+128 QWidget::moveEvent
+132 QPlainTextEdit::resizeEvent
+136 QWidget::closeEvent
+140 QPlainTextEdit::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QPlainTextEdit::dragEnterEvent
+156 QPlainTextEdit::dragMoveEvent
+160 QPlainTextEdit::dragLeaveEvent
+164 QPlainTextEdit::dropEvent
+168 QPlainTextEdit::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QPlainTextEdit::changeEvent
+184 QWidget::metric
+188 QPlainTextEdit::inputMethodEvent
+192 QPlainTextEdit::inputMethodQuery
+196 QPlainTextEdit::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractScrollArea::viewportEvent
+228 QPlainTextEdit::scrollContentsBy
+232 QPlainTextEdit::loadResource
+236 QPlainTextEdit::createMimeDataFromSelection
+240 QPlainTextEdit::canInsertFromMimeData
+244 QPlainTextEdit::insertFromMimeData
+248 (int (*)(...))-0x000000008
+252 (int (*)(...))(& _ZTI14QPlainTextEdit)
+256 QPlainTextEdit::_ZThn8_N14QPlainTextEditD1Ev
+260 QPlainTextEdit::_ZThn8_N14QPlainTextEditD0Ev
+264 QWidget::_ZThn8_NK7QWidget7devTypeEv
+268 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+272 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPlainTextEdit
+ size=20 align=4
+ base size=20 base align=4
+QPlainTextEdit (0xb310f580) 0
+ vptr=((& QPlainTextEdit::_ZTV14QPlainTextEdit) + 8u)
+ QAbstractScrollArea (0xb310f5c0) 0
+ primary-for QPlainTextEdit (0xb310f580)
+ QFrame (0xb310f600) 0
+ primary-for QAbstractScrollArea (0xb310f5c0)
+ QWidget (0xb31129b0) 0
+ primary-for QFrame (0xb310f600)
+ QObject (0xb310d834) 0
+ primary-for QWidget (0xb31129b0)
+ QPaintDevice (0xb310d870) 8
+ vptr=((& QPlainTextEdit::_ZTV14QPlainTextEdit) + 256u)
+
+Vtable for QPlainTextDocumentLayout
+QPlainTextDocumentLayout::_ZTV24QPlainTextDocumentLayout: 24u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QPlainTextDocumentLayout)
+8 QPlainTextDocumentLayout::metaObject
+12 QPlainTextDocumentLayout::qt_metacast
+16 QPlainTextDocumentLayout::qt_metacall
+20 QPlainTextDocumentLayout::~QPlainTextDocumentLayout
+24 QPlainTextDocumentLayout::~QPlainTextDocumentLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QPlainTextDocumentLayout::draw
+60 QPlainTextDocumentLayout::hitTest
+64 QPlainTextDocumentLayout::pageCount
+68 QPlainTextDocumentLayout::documentSize
+72 QPlainTextDocumentLayout::frameBoundingRect
+76 QPlainTextDocumentLayout::blockBoundingRect
+80 QPlainTextDocumentLayout::documentChanged
+84 QAbstractTextDocumentLayout::resizeInlineObject
+88 QAbstractTextDocumentLayout::positionInlineObject
+92 QAbstractTextDocumentLayout::drawInlineObject
+
+Class QPlainTextDocumentLayout
+ size=8 align=4
+ base size=8 base align=4
+QPlainTextDocumentLayout (0xb310fa80) 0
+ vptr=((& QPlainTextDocumentLayout::_ZTV24QPlainTextDocumentLayout) + 8u)
+ QAbstractTextDocumentLayout (0xb310fac0) 0
+ primary-for QPlainTextDocumentLayout (0xb310fa80)
+ QObject (0xb310dbb8) 0
+ primary-for QAbstractTextDocumentLayout (0xb310fac0)
+
+Vtable for QPrinter
+QPrinter::_ZTV8QPrinter: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QPrinter)
+8 QPrinter::~QPrinter
+12 QPrinter::~QPrinter
+16 QPrinter::devType
+20 QPrinter::paintEngine
+24 QPrinter::metric
+
+Class QPrinter
+ size=12 align=4
+ base size=12 base align=4
+QPrinter (0xb310fd80) 0
+ vptr=((& QPrinter::_ZTV8QPrinter) + 8u)
+ QPaintDevice (0xb310ddd4) 0
+ primary-for QPrinter (0xb310fd80)
+
+Vtable for QPrintPreviewWidget
+QPrintPreviewWidget::_ZTV19QPrintPreviewWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QPrintPreviewWidget)
+8 QPrintPreviewWidget::metaObject
+12 QPrintPreviewWidget::qt_metacast
+16 QPrintPreviewWidget::qt_metacall
+20 QPrintPreviewWidget::~QPrintPreviewWidget
+24 QPrintPreviewWidget::~QPrintPreviewWidget
+28 QWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QPrintPreviewWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI19QPrintPreviewWidget)
+232 QPrintPreviewWidget::_ZThn8_N19QPrintPreviewWidgetD1Ev
+236 QPrintPreviewWidget::_ZThn8_N19QPrintPreviewWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPrintPreviewWidget
+ size=24 align=4
+ base size=24 base align=4
+QPrintPreviewWidget (0xb2f6e340) 0
+ vptr=((& QPrintPreviewWidget::_ZTV19QPrintPreviewWidget) + 8u)
+ QWidget (0xb2f736e0) 0
+ primary-for QPrintPreviewWidget (0xb2f6e340)
+ QObject (0xb2f74168) 0
+ primary-for QWidget (0xb2f736e0)
+ QPaintDevice (0xb2f741a4) 8
+ vptr=((& QPrintPreviewWidget::_ZTV19QPrintPreviewWidget) + 232u)
+
+Vtable for QProgressBar
+QProgressBar::_ZTV12QProgressBar: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QProgressBar)
+8 QProgressBar::metaObject
+12 QProgressBar::qt_metacast
+16 QProgressBar::qt_metacall
+20 QProgressBar::~QProgressBar
+24 QProgressBar::~QProgressBar
+28 QProgressBar::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QProgressBar::sizeHint
+68 QProgressBar::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QProgressBar::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QProgressBar::text
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI12QProgressBar)
+236 QProgressBar::_ZThn8_N12QProgressBarD1Ev
+240 QProgressBar::_ZThn8_N12QProgressBarD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QProgressBar
+ size=20 align=4
+ base size=20 base align=4
+QProgressBar (0xb2f6e600) 0
+ vptr=((& QProgressBar::_ZTV12QProgressBar) + 8u)
+ QWidget (0xb2f7fa50) 0
+ primary-for QProgressBar (0xb2f6e600)
+ QObject (0xb2f743c0) 0
+ primary-for QWidget (0xb2f7fa50)
+ QPaintDevice (0xb2f743fc) 8
+ vptr=((& QProgressBar::_ZTV12QProgressBar) + 236u)
+
+Vtable for QRadioButton
+QRadioButton::_ZTV12QRadioButton: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QRadioButton)
+8 QRadioButton::metaObject
+12 QRadioButton::qt_metacast
+16 QRadioButton::qt_metacall
+20 QRadioButton::~QRadioButton
+24 QRadioButton::~QRadioButton
+28 QRadioButton::event
+32 QObject::eventFilter
+36 QAbstractButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QRadioButton::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractButton::mousePressEvent
+84 QAbstractButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QRadioButton::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QAbstractButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QAbstractButton::focusInEvent
+112 QAbstractButton::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QRadioButton::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QAbstractButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QRadioButton::hitButton
+228 QAbstractButton::checkStateSet
+232 QAbstractButton::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI12QRadioButton)
+244 QRadioButton::_ZThn8_N12QRadioButtonD1Ev
+248 QRadioButton::_ZThn8_N12QRadioButtonD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QRadioButton
+ size=20 align=4
+ base size=20 base align=4
+QRadioButton (0xb2f6e940) 0
+ vptr=((& QRadioButton::_ZTV12QRadioButton) + 8u)
+ QAbstractButton (0xb2f6e980) 0
+ primary-for QRadioButton (0xb2f6e940)
+ QWidget (0xb2f91e10) 0
+ primary-for QAbstractButton (0xb2f6e980)
+ QObject (0xb2f74690) 0
+ primary-for QWidget (0xb2f91e10)
+ QPaintDevice (0xb2f746cc) 8
+ vptr=((& QRadioButton::_ZTV12QRadioButton) + 244u)
+
+Vtable for QScrollArea
+QScrollArea::_ZTV11QScrollArea: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QScrollArea)
+8 QScrollArea::metaObject
+12 QScrollArea::qt_metacast
+16 QScrollArea::qt_metacall
+20 QScrollArea::~QScrollArea
+24 QScrollArea::~QScrollArea
+28 QScrollArea::event
+32 QScrollArea::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractScrollArea::mousePressEvent
+84 QAbstractScrollArea::mouseReleaseEvent
+88 QAbstractScrollArea::mouseDoubleClickEvent
+92 QAbstractScrollArea::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractScrollArea::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractScrollArea::paintEvent
+128 QWidget::moveEvent
+132 QScrollArea::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractScrollArea::dragEnterEvent
+156 QAbstractScrollArea::dragMoveEvent
+160 QAbstractScrollArea::dragLeaveEvent
+164 QAbstractScrollArea::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QScrollArea::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractScrollArea::viewportEvent
+228 QScrollArea::scrollContentsBy
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI11QScrollArea)
+240 QScrollArea::_ZThn8_N11QScrollAreaD1Ev
+244 QScrollArea::_ZThn8_N11QScrollAreaD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QScrollArea
+ size=20 align=4
+ base size=20 base align=4
+QScrollArea (0xb2f6ec40) 0
+ vptr=((& QScrollArea::_ZTV11QScrollArea) + 8u)
+ QAbstractScrollArea (0xb2f6ec80) 0
+ primary-for QScrollArea (0xb2f6ec40)
+ QFrame (0xb2f6ecc0) 0
+ primary-for QAbstractScrollArea (0xb2f6ec80)
+ QWidget (0xb2fa3f00) 0
+ primary-for QFrame (0xb2f6ecc0)
+ QObject (0xb2f748e8) 0
+ primary-for QWidget (0xb2fa3f00)
+ QPaintDevice (0xb2f74924) 8
+ vptr=((& QScrollArea::_ZTV11QScrollArea) + 240u)
+
+Vtable for QScrollBar
+QScrollBar::_ZTV10QScrollBar: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QScrollBar)
+8 QScrollBar::metaObject
+12 QScrollBar::qt_metacast
+16 QScrollBar::qt_metacall
+20 QScrollBar::~QScrollBar
+24 QScrollBar::~QScrollBar
+28 QScrollBar::event
+32 QObject::eventFilter
+36 QAbstractSlider::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QScrollBar::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QScrollBar::mousePressEvent
+84 QScrollBar::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QScrollBar::mouseMoveEvent
+96 QAbstractSlider::wheelEvent
+100 QAbstractSlider::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QScrollBar::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QScrollBar::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QScrollBar::hideEvent
+176 QWidget::x11Event
+180 QAbstractSlider::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QScrollBar::sliderChange
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI10QScrollBar)
+236 QScrollBar::_ZThn8_N10QScrollBarD1Ev
+240 QScrollBar::_ZThn8_N10QScrollBarD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QScrollBar
+ size=20 align=4
+ base size=20 base align=4
+QScrollBar (0xb2f6ef80) 0
+ vptr=((& QScrollBar::_ZTV10QScrollBar) + 8u)
+ QAbstractSlider (0xb2f6efc0) 0
+ primary-for QScrollBar (0xb2f6ef80)
+ QWidget (0xb2fb2fa0) 0
+ primary-for QAbstractSlider (0xb2f6efc0)
+ QObject (0xb2f74b40) 0
+ primary-for QWidget (0xb2fb2fa0)
+ QPaintDevice (0xb2f74b7c) 8
+ vptr=((& QScrollBar::_ZTV10QScrollBar) + 236u)
+
+Vtable for QSizeGrip
+QSizeGrip::_ZTV9QSizeGrip: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QSizeGrip)
+8 QSizeGrip::metaObject
+12 QSizeGrip::qt_metacast
+16 QSizeGrip::qt_metacall
+20 QSizeGrip::~QSizeGrip
+24 QSizeGrip::~QSizeGrip
+28 QSizeGrip::event
+32 QSizeGrip::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QSizeGrip::setVisible
+64 QSizeGrip::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QSizeGrip::mousePressEvent
+84 QSizeGrip::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QSizeGrip::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QSizeGrip::paintEvent
+128 QSizeGrip::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QSizeGrip::showEvent
+172 QSizeGrip::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI9QSizeGrip)
+232 QSizeGrip::_ZThn8_N9QSizeGripD1Ev
+236 QSizeGrip::_ZThn8_N9QSizeGripD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSizeGrip
+ size=20 align=4
+ base size=20 base align=4
+QSizeGrip (0xb2fbe2c0) 0
+ vptr=((& QSizeGrip::_ZTV9QSizeGrip) + 8u)
+ QWidget (0xb2fc6d20) 0
+ primary-for QSizeGrip (0xb2fbe2c0)
+ QObject (0xb2f74e10) 0
+ primary-for QWidget (0xb2fc6d20)
+ QPaintDevice (0xb2f74e4c) 8
+ vptr=((& QSizeGrip::_ZTV9QSizeGrip) + 232u)
+
+Vtable for QSpinBox
+QSpinBox::_ZTV8QSpinBox: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QSpinBox)
+8 QSpinBox::metaObject
+12 QSpinBox::qt_metacast
+16 QSpinBox::qt_metacall
+20 QSpinBox::~QSpinBox
+24 QSpinBox::~QSpinBox
+28 QSpinBox::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractSpinBox::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractSpinBox::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QAbstractSpinBox::wheelEvent
+100 QAbstractSpinBox::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QAbstractSpinBox::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractSpinBox::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QSpinBox::validate
+228 QSpinBox::fixup
+232 QAbstractSpinBox::stepBy
+236 QAbstractSpinBox::clear
+240 QAbstractSpinBox::stepEnabled
+244 QSpinBox::valueFromText
+248 QSpinBox::textFromValue
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI8QSpinBox)
+260 QSpinBox::_ZThn8_N8QSpinBoxD1Ev
+264 QSpinBox::_ZThn8_N8QSpinBoxD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSpinBox
+ size=20 align=4
+ base size=20 base align=4
+QSpinBox (0xb2fbe580) 0
+ vptr=((& QSpinBox::_ZTV8QSpinBox) + 8u)
+ QAbstractSpinBox (0xb2fbe5c0) 0
+ primary-for QSpinBox (0xb2fbe580)
+ QWidget (0xb2fd5af0) 0
+ primary-for QAbstractSpinBox (0xb2fbe5c0)
+ QObject (0xb2fdd078) 0
+ primary-for QWidget (0xb2fd5af0)
+ QPaintDevice (0xb2fdd0b4) 8
+ vptr=((& QSpinBox::_ZTV8QSpinBox) + 260u)
+
+Vtable for QDoubleSpinBox
+QDoubleSpinBox::_ZTV14QDoubleSpinBox: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QDoubleSpinBox)
+8 QDoubleSpinBox::metaObject
+12 QDoubleSpinBox::qt_metacast
+16 QDoubleSpinBox::qt_metacall
+20 QDoubleSpinBox::~QDoubleSpinBox
+24 QDoubleSpinBox::~QDoubleSpinBox
+28 QAbstractSpinBox::event
+32 QObject::eventFilter
+36 QAbstractSpinBox::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractSpinBox::sizeHint
+68 QAbstractSpinBox::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractSpinBox::mousePressEvent
+84 QAbstractSpinBox::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractSpinBox::mouseMoveEvent
+96 QAbstractSpinBox::wheelEvent
+100 QAbstractSpinBox::keyPressEvent
+104 QAbstractSpinBox::keyReleaseEvent
+108 QAbstractSpinBox::focusInEvent
+112 QAbstractSpinBox::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractSpinBox::paintEvent
+128 QWidget::moveEvent
+132 QAbstractSpinBox::resizeEvent
+136 QAbstractSpinBox::closeEvent
+140 QAbstractSpinBox::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QAbstractSpinBox::showEvent
+172 QAbstractSpinBox::hideEvent
+176 QWidget::x11Event
+180 QAbstractSpinBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QAbstractSpinBox::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDoubleSpinBox::validate
+228 QDoubleSpinBox::fixup
+232 QAbstractSpinBox::stepBy
+236 QAbstractSpinBox::clear
+240 QAbstractSpinBox::stepEnabled
+244 QDoubleSpinBox::valueFromText
+248 QDoubleSpinBox::textFromValue
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI14QDoubleSpinBox)
+260 QDoubleSpinBox::_ZThn8_N14QDoubleSpinBoxD1Ev
+264 QDoubleSpinBox::_ZThn8_N14QDoubleSpinBoxD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDoubleSpinBox
+ size=20 align=4
+ base size=20 base align=4
+QDoubleSpinBox (0xb2fbe9c0) 0
+ vptr=((& QDoubleSpinBox::_ZTV14QDoubleSpinBox) + 8u)
+ QAbstractSpinBox (0xb2fbea00) 0
+ primary-for QDoubleSpinBox (0xb2fbe9c0)
+ QWidget (0xb2feb870) 0
+ primary-for QAbstractSpinBox (0xb2fbea00)
+ QObject (0xb2fdd348) 0
+ primary-for QWidget (0xb2feb870)
+ QPaintDevice (0xb2fdd384) 8
+ vptr=((& QDoubleSpinBox::_ZTV14QDoubleSpinBox) + 260u)
+
+Vtable for QSplashScreen
+QSplashScreen::_ZTV13QSplashScreen: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QSplashScreen)
+8 QSplashScreen::metaObject
+12 QSplashScreen::qt_metacast
+16 QSplashScreen::qt_metacall
+20 QSplashScreen::~QSplashScreen
+24 QSplashScreen::~QSplashScreen
+28 QSplashScreen::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QSplashScreen::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QSplashScreen::drawContents
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI13QSplashScreen)
+236 QSplashScreen::_ZThn8_N13QSplashScreenD1Ev
+240 QSplashScreen::_ZThn8_N13QSplashScreenD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSplashScreen
+ size=20 align=4
+ base size=20 base align=4
+QSplashScreen (0xb2fbecc0) 0
+ vptr=((& QSplashScreen::_ZTV13QSplashScreen) + 8u)
+ QWidget (0xb2ffa8c0) 0
+ primary-for QSplashScreen (0xb2fbecc0)
+ QObject (0xb2fdd5a0) 0
+ primary-for QWidget (0xb2ffa8c0)
+ QPaintDevice (0xb2fdd5dc) 8
+ vptr=((& QSplashScreen::_ZTV13QSplashScreen) + 236u)
+
+Vtable for QSplitter
+QSplitter::_ZTV9QSplitter: 64u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QSplitter)
+8 QSplitter::metaObject
+12 QSplitter::qt_metacast
+16 QSplitter::qt_metacall
+20 QSplitter::~QSplitter
+24 QSplitter::~QSplitter
+28 QSplitter::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QSplitter::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QSplitter::sizeHint
+68 QSplitter::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QFrame::paintEvent
+128 QWidget::moveEvent
+132 QSplitter::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QSplitter::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QSplitter::createHandle
+228 (int (*)(...))-0x000000008
+232 (int (*)(...))(& _ZTI9QSplitter)
+236 QSplitter::_ZThn8_N9QSplitterD1Ev
+240 QSplitter::_ZThn8_N9QSplitterD0Ev
+244 QWidget::_ZThn8_NK7QWidget7devTypeEv
+248 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+252 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSplitter
+ size=20 align=4
+ base size=20 base align=4
+QSplitter (0xb3016000) 0
+ vptr=((& QSplitter::_ZTV9QSplitter) + 8u)
+ QFrame (0xb3016040) 0
+ primary-for QSplitter (0xb3016000)
+ QWidget (0xb300baa0) 0
+ primary-for QFrame (0xb3016040)
+ QObject (0xb2fdd7f8) 0
+ primary-for QWidget (0xb300baa0)
+ QPaintDevice (0xb2fdd834) 8
+ vptr=((& QSplitter::_ZTV9QSplitter) + 236u)
+
+Vtable for QSplitterHandle
+QSplitterHandle::_ZTV15QSplitterHandle: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QSplitterHandle)
+8 QSplitterHandle::metaObject
+12 QSplitterHandle::qt_metacast
+16 QSplitterHandle::qt_metacall
+20 QSplitterHandle::~QSplitterHandle
+24 QSplitterHandle::~QSplitterHandle
+28 QSplitterHandle::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QSplitterHandle::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QSplitterHandle::mousePressEvent
+84 QSplitterHandle::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QSplitterHandle::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QSplitterHandle::paintEvent
+128 QWidget::moveEvent
+132 QSplitterHandle::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI15QSplitterHandle)
+232 QSplitterHandle::_ZThn8_N15QSplitterHandleD1Ev
+236 QSplitterHandle::_ZThn8_N15QSplitterHandleD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QSplitterHandle
+ size=20 align=4
+ base size=20 base align=4
+QSplitterHandle (0xb3016440) 0
+ vptr=((& QSplitterHandle::_ZTV15QSplitterHandle) + 8u)
+ QWidget (0xb2e2b550) 0
+ primary-for QSplitterHandle (0xb3016440)
+ QObject (0xb2fddbb8) 0
+ primary-for QWidget (0xb2e2b550)
+ QPaintDevice (0xb2fddbf4) 8
+ vptr=((& QSplitterHandle::_ZTV15QSplitterHandle) + 232u)
+
+Vtable for QStackedWidget
+QStackedWidget::_ZTV14QStackedWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QStackedWidget)
+8 QStackedWidget::metaObject
+12 QStackedWidget::qt_metacast
+16 QStackedWidget::qt_metacall
+20 QStackedWidget::~QStackedWidget
+24 QStackedWidget::~QStackedWidget
+28 QStackedWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QFrame::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QFrame::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI14QStackedWidget)
+232 QStackedWidget::_ZThn8_N14QStackedWidgetD1Ev
+236 QStackedWidget::_ZThn8_N14QStackedWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QStackedWidget
+ size=20 align=4
+ base size=20 base align=4
+QStackedWidget (0xb3016700) 0
+ vptr=((& QStackedWidget::_ZTV14QStackedWidget) + 8u)
+ QFrame (0xb3016740) 0
+ primary-for QStackedWidget (0xb3016700)
+ QWidget (0xb2e3e140) 0
+ primary-for QFrame (0xb3016740)
+ QObject (0xb2fdde10) 0
+ primary-for QWidget (0xb2e3e140)
+ QPaintDevice (0xb2fdde4c) 8
+ vptr=((& QStackedWidget::_ZTV14QStackedWidget) + 232u)
+
+Vtable for QStatusBar
+QStatusBar::_ZTV10QStatusBar: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QStatusBar)
+8 QStatusBar::metaObject
+12 QStatusBar::qt_metacast
+16 QStatusBar::qt_metacall
+20 QStatusBar::~QStatusBar
+24 QStatusBar::~QStatusBar
+28 QStatusBar::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QStatusBar::paintEvent
+128 QWidget::moveEvent
+132 QStatusBar::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QStatusBar::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI10QStatusBar)
+232 QStatusBar::_ZThn8_N10QStatusBarD1Ev
+236 QStatusBar::_ZThn8_N10QStatusBarD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QStatusBar
+ size=20 align=4
+ base size=20 base align=4
+QStatusBar (0xb3016a00) 0
+ vptr=((& QStatusBar::_ZTV10QStatusBar) + 8u)
+ QWidget (0xb2e42cd0) 0
+ primary-for QStatusBar (0xb3016a00)
+ QObject (0xb2e4e078) 0
+ primary-for QWidget (0xb2e42cd0)
+ QPaintDevice (0xb2e4e0b4) 8
+ vptr=((& QStatusBar::_ZTV10QStatusBar) + 232u)
+
+Vtable for QTextBrowser
+QTextBrowser::_ZTV12QTextBrowser: 74u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QTextBrowser)
+8 QTextBrowser::metaObject
+12 QTextBrowser::qt_metacast
+16 QTextBrowser::qt_metacall
+20 QTextBrowser::~QTextBrowser
+24 QTextBrowser::~QTextBrowser
+28 QTextBrowser::event
+32 QObject::eventFilter
+36 QTextEdit::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QTextBrowser::mousePressEvent
+84 QTextBrowser::mouseReleaseEvent
+88 QTextEdit::mouseDoubleClickEvent
+92 QTextBrowser::mouseMoveEvent
+96 QTextEdit::wheelEvent
+100 QTextBrowser::keyPressEvent
+104 QTextEdit::keyReleaseEvent
+108 QTextEdit::focusInEvent
+112 QTextBrowser::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTextBrowser::paintEvent
+128 QWidget::moveEvent
+132 QTextEdit::resizeEvent
+136 QWidget::closeEvent
+140 QTextEdit::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QTextEdit::dragEnterEvent
+156 QTextEdit::dragMoveEvent
+160 QTextEdit::dragLeaveEvent
+164 QTextEdit::dropEvent
+168 QTextEdit::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QTextEdit::changeEvent
+184 QWidget::metric
+188 QTextEdit::inputMethodEvent
+192 QTextEdit::inputMethodQuery
+196 QTextBrowser::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractScrollArea::viewportEvent
+228 QTextEdit::scrollContentsBy
+232 QTextBrowser::loadResource
+236 QTextEdit::createMimeDataFromSelection
+240 QTextEdit::canInsertFromMimeData
+244 QTextEdit::insertFromMimeData
+248 QTextBrowser::setSource
+252 QTextBrowser::backward
+256 QTextBrowser::forward
+260 QTextBrowser::home
+264 QTextBrowser::reload
+268 (int (*)(...))-0x000000008
+272 (int (*)(...))(& _ZTI12QTextBrowser)
+276 QTextBrowser::_ZThn8_N12QTextBrowserD1Ev
+280 QTextBrowser::_ZThn8_N12QTextBrowserD0Ev
+284 QWidget::_ZThn8_NK7QWidget7devTypeEv
+288 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+292 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTextBrowser
+ size=20 align=4
+ base size=20 base align=4
+QTextBrowser (0xb3016e00) 0
+ vptr=((& QTextBrowser::_ZTV12QTextBrowser) + 8u)
+ QTextEdit (0xb3016e40) 0
+ primary-for QTextBrowser (0xb3016e00)
+ QAbstractScrollArea (0xb3016e80) 0
+ primary-for QTextEdit (0xb3016e40)
+ QFrame (0xb3016ec0) 0
+ primary-for QAbstractScrollArea (0xb3016e80)
+ QWidget (0xb2e5f460) 0
+ primary-for QFrame (0xb3016ec0)
+ QObject (0xb2e4e2d0) 0
+ primary-for QWidget (0xb2e5f460)
+ QPaintDevice (0xb2e4e30c) 8
+ vptr=((& QTextBrowser::_ZTV12QTextBrowser) + 276u)
+
+Vtable for QToolBar
+QToolBar::_ZTV8QToolBar: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QToolBar)
+8 QToolBar::metaObject
+12 QToolBar::qt_metacast
+16 QToolBar::qt_metacall
+20 QToolBar::~QToolBar
+24 QToolBar::~QToolBar
+28 QToolBar::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QToolBar::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QToolBar::paintEvent
+128 QWidget::moveEvent
+132 QToolBar::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QToolBar::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QToolBar::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI8QToolBar)
+232 QToolBar::_ZThn8_N8QToolBarD1Ev
+236 QToolBar::_ZThn8_N8QToolBarD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QToolBar
+ size=20 align=4
+ base size=20 base align=4
+QToolBar (0xb2e70180) 0
+ vptr=((& QToolBar::_ZTV8QToolBar) + 8u)
+ QWidget (0xb2e69d20) 0
+ primary-for QToolBar (0xb2e70180)
+ QObject (0xb2e4e528) 0
+ primary-for QWidget (0xb2e69d20)
+ QPaintDevice (0xb2e4e564) 8
+ vptr=((& QToolBar::_ZTV8QToolBar) + 232u)
+
+Vtable for QToolBox
+QToolBox::_ZTV8QToolBox: 65u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QToolBox)
+8 QToolBox::metaObject
+12 QToolBox::qt_metacast
+16 QToolBox::qt_metacall
+20 QToolBox::~QToolBox
+24 QToolBox::~QToolBox
+28 QToolBox::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QFrame::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QFrame::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QToolBox::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QToolBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QToolBox::itemInserted
+228 QToolBox::itemRemoved
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI8QToolBox)
+240 QToolBox::_ZThn8_N8QToolBoxD1Ev
+244 QToolBox::_ZThn8_N8QToolBoxD0Ev
+248 QWidget::_ZThn8_NK7QWidget7devTypeEv
+252 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+256 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QToolBox
+ size=20 align=4
+ base size=20 base align=4
+QToolBox (0xb2e70580) 0
+ vptr=((& QToolBox::_ZTV8QToolBox) + 8u)
+ QFrame (0xb2e705c0) 0
+ primary-for QToolBox (0xb2e70580)
+ QWidget (0xb2e89730) 0
+ primary-for QFrame (0xb2e705c0)
+ QObject (0xb2e4e8ac) 0
+ primary-for QWidget (0xb2e89730)
+ QPaintDevice (0xb2e4e8e8) 8
+ vptr=((& QToolBox::_ZTV8QToolBox) + 240u)
+
+Vtable for QToolButton
+QToolButton::_ZTV11QToolButton: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QToolButton)
+8 QToolButton::metaObject
+12 QToolButton::qt_metacast
+16 QToolButton::qt_metacall
+20 QToolButton::~QToolButton
+24 QToolButton::~QToolButton
+28 QToolButton::event
+32 QObject::eventFilter
+36 QToolButton::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QToolButton::sizeHint
+68 QToolButton::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QToolButton::mousePressEvent
+84 QToolButton::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QAbstractButton::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QAbstractButton::keyPressEvent
+104 QAbstractButton::keyReleaseEvent
+108 QAbstractButton::focusInEvent
+112 QAbstractButton::focusOutEvent
+116 QToolButton::enterEvent
+120 QToolButton::leaveEvent
+124 QToolButton::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QToolButton::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QToolButton::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QToolButton::hitButton
+228 QAbstractButton::checkStateSet
+232 QToolButton::nextCheckState
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI11QToolButton)
+244 QToolButton::_ZThn8_N11QToolButtonD1Ev
+248 QToolButton::_ZThn8_N11QToolButtonD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QToolButton
+ size=20 align=4
+ base size=20 base align=4
+QToolButton (0xb2e70bc0) 0
+ vptr=((& QToolButton::_ZTV11QToolButton) + 8u)
+ QAbstractButton (0xb2e70c00) 0
+ primary-for QToolButton (0xb2e70bc0)
+ QWidget (0xb2eaf5a0) 0
+ primary-for QAbstractButton (0xb2e70c00)
+ QObject (0xb2e4efb4) 0
+ primary-for QWidget (0xb2eaf5a0)
+ QPaintDevice (0xb2eb0000) 8
+ vptr=((& QToolButton::_ZTV11QToolButton) + 244u)
+
+Vtable for QWorkspace
+QWorkspace::_ZTV10QWorkspace: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QWorkspace)
+8 QWorkspace::metaObject
+12 QWorkspace::qt_metacast
+16 QWorkspace::qt_metacall
+20 QWorkspace::~QWorkspace
+24 QWorkspace::~QWorkspace
+28 QWorkspace::event
+32 QWorkspace::eventFilter
+36 QObject::timerEvent
+40 QWorkspace::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWorkspace::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWorkspace::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWorkspace::paintEvent
+128 QWidget::moveEvent
+132 QWorkspace::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWorkspace::showEvent
+172 QWorkspace::hideEvent
+176 QWidget::x11Event
+180 QWorkspace::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI10QWorkspace)
+232 QWorkspace::_ZThn8_N10QWorkspaceD1Ev
+236 QWorkspace::_ZThn8_N10QWorkspaceD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWorkspace
+ size=20 align=4
+ base size=20 base align=4
+QWorkspace (0xb2ecd340) 0
+ vptr=((& QWorkspace::_ZTV10QWorkspace) + 8u)
+ QWidget (0xb2ed26e0) 0
+ primary-for QWorkspace (0xb2ecd340)
+ QObject (0xb2eb0654) 0
+ primary-for QWidget (0xb2ed26e0)
+ QPaintDevice (0xb2eb0690) 8
+ vptr=((& QWorkspace::_ZTV10QWorkspace) + 232u)
+
+Vtable for QCompleter
+QCompleter::_ZTV10QCompleter: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QCompleter)
+8 QCompleter::metaObject
+12 QCompleter::qt_metacast
+16 QCompleter::qt_metacall
+20 QCompleter::~QCompleter
+24 QCompleter::~QCompleter
+28 QCompleter::event
+32 QCompleter::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QCompleter::pathFromIndex
+60 QCompleter::splitPath
+
+Class QCompleter
+ size=8 align=4
+ base size=8 base align=4
+QCompleter (0xb2ecd600) 0
+ vptr=((& QCompleter::_ZTV10QCompleter) + 8u)
+ QObject (0xb2eb08ac) 0
+ primary-for QCompleter (0xb2ecd600)
+
+Class QDesktopServices
+ size=1 align=1
+ base size=0 base align=1
+QDesktopServices (0xb2eb0ac8) 0 empty
+
+Vtable for QSystemTrayIcon
+QSystemTrayIcon::_ZTV15QSystemTrayIcon: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QSystemTrayIcon)
+8 QSystemTrayIcon::metaObject
+12 QSystemTrayIcon::qt_metacast
+16 QSystemTrayIcon::qt_metacall
+20 QSystemTrayIcon::~QSystemTrayIcon
+24 QSystemTrayIcon::~QSystemTrayIcon
+28 QSystemTrayIcon::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSystemTrayIcon
+ size=8 align=4
+ base size=8 base align=4
+QSystemTrayIcon (0xb2ecd900) 0
+ vptr=((& QSystemTrayIcon::_ZTV15QSystemTrayIcon) + 8u)
+ QObject (0xb2eb0b40) 0
+ primary-for QSystemTrayIcon (0xb2ecd900)
+
+Vtable for QUndoGroup
+QUndoGroup::_ZTV10QUndoGroup: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QUndoGroup)
+8 QUndoGroup::metaObject
+12 QUndoGroup::qt_metacast
+16 QUndoGroup::qt_metacall
+20 QUndoGroup::~QUndoGroup
+24 QUndoGroup::~QUndoGroup
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QUndoGroup
+ size=8 align=4
+ base size=8 base align=4
+QUndoGroup (0xb2ecdc80) 0
+ vptr=((& QUndoGroup::_ZTV10QUndoGroup) + 8u)
+ QObject (0xb2eb0d5c) 0
+ primary-for QUndoGroup (0xb2ecdc80)
+
+Vtable for QUndoCommand
+QUndoCommand::_ZTV12QUndoCommand: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QUndoCommand)
+8 QUndoCommand::~QUndoCommand
+12 QUndoCommand::~QUndoCommand
+16 QUndoCommand::undo
+20 QUndoCommand::redo
+24 QUndoCommand::id
+28 QUndoCommand::mergeWith
+
+Class QUndoCommand
+ size=8 align=4
+ base size=8 base align=4
+QUndoCommand (0xb2eb0f78) 0
+ vptr=((& QUndoCommand::_ZTV12QUndoCommand) + 8u)
+
+Vtable for QUndoStack
+QUndoStack::_ZTV10QUndoStack: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QUndoStack)
+8 QUndoStack::metaObject
+12 QUndoStack::qt_metacast
+16 QUndoStack::qt_metacall
+20 QUndoStack::~QUndoStack
+24 QUndoStack::~QUndoStack
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QUndoStack
+ size=8 align=4
+ base size=8 base align=4
+QUndoStack (0xb2ecdf80) 0
+ vptr=((& QUndoStack::_ZTV10QUndoStack) + 8u)
+ QObject (0xb2eb0fb4) 0
+ primary-for QUndoStack (0xb2ecdf80)
+
+Class QItemSelectionRange
+ size=8 align=4
+ base size=8 base align=4
+QItemSelectionRange (0xb2d301e0) 0
+
+Vtable for QItemSelectionModel
+QItemSelectionModel::_ZTV19QItemSelectionModel: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QItemSelectionModel)
+8 QItemSelectionModel::metaObject
+12 QItemSelectionModel::qt_metacast
+16 QItemSelectionModel::qt_metacall
+20 QItemSelectionModel::~QItemSelectionModel
+24 QItemSelectionModel::~QItemSelectionModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QItemSelectionModel::select
+60 QItemSelectionModel::select
+64 QItemSelectionModel::clear
+68 QItemSelectionModel::reset
+
+Class QItemSelectionModel
+ size=8 align=4
+ base size=8 base align=4
+QItemSelectionModel (0xb2d24d00) 0
+ vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 8u)
+ QObject (0xb2d6c258) 0
+ primary-for QItemSelectionModel (0xb2d24d00)
+
+Class QItemSelection
+ size=4 align=4
+ base size=4 base align=4
+QItemSelection (0xb2d861c0) 0
+ QList<QItemSelectionRange> (0xb2d6c618) 0
+
+Vtable for QAbstractItemView
+QAbstractItemView::_ZTV17QAbstractItemView: 103u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAbstractItemView)
+8 QAbstractItemView::metaObject
+12 QAbstractItemView::qt_metacast
+16 QAbstractItemView::qt_metacall
+20 QAbstractItemView::~QAbstractItemView
+24 QAbstractItemView::~QAbstractItemView
+28 QAbstractItemView::event
+32 QObject::eventFilter
+36 QAbstractItemView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QAbstractItemView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QAbstractItemView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractScrollArea::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QAbstractItemView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QAbstractItemView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QAbstractScrollArea::scrollContentsBy
+232 QAbstractItemView::setModel
+236 QAbstractItemView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 __cxa_pure_virtual
+248 __cxa_pure_virtual
+252 __cxa_pure_virtual
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QAbstractItemView::reset
+268 QAbstractItemView::setRootIndex
+272 QAbstractItemView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QAbstractItemView::dataChanged
+284 QAbstractItemView::rowsInserted
+288 QAbstractItemView::rowsAboutToBeRemoved
+292 QAbstractItemView::selectionChanged
+296 QAbstractItemView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QAbstractItemView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 __cxa_pure_virtual
+344 __cxa_pure_virtual
+348 __cxa_pure_virtual
+352 __cxa_pure_virtual
+356 __cxa_pure_virtual
+360 __cxa_pure_virtual
+364 QAbstractItemView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QAbstractItemView::viewOptions
+384 (int (*)(...))-0x000000008
+388 (int (*)(...))(& _ZTI17QAbstractItemView)
+392 QAbstractItemView::_ZThn8_N17QAbstractItemViewD1Ev
+396 QAbstractItemView::_ZThn8_N17QAbstractItemViewD0Ev
+400 QWidget::_ZThn8_NK7QWidget7devTypeEv
+404 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+408 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractItemView
+ size=20 align=4
+ base size=20 base align=4
+QAbstractItemView (0xb2d86340) 0
+ vptr=((& QAbstractItemView::_ZTV17QAbstractItemView) + 8u)
+ QAbstractScrollArea (0xb2d86380) 0
+ primary-for QAbstractItemView (0xb2d86340)
+ QFrame (0xb2d863c0) 0
+ primary-for QAbstractScrollArea (0xb2d86380)
+ QWidget (0xb2dbd280) 0
+ primary-for QFrame (0xb2d863c0)
+ QObject (0xb2d6c7bc) 0
+ primary-for QWidget (0xb2dbd280)
+ QPaintDevice (0xb2d6c7f8) 8
+ vptr=((& QAbstractItemView::_ZTV17QAbstractItemView) + 392u)
+
+Vtable for QListView
+QListView::_ZTV9QListView: 103u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QListView)
+8 QListView::metaObject
+12 QListView::qt_metacast
+16 QListView::qt_metacall
+20 QListView::~QListView
+24 QListView::~QListView
+28 QListView::event
+32 QObject::eventFilter
+36 QListView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QListView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QListView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QListView::paintEvent
+128 QWidget::moveEvent
+132 QListView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QListView::dragMoveEvent
+160 QListView::dragLeaveEvent
+164 QListView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QListView::scrollContentsBy
+232 QAbstractItemView::setModel
+236 QAbstractItemView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QListView::visualRect
+248 QListView::scrollTo
+252 QListView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QListView::reset
+268 QListView::setRootIndex
+272 QListView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QListView::dataChanged
+284 QListView::rowsInserted
+288 QListView::rowsAboutToBeRemoved
+292 QListView::selectionChanged
+296 QListView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QListView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QListView::moveCursor
+344 QListView::horizontalOffset
+348 QListView::verticalOffset
+352 QListView::isIndexHidden
+356 QListView::setSelection
+360 QListView::visualRegionForSelection
+364 QListView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QListView::startDrag
+380 QListView::viewOptions
+384 (int (*)(...))-0x000000008
+388 (int (*)(...))(& _ZTI9QListView)
+392 QListView::_ZThn8_N9QListViewD1Ev
+396 QListView::_ZThn8_N9QListViewD0Ev
+400 QWidget::_ZThn8_NK7QWidget7devTypeEv
+404 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+408 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QListView
+ size=20 align=4
+ base size=20 base align=4
+QListView (0xb2d86800) 0
+ vptr=((& QListView::_ZTV9QListView) + 8u)
+ QAbstractItemView (0xb2d86840) 0
+ primary-for QListView (0xb2d86800)
+ QAbstractScrollArea (0xb2d86880) 0
+ primary-for QAbstractItemView (0xb2d86840)
+ QFrame (0xb2d868c0) 0
+ primary-for QAbstractScrollArea (0xb2d86880)
+ QWidget (0xb2decb40) 0
+ primary-for QFrame (0xb2d868c0)
+ QObject (0xb2d6cb04) 0
+ primary-for QWidget (0xb2decb40)
+ QPaintDevice (0xb2d6cb40) 8
+ vptr=((& QListView::_ZTV9QListView) + 392u)
+
+Vtable for QUndoView
+QUndoView::_ZTV9QUndoView: 103u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QUndoView)
+8 QUndoView::metaObject
+12 QUndoView::qt_metacast
+16 QUndoView::qt_metacall
+20 QUndoView::~QUndoView
+24 QUndoView::~QUndoView
+28 QListView::event
+32 QObject::eventFilter
+36 QListView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QListView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QListView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QListView::paintEvent
+128 QWidget::moveEvent
+132 QListView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QListView::dragMoveEvent
+160 QListView::dragLeaveEvent
+164 QListView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QListView::scrollContentsBy
+232 QAbstractItemView::setModel
+236 QAbstractItemView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QListView::visualRect
+248 QListView::scrollTo
+252 QListView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QListView::reset
+268 QListView::setRootIndex
+272 QListView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QListView::dataChanged
+284 QListView::rowsInserted
+288 QListView::rowsAboutToBeRemoved
+292 QListView::selectionChanged
+296 QListView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QListView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QListView::moveCursor
+344 QListView::horizontalOffset
+348 QListView::verticalOffset
+352 QListView::isIndexHidden
+356 QListView::setSelection
+360 QListView::visualRegionForSelection
+364 QListView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QListView::startDrag
+380 QListView::viewOptions
+384 (int (*)(...))-0x000000008
+388 (int (*)(...))(& _ZTI9QUndoView)
+392 QUndoView::_ZThn8_N9QUndoViewD1Ev
+396 QUndoView::_ZThn8_N9QUndoViewD0Ev
+400 QWidget::_ZThn8_NK7QWidget7devTypeEv
+404 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+408 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QUndoView
+ size=20 align=4
+ base size=20 base align=4
+QUndoView (0xb2d86bc0) 0
+ vptr=((& QUndoView::_ZTV9QUndoView) + 8u)
+ QListView (0xb2d86c00) 0
+ primary-for QUndoView (0xb2d86bc0)
+ QAbstractItemView (0xb2d86c40) 0
+ primary-for QListView (0xb2d86c00)
+ QAbstractScrollArea (0xb2d86c80) 0
+ primary-for QAbstractItemView (0xb2d86c40)
+ QFrame (0xb2d86cc0) 0
+ primary-for QAbstractScrollArea (0xb2d86c80)
+ QWidget (0xb2e1ce60) 0
+ primary-for QFrame (0xb2d86cc0)
+ QObject (0xb2d6cd5c) 0
+ primary-for QWidget (0xb2e1ce60)
+ QPaintDevice (0xb2d6cd98) 8
+ vptr=((& QUndoView::_ZTV9QUndoView) + 392u)
+
+Class QStaticText
+ size=4 align=4
+ base size=4 base align=4
+QStaticText (0xb2d6cfb4) 0
+
+Vtable for QSyntaxHighlighter
+QSyntaxHighlighter::_ZTV18QSyntaxHighlighter: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QSyntaxHighlighter)
+8 QSyntaxHighlighter::metaObject
+12 QSyntaxHighlighter::qt_metacast
+16 QSyntaxHighlighter::qt_metacall
+20 QSyntaxHighlighter::~QSyntaxHighlighter
+24 QSyntaxHighlighter::~QSyntaxHighlighter
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+
+Class QSyntaxHighlighter
+ size=8 align=4
+ base size=8 base align=4
+QSyntaxHighlighter (0xb2c47140) 0
+ vptr=((& QSyntaxHighlighter::_ZTV18QSyntaxHighlighter) + 8u)
+ QObject (0xb2c3f0f0) 0
+ primary-for QSyntaxHighlighter (0xb2c47140)
+
+Class QTextDocumentFragment
+ size=4 align=4
+ base size=4 base align=4
+QTextDocumentFragment (0xb2c3f30c) 0
+
+Class QTextDocumentWriter
+ size=4 align=4
+ base size=4 base align=4
+QTextDocumentWriter (0xb2c3f348) 0
+
+Vtable for QTextList
+QTextList::_ZTV9QTextList: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QTextList)
+8 QTextList::metaObject
+12 QTextList::qt_metacast
+16 QTextList::qt_metacall
+20 QTextList::~QTextList
+24 QTextList::~QTextList
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QTextBlockGroup::blockInserted
+60 QTextBlockGroup::blockRemoved
+64 QTextBlockGroup::blockFormatChanged
+
+Class QTextList
+ size=8 align=4
+ base size=8 base align=4
+QTextList (0xb2c47480) 0
+ vptr=((& QTextList::_ZTV9QTextList) + 8u)
+ QTextBlockGroup (0xb2c474c0) 0
+ primary-for QTextList (0xb2c47480)
+ QTextObject (0xb2c47500) 0
+ primary-for QTextBlockGroup (0xb2c474c0)
+ QObject (0xb2c3f384) 0
+ primary-for QTextObject (0xb2c47500)
+
+Class QTextTableCell
+ size=8 align=4
+ base size=8 base align=4
+QTextTableCell (0xb2c3f960) 0
+
+Vtable for QTextTable
+QTextTable::_ZTV10QTextTable: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QTextTable)
+8 QTextTable::metaObject
+12 QTextTable::qt_metacast
+16 QTextTable::qt_metacall
+20 QTextTable::~QTextTable
+24 QTextTable::~QTextTable
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTextTable
+ size=8 align=4
+ base size=8 base align=4
+QTextTable (0xb2c7e000) 0
+ vptr=((& QTextTable::_ZTV10QTextTable) + 8u)
+ QTextFrame (0xb2c7e040) 0
+ primary-for QTextTable (0xb2c7e000)
+ QTextObject (0xb2c7e080) 0
+ primary-for QTextFrame (0xb2c7e040)
+ QObject (0xb2c7b1e0) 0
+ primary-for QTextObject (0xb2c7e080)
+
+Vtable for QCommonStyle
+QCommonStyle::_ZTV12QCommonStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QCommonStyle)
+8 QCommonStyle::metaObject
+12 QCommonStyle::qt_metacast
+16 QCommonStyle::qt_metacall
+20 QCommonStyle::~QCommonStyle
+24 QCommonStyle::~QCommonStyle
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QCommonStyle::polish
+60 QCommonStyle::unpolish
+64 QCommonStyle::polish
+68 QCommonStyle::unpolish
+72 QCommonStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QStyle::standardPalette
+96 QCommonStyle::drawPrimitive
+100 QCommonStyle::drawControl
+104 QCommonStyle::subElementRect
+108 QCommonStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QCommonStyle::subControlRect
+120 QCommonStyle::pixelMetric
+124 QCommonStyle::sizeFromContents
+128 QCommonStyle::styleHint
+132 QCommonStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QCommonStyle
+ size=8 align=4
+ base size=8 base align=4
+QCommonStyle (0xb2c7e640) 0
+ vptr=((& QCommonStyle::_ZTV12QCommonStyle) + 8u)
+ QStyle (0xb2c7e680) 0
+ primary-for QCommonStyle (0xb2c7e640)
+ QObject (0xb2c7b744) 0
+ primary-for QStyle (0xb2c7e680)
+
+Vtable for QMotifStyle
+QMotifStyle::_ZTV11QMotifStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QMotifStyle)
+8 QMotifStyle::metaObject
+12 QMotifStyle::qt_metacast
+16 QMotifStyle::qt_metacall
+20 QMotifStyle::~QMotifStyle
+24 QMotifStyle::~QMotifStyle
+28 QMotifStyle::event
+32 QMotifStyle::eventFilter
+36 QMotifStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QMotifStyle::polish
+60 QMotifStyle::unpolish
+64 QMotifStyle::polish
+68 QMotifStyle::unpolish
+72 QMotifStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QMotifStyle::standardPalette
+96 QMotifStyle::drawPrimitive
+100 QMotifStyle::drawControl
+104 QMotifStyle::subElementRect
+108 QMotifStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QMotifStyle::subControlRect
+120 QMotifStyle::pixelMetric
+124 QMotifStyle::sizeFromContents
+128 QMotifStyle::styleHint
+132 QMotifStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QMotifStyle
+ size=16 align=4
+ base size=13 base align=4
+QMotifStyle (0xb2c7e940) 0
+ vptr=((& QMotifStyle::_ZTV11QMotifStyle) + 8u)
+ QCommonStyle (0xb2c7e980) 0
+ primary-for QMotifStyle (0xb2c7e940)
+ QStyle (0xb2c7e9c0) 0
+ primary-for QCommonStyle (0xb2c7e980)
+ QObject (0xb2c7b960) 0
+ primary-for QStyle (0xb2c7e9c0)
+
+Vtable for QCDEStyle
+QCDEStyle::_ZTV9QCDEStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QCDEStyle)
+8 QCDEStyle::metaObject
+12 QCDEStyle::qt_metacast
+16 QCDEStyle::qt_metacall
+20 QCDEStyle::~QCDEStyle
+24 QCDEStyle::~QCDEStyle
+28 QMotifStyle::event
+32 QMotifStyle::eventFilter
+36 QMotifStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QMotifStyle::polish
+60 QMotifStyle::unpolish
+64 QMotifStyle::polish
+68 QMotifStyle::unpolish
+72 QMotifStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QCDEStyle::standardPalette
+96 QCDEStyle::drawPrimitive
+100 QCDEStyle::drawControl
+104 QMotifStyle::subElementRect
+108 QMotifStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QMotifStyle::subControlRect
+120 QCDEStyle::pixelMetric
+124 QMotifStyle::sizeFromContents
+128 QMotifStyle::styleHint
+132 QMotifStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QCDEStyle
+ size=16 align=4
+ base size=13 base align=4
+QCDEStyle (0xb2c7ecc0) 0
+ vptr=((& QCDEStyle::_ZTV9QCDEStyle) + 8u)
+ QMotifStyle (0xb2c7ed00) 0
+ primary-for QCDEStyle (0xb2c7ecc0)
+ QCommonStyle (0xb2c7ed40) 0
+ primary-for QMotifStyle (0xb2c7ed00)
+ QStyle (0xb2c7ed80) 0
+ primary-for QCommonStyle (0xb2c7ed40)
+ QObject (0xb2c7bbb8) 0
+ primary-for QStyle (0xb2c7ed80)
+
+Vtable for QWindowsStyle
+QWindowsStyle::_ZTV13QWindowsStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QWindowsStyle)
+8 QWindowsStyle::metaObject
+12 QWindowsStyle::qt_metacast
+16 QWindowsStyle::qt_metacall
+20 QWindowsStyle::~QWindowsStyle
+24 QWindowsStyle::~QWindowsStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWindowsStyle::polish
+60 QWindowsStyle::unpolish
+64 QWindowsStyle::polish
+68 QWindowsStyle::unpolish
+72 QWindowsStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QStyle::standardPalette
+96 QWindowsStyle::drawPrimitive
+100 QWindowsStyle::drawControl
+104 QWindowsStyle::subElementRect
+108 QWindowsStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QCommonStyle::subControlRect
+120 QWindowsStyle::pixelMetric
+124 QWindowsStyle::sizeFromContents
+128 QWindowsStyle::styleHint
+132 QWindowsStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QWindowsStyle
+ size=12 align=4
+ base size=12 base align=4
+QWindowsStyle (0xb2c7efc0) 0
+ vptr=((& QWindowsStyle::_ZTV13QWindowsStyle) + 8u)
+ QCommonStyle (0xb2cc3000) 0
+ primary-for QWindowsStyle (0xb2c7efc0)
+ QStyle (0xb2cc3040) 0
+ primary-for QCommonStyle (0xb2cc3000)
+ QObject (0xb2c7bce4) 0
+ primary-for QStyle (0xb2cc3040)
+
+Vtable for QCleanlooksStyle
+QCleanlooksStyle::_ZTV16QCleanlooksStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QCleanlooksStyle)
+8 QCleanlooksStyle::metaObject
+12 QCleanlooksStyle::qt_metacast
+16 QCleanlooksStyle::qt_metacall
+20 QCleanlooksStyle::~QCleanlooksStyle
+24 QCleanlooksStyle::~QCleanlooksStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QCleanlooksStyle::polish
+60 QCleanlooksStyle::unpolish
+64 QCleanlooksStyle::polish
+68 QCleanlooksStyle::unpolish
+72 QCleanlooksStyle::polish
+76 QStyle::itemTextRect
+80 QCleanlooksStyle::itemPixmapRect
+84 QCleanlooksStyle::drawItemText
+88 QCleanlooksStyle::drawItemPixmap
+92 QCleanlooksStyle::standardPalette
+96 QCleanlooksStyle::drawPrimitive
+100 QCleanlooksStyle::drawControl
+104 QCleanlooksStyle::subElementRect
+108 QCleanlooksStyle::drawComplexControl
+112 QCleanlooksStyle::hitTestComplexControl
+116 QCleanlooksStyle::subControlRect
+120 QCleanlooksStyle::pixelMetric
+124 QCleanlooksStyle::sizeFromContents
+128 QCleanlooksStyle::styleHint
+132 QCleanlooksStyle::standardPixmap
+136 QCleanlooksStyle::generatedIconPixmap
+
+Class QCleanlooksStyle
+ size=12 align=4
+ base size=12 base align=4
+QCleanlooksStyle (0xb2cc3300) 0
+ vptr=((& QCleanlooksStyle::_ZTV16QCleanlooksStyle) + 8u)
+ QWindowsStyle (0xb2cc3340) 0
+ primary-for QCleanlooksStyle (0xb2cc3300)
+ QCommonStyle (0xb2cc3380) 0
+ primary-for QWindowsStyle (0xb2cc3340)
+ QStyle (0xb2cc33c0) 0
+ primary-for QCommonStyle (0xb2cc3380)
+ QObject (0xb2c7bf00) 0
+ primary-for QStyle (0xb2cc33c0)
+
+Vtable for QDialog
+QDialog::_ZTV7QDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QDialog)
+8 QDialog::metaObject
+12 QDialog::qt_metacast
+16 QDialog::qt_metacall
+20 QDialog::~QDialog
+24 QDialog::~QDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI7QDialog)
+244 QDialog::_ZThn8_N7QDialogD1Ev
+248 QDialog::_ZThn8_N7QDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDialog
+ size=20 align=4
+ base size=20 base align=4
+QDialog (0xb2cc3680) 0
+ vptr=((& QDialog::_ZTV7QDialog) + 8u)
+ QWidget (0xb2ce2370) 0
+ primary-for QDialog (0xb2cc3680)
+ QObject (0xb2ce712c) 0
+ primary-for QWidget (0xb2ce2370)
+ QPaintDevice (0xb2ce7168) 8
+ vptr=((& QDialog::_ZTV7QDialog) + 244u)
+
+Vtable for QFileDialog
+QFileDialog::_ZTV11QFileDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFileDialog)
+8 QFileDialog::metaObject
+12 QFileDialog::qt_metacast
+16 QFileDialog::qt_metacall
+20 QFileDialog::~QFileDialog
+24 QFileDialog::~QFileDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QFileDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFileDialog::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QFileDialog::done
+228 QFileDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI11QFileDialog)
+244 QFileDialog::_ZThn8_N11QFileDialogD1Ev
+248 QFileDialog::_ZThn8_N11QFileDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFileDialog
+ size=20 align=4
+ base size=20 base align=4
+QFileDialog (0xb2cc3940) 0
+ vptr=((& QFileDialog::_ZTV11QFileDialog) + 8u)
+ QDialog (0xb2cc3980) 0
+ primary-for QFileDialog (0xb2cc3940)
+ QWidget (0xb2cfc050) 0
+ primary-for QDialog (0xb2cc3980)
+ QObject (0xb2ce7384) 0
+ primary-for QWidget (0xb2cfc050)
+ QPaintDevice (0xb2ce73c0) 8
+ vptr=((& QFileDialog::_ZTV11QFileDialog) + 244u)
+
+Vtable for QGtkStyle
+QGtkStyle::_ZTV9QGtkStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QGtkStyle)
+8 QGtkStyle::metaObject
+12 QGtkStyle::qt_metacast
+16 QGtkStyle::qt_metacall
+20 QGtkStyle::~QGtkStyle
+24 QGtkStyle::~QGtkStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGtkStyle::polish
+60 QGtkStyle::unpolish
+64 QGtkStyle::polish
+68 QGtkStyle::unpolish
+72 QGtkStyle::polish
+76 QStyle::itemTextRect
+80 QGtkStyle::itemPixmapRect
+84 QGtkStyle::drawItemText
+88 QGtkStyle::drawItemPixmap
+92 QGtkStyle::standardPalette
+96 QGtkStyle::drawPrimitive
+100 QGtkStyle::drawControl
+104 QGtkStyle::subElementRect
+108 QGtkStyle::drawComplexControl
+112 QGtkStyle::hitTestComplexControl
+116 QGtkStyle::subControlRect
+120 QGtkStyle::pixelMetric
+124 QGtkStyle::sizeFromContents
+128 QGtkStyle::styleHint
+132 QGtkStyle::standardPixmap
+136 QGtkStyle::generatedIconPixmap
+
+Class QGtkStyle
+ size=12 align=4
+ base size=12 base align=4
+QGtkStyle (0xb2b2d280) 0
+ vptr=((& QGtkStyle::_ZTV9QGtkStyle) + 8u)
+ QCleanlooksStyle (0xb2b2d2c0) 0
+ primary-for QGtkStyle (0xb2b2d280)
+ QWindowsStyle (0xb2b2d300) 0
+ primary-for QCleanlooksStyle (0xb2b2d2c0)
+ QCommonStyle (0xb2b2d340) 0
+ primary-for QWindowsStyle (0xb2b2d300)
+ QStyle (0xb2b2d380) 0
+ primary-for QCommonStyle (0xb2b2d340)
+ QObject (0xb2ce7a50) 0
+ primary-for QStyle (0xb2b2d380)
+
+Vtable for QPlastiqueStyle
+QPlastiqueStyle::_ZTV15QPlastiqueStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QPlastiqueStyle)
+8 QPlastiqueStyle::metaObject
+12 QPlastiqueStyle::qt_metacast
+16 QPlastiqueStyle::qt_metacall
+20 QPlastiqueStyle::~QPlastiqueStyle
+24 QPlastiqueStyle::~QPlastiqueStyle
+28 QObject::event
+32 QPlastiqueStyle::eventFilter
+36 QPlastiqueStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QPlastiqueStyle::polish
+60 QPlastiqueStyle::unpolish
+64 QPlastiqueStyle::polish
+68 QPlastiqueStyle::unpolish
+72 QPlastiqueStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QPlastiqueStyle::standardPalette
+96 QPlastiqueStyle::drawPrimitive
+100 QPlastiqueStyle::drawControl
+104 QPlastiqueStyle::subElementRect
+108 QPlastiqueStyle::drawComplexControl
+112 QPlastiqueStyle::hitTestComplexControl
+116 QPlastiqueStyle::subControlRect
+120 QPlastiqueStyle::pixelMetric
+124 QPlastiqueStyle::sizeFromContents
+128 QPlastiqueStyle::styleHint
+132 QPlastiqueStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QPlastiqueStyle
+ size=16 align=4
+ base size=16 base align=4
+QPlastiqueStyle (0xb2b2d640) 0
+ vptr=((& QPlastiqueStyle::_ZTV15QPlastiqueStyle) + 8u)
+ QWindowsStyle (0xb2b2d680) 0
+ primary-for QPlastiqueStyle (0xb2b2d640)
+ QCommonStyle (0xb2b2d6c0) 0
+ primary-for QWindowsStyle (0xb2b2d680)
+ QStyle (0xb2b2d700) 0
+ primary-for QCommonStyle (0xb2b2d6c0)
+ QObject (0xb2ce7c6c) 0
+ primary-for QStyle (0xb2b2d700)
+
+Vtable for QProxyStyle
+QProxyStyle::_ZTV11QProxyStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QProxyStyle)
+8 QProxyStyle::metaObject
+12 QProxyStyle::qt_metacast
+16 QProxyStyle::qt_metacall
+20 QProxyStyle::~QProxyStyle
+24 QProxyStyle::~QProxyStyle
+28 QProxyStyle::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QProxyStyle::polish
+60 QProxyStyle::unpolish
+64 QProxyStyle::polish
+68 QProxyStyle::unpolish
+72 QProxyStyle::polish
+76 QProxyStyle::itemTextRect
+80 QProxyStyle::itemPixmapRect
+84 QProxyStyle::drawItemText
+88 QProxyStyle::drawItemPixmap
+92 QProxyStyle::standardPalette
+96 QProxyStyle::drawPrimitive
+100 QProxyStyle::drawControl
+104 QProxyStyle::subElementRect
+108 QProxyStyle::drawComplexControl
+112 QProxyStyle::hitTestComplexControl
+116 QProxyStyle::subControlRect
+120 QProxyStyle::pixelMetric
+124 QProxyStyle::sizeFromContents
+128 QProxyStyle::styleHint
+132 QProxyStyle::standardPixmap
+136 QProxyStyle::generatedIconPixmap
+
+Class QProxyStyle
+ size=8 align=4
+ base size=8 base align=4
+QProxyStyle (0xb2b2d9c0) 0
+ vptr=((& QProxyStyle::_ZTV11QProxyStyle) + 8u)
+ QCommonStyle (0xb2b2da00) 0
+ primary-for QProxyStyle (0xb2b2d9c0)
+ QStyle (0xb2b2da40) 0
+ primary-for QCommonStyle (0xb2b2da00)
+ QObject (0xb2ce7e88) 0
+ primary-for QStyle (0xb2b2da40)
+
+Vtable for QS60Style
+QS60Style::_ZTV9QS60Style: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QS60Style)
+8 QS60Style::metaObject
+12 QS60Style::qt_metacast
+16 QS60Style::qt_metacall
+20 QS60Style::~QS60Style
+24 QS60Style::~QS60Style
+28 QS60Style::event
+32 QS60Style::eventFilter
+36 QS60Style::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QS60Style::polish
+60 QS60Style::unpolish
+64 QS60Style::polish
+68 QS60Style::unpolish
+72 QCommonStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QStyle::standardPalette
+96 QS60Style::drawPrimitive
+100 QS60Style::drawControl
+104 QS60Style::subElementRect
+108 QS60Style::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QS60Style::subControlRect
+120 QS60Style::pixelMetric
+124 QS60Style::sizeFromContents
+128 QS60Style::styleHint
+132 QCommonStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QS60Style
+ size=8 align=4
+ base size=8 base align=4
+QS60Style (0xb2b2dd00) 0
+ vptr=((& QS60Style::_ZTV9QS60Style) + 8u)
+ QCommonStyle (0xb2b2dd40) 0
+ primary-for QS60Style (0xb2b2dd00)
+ QStyle (0xb2b2dd80) 0
+ primary-for QCommonStyle (0xb2b2dd40)
+ QObject (0xb2b860b4) 0
+ primary-for QStyle (0xb2b2dd80)
+
+Class QStyleFactory
+ size=1 align=1
+ base size=0 base align=1
+QStyleFactory (0xb2b862d0) 0 empty
+
+Vtable for QStyleFactoryInterface
+QStyleFactoryInterface::_ZTV22QStyleFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QStyleFactoryInterface)
+8 QStyleFactoryInterface::~QStyleFactoryInterface
+12 QStyleFactoryInterface::~QStyleFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QStyleFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QStyleFactoryInterface (0xb2b9b080) 0 nearly-empty
+ vptr=((& QStyleFactoryInterface::_ZTV22QStyleFactoryInterface) + 8u)
+ QFactoryInterface (0xb2b8630c) 0 nearly-empty
+ primary-for QStyleFactoryInterface (0xb2b9b080)
+
+Vtable for QStylePlugin
+QStylePlugin::_ZTV12QStylePlugin: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QStylePlugin)
+8 QStylePlugin::metaObject
+12 QStylePlugin::qt_metacast
+16 QStylePlugin::qt_metacall
+20 QStylePlugin::~QStylePlugin
+24 QStylePlugin::~QStylePlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 (int (*)(...))-0x000000008
+68 (int (*)(...))(& _ZTI12QStylePlugin)
+72 QStylePlugin::_ZThn8_N12QStylePluginD1Ev
+76 QStylePlugin::_ZThn8_N12QStylePluginD0Ev
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+
+Class QStylePlugin
+ size=12 align=4
+ base size=12 base align=4
+QStylePlugin (0xb2b9c6e0) 0
+ vptr=((& QStylePlugin::_ZTV12QStylePlugin) + 8u)
+ QObject (0xb2b86618) 0
+ primary-for QStylePlugin (0xb2b9c6e0)
+ QStyleFactoryInterface (0xb2b9b340) 8 nearly-empty
+ vptr=((& QStylePlugin::_ZTV12QStylePlugin) + 72u)
+ QFactoryInterface (0xb2b86654) 8 nearly-empty
+ primary-for QStyleFactoryInterface (0xb2b9b340)
+
+Vtable for QWindowsCEStyle
+QWindowsCEStyle::_ZTV15QWindowsCEStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QWindowsCEStyle)
+8 QWindowsCEStyle::metaObject
+12 QWindowsCEStyle::qt_metacast
+16 QWindowsCEStyle::qt_metacall
+20 QWindowsCEStyle::~QWindowsCEStyle
+24 QWindowsCEStyle::~QWindowsCEStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWindowsCEStyle::polish
+60 QWindowsStyle::unpolish
+64 QWindowsCEStyle::polish
+68 QWindowsStyle::unpolish
+72 QWindowsCEStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QWindowsCEStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QWindowsCEStyle::standardPalette
+96 QWindowsCEStyle::drawPrimitive
+100 QWindowsCEStyle::drawControl
+104 QWindowsCEStyle::subElementRect
+108 QWindowsCEStyle::drawComplexControl
+112 QWindowsCEStyle::hitTestComplexControl
+116 QWindowsCEStyle::subControlRect
+120 QWindowsCEStyle::pixelMetric
+124 QWindowsCEStyle::sizeFromContents
+128 QWindowsCEStyle::styleHint
+132 QWindowsCEStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QWindowsCEStyle
+ size=12 align=4
+ base size=12 base align=4
+QWindowsCEStyle (0xb2b9b580) 0
+ vptr=((& QWindowsCEStyle::_ZTV15QWindowsCEStyle) + 8u)
+ QWindowsStyle (0xb2b9b5c0) 0
+ primary-for QWindowsCEStyle (0xb2b9b580)
+ QCommonStyle (0xb2b9b600) 0
+ primary-for QWindowsStyle (0xb2b9b5c0)
+ QStyle (0xb2b9b640) 0
+ primary-for QCommonStyle (0xb2b9b600)
+ QObject (0xb2b86780) 0
+ primary-for QStyle (0xb2b9b640)
+
+Vtable for QWindowsMobileStyle
+QWindowsMobileStyle::_ZTV19QWindowsMobileStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QWindowsMobileStyle)
+8 QWindowsMobileStyle::metaObject
+12 QWindowsMobileStyle::qt_metacast
+16 QWindowsMobileStyle::qt_metacall
+20 QWindowsMobileStyle::~QWindowsMobileStyle
+24 QWindowsMobileStyle::~QWindowsMobileStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWindowsMobileStyle::polish
+60 QWindowsMobileStyle::unpolish
+64 QWindowsMobileStyle::polish
+68 QWindowsMobileStyle::unpolish
+72 QWindowsMobileStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QWindowsMobileStyle::standardPalette
+96 QWindowsMobileStyle::drawPrimitive
+100 QWindowsMobileStyle::drawControl
+104 QWindowsMobileStyle::subElementRect
+108 QWindowsMobileStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QWindowsMobileStyle::subControlRect
+120 QWindowsMobileStyle::pixelMetric
+124 QWindowsMobileStyle::sizeFromContents
+128 QWindowsMobileStyle::styleHint
+132 QWindowsMobileStyle::standardPixmap
+136 QWindowsMobileStyle::generatedIconPixmap
+
+Class QWindowsMobileStyle
+ size=12 align=4
+ base size=12 base align=4
+QWindowsMobileStyle (0xb2b9b880) 0
+ vptr=((& QWindowsMobileStyle::_ZTV19QWindowsMobileStyle) + 8u)
+ QWindowsStyle (0xb2b9b8c0) 0
+ primary-for QWindowsMobileStyle (0xb2b9b880)
+ QCommonStyle (0xb2b9b900) 0
+ primary-for QWindowsStyle (0xb2b9b8c0)
+ QStyle (0xb2b9b940) 0
+ primary-for QCommonStyle (0xb2b9b900)
+ QObject (0xb2b868ac) 0
+ primary-for QStyle (0xb2b9b940)
+
+Vtable for QWindowsXPStyle
+QWindowsXPStyle::_ZTV15QWindowsXPStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QWindowsXPStyle)
+8 QWindowsXPStyle::metaObject
+12 QWindowsXPStyle::qt_metacast
+16 QWindowsXPStyle::qt_metacall
+20 QWindowsXPStyle::~QWindowsXPStyle
+24 QWindowsXPStyle::~QWindowsXPStyle
+28 QObject::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWindowsXPStyle::polish
+60 QWindowsXPStyle::unpolish
+64 QWindowsXPStyle::polish
+68 QWindowsXPStyle::unpolish
+72 QWindowsXPStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QWindowsXPStyle::standardPalette
+96 QWindowsXPStyle::drawPrimitive
+100 QWindowsXPStyle::drawControl
+104 QWindowsXPStyle::subElementRect
+108 QWindowsXPStyle::drawComplexControl
+112 QCommonStyle::hitTestComplexControl
+116 QWindowsXPStyle::subControlRect
+120 QWindowsXPStyle::pixelMetric
+124 QWindowsXPStyle::sizeFromContents
+128 QWindowsXPStyle::styleHint
+132 QWindowsXPStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QWindowsXPStyle
+ size=16 align=4
+ base size=16 base align=4
+QWindowsXPStyle (0xb2b9bc00) 0
+ vptr=((& QWindowsXPStyle::_ZTV15QWindowsXPStyle) + 8u)
+ QWindowsStyle (0xb2b9bc40) 0
+ primary-for QWindowsXPStyle (0xb2b9bc00)
+ QCommonStyle (0xb2b9bc80) 0
+ primary-for QWindowsStyle (0xb2b9bc40)
+ QStyle (0xb2b9bcc0) 0
+ primary-for QCommonStyle (0xb2b9bc80)
+ QObject (0xb2b86ac8) 0
+ primary-for QStyle (0xb2b9bcc0)
+
+Vtable for QWindowsVistaStyle
+QWindowsVistaStyle::_ZTV18QWindowsVistaStyle: 35u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QWindowsVistaStyle)
+8 QWindowsVistaStyle::metaObject
+12 QWindowsVistaStyle::qt_metacast
+16 QWindowsVistaStyle::qt_metacall
+20 QWindowsVistaStyle::~QWindowsVistaStyle
+24 QWindowsVistaStyle::~QWindowsVistaStyle
+28 QWindowsVistaStyle::event
+32 QWindowsStyle::eventFilter
+36 QWindowsStyle::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWindowsVistaStyle::polish
+60 QWindowsVistaStyle::unpolish
+64 QWindowsVistaStyle::polish
+68 QWindowsVistaStyle::unpolish
+72 QWindowsVistaStyle::polish
+76 QStyle::itemTextRect
+80 QStyle::itemPixmapRect
+84 QStyle::drawItemText
+88 QStyle::drawItemPixmap
+92 QWindowsVistaStyle::standardPalette
+96 QWindowsVistaStyle::drawPrimitive
+100 QWindowsVistaStyle::drawControl
+104 QWindowsVistaStyle::subElementRect
+108 QWindowsVistaStyle::drawComplexControl
+112 QWindowsVistaStyle::hitTestComplexControl
+116 QWindowsVistaStyle::subControlRect
+120 QWindowsVistaStyle::pixelMetric
+124 QWindowsVistaStyle::sizeFromContents
+128 QWindowsVistaStyle::styleHint
+132 QWindowsVistaStyle::standardPixmap
+136 QCommonStyle::generatedIconPixmap
+
+Class QWindowsVistaStyle
+ size=16 align=4
+ base size=16 base align=4
+QWindowsVistaStyle (0xb2b9bf80) 0
+ vptr=((& QWindowsVistaStyle::_ZTV18QWindowsVistaStyle) + 8u)
+ QWindowsXPStyle (0xb2b9bfc0) 0
+ primary-for QWindowsVistaStyle (0xb2b9bf80)
+ QWindowsStyle (0xb2bd9000) 0
+ primary-for QWindowsXPStyle (0xb2b9bfc0)
+ QCommonStyle (0xb2bd9040) 0
+ primary-for QWindowsStyle (0xb2bd9000)
+ QStyle (0xb2bd9080) 0
+ primary-for QCommonStyle (0xb2bd9040)
+ QObject (0xb2b86ce4) 0
+ primary-for QStyle (0xb2bd9080)
+
+Vtable for QKeyEventTransition
+QKeyEventTransition::_ZTV19QKeyEventTransition: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QKeyEventTransition)
+8 QKeyEventTransition::metaObject
+12 QKeyEventTransition::qt_metacast
+16 QKeyEventTransition::qt_metacall
+20 QKeyEventTransition::~QKeyEventTransition
+24 QKeyEventTransition::~QKeyEventTransition
+28 QEventTransition::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QKeyEventTransition::eventTest
+60 QKeyEventTransition::onTransition
+
+Class QKeyEventTransition
+ size=8 align=4
+ base size=8 base align=4
+QKeyEventTransition (0xb2bd9340) 0
+ vptr=((& QKeyEventTransition::_ZTV19QKeyEventTransition) + 8u)
+ QEventTransition (0xb2bd9380) 0
+ primary-for QKeyEventTransition (0xb2bd9340)
+ QAbstractTransition (0xb2bd93c0) 0
+ primary-for QEventTransition (0xb2bd9380)
+ QObject (0xb2b86f00) 0
+ primary-for QAbstractTransition (0xb2bd93c0)
+
+Vtable for QMouseEventTransition
+QMouseEventTransition::_ZTV21QMouseEventTransition: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QMouseEventTransition)
+8 QMouseEventTransition::metaObject
+12 QMouseEventTransition::qt_metacast
+16 QMouseEventTransition::qt_metacall
+20 QMouseEventTransition::~QMouseEventTransition
+24 QMouseEventTransition::~QMouseEventTransition
+28 QEventTransition::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QMouseEventTransition::eventTest
+60 QMouseEventTransition::onTransition
+
+Class QMouseEventTransition
+ size=8 align=4
+ base size=8 base align=4
+QMouseEventTransition (0xb2bd9680) 0
+ vptr=((& QMouseEventTransition::_ZTV21QMouseEventTransition) + 8u)
+ QEventTransition (0xb2bd96c0) 0
+ primary-for QMouseEventTransition (0xb2bd9680)
+ QAbstractTransition (0xb2bd9700) 0
+ primary-for QEventTransition (0xb2bd96c0)
+ QObject (0xb2bf512c) 0
+ primary-for QAbstractTransition (0xb2bd9700)
+
+Class QColormap
+ size=4 align=4
+ base size=4 base align=4
+QColormap (0xb2bf5348) 0
+
+Class QTileRules
+ size=8 align=4
+ base size=8 base align=4
+QTileRules (0xb2bf5384) 0
+
+Class QPainter::PixmapFragment
+ size=80 align=4
+ base size=80 base align=4
+QPainter::PixmapFragment (0xb2bf5708) 0
+
+Class QPainter
+ size=4 align=4
+ base size=4 base align=4
+QPainter (0xb2bf56cc) 0
+
+Class QTextItem
+ size=1 align=1
+ base size=0 base align=1
+QTextItem (0xb29384ec) 0 empty
+
+Vtable for QPaintEngine
+QPaintEngine::_ZTV12QPaintEngine: 24u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QPaintEngine)
+8 QPaintEngine::~QPaintEngine
+12 QPaintEngine::~QPaintEngine
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 QPaintEngine::drawRects
+32 QPaintEngine::drawRects
+36 QPaintEngine::drawLines
+40 QPaintEngine::drawLines
+44 QPaintEngine::drawEllipse
+48 QPaintEngine::drawEllipse
+52 QPaintEngine::drawPath
+56 QPaintEngine::drawPoints
+60 QPaintEngine::drawPoints
+64 QPaintEngine::drawPolygon
+68 QPaintEngine::drawPolygon
+72 __cxa_pure_virtual
+76 QPaintEngine::drawTextItem
+80 QPaintEngine::drawTiledPixmap
+84 QPaintEngine::drawImage
+88 QPaintEngine::coordinateOffset
+92 __cxa_pure_virtual
+
+Class QPaintEngine
+ size=20 align=4
+ base size=20 base align=4
+QPaintEngine (0xb29385a0) 0
+ vptr=((& QPaintEngine::_ZTV12QPaintEngine) + 8u)
+
+Class QPaintEngineState
+ size=4 align=4
+ base size=4 base align=4
+QPaintEngineState (0xb29388ac) 0
+
+Vtable for QPrintEngine
+QPrintEngine::_ZTV12QPrintEngine: 10u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QPrintEngine)
+8 QPrintEngine::~QPrintEngine
+12 QPrintEngine::~QPrintEngine
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+
+Class QPrintEngine
+ size=4 align=4
+ base size=4 base align=4
+QPrintEngine (0xb29ac1e0) 0 nearly-empty
+ vptr=((& QPrintEngine::_ZTV12QPrintEngine) + 8u)
+
+Class QPrinterInfo
+ size=4 align=4
+ base size=4 base align=4
+QPrinterInfo (0xb29ac3fc) 0
+
+Class QStylePainter
+ size=12 align=4
+ base size=12 base align=4
+QStylePainter (0xb29856c0) 0
+ QPainter (0xb29ac564) 0
+
+Class QVector3D
+ size=12 align=4
+ base size=12 base align=4
+QVector3D (0xb2a09d5c) 0
+
+Class QVector4D
+ size=16 align=4
+ base size=16 base align=4
+QVector4D (0xb28a6834) 0
+
+Class QQuaternion
+ size=32 align=4
+ base size=32 base align=4
+QQuaternion (0xb28e0ce4) 0
+
+Class QMatrix4x4
+ size=132 align=4
+ base size=132 base align=4
+QMatrix4x4 (0xb2728b7c) 0
+
+Class QVector2D
+ size=8 align=4
+ base size=8 base align=4
+QVector2D (0xb264399c) 0
+
+Vtable for QApplication
+QApplication::_ZTV12QApplication: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QApplication)
+8 QApplication::metaObject
+12 QApplication::qt_metacast
+16 QApplication::qt_metacall
+20 QApplication::~QApplication
+24 QApplication::~QApplication
+28 QApplication::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QApplication::notify
+60 QApplication::compressEvent
+64 QApplication::x11EventFilter
+68 QApplication::x11ClientMessage
+72 QApplication::commitData
+76 QApplication::saveState
+
+Class QApplication
+ size=8 align=4
+ base size=8 base align=4
+QApplication (0xb2686d00) 0
+ vptr=((& QApplication::_ZTV12QApplication) + 8u)
+ QCoreApplication (0xb2686d40) 0
+ primary-for QApplication (0xb2686d00)
+ QObject (0xb26a20b4) 0
+ primary-for QCoreApplication (0xb2686d40)
+
+Vtable for QLayoutItem
+QLayoutItem::_ZTV11QLayoutItem: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QLayoutItem)
+8 QLayoutItem::~QLayoutItem
+12 QLayoutItem::~QLayoutItem
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 QLayoutItem::hasHeightForWidth
+48 QLayoutItem::heightForWidth
+52 QLayoutItem::minimumHeightForWidth
+56 QLayoutItem::invalidate
+60 QLayoutItem::widget
+64 QLayoutItem::layout
+68 QLayoutItem::spacerItem
+
+Class QLayoutItem
+ size=8 align=4
+ base size=8 base align=4
+QLayoutItem (0xb26a2744) 0
+ vptr=((& QLayoutItem::_ZTV11QLayoutItem) + 8u)
+
+Vtable for QSpacerItem
+QSpacerItem::_ZTV11QSpacerItem: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QSpacerItem)
+8 QSpacerItem::~QSpacerItem
+12 QSpacerItem::~QSpacerItem
+16 QSpacerItem::sizeHint
+20 QSpacerItem::minimumSize
+24 QSpacerItem::maximumSize
+28 QSpacerItem::expandingDirections
+32 QSpacerItem::setGeometry
+36 QSpacerItem::geometry
+40 QSpacerItem::isEmpty
+44 QLayoutItem::hasHeightForWidth
+48 QLayoutItem::heightForWidth
+52 QLayoutItem::minimumHeightForWidth
+56 QLayoutItem::invalidate
+60 QLayoutItem::widget
+64 QLayoutItem::layout
+68 QSpacerItem::spacerItem
+
+Class QSpacerItem
+ size=36 align=4
+ base size=36 base align=4
+QSpacerItem (0xb26c1900) 0
+ vptr=((& QSpacerItem::_ZTV11QSpacerItem) + 8u)
+ QLayoutItem (0xb26a2960) 0
+ primary-for QSpacerItem (0xb26c1900)
+
+Vtable for QWidgetItem
+QWidgetItem::_ZTV11QWidgetItem: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QWidgetItem)
+8 QWidgetItem::~QWidgetItem
+12 QWidgetItem::~QWidgetItem
+16 QWidgetItem::sizeHint
+20 QWidgetItem::minimumSize
+24 QWidgetItem::maximumSize
+28 QWidgetItem::expandingDirections
+32 QWidgetItem::setGeometry
+36 QWidgetItem::geometry
+40 QWidgetItem::isEmpty
+44 QWidgetItem::hasHeightForWidth
+48 QWidgetItem::heightForWidth
+52 QLayoutItem::minimumHeightForWidth
+56 QLayoutItem::invalidate
+60 QWidgetItem::widget
+64 QLayoutItem::layout
+68 QLayoutItem::spacerItem
+
+Class QWidgetItem
+ size=12 align=4
+ base size=12 base align=4
+QWidgetItem (0xb26c1a40) 0
+ vptr=((& QWidgetItem::_ZTV11QWidgetItem) + 8u)
+ QLayoutItem (0xb26a2e88) 0
+ primary-for QWidgetItem (0xb26c1a40)
+
+Vtable for QWidgetItemV2
+QWidgetItemV2::_ZTV13QWidgetItemV2: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QWidgetItemV2)
+8 QWidgetItemV2::~QWidgetItemV2
+12 QWidgetItemV2::~QWidgetItemV2
+16 QWidgetItemV2::sizeHint
+20 QWidgetItemV2::minimumSize
+24 QWidgetItemV2::maximumSize
+28 QWidgetItem::expandingDirections
+32 QWidgetItem::setGeometry
+36 QWidgetItem::geometry
+40 QWidgetItem::isEmpty
+44 QWidgetItem::hasHeightForWidth
+48 QWidgetItemV2::heightForWidth
+52 QLayoutItem::minimumHeightForWidth
+56 QLayoutItem::invalidate
+60 QWidgetItem::widget
+64 QLayoutItem::layout
+68 QLayoutItem::spacerItem
+
+Class QWidgetItemV2
+ size=68 align=4
+ base size=68 base align=4
+QWidgetItemV2 (0xb26c1b80) 0
+ vptr=((& QWidgetItemV2::_ZTV13QWidgetItemV2) + 8u)
+ QWidgetItem (0xb26c1bc0) 0
+ primary-for QWidgetItemV2 (0xb26c1b80)
+ QLayoutItem (0xb26e31a4) 0
+ primary-for QWidgetItem (0xb26c1bc0)
+
+Class QLayoutIterator
+ size=8 align=4
+ base size=8 base align=4
+QLayoutIterator (0xb26e3258) 0
+
+Vtable for QLayout
+QLayout::_ZTV7QLayout: 45u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QLayout)
+8 QLayout::metaObject
+12 QLayout::qt_metacast
+16 QLayout::qt_metacall
+20 QLayout::~QLayout
+24 QLayout::~QLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QLayout::invalidate
+60 QLayout::geometry
+64 __cxa_pure_virtual
+68 QLayout::expandingDirections
+72 QLayout::minimumSize
+76 QLayout::maximumSize
+80 QLayout::setGeometry
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 QLayout::indexOf
+96 __cxa_pure_virtual
+100 QLayout::isEmpty
+104 QLayout::layout
+108 (int (*)(...))-0x000000008
+112 (int (*)(...))(& _ZTI7QLayout)
+116 QLayout::_ZThn8_N7QLayoutD1Ev
+120 QLayout::_ZThn8_N7QLayoutD0Ev
+124 __cxa_pure_virtual
+128 QLayout::_ZThn8_NK7QLayout11minimumSizeEv
+132 QLayout::_ZThn8_NK7QLayout11maximumSizeEv
+136 QLayout::_ZThn8_NK7QLayout19expandingDirectionsEv
+140 QLayout::_ZThn8_N7QLayout11setGeometryERK5QRect
+144 QLayout::_ZThn8_NK7QLayout8geometryEv
+148 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+152 QLayoutItem::hasHeightForWidth
+156 QLayoutItem::heightForWidth
+160 QLayoutItem::minimumHeightForWidth
+164 QLayout::_ZThn8_N7QLayout10invalidateEv
+168 QLayoutItem::widget
+172 QLayout::_ZThn8_N7QLayout6layoutEv
+176 QLayoutItem::spacerItem
+
+Class QLayout
+ size=16 align=4
+ base size=16 base align=4
+QLayout (0xb26f00a0) 0
+ vptr=((& QLayout::_ZTV7QLayout) + 8u)
+ QObject (0xb26e3960) 0
+ primary-for QLayout (0xb26f00a0)
+ QLayoutItem (0xb26e399c) 8
+ vptr=((& QLayout::_ZTV7QLayout) + 116u)
+
+Vtable for QGridLayout
+QGridLayout::_ZTV11QGridLayout: 49u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QGridLayout)
+8 QGridLayout::metaObject
+12 QGridLayout::qt_metacast
+16 QGridLayout::qt_metacall
+20 QGridLayout::~QGridLayout
+24 QGridLayout::~QGridLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGridLayout::invalidate
+60 QLayout::geometry
+64 QGridLayout::addItem
+68 QGridLayout::expandingDirections
+72 QGridLayout::minimumSize
+76 QGridLayout::maximumSize
+80 QGridLayout::setGeometry
+84 QGridLayout::itemAt
+88 QGridLayout::takeAt
+92 QLayout::indexOf
+96 QGridLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QGridLayout::sizeHint
+112 QGridLayout::hasHeightForWidth
+116 QGridLayout::heightForWidth
+120 QGridLayout::minimumHeightForWidth
+124 (int (*)(...))-0x000000008
+128 (int (*)(...))(& _ZTI11QGridLayout)
+132 QGridLayout::_ZThn8_N11QGridLayoutD1Ev
+136 QGridLayout::_ZThn8_N11QGridLayoutD0Ev
+140 QGridLayout::_ZThn8_NK11QGridLayout8sizeHintEv
+144 QGridLayout::_ZThn8_NK11QGridLayout11minimumSizeEv
+148 QGridLayout::_ZThn8_NK11QGridLayout11maximumSizeEv
+152 QGridLayout::_ZThn8_NK11QGridLayout19expandingDirectionsEv
+156 QGridLayout::_ZThn8_N11QGridLayout11setGeometryERK5QRect
+160 QLayout::_ZThn8_NK7QLayout8geometryEv
+164 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+168 QGridLayout::_ZThn8_NK11QGridLayout17hasHeightForWidthEv
+172 QGridLayout::_ZThn8_NK11QGridLayout14heightForWidthEi
+176 QGridLayout::_ZThn8_NK11QGridLayout21minimumHeightForWidthEi
+180 QGridLayout::_ZThn8_N11QGridLayout10invalidateEv
+184 QLayoutItem::widget
+188 QLayout::_ZThn8_N7QLayout6layoutEv
+192 QLayoutItem::spacerItem
+
+Class QGridLayout
+ size=16 align=4
+ base size=16 base align=4
+QGridLayout (0xb2708640) 0
+ vptr=((& QGridLayout::_ZTV11QGridLayout) + 8u)
+ QLayout (0xb27170a0) 0
+ primary-for QGridLayout (0xb2708640)
+ QObject (0xb2713438) 0
+ primary-for QLayout (0xb27170a0)
+ QLayoutItem (0xb2713474) 8
+ vptr=((& QGridLayout::_ZTV11QGridLayout) + 132u)
+
+Vtable for QBoxLayout
+QBoxLayout::_ZTV10QBoxLayout: 49u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QBoxLayout)
+8 QBoxLayout::metaObject
+12 QBoxLayout::qt_metacast
+16 QBoxLayout::qt_metacall
+20 QBoxLayout::~QBoxLayout
+24 QBoxLayout::~QBoxLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QBoxLayout::invalidate
+60 QLayout::geometry
+64 QBoxLayout::addItem
+68 QBoxLayout::expandingDirections
+72 QBoxLayout::minimumSize
+76 QBoxLayout::maximumSize
+80 QBoxLayout::setGeometry
+84 QBoxLayout::itemAt
+88 QBoxLayout::takeAt
+92 QLayout::indexOf
+96 QBoxLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QBoxLayout::sizeHint
+112 QBoxLayout::hasHeightForWidth
+116 QBoxLayout::heightForWidth
+120 QBoxLayout::minimumHeightForWidth
+124 (int (*)(...))-0x000000008
+128 (int (*)(...))(& _ZTI10QBoxLayout)
+132 QBoxLayout::_ZThn8_N10QBoxLayoutD1Ev
+136 QBoxLayout::_ZThn8_N10QBoxLayoutD0Ev
+140 QBoxLayout::_ZThn8_NK10QBoxLayout8sizeHintEv
+144 QBoxLayout::_ZThn8_NK10QBoxLayout11minimumSizeEv
+148 QBoxLayout::_ZThn8_NK10QBoxLayout11maximumSizeEv
+152 QBoxLayout::_ZThn8_NK10QBoxLayout19expandingDirectionsEv
+156 QBoxLayout::_ZThn8_N10QBoxLayout11setGeometryERK5QRect
+160 QLayout::_ZThn8_NK7QLayout8geometryEv
+164 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+168 QBoxLayout::_ZThn8_NK10QBoxLayout17hasHeightForWidthEv
+172 QBoxLayout::_ZThn8_NK10QBoxLayout14heightForWidthEi
+176 QBoxLayout::_ZThn8_NK10QBoxLayout21minimumHeightForWidthEi
+180 QBoxLayout::_ZThn8_N10QBoxLayout10invalidateEv
+184 QLayoutItem::widget
+188 QLayout::_ZThn8_N7QLayout6layoutEv
+192 QLayoutItem::spacerItem
+
+Class QBoxLayout
+ size=16 align=4
+ base size=16 base align=4
+QBoxLayout (0xb253c040) 0
+ vptr=((& QBoxLayout::_ZTV10QBoxLayout) + 8u)
+ QLayout (0xb2536d70) 0
+ primary-for QBoxLayout (0xb253c040)
+ QObject (0xb2713bf4) 0
+ primary-for QLayout (0xb2536d70)
+ QLayoutItem (0xb2713c30) 8
+ vptr=((& QBoxLayout::_ZTV10QBoxLayout) + 132u)
+
+Vtable for QHBoxLayout
+QHBoxLayout::_ZTV11QHBoxLayout: 49u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QHBoxLayout)
+8 QHBoxLayout::metaObject
+12 QHBoxLayout::qt_metacast
+16 QHBoxLayout::qt_metacall
+20 QHBoxLayout::~QHBoxLayout
+24 QHBoxLayout::~QHBoxLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QBoxLayout::invalidate
+60 QLayout::geometry
+64 QBoxLayout::addItem
+68 QBoxLayout::expandingDirections
+72 QBoxLayout::minimumSize
+76 QBoxLayout::maximumSize
+80 QBoxLayout::setGeometry
+84 QBoxLayout::itemAt
+88 QBoxLayout::takeAt
+92 QLayout::indexOf
+96 QBoxLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QBoxLayout::sizeHint
+112 QBoxLayout::hasHeightForWidth
+116 QBoxLayout::heightForWidth
+120 QBoxLayout::minimumHeightForWidth
+124 (int (*)(...))-0x000000008
+128 (int (*)(...))(& _ZTI11QHBoxLayout)
+132 QHBoxLayout::_ZThn8_N11QHBoxLayoutD1Ev
+136 QHBoxLayout::_ZThn8_N11QHBoxLayoutD0Ev
+140 QBoxLayout::_ZThn8_NK10QBoxLayout8sizeHintEv
+144 QBoxLayout::_ZThn8_NK10QBoxLayout11minimumSizeEv
+148 QBoxLayout::_ZThn8_NK10QBoxLayout11maximumSizeEv
+152 QBoxLayout::_ZThn8_NK10QBoxLayout19expandingDirectionsEv
+156 QBoxLayout::_ZThn8_N10QBoxLayout11setGeometryERK5QRect
+160 QLayout::_ZThn8_NK7QLayout8geometryEv
+164 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+168 QBoxLayout::_ZThn8_NK10QBoxLayout17hasHeightForWidthEv
+172 QBoxLayout::_ZThn8_NK10QBoxLayout14heightForWidthEi
+176 QBoxLayout::_ZThn8_NK10QBoxLayout21minimumHeightForWidthEi
+180 QBoxLayout::_ZThn8_N10QBoxLayout10invalidateEv
+184 QLayoutItem::widget
+188 QLayout::_ZThn8_N7QLayout6layoutEv
+192 QLayoutItem::spacerItem
+
+Class QHBoxLayout
+ size=16 align=4
+ base size=16 base align=4
+QHBoxLayout (0xb253c380) 0
+ vptr=((& QHBoxLayout::_ZTV11QHBoxLayout) + 8u)
+ QBoxLayout (0xb253c3c0) 0
+ primary-for QHBoxLayout (0xb253c380)
+ QLayout (0xb254ca50) 0
+ primary-for QBoxLayout (0xb253c3c0)
+ QObject (0xb2713f78) 0
+ primary-for QLayout (0xb254ca50)
+ QLayoutItem (0xb2713fb4) 8
+ vptr=((& QHBoxLayout::_ZTV11QHBoxLayout) + 132u)
+
+Vtable for QVBoxLayout
+QVBoxLayout::_ZTV11QVBoxLayout: 49u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QVBoxLayout)
+8 QVBoxLayout::metaObject
+12 QVBoxLayout::qt_metacast
+16 QVBoxLayout::qt_metacall
+20 QVBoxLayout::~QVBoxLayout
+24 QVBoxLayout::~QVBoxLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QBoxLayout::invalidate
+60 QLayout::geometry
+64 QBoxLayout::addItem
+68 QBoxLayout::expandingDirections
+72 QBoxLayout::minimumSize
+76 QBoxLayout::maximumSize
+80 QBoxLayout::setGeometry
+84 QBoxLayout::itemAt
+88 QBoxLayout::takeAt
+92 QLayout::indexOf
+96 QBoxLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QBoxLayout::sizeHint
+112 QBoxLayout::hasHeightForWidth
+116 QBoxLayout::heightForWidth
+120 QBoxLayout::minimumHeightForWidth
+124 (int (*)(...))-0x000000008
+128 (int (*)(...))(& _ZTI11QVBoxLayout)
+132 QVBoxLayout::_ZThn8_N11QVBoxLayoutD1Ev
+136 QVBoxLayout::_ZThn8_N11QVBoxLayoutD0Ev
+140 QBoxLayout::_ZThn8_NK10QBoxLayout8sizeHintEv
+144 QBoxLayout::_ZThn8_NK10QBoxLayout11minimumSizeEv
+148 QBoxLayout::_ZThn8_NK10QBoxLayout11maximumSizeEv
+152 QBoxLayout::_ZThn8_NK10QBoxLayout19expandingDirectionsEv
+156 QBoxLayout::_ZThn8_N10QBoxLayout11setGeometryERK5QRect
+160 QLayout::_ZThn8_NK7QLayout8geometryEv
+164 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+168 QBoxLayout::_ZThn8_NK10QBoxLayout17hasHeightForWidthEv
+172 QBoxLayout::_ZThn8_NK10QBoxLayout14heightForWidthEi
+176 QBoxLayout::_ZThn8_NK10QBoxLayout21minimumHeightForWidthEi
+180 QBoxLayout::_ZThn8_N10QBoxLayout10invalidateEv
+184 QLayoutItem::widget
+188 QLayout::_ZThn8_N7QLayout6layoutEv
+192 QLayoutItem::spacerItem
+
+Class QVBoxLayout
+ size=16 align=4
+ base size=16 base align=4
+QVBoxLayout (0xb253c600) 0
+ vptr=((& QVBoxLayout::_ZTV11QVBoxLayout) + 8u)
+ QBoxLayout (0xb253c640) 0
+ primary-for QVBoxLayout (0xb253c600)
+ QLayout (0xb255b8c0) 0
+ primary-for QBoxLayout (0xb253c640)
+ QObject (0xb25610f0) 0
+ primary-for QLayout (0xb255b8c0)
+ QLayoutItem (0xb256112c) 8
+ vptr=((& QVBoxLayout::_ZTV11QVBoxLayout) + 132u)
+
+Vtable for QClipboard
+QClipboard::_ZTV10QClipboard: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QClipboard)
+8 QClipboard::metaObject
+12 QClipboard::qt_metacast
+16 QClipboard::qt_metacall
+20 QClipboard::~QClipboard
+24 QClipboard::~QClipboard
+28 QClipboard::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QClipboard::connectNotify
+52 QObject::disconnectNotify
+
+Class QClipboard
+ size=8 align=4
+ base size=8 base align=4
+QClipboard (0xb253c880) 0
+ vptr=((& QClipboard::_ZTV10QClipboard) + 8u)
+ QObject (0xb2561258) 0
+ primary-for QClipboard (0xb253c880)
+
+Vtable for QDesktopWidget
+QDesktopWidget::_ZTV14QDesktopWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QDesktopWidget)
+8 QDesktopWidget::metaObject
+12 QDesktopWidget::qt_metacast
+16 QDesktopWidget::qt_metacall
+20 QDesktopWidget::~QDesktopWidget
+24 QDesktopWidget::~QDesktopWidget
+28 QWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDesktopWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI14QDesktopWidget)
+232 QDesktopWidget::_ZThn8_N14QDesktopWidgetD1Ev
+236 QDesktopWidget::_ZThn8_N14QDesktopWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QDesktopWidget
+ size=20 align=4
+ base size=20 base align=4
+QDesktopWidget (0xb253cb40) 0
+ vptr=((& QDesktopWidget::_ZTV14QDesktopWidget) + 8u)
+ QWidget (0xb2579be0) 0
+ primary-for QDesktopWidget (0xb253cb40)
+ QObject (0xb2561474) 0
+ primary-for QWidget (0xb2579be0)
+ QPaintDevice (0xb25614b0) 8
+ vptr=((& QDesktopWidget::_ZTV14QDesktopWidget) + 232u)
+
+Vtable for QFormLayout
+QFormLayout::_ZTV11QFormLayout: 48u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFormLayout)
+8 QFormLayout::metaObject
+12 QFormLayout::qt_metacast
+16 QFormLayout::qt_metacall
+20 QFormLayout::~QFormLayout
+24 QFormLayout::~QFormLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QFormLayout::invalidate
+60 QLayout::geometry
+64 QFormLayout::addItem
+68 QFormLayout::expandingDirections
+72 QFormLayout::minimumSize
+76 QLayout::maximumSize
+80 QFormLayout::setGeometry
+84 QFormLayout::itemAt
+88 QFormLayout::takeAt
+92 QLayout::indexOf
+96 QFormLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QFormLayout::sizeHint
+112 QFormLayout::hasHeightForWidth
+116 QFormLayout::heightForWidth
+120 (int (*)(...))-0x000000008
+124 (int (*)(...))(& _ZTI11QFormLayout)
+128 QFormLayout::_ZThn8_N11QFormLayoutD1Ev
+132 QFormLayout::_ZThn8_N11QFormLayoutD0Ev
+136 QFormLayout::_ZThn8_NK11QFormLayout8sizeHintEv
+140 QFormLayout::_ZThn8_NK11QFormLayout11minimumSizeEv
+144 QLayout::_ZThn8_NK7QLayout11maximumSizeEv
+148 QFormLayout::_ZThn8_NK11QFormLayout19expandingDirectionsEv
+152 QFormLayout::_ZThn8_N11QFormLayout11setGeometryERK5QRect
+156 QLayout::_ZThn8_NK7QLayout8geometryEv
+160 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+164 QFormLayout::_ZThn8_NK11QFormLayout17hasHeightForWidthEv
+168 QFormLayout::_ZThn8_NK11QFormLayout14heightForWidthEi
+172 QLayoutItem::minimumHeightForWidth
+176 QFormLayout::_ZThn8_N11QFormLayout10invalidateEv
+180 QLayoutItem::widget
+184 QLayout::_ZThn8_N7QLayout6layoutEv
+188 QLayoutItem::spacerItem
+
+Class QFormLayout
+ size=16 align=4
+ base size=16 base align=4
+QFormLayout (0xb253cec0) 0
+ vptr=((& QFormLayout::_ZTV11QFormLayout) + 8u)
+ QLayout (0xb2588be0) 0
+ primary-for QFormLayout (0xb253cec0)
+ QObject (0xb2561708) 0
+ primary-for QLayout (0xb2588be0)
+ QLayoutItem (0xb2561744) 8
+ vptr=((& QFormLayout::_ZTV11QFormLayout) + 128u)
+
+Vtable for QGesture
+QGesture::_ZTV8QGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QGesture)
+8 QGesture::metaObject
+12 QGesture::qt_metacast
+16 QGesture::qt_metacall
+20 QGesture::~QGesture
+24 QGesture::~QGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QGesture
+ size=8 align=4
+ base size=8 base align=4
+QGesture (0xb25a42c0) 0
+ vptr=((& QGesture::_ZTV8QGesture) + 8u)
+ QObject (0xb2561a14) 0
+ primary-for QGesture (0xb25a42c0)
+
+Vtable for QPanGesture
+QPanGesture::_ZTV11QPanGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QPanGesture)
+8 QPanGesture::metaObject
+12 QPanGesture::qt_metacast
+16 QPanGesture::qt_metacall
+20 QPanGesture::~QPanGesture
+24 QPanGesture::~QPanGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QPanGesture
+ size=8 align=4
+ base size=8 base align=4
+QPanGesture (0xb25a4580) 0
+ vptr=((& QPanGesture::_ZTV11QPanGesture) + 8u)
+ QGesture (0xb25a45c0) 0
+ primary-for QPanGesture (0xb25a4580)
+ QObject (0xb2561c30) 0
+ primary-for QGesture (0xb25a45c0)
+
+Vtable for QPinchGesture
+QPinchGesture::_ZTV13QPinchGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QPinchGesture)
+8 QPinchGesture::metaObject
+12 QPinchGesture::qt_metacast
+16 QPinchGesture::qt_metacall
+20 QPinchGesture::~QPinchGesture
+24 QPinchGesture::~QPinchGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QPinchGesture
+ size=8 align=4
+ base size=8 base align=4
+QPinchGesture (0xb25a4880) 0
+ vptr=((& QPinchGesture::_ZTV13QPinchGesture) + 8u)
+ QGesture (0xb25a48c0) 0
+ primary-for QPinchGesture (0xb25a4880)
+ QObject (0xb2561e4c) 0
+ primary-for QGesture (0xb25a48c0)
+
+Vtable for QSwipeGesture
+QSwipeGesture::_ZTV13QSwipeGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QSwipeGesture)
+8 QSwipeGesture::metaObject
+12 QSwipeGesture::qt_metacast
+16 QSwipeGesture::qt_metacall
+20 QSwipeGesture::~QSwipeGesture
+24 QSwipeGesture::~QSwipeGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSwipeGesture
+ size=8 align=4
+ base size=8 base align=4
+QSwipeGesture (0xb25a4cc0) 0
+ vptr=((& QSwipeGesture::_ZTV13QSwipeGesture) + 8u)
+ QGesture (0xb25a4d00) 0
+ primary-for QSwipeGesture (0xb25a4cc0)
+ QObject (0xb25d612c) 0
+ primary-for QGesture (0xb25a4d00)
+
+Vtable for QTapGesture
+QTapGesture::_ZTV11QTapGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTapGesture)
+8 QTapGesture::metaObject
+12 QTapGesture::qt_metacast
+16 QTapGesture::qt_metacall
+20 QTapGesture::~QTapGesture
+24 QTapGesture::~QTapGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTapGesture
+ size=8 align=4
+ base size=8 base align=4
+QTapGesture (0xb25a4fc0) 0
+ vptr=((& QTapGesture::_ZTV11QTapGesture) + 8u)
+ QGesture (0xb25e6000) 0
+ primary-for QTapGesture (0xb25a4fc0)
+ QObject (0xb25d6348) 0
+ primary-for QGesture (0xb25e6000)
+
+Vtable for QTapAndHoldGesture
+QTapAndHoldGesture::_ZTV18QTapAndHoldGesture: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QTapAndHoldGesture)
+8 QTapAndHoldGesture::metaObject
+12 QTapAndHoldGesture::qt_metacast
+16 QTapAndHoldGesture::qt_metacall
+20 QTapAndHoldGesture::~QTapAndHoldGesture
+24 QTapAndHoldGesture::~QTapAndHoldGesture
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QTapAndHoldGesture
+ size=8 align=4
+ base size=8 base align=4
+QTapAndHoldGesture (0xb25e62c0) 0
+ vptr=((& QTapAndHoldGesture::_ZTV18QTapAndHoldGesture) + 8u)
+ QGesture (0xb25e6300) 0
+ primary-for QTapAndHoldGesture (0xb25e62c0)
+ QObject (0xb25d6564) 0
+ primary-for QGesture (0xb25e6300)
+
+Vtable for QGestureRecognizer
+QGestureRecognizer::_ZTV18QGestureRecognizer: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QGestureRecognizer)
+8 QGestureRecognizer::~QGestureRecognizer
+12 QGestureRecognizer::~QGestureRecognizer
+16 QGestureRecognizer::create
+20 __cxa_pure_virtual
+24 QGestureRecognizer::reset
+
+Class QGestureRecognizer
+ size=4 align=4
+ base size=4 base align=4
+QGestureRecognizer (0xb25d6834) 0 nearly-empty
+ vptr=((& QGestureRecognizer::_ZTV18QGestureRecognizer) + 8u)
+
+Vtable for QSessionManager
+QSessionManager::_ZTV15QSessionManager: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QSessionManager)
+8 QSessionManager::metaObject
+12 QSessionManager::qt_metacast
+16 QSessionManager::qt_metacall
+20 QSessionManager::~QSessionManager
+24 QSessionManager::~QSessionManager
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSessionManager
+ size=8 align=4
+ base size=8 base align=4
+QSessionManager (0xb25e68c0) 0
+ vptr=((& QSessionManager::_ZTV15QSessionManager) + 8u)
+ QObject (0xb25d6960) 0
+ primary-for QSessionManager (0xb25e68c0)
+
+Vtable for QShortcut
+QShortcut::_ZTV9QShortcut: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QShortcut)
+8 QShortcut::metaObject
+12 QShortcut::qt_metacast
+16 QShortcut::qt_metacall
+20 QShortcut::~QShortcut
+24 QShortcut::~QShortcut
+28 QShortcut::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QShortcut
+ size=8 align=4
+ base size=8 base align=4
+QShortcut (0xb25e6b80) 0
+ vptr=((& QShortcut::_ZTV9QShortcut) + 8u)
+ QObject (0xb25d6b7c) 0
+ primary-for QShortcut (0xb25e6b80)
+
+Vtable for QSound
+QSound::_ZTV6QSound: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QSound)
+8 QSound::metaObject
+12 QSound::qt_metacast
+16 QSound::qt_metacall
+20 QSound::~QSound
+24 QSound::~QSound
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QSound
+ size=8 align=4
+ base size=8 base align=4
+QSound (0xb25e6e80) 0
+ vptr=((& QSound::_ZTV6QSound) + 8u)
+ QObject (0xb25d6e10) 0
+ primary-for QSound (0xb25e6e80)
+
+Vtable for QStackedLayout
+QStackedLayout::_ZTV14QStackedLayout: 46u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QStackedLayout)
+8 QStackedLayout::metaObject
+12 QStackedLayout::qt_metacast
+16 QStackedLayout::qt_metacall
+20 QStackedLayout::~QStackedLayout
+24 QStackedLayout::~QStackedLayout
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QLayout::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QLayout::invalidate
+60 QLayout::geometry
+64 QStackedLayout::addItem
+68 QLayout::expandingDirections
+72 QStackedLayout::minimumSize
+76 QLayout::maximumSize
+80 QStackedLayout::setGeometry
+84 QStackedLayout::itemAt
+88 QStackedLayout::takeAt
+92 QLayout::indexOf
+96 QStackedLayout::count
+100 QLayout::isEmpty
+104 QLayout::layout
+108 QStackedLayout::sizeHint
+112 (int (*)(...))-0x000000008
+116 (int (*)(...))(& _ZTI14QStackedLayout)
+120 QStackedLayout::_ZThn8_N14QStackedLayoutD1Ev
+124 QStackedLayout::_ZThn8_N14QStackedLayoutD0Ev
+128 QStackedLayout::_ZThn8_NK14QStackedLayout8sizeHintEv
+132 QStackedLayout::_ZThn8_NK14QStackedLayout11minimumSizeEv
+136 QLayout::_ZThn8_NK7QLayout11maximumSizeEv
+140 QLayout::_ZThn8_NK7QLayout19expandingDirectionsEv
+144 QStackedLayout::_ZThn8_N14QStackedLayout11setGeometryERK5QRect
+148 QLayout::_ZThn8_NK7QLayout8geometryEv
+152 QLayout::_ZThn8_NK7QLayout7isEmptyEv
+156 QLayoutItem::hasHeightForWidth
+160 QLayoutItem::heightForWidth
+164 QLayoutItem::minimumHeightForWidth
+168 QLayout::_ZThn8_N7QLayout10invalidateEv
+172 QLayoutItem::widget
+176 QLayout::_ZThn8_N7QLayout6layoutEv
+180 QLayoutItem::spacerItem
+
+Class QStackedLayout
+ size=16 align=4
+ base size=16 base align=4
+QStackedLayout (0xb244c1c0) 0
+ vptr=((& QStackedLayout::_ZTV14QStackedLayout) + 8u)
+ QLayout (0xb24497d0) 0
+ primary-for QStackedLayout (0xb244c1c0)
+ QObject (0xb2450078) 0
+ primary-for QLayout (0xb24497d0)
+ QLayoutItem (0xb24500b4) 8
+ vptr=((& QStackedLayout::_ZTV14QStackedLayout) + 120u)
+
+Class QToolTip
+ size=1 align=1
+ base size=0 base align=1
+QToolTip (0xb24502d0) 0 empty
+
+Class QWhatsThis
+ size=1 align=1
+ base size=0 base align=1
+QWhatsThis (0xb245030c) 0 empty
+
+Vtable for QWidgetAction
+QWidgetAction::_ZTV13QWidgetAction: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QWidgetAction)
+8 QWidgetAction::metaObject
+12 QWidgetAction::qt_metacast
+16 QWidgetAction::qt_metacall
+20 QWidgetAction::~QWidgetAction
+24 QWidgetAction::~QWidgetAction
+28 QWidgetAction::event
+32 QWidgetAction::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidgetAction::createWidget
+60 QWidgetAction::deleteWidget
+
+Class QWidgetAction
+ size=8 align=4
+ base size=8 base align=4
+QWidgetAction (0xb244c600) 0
+ vptr=((& QWidgetAction::_ZTV13QWidgetAction) + 8u)
+ QAction (0xb244c640) 0
+ primary-for QWidgetAction (0xb244c600)
+ QObject (0xb2450348) 0
+ primary-for QAction (0xb244c640)
+
+Vtable for QAbstractProxyModel
+QAbstractProxyModel::_ZTV19QAbstractProxyModel: 47u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractProxyModel)
+8 QAbstractProxyModel::metaObject
+12 QAbstractProxyModel::qt_metacast
+16 QAbstractProxyModel::qt_metacall
+20 QAbstractProxyModel::~QAbstractProxyModel
+24 QAbstractProxyModel::~QAbstractProxyModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 QAbstractItemModel::hasChildren
+76 QAbstractProxyModel::data
+80 QAbstractProxyModel::setData
+84 QAbstractProxyModel::headerData
+88 QAbstractProxyModel::setHeaderData
+92 QAbstractProxyModel::itemData
+96 QAbstractItemModel::setItemData
+100 QAbstractItemModel::mimeTypes
+104 QAbstractItemModel::mimeData
+108 QAbstractItemModel::dropMimeData
+112 QAbstractItemModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QAbstractProxyModel::flags
+144 QAbstractItemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractProxyModel::submit
+164 QAbstractProxyModel::revert
+168 QAbstractProxyModel::setSourceModel
+172 __cxa_pure_virtual
+176 __cxa_pure_virtual
+180 QAbstractProxyModel::mapSelectionToSource
+184 QAbstractProxyModel::mapSelectionFromSource
+
+Class QAbstractProxyModel
+ size=8 align=4
+ base size=8 base align=4
+QAbstractProxyModel (0xb244c900) 0
+ vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 8u)
+ QAbstractItemModel (0xb244c940) 0
+ primary-for QAbstractProxyModel (0xb244c900)
+ QObject (0xb2450564) 0
+ primary-for QAbstractItemModel (0xb244c940)
+
+Vtable for QColumnView
+QColumnView::_ZTV11QColumnView: 104u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QColumnView)
+8 QColumnView::metaObject
+12 QColumnView::qt_metacast
+16 QColumnView::qt_metacall
+20 QColumnView::~QColumnView
+24 QColumnView::~QColumnView
+28 QAbstractItemView::event
+32 QObject::eventFilter
+36 QAbstractItemView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QColumnView::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QAbstractItemView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QAbstractItemView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QAbstractScrollArea::paintEvent
+128 QWidget::moveEvent
+132 QColumnView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QAbstractItemView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QAbstractItemView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QColumnView::scrollContentsBy
+232 QColumnView::setModel
+236 QColumnView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QColumnView::visualRect
+248 QColumnView::scrollTo
+252 QColumnView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QAbstractItemView::reset
+268 QColumnView::setRootIndex
+272 QAbstractItemView::doItemsLayout
+276 QColumnView::selectAll
+280 QAbstractItemView::dataChanged
+284 QColumnView::rowsInserted
+288 QAbstractItemView::rowsAboutToBeRemoved
+292 QAbstractItemView::selectionChanged
+296 QColumnView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QAbstractItemView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QColumnView::moveCursor
+344 QColumnView::horizontalOffset
+348 QColumnView::verticalOffset
+352 QColumnView::isIndexHidden
+356 QColumnView::setSelection
+360 QColumnView::visualRegionForSelection
+364 QAbstractItemView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QAbstractItemView::viewOptions
+384 QColumnView::createColumn
+388 (int (*)(...))-0x000000008
+392 (int (*)(...))(& _ZTI11QColumnView)
+396 QColumnView::_ZThn8_N11QColumnViewD1Ev
+400 QColumnView::_ZThn8_N11QColumnViewD0Ev
+404 QWidget::_ZThn8_NK7QWidget7devTypeEv
+408 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+412 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QColumnView
+ size=20 align=4
+ base size=20 base align=4
+QColumnView (0xb244cc00) 0
+ vptr=((& QColumnView::_ZTV11QColumnView) + 8u)
+ QAbstractItemView (0xb244cc40) 0
+ primary-for QColumnView (0xb244cc00)
+ QAbstractScrollArea (0xb244cc80) 0
+ primary-for QAbstractItemView (0xb244cc40)
+ QFrame (0xb244ccc0) 0
+ primary-for QAbstractScrollArea (0xb244cc80)
+ QWidget (0xb24820f0) 0
+ primary-for QFrame (0xb244ccc0)
+ QObject (0xb2450780) 0
+ primary-for QWidget (0xb24820f0)
+ QPaintDevice (0xb24507bc) 8
+ vptr=((& QColumnView::_ZTV11QColumnView) + 396u)
+
+Vtable for QDataWidgetMapper
+QDataWidgetMapper::_ZTV17QDataWidgetMapper: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QDataWidgetMapper)
+8 QDataWidgetMapper::metaObject
+12 QDataWidgetMapper::qt_metacast
+16 QDataWidgetMapper::qt_metacall
+20 QDataWidgetMapper::~QDataWidgetMapper
+24 QDataWidgetMapper::~QDataWidgetMapper
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QDataWidgetMapper::setCurrentIndex
+
+Class QDataWidgetMapper
+ size=8 align=4
+ base size=8 base align=4
+QDataWidgetMapper (0xb244cf80) 0
+ vptr=((& QDataWidgetMapper::_ZTV17QDataWidgetMapper) + 8u)
+ QObject (0xb24509d8) 0
+ primary-for QDataWidgetMapper (0xb244cf80)
+
+Vtable for QFileIconProvider
+QFileIconProvider::_ZTV17QFileIconProvider: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QFileIconProvider)
+8 QFileIconProvider::~QFileIconProvider
+12 QFileIconProvider::~QFileIconProvider
+16 QFileIconProvider::icon
+20 QFileIconProvider::icon
+24 QFileIconProvider::type
+
+Class QFileIconProvider
+ size=8 align=4
+ base size=8 base align=4
+QFileIconProvider (0xb2450bf4) 0
+ vptr=((& QFileIconProvider::_ZTV17QFileIconProvider) + 8u)
+
+Vtable for QDirModel
+QDirModel::_ZTV9QDirModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QDirModel)
+8 QDirModel::metaObject
+12 QDirModel::qt_metacast
+16 QDirModel::qt_metacall
+20 QDirModel::~QDirModel
+24 QDirModel::~QDirModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QDirModel::index
+60 QDirModel::parent
+64 QDirModel::rowCount
+68 QDirModel::columnCount
+72 QDirModel::hasChildren
+76 QDirModel::data
+80 QDirModel::setData
+84 QDirModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QDirModel::mimeTypes
+104 QDirModel::mimeData
+108 QDirModel::dropMimeData
+112 QDirModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QDirModel::flags
+144 QDirModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QDirModel
+ size=8 align=4
+ base size=8 base align=4
+QDirModel (0xb2497380) 0
+ vptr=((& QDirModel::_ZTV9QDirModel) + 8u)
+ QAbstractItemModel (0xb24973c0) 0
+ primary-for QDirModel (0xb2497380)
+ QObject (0xb2450d5c) 0
+ primary-for QAbstractItemModel (0xb24973c0)
+
+Vtable for QHeaderView
+QHeaderView::_ZTV11QHeaderView: 105u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QHeaderView)
+8 QHeaderView::metaObject
+12 QHeaderView::qt_metacast
+16 QHeaderView::qt_metacall
+20 QHeaderView::~QHeaderView
+24 QHeaderView::~QHeaderView
+28 QHeaderView::event
+32 QObject::eventFilter
+36 QAbstractItemView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QHeaderView::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QHeaderView::mousePressEvent
+84 QHeaderView::mouseReleaseEvent
+88 QHeaderView::mouseDoubleClickEvent
+92 QHeaderView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QHeaderView::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QAbstractItemView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QAbstractItemView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QHeaderView::viewportEvent
+228 QHeaderView::scrollContentsBy
+232 QHeaderView::setModel
+236 QAbstractItemView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QHeaderView::visualRect
+248 QHeaderView::scrollTo
+252 QHeaderView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QHeaderView::reset
+268 QAbstractItemView::setRootIndex
+272 QHeaderView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QHeaderView::dataChanged
+284 QHeaderView::rowsInserted
+288 QAbstractItemView::rowsAboutToBeRemoved
+292 QAbstractItemView::selectionChanged
+296 QHeaderView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QHeaderView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QHeaderView::moveCursor
+344 QHeaderView::horizontalOffset
+348 QHeaderView::verticalOffset
+352 QHeaderView::isIndexHidden
+356 QHeaderView::setSelection
+360 QHeaderView::visualRegionForSelection
+364 QAbstractItemView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QAbstractItemView::viewOptions
+384 QHeaderView::paintSection
+388 QHeaderView::sectionSizeFromContents
+392 (int (*)(...))-0x000000008
+396 (int (*)(...))(& _ZTI11QHeaderView)
+400 QHeaderView::_ZThn8_N11QHeaderViewD1Ev
+404 QHeaderView::_ZThn8_N11QHeaderViewD0Ev
+408 QWidget::_ZThn8_NK7QWidget7devTypeEv
+412 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+416 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QHeaderView
+ size=20 align=4
+ base size=20 base align=4
+QHeaderView (0xb2497680) 0
+ vptr=((& QHeaderView::_ZTV11QHeaderView) + 8u)
+ QAbstractItemView (0xb24976c0) 0
+ primary-for QHeaderView (0xb2497680)
+ QAbstractScrollArea (0xb2497700) 0
+ primary-for QAbstractItemView (0xb24976c0)
+ QFrame (0xb2497740) 0
+ primary-for QAbstractScrollArea (0xb2497700)
+ QWidget (0xb24c0960) 0
+ primary-for QFrame (0xb2497740)
+ QObject (0xb2450f78) 0
+ primary-for QWidget (0xb24c0960)
+ QPaintDevice (0xb2450fb4) 8
+ vptr=((& QHeaderView::_ZTV11QHeaderView) + 400u)
+
+Vtable for QItemDelegate
+QItemDelegate::_ZTV13QItemDelegate: 25u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QItemDelegate)
+8 QItemDelegate::metaObject
+12 QItemDelegate::qt_metacast
+16 QItemDelegate::qt_metacall
+20 QItemDelegate::~QItemDelegate
+24 QItemDelegate::~QItemDelegate
+28 QObject::event
+32 QItemDelegate::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QItemDelegate::paint
+60 QItemDelegate::sizeHint
+64 QItemDelegate::createEditor
+68 QItemDelegate::setEditorData
+72 QItemDelegate::setModelData
+76 QItemDelegate::updateEditorGeometry
+80 QItemDelegate::editorEvent
+84 QItemDelegate::drawDisplay
+88 QItemDelegate::drawDecoration
+92 QItemDelegate::drawFocus
+96 QItemDelegate::drawCheck
+
+Class QItemDelegate
+ size=8 align=4
+ base size=8 base align=4
+QItemDelegate (0xb2497b00) 0
+ vptr=((& QItemDelegate::_ZTV13QItemDelegate) + 8u)
+ QAbstractItemDelegate (0xb2497b40) 0
+ primary-for QItemDelegate (0xb2497b00)
+ QObject (0xb24e32d0) 0
+ primary-for QAbstractItemDelegate (0xb2497b40)
+
+Vtable for QItemEditorCreatorBase
+QItemEditorCreatorBase::_ZTV22QItemEditorCreatorBase: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QItemEditorCreatorBase)
+8 QItemEditorCreatorBase::~QItemEditorCreatorBase
+12 QItemEditorCreatorBase::~QItemEditorCreatorBase
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QItemEditorCreatorBase
+ size=4 align=4
+ base size=4 base align=4
+QItemEditorCreatorBase (0xb24e34ec) 0 nearly-empty
+ vptr=((& QItemEditorCreatorBase::_ZTV22QItemEditorCreatorBase) + 8u)
+
+Vtable for QItemEditorFactory
+QItemEditorFactory::_ZTV18QItemEditorFactory: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QItemEditorFactory)
+8 QItemEditorFactory::~QItemEditorFactory
+12 QItemEditorFactory::~QItemEditorFactory
+16 QItemEditorFactory::createEditor
+20 QItemEditorFactory::valuePropertyName
+
+Class QItemEditorFactory
+ size=8 align=4
+ base size=8 base align=4
+QItemEditorFactory (0xb24e3780) 0
+ vptr=((& QItemEditorFactory::_ZTV18QItemEditorFactory) + 8u)
+
+Vtable for QListWidgetItem
+QListWidgetItem::_ZTV15QListWidgetItem: 11u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QListWidgetItem)
+8 QListWidgetItem::~QListWidgetItem
+12 QListWidgetItem::~QListWidgetItem
+16 QListWidgetItem::clone
+20 QListWidgetItem::setBackgroundColor
+24 QListWidgetItem::data
+28 QListWidgetItem::setData
+32 QListWidgetItem::operator<
+36 QListWidgetItem::read
+40 QListWidgetItem::write
+
+Class QListWidgetItem
+ size=24 align=4
+ base size=24 base align=4
+QListWidgetItem (0xb24e3a50) 0
+ vptr=((& QListWidgetItem::_ZTV15QListWidgetItem) + 8u)
+
+Vtable for QListWidget
+QListWidget::_ZTV11QListWidget: 107u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QListWidget)
+8 QListWidget::metaObject
+12 QListWidget::qt_metacast
+16 QListWidget::qt_metacall
+20 QListWidget::~QListWidget
+24 QListWidget::~QListWidget
+28 QListWidget::event
+32 QObject::eventFilter
+36 QListView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QListView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QListView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QListView::paintEvent
+128 QWidget::moveEvent
+132 QListView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QListView::dragMoveEvent
+160 QListView::dragLeaveEvent
+164 QListWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QListView::scrollContentsBy
+232 QListWidget::setModel
+236 QAbstractItemView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QListView::visualRect
+248 QListView::scrollTo
+252 QListView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QAbstractItemView::sizeHintForColumn
+264 QListView::reset
+268 QListView::setRootIndex
+272 QListView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QListView::dataChanged
+284 QListView::rowsInserted
+288 QListView::rowsAboutToBeRemoved
+292 QListView::selectionChanged
+296 QListView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QListView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QAbstractItemView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QListView::moveCursor
+344 QListView::horizontalOffset
+348 QListView::verticalOffset
+352 QListView::isIndexHidden
+356 QListView::setSelection
+360 QListView::visualRegionForSelection
+364 QListView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QListView::startDrag
+380 QListView::viewOptions
+384 QListWidget::mimeTypes
+388 QListWidget::mimeData
+392 QListWidget::dropMimeData
+396 QListWidget::supportedDropActions
+400 (int (*)(...))-0x000000008
+404 (int (*)(...))(& _ZTI11QListWidget)
+408 QListWidget::_ZThn8_N11QListWidgetD1Ev
+412 QListWidget::_ZThn8_N11QListWidgetD0Ev
+416 QWidget::_ZThn8_NK7QWidget7devTypeEv
+420 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+424 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QListWidget
+ size=20 align=4
+ base size=20 base align=4
+QListWidget (0xb234f480) 0
+ vptr=((& QListWidget::_ZTV11QListWidget) + 8u)
+ QListView (0xb234f4c0) 0
+ primary-for QListWidget (0xb234f480)
+ QAbstractItemView (0xb234f500) 0
+ primary-for QListView (0xb234f4c0)
+ QAbstractScrollArea (0xb234f540) 0
+ primary-for QAbstractItemView (0xb234f500)
+ QFrame (0xb234f580) 0
+ primary-for QAbstractScrollArea (0xb234f540)
+ QWidget (0xb23563c0) 0
+ primary-for QFrame (0xb234f580)
+ QObject (0xb2341b40) 0
+ primary-for QWidget (0xb23563c0)
+ QPaintDevice (0xb2341b7c) 8
+ vptr=((& QListWidget::_ZTV11QListWidget) + 408u)
+
+Vtable for QProxyModel
+QProxyModel::_ZTV11QProxyModel: 43u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QProxyModel)
+8 QProxyModel::metaObject
+12 QProxyModel::qt_metacast
+16 QProxyModel::qt_metacall
+20 QProxyModel::~QProxyModel
+24 QProxyModel::~QProxyModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QProxyModel::index
+60 QProxyModel::parent
+64 QProxyModel::rowCount
+68 QProxyModel::columnCount
+72 QProxyModel::hasChildren
+76 QProxyModel::data
+80 QProxyModel::setData
+84 QProxyModel::headerData
+88 QProxyModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QProxyModel::mimeTypes
+104 QProxyModel::mimeData
+108 QProxyModel::dropMimeData
+112 QProxyModel::supportedDropActions
+116 QProxyModel::insertRows
+120 QProxyModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QProxyModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QProxyModel::flags
+144 QProxyModel::sort
+148 QAbstractItemModel::buddy
+152 QProxyModel::match
+156 QProxyModel::span
+160 QProxyModel::submit
+164 QProxyModel::revert
+168 QProxyModel::setModel
+
+Class QProxyModel
+ size=8 align=4
+ base size=8 base align=4
+QProxyModel (0xb234fbc0) 0
+ vptr=((& QProxyModel::_ZTV11QProxyModel) + 8u)
+ QAbstractItemModel (0xb234fc00) 0
+ primary-for QProxyModel (0xb234fbc0)
+ QObject (0xb23761a4) 0
+ primary-for QAbstractItemModel (0xb234fc00)
+
+Vtable for QSortFilterProxyModel
+QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 50u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QSortFilterProxyModel)
+8 QSortFilterProxyModel::metaObject
+12 QSortFilterProxyModel::qt_metacast
+16 QSortFilterProxyModel::qt_metacall
+20 QSortFilterProxyModel::~QSortFilterProxyModel
+24 QSortFilterProxyModel::~QSortFilterProxyModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QSortFilterProxyModel::index
+60 QSortFilterProxyModel::parent
+64 QSortFilterProxyModel::rowCount
+68 QSortFilterProxyModel::columnCount
+72 QSortFilterProxyModel::hasChildren
+76 QSortFilterProxyModel::data
+80 QSortFilterProxyModel::setData
+84 QSortFilterProxyModel::headerData
+88 QSortFilterProxyModel::setHeaderData
+92 QAbstractProxyModel::itemData
+96 QAbstractItemModel::setItemData
+100 QSortFilterProxyModel::mimeTypes
+104 QSortFilterProxyModel::mimeData
+108 QSortFilterProxyModel::dropMimeData
+112 QSortFilterProxyModel::supportedDropActions
+116 QSortFilterProxyModel::insertRows
+120 QSortFilterProxyModel::insertColumns
+124 QSortFilterProxyModel::removeRows
+128 QSortFilterProxyModel::removeColumns
+132 QSortFilterProxyModel::fetchMore
+136 QSortFilterProxyModel::canFetchMore
+140 QSortFilterProxyModel::flags
+144 QSortFilterProxyModel::sort
+148 QSortFilterProxyModel::buddy
+152 QSortFilterProxyModel::match
+156 QSortFilterProxyModel::span
+160 QAbstractProxyModel::submit
+164 QAbstractProxyModel::revert
+168 QSortFilterProxyModel::setSourceModel
+172 QSortFilterProxyModel::mapToSource
+176 QSortFilterProxyModel::mapFromSource
+180 QSortFilterProxyModel::mapSelectionToSource
+184 QSortFilterProxyModel::mapSelectionFromSource
+188 QSortFilterProxyModel::filterAcceptsRow
+192 QSortFilterProxyModel::filterAcceptsColumn
+196 QSortFilterProxyModel::lessThan
+
+Class QSortFilterProxyModel
+ size=8 align=4
+ base size=8 base align=4
+QSortFilterProxyModel (0xb234fec0) 0
+ vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 8u)
+ QAbstractProxyModel (0xb234ff00) 0
+ primary-for QSortFilterProxyModel (0xb234fec0)
+ QAbstractItemModel (0xb234ff40) 0
+ primary-for QAbstractProxyModel (0xb234ff00)
+ QObject (0xb23763c0) 0
+ primary-for QAbstractItemModel (0xb234ff40)
+
+Vtable for QStandardItem
+QStandardItem::_ZTV13QStandardItem: 11u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QStandardItem)
+8 QStandardItem::~QStandardItem
+12 QStandardItem::~QStandardItem
+16 QStandardItem::data
+20 QStandardItem::setData
+24 QStandardItem::clone
+28 QStandardItem::type
+32 QStandardItem::read
+36 QStandardItem::write
+40 QStandardItem::operator<
+
+Class QStandardItem
+ size=8 align=4
+ base size=8 base align=4
+QStandardItem (0xb23765dc) 0
+ vptr=((& QStandardItem::_ZTV13QStandardItem) + 8u)
+
+Vtable for QStandardItemModel
+QStandardItemModel::_ZTV18QStandardItemModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QStandardItemModel)
+8 QStandardItemModel::metaObject
+12 QStandardItemModel::qt_metacast
+16 QStandardItemModel::qt_metacall
+20 QStandardItemModel::~QStandardItemModel
+24 QStandardItemModel::~QStandardItemModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QStandardItemModel::index
+60 QStandardItemModel::parent
+64 QStandardItemModel::rowCount
+68 QStandardItemModel::columnCount
+72 QStandardItemModel::hasChildren
+76 QStandardItemModel::data
+80 QStandardItemModel::setData
+84 QStandardItemModel::headerData
+88 QStandardItemModel::setHeaderData
+92 QStandardItemModel::itemData
+96 QStandardItemModel::setItemData
+100 QStandardItemModel::mimeTypes
+104 QStandardItemModel::mimeData
+108 QStandardItemModel::dropMimeData
+112 QStandardItemModel::supportedDropActions
+116 QStandardItemModel::insertRows
+120 QStandardItemModel::insertColumns
+124 QStandardItemModel::removeRows
+128 QStandardItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QStandardItemModel::flags
+144 QStandardItemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QStandardItemModel
+ size=8 align=4
+ base size=8 base align=4
+QStandardItemModel (0xb240c5c0) 0
+ vptr=((& QStandardItemModel::_ZTV18QStandardItemModel) + 8u)
+ QAbstractItemModel (0xb240c600) 0
+ primary-for QStandardItemModel (0xb240c5c0)
+ QObject (0xb2408708) 0
+ primary-for QAbstractItemModel (0xb240c600)
+
+Vtable for QStringListModel
+QStringListModel::_ZTV16QStringListModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QStringListModel)
+8 QStringListModel::metaObject
+12 QStringListModel::qt_metacast
+16 QStringListModel::qt_metacall
+20 QStringListModel::~QStringListModel
+24 QStringListModel::~QStringListModel
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QAbstractListModel::index
+60 QAbstractListModel::parent
+64 QStringListModel::rowCount
+68 QAbstractListModel::columnCount
+72 QAbstractListModel::hasChildren
+76 QStringListModel::data
+80 QStringListModel::setData
+84 QAbstractItemModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QAbstractItemModel::mimeTypes
+104 QAbstractItemModel::mimeData
+108 QAbstractListModel::dropMimeData
+112 QStringListModel::supportedDropActions
+116 QStringListModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QStringListModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QAbstractItemModel::fetchMore
+136 QAbstractItemModel::canFetchMore
+140 QStringListModel::flags
+144 QStringListModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QStringListModel
+ size=12 align=4
+ base size=12 base align=4
+QStringListModel (0xb240ca00) 0
+ vptr=((& QStringListModel::_ZTV16QStringListModel) + 8u)
+ QAbstractListModel (0xb240ca40) 0
+ primary-for QStringListModel (0xb240ca00)
+ QAbstractItemModel (0xb240ca80) 0
+ primary-for QAbstractListModel (0xb240ca40)
+ QObject (0xb2408a14) 0
+ primary-for QAbstractItemModel (0xb240ca80)
+
+Vtable for QStyledItemDelegate
+QStyledItemDelegate::_ZTV19QStyledItemDelegate: 23u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QStyledItemDelegate)
+8 QStyledItemDelegate::metaObject
+12 QStyledItemDelegate::qt_metacast
+16 QStyledItemDelegate::qt_metacall
+20 QStyledItemDelegate::~QStyledItemDelegate
+24 QStyledItemDelegate::~QStyledItemDelegate
+28 QObject::event
+32 QStyledItemDelegate::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QStyledItemDelegate::paint
+60 QStyledItemDelegate::sizeHint
+64 QStyledItemDelegate::createEditor
+68 QStyledItemDelegate::setEditorData
+72 QStyledItemDelegate::setModelData
+76 QStyledItemDelegate::updateEditorGeometry
+80 QStyledItemDelegate::editorEvent
+84 QStyledItemDelegate::displayText
+88 QStyledItemDelegate::initStyleOption
+
+Class QStyledItemDelegate
+ size=8 align=4
+ base size=8 base align=4
+QStyledItemDelegate (0xb240ccc0) 0
+ vptr=((& QStyledItemDelegate::_ZTV19QStyledItemDelegate) + 8u)
+ QAbstractItemDelegate (0xb240cd00) 0
+ primary-for QStyledItemDelegate (0xb240ccc0)
+ QObject (0xb2408b40) 0
+ primary-for QAbstractItemDelegate (0xb240cd00)
+
+Vtable for QTableView
+QTableView::_ZTV10QTableView: 103u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI10QTableView)
+8 QTableView::metaObject
+12 QTableView::qt_metacast
+16 QTableView::qt_metacall
+20 QTableView::~QTableView
+24 QTableView::~QTableView
+28 QAbstractItemView::event
+32 QObject::eventFilter
+36 QTableView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QAbstractItemView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QAbstractItemView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTableView::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QAbstractItemView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QAbstractItemView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QTableView::scrollContentsBy
+232 QTableView::setModel
+236 QTableView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QTableView::visualRect
+248 QTableView::scrollTo
+252 QTableView::indexAt
+256 QTableView::sizeHintForRow
+260 QTableView::sizeHintForColumn
+264 QAbstractItemView::reset
+268 QTableView::setRootIndex
+272 QAbstractItemView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QAbstractItemView::dataChanged
+284 QAbstractItemView::rowsInserted
+288 QAbstractItemView::rowsAboutToBeRemoved
+292 QTableView::selectionChanged
+296 QTableView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QTableView::updateGeometries
+312 QTableView::verticalScrollbarAction
+316 QTableView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QTableView::moveCursor
+344 QTableView::horizontalOffset
+348 QTableView::verticalOffset
+352 QTableView::isIndexHidden
+356 QTableView::setSelection
+360 QTableView::visualRegionForSelection
+364 QTableView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QTableView::viewOptions
+384 (int (*)(...))-0x000000008
+388 (int (*)(...))(& _ZTI10QTableView)
+392 QTableView::_ZThn8_N10QTableViewD1Ev
+396 QTableView::_ZThn8_N10QTableViewD0Ev
+400 QWidget::_ZThn8_NK7QWidget7devTypeEv
+404 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+408 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTableView
+ size=20 align=4
+ base size=20 base align=4
+QTableView (0xb240cfc0) 0
+ vptr=((& QTableView::_ZTV10QTableView) + 8u)
+ QAbstractItemView (0xb2271000) 0
+ primary-for QTableView (0xb240cfc0)
+ QAbstractScrollArea (0xb2271040) 0
+ primary-for QAbstractItemView (0xb2271000)
+ QFrame (0xb2271080) 0
+ primary-for QAbstractScrollArea (0xb2271040)
+ QWidget (0xb226ab90) 0
+ primary-for QFrame (0xb2271080)
+ QObject (0xb2408d5c) 0
+ primary-for QWidget (0xb226ab90)
+ QPaintDevice (0xb2408d98) 8
+ vptr=((& QTableView::_ZTV10QTableView) + 392u)
+
+Class QTableWidgetSelectionRange
+ size=16 align=4
+ base size=16 base align=4
+QTableWidgetSelectionRange (0xb2408fb4) 0
+
+Vtable for QTableWidgetItem
+QTableWidgetItem::_ZTV16QTableWidgetItem: 10u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QTableWidgetItem)
+8 QTableWidgetItem::~QTableWidgetItem
+12 QTableWidgetItem::~QTableWidgetItem
+16 QTableWidgetItem::clone
+20 QTableWidgetItem::data
+24 QTableWidgetItem::setData
+28 QTableWidgetItem::operator<
+32 QTableWidgetItem::read
+36 QTableWidgetItem::write
+
+Class QTableWidgetItem
+ size=24 align=4
+ base size=24 base align=4
+QTableWidgetItem (0xb22921e0) 0
+ vptr=((& QTableWidgetItem::_ZTV16QTableWidgetItem) + 8u)
+
+Vtable for QTableWidget
+QTableWidget::_ZTV12QTableWidget: 107u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QTableWidget)
+8 QTableWidget::metaObject
+12 QTableWidget::qt_metacast
+16 QTableWidget::qt_metacall
+20 QTableWidget::~QTableWidget
+24 QTableWidget::~QTableWidget
+28 QTableWidget::event
+32 QObject::eventFilter
+36 QTableView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QAbstractItemView::mousePressEvent
+84 QAbstractItemView::mouseReleaseEvent
+88 QAbstractItemView::mouseDoubleClickEvent
+92 QAbstractItemView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QAbstractItemView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTableView::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QAbstractItemView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QTableWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractItemView::viewportEvent
+228 QTableView::scrollContentsBy
+232 QTableWidget::setModel
+236 QTableView::setSelectionModel
+240 QAbstractItemView::keyboardSearch
+244 QTableView::visualRect
+248 QTableView::scrollTo
+252 QTableView::indexAt
+256 QTableView::sizeHintForRow
+260 QTableView::sizeHintForColumn
+264 QAbstractItemView::reset
+268 QTableView::setRootIndex
+272 QAbstractItemView::doItemsLayout
+276 QAbstractItemView::selectAll
+280 QAbstractItemView::dataChanged
+284 QAbstractItemView::rowsInserted
+288 QAbstractItemView::rowsAboutToBeRemoved
+292 QTableView::selectionChanged
+296 QTableView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QTableView::updateGeometries
+312 QTableView::verticalScrollbarAction
+316 QTableView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QTableView::moveCursor
+344 QTableView::horizontalOffset
+348 QTableView::verticalOffset
+352 QTableView::isIndexHidden
+356 QTableView::setSelection
+360 QTableView::visualRegionForSelection
+364 QTableView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QTableView::viewOptions
+384 QTableWidget::mimeTypes
+388 QTableWidget::mimeData
+392 QTableWidget::dropMimeData
+396 QTableWidget::supportedDropActions
+400 (int (*)(...))-0x000000008
+404 (int (*)(...))(& _ZTI12QTableWidget)
+408 QTableWidget::_ZThn8_N12QTableWidgetD1Ev
+412 QTableWidget::_ZThn8_N12QTableWidgetD0Ev
+416 QWidget::_ZThn8_NK7QWidget7devTypeEv
+420 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+424 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTableWidget
+ size=20 align=4
+ base size=20 base align=4
+QTableWidget (0xb22c74c0) 0
+ vptr=((& QTableWidget::_ZTV12QTableWidget) + 8u)
+ QTableView (0xb22c7500) 0
+ primary-for QTableWidget (0xb22c74c0)
+ QAbstractItemView (0xb22c7540) 0
+ primary-for QTableView (0xb22c7500)
+ QAbstractScrollArea (0xb22c7580) 0
+ primary-for QAbstractItemView (0xb22c7540)
+ QFrame (0xb22c75c0) 0
+ primary-for QAbstractScrollArea (0xb22c7580)
+ QWidget (0xb22d0320) 0
+ primary-for QFrame (0xb22c75c0)
+ QObject (0xb22cc2d0) 0
+ primary-for QWidget (0xb22d0320)
+ QPaintDevice (0xb22cc30c) 8
+ vptr=((& QTableWidget::_ZTV12QTableWidget) + 408u)
+
+Vtable for QTreeView
+QTreeView::_ZTV9QTreeView: 105u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI9QTreeView)
+8 QTreeView::metaObject
+12 QTreeView::qt_metacast
+16 QTreeView::qt_metacall
+20 QTreeView::~QTreeView
+24 QTreeView::~QTreeView
+28 QAbstractItemView::event
+32 QObject::eventFilter
+36 QTreeView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QTreeView::mousePressEvent
+84 QTreeView::mouseReleaseEvent
+88 QTreeView::mouseDoubleClickEvent
+92 QTreeView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QTreeView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTreeView::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QTreeView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QAbstractItemView::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QTreeView::viewportEvent
+228 QTreeView::scrollContentsBy
+232 QTreeView::setModel
+236 QTreeView::setSelectionModel
+240 QTreeView::keyboardSearch
+244 QTreeView::visualRect
+248 QTreeView::scrollTo
+252 QTreeView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QTreeView::sizeHintForColumn
+264 QTreeView::reset
+268 QTreeView::setRootIndex
+272 QTreeView::doItemsLayout
+276 QTreeView::selectAll
+280 QTreeView::dataChanged
+284 QTreeView::rowsInserted
+288 QTreeView::rowsAboutToBeRemoved
+292 QTreeView::selectionChanged
+296 QTreeView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QTreeView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QTreeView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QTreeView::moveCursor
+344 QTreeView::horizontalOffset
+348 QTreeView::verticalOffset
+352 QTreeView::isIndexHidden
+356 QTreeView::setSelection
+360 QTreeView::visualRegionForSelection
+364 QTreeView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QAbstractItemView::viewOptions
+384 QTreeView::drawRow
+388 QTreeView::drawBranches
+392 (int (*)(...))-0x000000008
+396 (int (*)(...))(& _ZTI9QTreeView)
+400 QTreeView::_ZThn8_N9QTreeViewD1Ev
+404 QTreeView::_ZThn8_N9QTreeViewD0Ev
+408 QWidget::_ZThn8_NK7QWidget7devTypeEv
+412 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+416 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTreeView
+ size=20 align=4
+ base size=20 base align=4
+QTreeView (0xb22c7ac0) 0
+ vptr=((& QTreeView::_ZTV9QTreeView) + 8u)
+ QAbstractItemView (0xb22c7b00) 0
+ primary-for QTreeView (0xb22c7ac0)
+ QAbstractScrollArea (0xb22c7b40) 0
+ primary-for QAbstractItemView (0xb22c7b00)
+ QFrame (0xb22c7b80) 0
+ primary-for QAbstractScrollArea (0xb22c7b40)
+ QWidget (0xb22edd70) 0
+ primary-for QFrame (0xb22c7b80)
+ QObject (0xb22cc99c) 0
+ primary-for QWidget (0xb22edd70)
+ QPaintDevice (0xb22cc9d8) 8
+ vptr=((& QTreeView::_ZTV9QTreeView) + 400u)
+
+Class QTreeWidgetItemIterator
+ size=12 align=4
+ base size=12 base align=4
+QTreeWidgetItemIterator (0xb22ccbf4) 0
+
+Vtable for QTreeWidgetItem
+QTreeWidgetItem::_ZTV15QTreeWidgetItem: 10u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QTreeWidgetItem)
+8 QTreeWidgetItem::~QTreeWidgetItem
+12 QTreeWidgetItem::~QTreeWidgetItem
+16 QTreeWidgetItem::clone
+20 QTreeWidgetItem::data
+24 QTreeWidgetItem::setData
+28 QTreeWidgetItem::operator<
+32 QTreeWidgetItem::read
+36 QTreeWidgetItem::write
+
+Class QTreeWidgetItem
+ size=32 align=4
+ base size=32 base align=4
+QTreeWidgetItem (0xb212a2d0) 0
+ vptr=((& QTreeWidgetItem::_ZTV15QTreeWidgetItem) + 8u)
+
+Vtable for QTreeWidget
+QTreeWidget::_ZTV11QTreeWidget: 109u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QTreeWidget)
+8 QTreeWidget::metaObject
+12 QTreeWidget::qt_metacast
+16 QTreeWidget::qt_metacall
+20 QTreeWidget::~QTreeWidget
+24 QTreeWidget::~QTreeWidget
+28 QTreeWidget::event
+32 QObject::eventFilter
+36 QTreeView::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QAbstractScrollArea::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QTreeView::mousePressEvent
+84 QTreeView::mouseReleaseEvent
+88 QTreeView::mouseDoubleClickEvent
+92 QTreeView::mouseMoveEvent
+96 QAbstractScrollArea::wheelEvent
+100 QTreeView::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QAbstractItemView::focusInEvent
+112 QAbstractItemView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QTreeView::paintEvent
+128 QWidget::moveEvent
+132 QAbstractItemView::resizeEvent
+136 QWidget::closeEvent
+140 QAbstractScrollArea::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QAbstractItemView::dragEnterEvent
+156 QTreeView::dragMoveEvent
+160 QAbstractItemView::dragLeaveEvent
+164 QTreeWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QAbstractItemView::inputMethodEvent
+192 QAbstractItemView::inputMethodQuery
+196 QAbstractItemView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QTreeView::viewportEvent
+228 QTreeView::scrollContentsBy
+232 QTreeWidget::setModel
+236 QTreeWidget::setSelectionModel
+240 QTreeView::keyboardSearch
+244 QTreeView::visualRect
+248 QTreeView::scrollTo
+252 QTreeView::indexAt
+256 QAbstractItemView::sizeHintForRow
+260 QTreeView::sizeHintForColumn
+264 QTreeView::reset
+268 QTreeView::setRootIndex
+272 QTreeView::doItemsLayout
+276 QTreeView::selectAll
+280 QTreeView::dataChanged
+284 QTreeView::rowsInserted
+288 QTreeView::rowsAboutToBeRemoved
+292 QTreeView::selectionChanged
+296 QTreeView::currentChanged
+300 QAbstractItemView::updateEditorData
+304 QAbstractItemView::updateEditorGeometries
+308 QTreeView::updateGeometries
+312 QAbstractItemView::verticalScrollbarAction
+316 QTreeView::horizontalScrollbarAction
+320 QAbstractItemView::verticalScrollbarValueChanged
+324 QAbstractItemView::horizontalScrollbarValueChanged
+328 QAbstractItemView::closeEditor
+332 QAbstractItemView::commitData
+336 QAbstractItemView::editorDestroyed
+340 QTreeView::moveCursor
+344 QTreeView::horizontalOffset
+348 QTreeView::verticalOffset
+352 QTreeView::isIndexHidden
+356 QTreeView::setSelection
+360 QTreeView::visualRegionForSelection
+364 QTreeView::selectedIndexes
+368 QAbstractItemView::edit
+372 QAbstractItemView::selectionCommand
+376 QAbstractItemView::startDrag
+380 QAbstractItemView::viewOptions
+384 QTreeView::drawRow
+388 QTreeView::drawBranches
+392 QTreeWidget::mimeTypes
+396 QTreeWidget::mimeData
+400 QTreeWidget::dropMimeData
+404 QTreeWidget::supportedDropActions
+408 (int (*)(...))-0x000000008
+412 (int (*)(...))(& _ZTI11QTreeWidget)
+416 QTreeWidget::_ZThn8_N11QTreeWidgetD1Ev
+420 QTreeWidget::_ZThn8_N11QTreeWidgetD0Ev
+424 QWidget::_ZThn8_NK7QWidget7devTypeEv
+428 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+432 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QTreeWidget
+ size=20 align=4
+ base size=20 base align=4
+QTreeWidget (0xb21a2540) 0
+ vptr=((& QTreeWidget::_ZTV11QTreeWidget) + 8u)
+ QTreeView (0xb21a2580) 0
+ primary-for QTreeWidget (0xb21a2540)
+ QAbstractItemView (0xb21a25c0) 0
+ primary-for QTreeView (0xb21a2580)
+ QAbstractScrollArea (0xb21a2600) 0
+ primary-for QAbstractItemView (0xb21a25c0)
+ QFrame (0xb21a2640) 0
+ primary-for QAbstractScrollArea (0xb21a2600)
+ QWidget (0xb21a8820) 0
+ primary-for QFrame (0xb21a2640)
+ QObject (0xb21a1708) 0
+ primary-for QWidget (0xb21a8820)
+ QPaintDevice (0xb21a1744) 8
+ vptr=((& QTreeWidget::_ZTV11QTreeWidget) + 416u)
+
+Vtable for QInputContext
+QInputContext::_ZTV13QInputContext: 26u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QInputContext)
+8 QInputContext::metaObject
+12 QInputContext::qt_metacast
+16 QInputContext::qt_metacall
+20 QInputContext::~QInputContext
+24 QInputContext::~QInputContext
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 QInputContext::update
+72 QInputContext::mouseHandler
+76 QInputContext::font
+80 __cxa_pure_virtual
+84 QInputContext::setFocusWidget
+88 QInputContext::widgetDestroyed
+92 QInputContext::actions
+96 QInputContext::x11FilterEvent
+100 QInputContext::filterEvent
+
+Class QInputContext
+ size=8 align=4
+ base size=8 base align=4
+QInputContext (0xb21a2e80) 0
+ vptr=((& QInputContext::_ZTV13QInputContext) + 8u)
+ QObject (0xb21d4168) 0
+ primary-for QInputContext (0xb21a2e80)
+
+Class QInputContextFactory
+ size=1 align=1
+ base size=0 base align=1
+QInputContextFactory (0xb21d4384) 0 empty
+
+Vtable for QInputContextFactoryInterface
+QInputContextFactoryInterface::_ZTV29QInputContextFactoryInterface: 9u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI29QInputContextFactoryInterface)
+8 QInputContextFactoryInterface::~QInputContextFactoryInterface
+12 QInputContextFactoryInterface::~QInputContextFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+
+Class QInputContextFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QInputContextFactoryInterface (0xb21ef180) 0 nearly-empty
+ vptr=((& QInputContextFactoryInterface::_ZTV29QInputContextFactoryInterface) + 8u)
+ QFactoryInterface (0xb21d43c0) 0 nearly-empty
+ primary-for QInputContextFactoryInterface (0xb21ef180)
+
+Vtable for QInputContextPlugin
+QInputContextPlugin::_ZTV19QInputContextPlugin: 28u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QInputContextPlugin)
+8 QInputContextPlugin::metaObject
+12 QInputContextPlugin::qt_metacast
+16 QInputContextPlugin::qt_metacall
+20 QInputContextPlugin::~QInputContextPlugin
+24 QInputContextPlugin::~QInputContextPlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 (int (*)(...))-0x000000008
+80 (int (*)(...))(& _ZTI19QInputContextPlugin)
+84 QInputContextPlugin::_ZThn8_N19QInputContextPluginD1Ev
+88 QInputContextPlugin::_ZThn8_N19QInputContextPluginD0Ev
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+
+Class QInputContextPlugin
+ size=12 align=4
+ base size=12 base align=4
+QInputContextPlugin (0xb21f73c0) 0
+ vptr=((& QInputContextPlugin::_ZTV19QInputContextPlugin) + 8u)
+ QObject (0xb21d46cc) 0
+ primary-for QInputContextPlugin (0xb21f73c0)
+ QInputContextFactoryInterface (0xb21ef440) 8 nearly-empty
+ vptr=((& QInputContextPlugin::_ZTV19QInputContextPlugin) + 84u)
+ QFactoryInterface (0xb21d4708) 8 nearly-empty
+ primary-for QInputContextFactoryInterface (0xb21ef440)
+
+Vtable for QBitmap
+QBitmap::_ZTV7QBitmap: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QBitmap)
+8 QBitmap::~QBitmap
+12 QBitmap::~QBitmap
+16 QPixmap::devType
+20 QPixmap::paintEngine
+24 QPixmap::metric
+
+Class QBitmap
+ size=12 align=4
+ base size=12 base align=4
+QBitmap (0xb21ef680) 0
+ vptr=((& QBitmap::_ZTV7QBitmap) + 8u)
+ QPixmap (0xb21ef6c0) 0
+ primary-for QBitmap (0xb21ef680)
+ QPaintDevice (0xb21d4834) 0
+ primary-for QPixmap (0xb21ef6c0)
+
+Vtable for QIconEngine
+QIconEngine::_ZTV11QIconEngine: 9u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QIconEngine)
+8 QIconEngine::~QIconEngine
+12 QIconEngine::~QIconEngine
+16 __cxa_pure_virtual
+20 QIconEngine::actualSize
+24 QIconEngine::pixmap
+28 QIconEngine::addPixmap
+32 QIconEngine::addFile
+
+Class QIconEngine
+ size=4 align=4
+ base size=4 base align=4
+QIconEngine (0xb22193fc) 0 nearly-empty
+ vptr=((& QIconEngine::_ZTV11QIconEngine) + 8u)
+
+Class QIconEngineV2::AvailableSizesArgument
+ size=12 align=4
+ base size=12 base align=4
+QIconEngineV2::AvailableSizesArgument (0xb2219474) 0
+
+Vtable for QIconEngineV2
+QIconEngineV2::_ZTV13QIconEngineV2: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QIconEngineV2)
+8 QIconEngineV2::~QIconEngineV2
+12 QIconEngineV2::~QIconEngineV2
+16 __cxa_pure_virtual
+20 QIconEngine::actualSize
+24 QIconEngine::pixmap
+28 QIconEngine::addPixmap
+32 QIconEngine::addFile
+36 QIconEngineV2::key
+40 QIconEngineV2::clone
+44 QIconEngineV2::read
+48 QIconEngineV2::write
+52 QIconEngineV2::virtual_hook
+
+Class QIconEngineV2
+ size=4 align=4
+ base size=4 base align=4
+QIconEngineV2 (0xb21eff00) 0 nearly-empty
+ vptr=((& QIconEngineV2::_ZTV13QIconEngineV2) + 8u)
+ QIconEngine (0xb2219438) 0 nearly-empty
+ primary-for QIconEngineV2 (0xb21eff00)
+
+Vtable for QIconEngineFactoryInterface
+QIconEngineFactoryInterface::_ZTV27QIconEngineFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QIconEngineFactoryInterface)
+8 QIconEngineFactoryInterface::~QIconEngineFactoryInterface
+12 QIconEngineFactoryInterface::~QIconEngineFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QIconEngineFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QIconEngineFactoryInterface (0xb2023080) 0 nearly-empty
+ vptr=((& QIconEngineFactoryInterface::_ZTV27QIconEngineFactoryInterface) + 8u)
+ QFactoryInterface (0xb2219528) 0 nearly-empty
+ primary-for QIconEngineFactoryInterface (0xb2023080)
+
+Vtable for QIconEnginePlugin
+QIconEnginePlugin::_ZTV17QIconEnginePlugin: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QIconEnginePlugin)
+8 QIconEnginePlugin::metaObject
+12 QIconEnginePlugin::qt_metacast
+16 QIconEnginePlugin::qt_metacall
+20 QIconEnginePlugin::~QIconEnginePlugin
+24 QIconEnginePlugin::~QIconEnginePlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 (int (*)(...))-0x000000008
+68 (int (*)(...))(& _ZTI17QIconEnginePlugin)
+72 QIconEnginePlugin::_ZThn8_N17QIconEnginePluginD1Ev
+76 QIconEnginePlugin::_ZThn8_N17QIconEnginePluginD0Ev
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+
+Class QIconEnginePlugin
+ size=12 align=4
+ base size=12 base align=4
+QIconEnginePlugin (0xb203b5f0) 0
+ vptr=((& QIconEnginePlugin::_ZTV17QIconEnginePlugin) + 8u)
+ QObject (0xb2219834) 0
+ primary-for QIconEnginePlugin (0xb203b5f0)
+ QIconEngineFactoryInterface (0xb2023340) 8 nearly-empty
+ vptr=((& QIconEnginePlugin::_ZTV17QIconEnginePlugin) + 72u)
+ QFactoryInterface (0xb2219870) 8 nearly-empty
+ primary-for QIconEngineFactoryInterface (0xb2023340)
+
+Vtable for QIconEngineFactoryInterfaceV2
+QIconEngineFactoryInterfaceV2::_ZTV29QIconEngineFactoryInterfaceV2: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI29QIconEngineFactoryInterfaceV2)
+8 QIconEngineFactoryInterfaceV2::~QIconEngineFactoryInterfaceV2
+12 QIconEngineFactoryInterfaceV2::~QIconEngineFactoryInterfaceV2
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QIconEngineFactoryInterfaceV2
+ size=4 align=4
+ base size=4 base align=4
+QIconEngineFactoryInterfaceV2 (0xb2023580) 0 nearly-empty
+ vptr=((& QIconEngineFactoryInterfaceV2::_ZTV29QIconEngineFactoryInterfaceV2) + 8u)
+ QFactoryInterface (0xb221999c) 0 nearly-empty
+ primary-for QIconEngineFactoryInterfaceV2 (0xb2023580)
+
+Vtable for QIconEnginePluginV2
+QIconEnginePluginV2::_ZTV19QIconEnginePluginV2: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QIconEnginePluginV2)
+8 QIconEnginePluginV2::metaObject
+12 QIconEnginePluginV2::qt_metacast
+16 QIconEnginePluginV2::qt_metacall
+20 QIconEnginePluginV2::~QIconEnginePluginV2
+24 QIconEnginePluginV2::~QIconEnginePluginV2
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 (int (*)(...))-0x000000008
+68 (int (*)(...))(& _ZTI19QIconEnginePluginV2)
+72 QIconEnginePluginV2::_ZThn8_N19QIconEnginePluginV2D1Ev
+76 QIconEnginePluginV2::_ZThn8_N19QIconEnginePluginV2D0Ev
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+
+Class QIconEnginePluginV2
+ size=12 align=4
+ base size=12 base align=4
+QIconEnginePluginV2 (0xb2050050) 0
+ vptr=((& QIconEnginePluginV2::_ZTV19QIconEnginePluginV2) + 8u)
+ QObject (0xb2219ca8) 0
+ primary-for QIconEnginePluginV2 (0xb2050050)
+ QIconEngineFactoryInterfaceV2 (0xb2023840) 8 nearly-empty
+ vptr=((& QIconEnginePluginV2::_ZTV19QIconEnginePluginV2) + 72u)
+ QFactoryInterface (0xb2219ce4) 8 nearly-empty
+ primary-for QIconEngineFactoryInterfaceV2 (0xb2023840)
+
+Vtable for QImageIOHandler
+QImageIOHandler::_ZTV15QImageIOHandler: 18u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QImageIOHandler)
+8 QImageIOHandler::~QImageIOHandler
+12 QImageIOHandler::~QImageIOHandler
+16 QImageIOHandler::name
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 QImageIOHandler::write
+32 QImageIOHandler::option
+36 QImageIOHandler::setOption
+40 QImageIOHandler::supportsOption
+44 QImageIOHandler::jumpToNextImage
+48 QImageIOHandler::jumpToImage
+52 QImageIOHandler::loopCount
+56 QImageIOHandler::imageCount
+60 QImageIOHandler::nextImageDelay
+64 QImageIOHandler::currentImageNumber
+68 QImageIOHandler::currentImageRect
+
+Class QImageIOHandler
+ size=8 align=4
+ base size=8 base align=4
+QImageIOHandler (0xb2219e10) 0
+ vptr=((& QImageIOHandler::_ZTV15QImageIOHandler) + 8u)
+
+Vtable for QImageIOHandlerFactoryInterface
+QImageIOHandlerFactoryInterface::_ZTV31QImageIOHandlerFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI31QImageIOHandlerFactoryInterface)
+8 QImageIOHandlerFactoryInterface::~QImageIOHandlerFactoryInterface
+12 QImageIOHandlerFactoryInterface::~QImageIOHandlerFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QImageIOHandlerFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QImageIOHandlerFactoryInterface (0xb2023b80) 0 nearly-empty
+ vptr=((& QImageIOHandlerFactoryInterface::_ZTV31QImageIOHandlerFactoryInterface) + 8u)
+ QFactoryInterface (0xb2219f78) 0 nearly-empty
+ primary-for QImageIOHandlerFactoryInterface (0xb2023b80)
+
+Vtable for QImageIOPlugin
+QImageIOPlugin::_ZTV14QImageIOPlugin: 23u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QImageIOPlugin)
+8 QImageIOPlugin::metaObject
+12 QImageIOPlugin::qt_metacast
+16 QImageIOPlugin::qt_metacall
+20 QImageIOPlugin::~QImageIOPlugin
+24 QImageIOPlugin::~QImageIOPlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 (int (*)(...))-0x000000008
+72 (int (*)(...))(& _ZTI14QImageIOPlugin)
+76 QImageIOPlugin::_ZThn8_N14QImageIOPluginD1Ev
+80 QImageIOPlugin::_ZThn8_N14QImageIOPluginD0Ev
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+
+Class QImageIOPlugin
+ size=12 align=4
+ base size=12 base align=4
+QImageIOPlugin (0xb2064f50) 0
+ vptr=((& QImageIOPlugin::_ZTV14QImageIOPlugin) + 8u)
+ QObject (0xb206a294) 0
+ primary-for QImageIOPlugin (0xb2064f50)
+ QImageIOHandlerFactoryInterface (0xb2023e40) 8 nearly-empty
+ vptr=((& QImageIOPlugin::_ZTV14QImageIOPlugin) + 76u)
+ QFactoryInterface (0xb206a2d0) 8 nearly-empty
+ primary-for QImageIOHandlerFactoryInterface (0xb2023e40)
+
+Class QImageReader
+ size=4 align=4
+ base size=4 base align=4
+QImageReader (0xb206a4ec) 0
+
+Class QImageWriter
+ size=4 align=4
+ base size=4 base align=4
+QImageWriter (0xb206a528) 0
+
+Vtable for QMovie
+QMovie::_ZTV6QMovie: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI6QMovie)
+8 QMovie::metaObject
+12 QMovie::qt_metacast
+16 QMovie::qt_metacall
+20 QMovie::~QMovie
+24 QMovie::~QMovie
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QMovie
+ size=8 align=4
+ base size=8 base align=4
+QMovie (0xb2078240) 0
+ vptr=((& QMovie::_ZTV6QMovie) + 8u)
+ QObject (0xb206a564) 0
+ primary-for QMovie (0xb2078240)
+
+Vtable for QPicture
+QPicture::_ZTV8QPicture: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI8QPicture)
+8 QPicture::~QPicture
+12 QPicture::~QPicture
+16 QPicture::devType
+20 QPicture::paintEngine
+24 QPicture::metric
+28 QPicture::setData
+
+Class QPicture
+ size=12 align=4
+ base size=12 base align=4
+QPicture (0xb2078880) 0
+ vptr=((& QPicture::_ZTV8QPicture) + 8u)
+ QPaintDevice (0xb206a870) 0
+ primary-for QPicture (0xb2078880)
+
+Class QPictureIO
+ size=4 align=4
+ base size=4 base align=4
+QPictureIO (0xb206ab04) 0
+
+Vtable for QPictureFormatInterface
+QPictureFormatInterface::_ZTV23QPictureFormatInterface: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QPictureFormatInterface)
+8 QPictureFormatInterface::~QPictureFormatInterface
+12 QPictureFormatInterface::~QPictureFormatInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+
+Class QPictureFormatInterface
+ size=4 align=4
+ base size=4 base align=4
+QPictureFormatInterface (0xb2078bc0) 0 nearly-empty
+ vptr=((& QPictureFormatInterface::_ZTV23QPictureFormatInterface) + 8u)
+ QFactoryInterface (0xb206ab40) 0 nearly-empty
+ primary-for QPictureFormatInterface (0xb2078bc0)
+
+Vtable for QPictureFormatPlugin
+QPictureFormatPlugin::_ZTV20QPictureFormatPlugin: 26u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QPictureFormatPlugin)
+8 QPictureFormatPlugin::metaObject
+12 QPictureFormatPlugin::qt_metacast
+16 QPictureFormatPlugin::qt_metacall
+20 QPictureFormatPlugin::~QPictureFormatPlugin
+24 QPictureFormatPlugin::~QPictureFormatPlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 QPictureFormatPlugin::loadPicture
+64 QPictureFormatPlugin::savePicture
+68 __cxa_pure_virtual
+72 (int (*)(...))-0x000000008
+76 (int (*)(...))(& _ZTI20QPictureFormatPlugin)
+80 QPictureFormatPlugin::_ZThn8_N20QPictureFormatPluginD1Ev
+84 QPictureFormatPlugin::_ZThn8_N20QPictureFormatPluginD0Ev
+88 __cxa_pure_virtual
+92 QPictureFormatPlugin::_ZThn8_N20QPictureFormatPlugin11loadPictureERK7QStringS2_P8QPicture
+96 QPictureFormatPlugin::_ZThn8_N20QPictureFormatPlugin11savePictureERK7QStringS2_RK8QPicture
+100 __cxa_pure_virtual
+
+Class QPictureFormatPlugin
+ size=12 align=4
+ base size=12 base align=4
+QPictureFormatPlugin (0xb20e9f00) 0
+ vptr=((& QPictureFormatPlugin::_ZTV20QPictureFormatPlugin) + 8u)
+ QObject (0xb206ae4c) 0
+ primary-for QPictureFormatPlugin (0xb20e9f00)
+ QPictureFormatInterface (0xb2078e80) 8 nearly-empty
+ vptr=((& QPictureFormatPlugin::_ZTV20QPictureFormatPlugin) + 80u)
+ QFactoryInterface (0xb206ae88) 8 nearly-empty
+ primary-for QPictureFormatInterface (0xb2078e80)
+
+Class QPixmapCache::Key
+ size=4 align=4
+ base size=4 base align=4
+QPixmapCache::Key (0xb20fc000) 0
+
+Class QPixmapCache
+ size=1 align=1
+ base size=0 base align=1
+QPixmapCache (0xb206afb4) 0 empty
+
+Vtable for QGraphicsItem
+QGraphicsItem::_ZTV13QGraphicsItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QGraphicsItem)
+8 QGraphicsItem::~QGraphicsItem
+12 QGraphicsItem::~QGraphicsItem
+16 QGraphicsItem::advance
+20 __cxa_pure_virtual
+24 QGraphicsItem::shape
+28 QGraphicsItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsItem::isObscuredBy
+44 QGraphicsItem::opaqueArea
+48 __cxa_pure_virtual
+52 QGraphicsItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsItem::supportsExtension
+148 QGraphicsItem::setExtension
+152 QGraphicsItem::extension
+
+Class QGraphicsItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsItem (0xb20fc078) 0
+ vptr=((& QGraphicsItem::_ZTV13QGraphicsItem) + 8u)
+
+Vtable for QGraphicsObject
+QGraphicsObject::_ZTV15QGraphicsObject: 53u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QGraphicsObject)
+8 QGraphicsObject::metaObject
+12 QGraphicsObject::qt_metacast
+16 QGraphicsObject::qt_metacall
+20 QGraphicsObject::~QGraphicsObject
+24 QGraphicsObject::~QGraphicsObject
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 (int (*)(...))-0x000000008
+60 (int (*)(...))(& _ZTI15QGraphicsObject)
+64 QGraphicsObject::_ZThn8_N15QGraphicsObjectD1Ev
+68 QGraphicsObject::_ZThn8_N15QGraphicsObjectD0Ev
+72 QGraphicsItem::advance
+76 __cxa_pure_virtual
+80 QGraphicsItem::shape
+84 QGraphicsItem::contains
+88 QGraphicsItem::collidesWithItem
+92 QGraphicsItem::collidesWithPath
+96 QGraphicsItem::isObscuredBy
+100 QGraphicsItem::opaqueArea
+104 __cxa_pure_virtual
+108 QGraphicsItem::type
+112 QGraphicsItem::sceneEventFilter
+116 QGraphicsItem::sceneEvent
+120 QGraphicsItem::contextMenuEvent
+124 QGraphicsItem::dragEnterEvent
+128 QGraphicsItem::dragLeaveEvent
+132 QGraphicsItem::dragMoveEvent
+136 QGraphicsItem::dropEvent
+140 QGraphicsItem::focusInEvent
+144 QGraphicsItem::focusOutEvent
+148 QGraphicsItem::hoverEnterEvent
+152 QGraphicsItem::hoverMoveEvent
+156 QGraphicsItem::hoverLeaveEvent
+160 QGraphicsItem::keyPressEvent
+164 QGraphicsItem::keyReleaseEvent
+168 QGraphicsItem::mousePressEvent
+172 QGraphicsItem::mouseMoveEvent
+176 QGraphicsItem::mouseReleaseEvent
+180 QGraphicsItem::mouseDoubleClickEvent
+184 QGraphicsItem::wheelEvent
+188 QGraphicsItem::inputMethodEvent
+192 QGraphicsItem::inputMethodQuery
+196 QGraphicsItem::itemChange
+200 QGraphicsItem::supportsExtension
+204 QGraphicsItem::setExtension
+208 QGraphicsItem::extension
+
+Class QGraphicsObject
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsObject (0xb1f80c80) 0
+ vptr=((& QGraphicsObject::_ZTV15QGraphicsObject) + 8u)
+ QObject (0xb1f83258) 0
+ primary-for QGraphicsObject (0xb1f80c80)
+ QGraphicsItem (0xb1f83294) 8
+ vptr=((& QGraphicsObject::_ZTV15QGraphicsObject) + 64u)
+
+Vtable for QAbstractGraphicsShapeItem
+QAbstractGraphicsShapeItem::_ZTV26QAbstractGraphicsShapeItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI26QAbstractGraphicsShapeItem)
+8 QAbstractGraphicsShapeItem::~QAbstractGraphicsShapeItem
+12 QAbstractGraphicsShapeItem::~QAbstractGraphicsShapeItem
+16 QGraphicsItem::advance
+20 __cxa_pure_virtual
+24 QGraphicsItem::shape
+28 QGraphicsItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QAbstractGraphicsShapeItem::isObscuredBy
+44 QAbstractGraphicsShapeItem::opaqueArea
+48 __cxa_pure_virtual
+52 QGraphicsItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsItem::supportsExtension
+148 QGraphicsItem::setExtension
+152 QGraphicsItem::extension
+
+Class QAbstractGraphicsShapeItem
+ size=8 align=4
+ base size=8 base align=4
+QAbstractGraphicsShapeItem (0xb1f94040) 0
+ vptr=((& QAbstractGraphicsShapeItem::_ZTV26QAbstractGraphicsShapeItem) + 8u)
+ QGraphicsItem (0xb1f833c0) 0
+ primary-for QAbstractGraphicsShapeItem (0xb1f94040)
+
+Vtable for QGraphicsPathItem
+QGraphicsPathItem::_ZTV17QGraphicsPathItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QGraphicsPathItem)
+8 QGraphicsPathItem::~QGraphicsPathItem
+12 QGraphicsPathItem::~QGraphicsPathItem
+16 QGraphicsItem::advance
+20 QGraphicsPathItem::boundingRect
+24 QGraphicsPathItem::shape
+28 QGraphicsPathItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsPathItem::isObscuredBy
+44 QGraphicsPathItem::opaqueArea
+48 QGraphicsPathItem::paint
+52 QGraphicsPathItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsPathItem::supportsExtension
+148 QGraphicsPathItem::setExtension
+152 QGraphicsPathItem::extension
+
+Class QGraphicsPathItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsPathItem (0xb1f94140) 0
+ vptr=((& QGraphicsPathItem::_ZTV17QGraphicsPathItem) + 8u)
+ QAbstractGraphicsShapeItem (0xb1f94180) 0
+ primary-for QGraphicsPathItem (0xb1f94140)
+ QGraphicsItem (0xb1f834ec) 0
+ primary-for QAbstractGraphicsShapeItem (0xb1f94180)
+
+Vtable for QGraphicsRectItem
+QGraphicsRectItem::_ZTV17QGraphicsRectItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QGraphicsRectItem)
+8 QGraphicsRectItem::~QGraphicsRectItem
+12 QGraphicsRectItem::~QGraphicsRectItem
+16 QGraphicsItem::advance
+20 QGraphicsRectItem::boundingRect
+24 QGraphicsRectItem::shape
+28 QGraphicsRectItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsRectItem::isObscuredBy
+44 QGraphicsRectItem::opaqueArea
+48 QGraphicsRectItem::paint
+52 QGraphicsRectItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsRectItem::supportsExtension
+148 QGraphicsRectItem::setExtension
+152 QGraphicsRectItem::extension
+
+Class QGraphicsRectItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsRectItem (0xb1f94280) 0
+ vptr=((& QGraphicsRectItem::_ZTV17QGraphicsRectItem) + 8u)
+ QAbstractGraphicsShapeItem (0xb1f942c0) 0
+ primary-for QGraphicsRectItem (0xb1f94280)
+ QGraphicsItem (0xb1f83618) 0
+ primary-for QAbstractGraphicsShapeItem (0xb1f942c0)
+
+Vtable for QGraphicsEllipseItem
+QGraphicsEllipseItem::_ZTV20QGraphicsEllipseItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QGraphicsEllipseItem)
+8 QGraphicsEllipseItem::~QGraphicsEllipseItem
+12 QGraphicsEllipseItem::~QGraphicsEllipseItem
+16 QGraphicsItem::advance
+20 QGraphicsEllipseItem::boundingRect
+24 QGraphicsEllipseItem::shape
+28 QGraphicsEllipseItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsEllipseItem::isObscuredBy
+44 QGraphicsEllipseItem::opaqueArea
+48 QGraphicsEllipseItem::paint
+52 QGraphicsEllipseItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsEllipseItem::supportsExtension
+148 QGraphicsEllipseItem::setExtension
+152 QGraphicsEllipseItem::extension
+
+Class QGraphicsEllipseItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsEllipseItem (0xb1f94400) 0
+ vptr=((& QGraphicsEllipseItem::_ZTV20QGraphicsEllipseItem) + 8u)
+ QAbstractGraphicsShapeItem (0xb1f94440) 0
+ primary-for QGraphicsEllipseItem (0xb1f94400)
+ QGraphicsItem (0xb1f837f8) 0
+ primary-for QAbstractGraphicsShapeItem (0xb1f94440)
+
+Vtable for QGraphicsPolygonItem
+QGraphicsPolygonItem::_ZTV20QGraphicsPolygonItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QGraphicsPolygonItem)
+8 QGraphicsPolygonItem::~QGraphicsPolygonItem
+12 QGraphicsPolygonItem::~QGraphicsPolygonItem
+16 QGraphicsItem::advance
+20 QGraphicsPolygonItem::boundingRect
+24 QGraphicsPolygonItem::shape
+28 QGraphicsPolygonItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsPolygonItem::isObscuredBy
+44 QGraphicsPolygonItem::opaqueArea
+48 QGraphicsPolygonItem::paint
+52 QGraphicsPolygonItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsPolygonItem::supportsExtension
+148 QGraphicsPolygonItem::setExtension
+152 QGraphicsPolygonItem::extension
+
+Class QGraphicsPolygonItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsPolygonItem (0xb1f94580) 0
+ vptr=((& QGraphicsPolygonItem::_ZTV20QGraphicsPolygonItem) + 8u)
+ QAbstractGraphicsShapeItem (0xb1f945c0) 0
+ primary-for QGraphicsPolygonItem (0xb1f94580)
+ QGraphicsItem (0xb1f839d8) 0
+ primary-for QAbstractGraphicsShapeItem (0xb1f945c0)
+
+Vtable for QGraphicsLineItem
+QGraphicsLineItem::_ZTV17QGraphicsLineItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QGraphicsLineItem)
+8 QGraphicsLineItem::~QGraphicsLineItem
+12 QGraphicsLineItem::~QGraphicsLineItem
+16 QGraphicsItem::advance
+20 QGraphicsLineItem::boundingRect
+24 QGraphicsLineItem::shape
+28 QGraphicsLineItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsLineItem::isObscuredBy
+44 QGraphicsLineItem::opaqueArea
+48 QGraphicsLineItem::paint
+52 QGraphicsLineItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsLineItem::supportsExtension
+148 QGraphicsLineItem::setExtension
+152 QGraphicsLineItem::extension
+
+Class QGraphicsLineItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsLineItem (0xb1f946c0) 0
+ vptr=((& QGraphicsLineItem::_ZTV17QGraphicsLineItem) + 8u)
+ QGraphicsItem (0xb1f83b04) 0
+ primary-for QGraphicsLineItem (0xb1f946c0)
+
+Vtable for QGraphicsPixmapItem
+QGraphicsPixmapItem::_ZTV19QGraphicsPixmapItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QGraphicsPixmapItem)
+8 QGraphicsPixmapItem::~QGraphicsPixmapItem
+12 QGraphicsPixmapItem::~QGraphicsPixmapItem
+16 QGraphicsItem::advance
+20 QGraphicsPixmapItem::boundingRect
+24 QGraphicsPixmapItem::shape
+28 QGraphicsPixmapItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsPixmapItem::isObscuredBy
+44 QGraphicsPixmapItem::opaqueArea
+48 QGraphicsPixmapItem::paint
+52 QGraphicsPixmapItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsPixmapItem::supportsExtension
+148 QGraphicsPixmapItem::setExtension
+152 QGraphicsPixmapItem::extension
+
+Class QGraphicsPixmapItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsPixmapItem (0xb1f94800) 0
+ vptr=((& QGraphicsPixmapItem::_ZTV19QGraphicsPixmapItem) + 8u)
+ QGraphicsItem (0xb1f83ce4) 0
+ primary-for QGraphicsPixmapItem (0xb1f94800)
+
+Vtable for QGraphicsTextItem
+QGraphicsTextItem::_ZTV17QGraphicsTextItem: 82u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QGraphicsTextItem)
+8 QGraphicsTextItem::metaObject
+12 QGraphicsTextItem::qt_metacast
+16 QGraphicsTextItem::qt_metacall
+20 QGraphicsTextItem::~QGraphicsTextItem
+24 QGraphicsTextItem::~QGraphicsTextItem
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsTextItem::boundingRect
+60 QGraphicsTextItem::shape
+64 QGraphicsTextItem::contains
+68 QGraphicsTextItem::paint
+72 QGraphicsTextItem::isObscuredBy
+76 QGraphicsTextItem::opaqueArea
+80 QGraphicsTextItem::type
+84 QGraphicsTextItem::sceneEvent
+88 QGraphicsTextItem::mousePressEvent
+92 QGraphicsTextItem::mouseMoveEvent
+96 QGraphicsTextItem::mouseReleaseEvent
+100 QGraphicsTextItem::mouseDoubleClickEvent
+104 QGraphicsTextItem::contextMenuEvent
+108 QGraphicsTextItem::keyPressEvent
+112 QGraphicsTextItem::keyReleaseEvent
+116 QGraphicsTextItem::focusInEvent
+120 QGraphicsTextItem::focusOutEvent
+124 QGraphicsTextItem::dragEnterEvent
+128 QGraphicsTextItem::dragLeaveEvent
+132 QGraphicsTextItem::dragMoveEvent
+136 QGraphicsTextItem::dropEvent
+140 QGraphicsTextItem::inputMethodEvent
+144 QGraphicsTextItem::hoverEnterEvent
+148 QGraphicsTextItem::hoverMoveEvent
+152 QGraphicsTextItem::hoverLeaveEvent
+156 QGraphicsTextItem::inputMethodQuery
+160 QGraphicsTextItem::supportsExtension
+164 QGraphicsTextItem::setExtension
+168 QGraphicsTextItem::extension
+172 (int (*)(...))-0x000000008
+176 (int (*)(...))(& _ZTI17QGraphicsTextItem)
+180 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItemD1Ev
+184 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItemD0Ev
+188 QGraphicsItem::advance
+192 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem12boundingRectEv
+196 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem5shapeEv
+200 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem8containsERK7QPointF
+204 QGraphicsItem::collidesWithItem
+208 QGraphicsItem::collidesWithPath
+212 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem12isObscuredByEPK13QGraphicsItem
+216 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem10opaqueAreaEv
+220 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+224 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem4typeEv
+228 QGraphicsItem::sceneEventFilter
+232 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem10sceneEventEP6QEvent
+236 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem16contextMenuEventEP30QGraphicsSceneContextMenuEvent
+240 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem14dragEnterEventEP27QGraphicsSceneDragDropEvent
+244 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem14dragLeaveEventEP27QGraphicsSceneDragDropEvent
+248 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem13dragMoveEventEP27QGraphicsSceneDragDropEvent
+252 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem9dropEventEP27QGraphicsSceneDragDropEvent
+256 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem12focusInEventEP11QFocusEvent
+260 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem13focusOutEventEP11QFocusEvent
+264 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem15hoverEnterEventEP24QGraphicsSceneHoverEvent
+268 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem14hoverMoveEventEP24QGraphicsSceneHoverEvent
+272 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+276 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem13keyPressEventEP9QKeyEvent
+280 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem15keyReleaseEventEP9QKeyEvent
+284 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem15mousePressEventEP24QGraphicsSceneMouseEvent
+288 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem14mouseMoveEventEP24QGraphicsSceneMouseEvent
+292 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem17mouseReleaseEventEP24QGraphicsSceneMouseEvent
+296 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent
+300 QGraphicsItem::wheelEvent
+304 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem16inputMethodEventEP17QInputMethodEvent
+308 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem16inputMethodQueryEN2Qt16InputMethodQueryE
+312 QGraphicsItem::itemChange
+316 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem17supportsExtensionEN13QGraphicsItem9ExtensionE
+320 QGraphicsTextItem::_ZThn8_N17QGraphicsTextItem12setExtensionEN13QGraphicsItem9ExtensionERK8QVariant
+324 QGraphicsTextItem::_ZThn8_NK17QGraphicsTextItem9extensionERK8QVariant
+
+Class QGraphicsTextItem
+ size=20 align=4
+ base size=20 base align=4
+QGraphicsTextItem (0xb1f94940) 0
+ vptr=((& QGraphicsTextItem::_ZTV17QGraphicsTextItem) + 8u)
+ QGraphicsObject (0xb1fdd0f0) 0
+ primary-for QGraphicsTextItem (0xb1f94940)
+ QObject (0xb1f83e10) 0
+ primary-for QGraphicsObject (0xb1fdd0f0)
+ QGraphicsItem (0xb1f83e4c) 8
+ vptr=((& QGraphicsTextItem::_ZTV17QGraphicsTextItem) + 180u)
+
+Vtable for QGraphicsSimpleTextItem
+QGraphicsSimpleTextItem::_ZTV23QGraphicsSimpleTextItem: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QGraphicsSimpleTextItem)
+8 QGraphicsSimpleTextItem::~QGraphicsSimpleTextItem
+12 QGraphicsSimpleTextItem::~QGraphicsSimpleTextItem
+16 QGraphicsItem::advance
+20 QGraphicsSimpleTextItem::boundingRect
+24 QGraphicsSimpleTextItem::shape
+28 QGraphicsSimpleTextItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsSimpleTextItem::isObscuredBy
+44 QGraphicsSimpleTextItem::opaqueArea
+48 QGraphicsSimpleTextItem::paint
+52 QGraphicsSimpleTextItem::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsSimpleTextItem::supportsExtension
+148 QGraphicsSimpleTextItem::setExtension
+152 QGraphicsSimpleTextItem::extension
+
+Class QGraphicsSimpleTextItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsSimpleTextItem (0xb1f94bc0) 0
+ vptr=((& QGraphicsSimpleTextItem::_ZTV23QGraphicsSimpleTextItem) + 8u)
+ QAbstractGraphicsShapeItem (0xb1f94c00) 0
+ primary-for QGraphicsSimpleTextItem (0xb1f94bc0)
+ QGraphicsItem (0xb1ff103c) 0
+ primary-for QAbstractGraphicsShapeItem (0xb1f94c00)
+
+Vtable for QGraphicsItemGroup
+QGraphicsItemGroup::_ZTV18QGraphicsItemGroup: 39u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QGraphicsItemGroup)
+8 QGraphicsItemGroup::~QGraphicsItemGroup
+12 QGraphicsItemGroup::~QGraphicsItemGroup
+16 QGraphicsItem::advance
+20 QGraphicsItemGroup::boundingRect
+24 QGraphicsItem::shape
+28 QGraphicsItem::contains
+32 QGraphicsItem::collidesWithItem
+36 QGraphicsItem::collidesWithPath
+40 QGraphicsItemGroup::isObscuredBy
+44 QGraphicsItemGroup::opaqueArea
+48 QGraphicsItemGroup::paint
+52 QGraphicsItemGroup::type
+56 QGraphicsItem::sceneEventFilter
+60 QGraphicsItem::sceneEvent
+64 QGraphicsItem::contextMenuEvent
+68 QGraphicsItem::dragEnterEvent
+72 QGraphicsItem::dragLeaveEvent
+76 QGraphicsItem::dragMoveEvent
+80 QGraphicsItem::dropEvent
+84 QGraphicsItem::focusInEvent
+88 QGraphicsItem::focusOutEvent
+92 QGraphicsItem::hoverEnterEvent
+96 QGraphicsItem::hoverMoveEvent
+100 QGraphicsItem::hoverLeaveEvent
+104 QGraphicsItem::keyPressEvent
+108 QGraphicsItem::keyReleaseEvent
+112 QGraphicsItem::mousePressEvent
+116 QGraphicsItem::mouseMoveEvent
+120 QGraphicsItem::mouseReleaseEvent
+124 QGraphicsItem::mouseDoubleClickEvent
+128 QGraphicsItem::wheelEvent
+132 QGraphicsItem::inputMethodEvent
+136 QGraphicsItem::inputMethodQuery
+140 QGraphicsItem::itemChange
+144 QGraphicsItem::supportsExtension
+148 QGraphicsItem::setExtension
+152 QGraphicsItem::extension
+
+Class QGraphicsItemGroup
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsItemGroup (0xb1f94d00) 0
+ vptr=((& QGraphicsItemGroup::_ZTV18QGraphicsItemGroup) + 8u)
+ QGraphicsItem (0xb1ff1168) 0
+ primary-for QGraphicsItemGroup (0xb1f94d00)
+
+Vtable for QGraphicsLayoutItem
+QGraphicsLayoutItem::_ZTV19QGraphicsLayoutItem: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QGraphicsLayoutItem)
+8 QGraphicsLayoutItem::~QGraphicsLayoutItem
+12 QGraphicsLayoutItem::~QGraphicsLayoutItem
+16 QGraphicsLayoutItem::setGeometry
+20 QGraphicsLayoutItem::getContentsMargins
+24 QGraphicsLayoutItem::updateGeometry
+28 __cxa_pure_virtual
+
+Class QGraphicsLayoutItem
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsLayoutItem (0xb1ff13fc) 0
+ vptr=((& QGraphicsLayoutItem::_ZTV19QGraphicsLayoutItem) + 8u)
+
+Vtable for QGraphicsLayout
+QGraphicsLayout::_ZTV15QGraphicsLayout: 13u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QGraphicsLayout)
+8 QGraphicsLayout::~QGraphicsLayout
+12 QGraphicsLayout::~QGraphicsLayout
+16 QGraphicsLayoutItem::setGeometry
+20 QGraphicsLayout::getContentsMargins
+24 QGraphicsLayout::updateGeometry
+28 __cxa_pure_virtual
+32 QGraphicsLayout::invalidate
+36 QGraphicsLayout::widgetEvent
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 __cxa_pure_virtual
+
+Class QGraphicsLayout
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsLayout (0xb20097c0) 0
+ vptr=((& QGraphicsLayout::_ZTV15QGraphicsLayout) + 8u)
+ QGraphicsLayoutItem (0xb1ff199c) 0
+ primary-for QGraphicsLayout (0xb20097c0)
+
+Vtable for QGraphicsAnchor
+QGraphicsAnchor::_ZTV15QGraphicsAnchor: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QGraphicsAnchor)
+8 QGraphicsAnchor::metaObject
+12 QGraphicsAnchor::qt_metacast
+16 QGraphicsAnchor::qt_metacall
+20 QGraphicsAnchor::~QGraphicsAnchor
+24 QGraphicsAnchor::~QGraphicsAnchor
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QGraphicsAnchor
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsAnchor (0xb2009b00) 0
+ vptr=((& QGraphicsAnchor::_ZTV15QGraphicsAnchor) + 8u)
+ QObject (0xb1ff1e4c) 0
+ primary-for QGraphicsAnchor (0xb2009b00)
+
+Vtable for QGraphicsAnchorLayout
+QGraphicsAnchorLayout::_ZTV21QGraphicsAnchorLayout: 13u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QGraphicsAnchorLayout)
+8 QGraphicsAnchorLayout::~QGraphicsAnchorLayout
+12 QGraphicsAnchorLayout::~QGraphicsAnchorLayout
+16 QGraphicsAnchorLayout::setGeometry
+20 QGraphicsLayout::getContentsMargins
+24 QGraphicsLayout::updateGeometry
+28 QGraphicsAnchorLayout::sizeHint
+32 QGraphicsAnchorLayout::invalidate
+36 QGraphicsLayout::widgetEvent
+40 QGraphicsAnchorLayout::count
+44 QGraphicsAnchorLayout::itemAt
+48 QGraphicsAnchorLayout::removeAt
+
+Class QGraphicsAnchorLayout
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsAnchorLayout (0xb2009dc0) 0
+ vptr=((& QGraphicsAnchorLayout::_ZTV21QGraphicsAnchorLayout) + 8u)
+ QGraphicsLayout (0xb2009e00) 0
+ primary-for QGraphicsAnchorLayout (0xb2009dc0)
+ QGraphicsLayoutItem (0xb1e3e078) 0
+ primary-for QGraphicsLayout (0xb2009e00)
+
+Vtable for QGraphicsGridLayout
+QGraphicsGridLayout::_ZTV19QGraphicsGridLayout: 13u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QGraphicsGridLayout)
+8 QGraphicsGridLayout::~QGraphicsGridLayout
+12 QGraphicsGridLayout::~QGraphicsGridLayout
+16 QGraphicsGridLayout::setGeometry
+20 QGraphicsLayout::getContentsMargins
+24 QGraphicsLayout::updateGeometry
+28 QGraphicsGridLayout::sizeHint
+32 QGraphicsGridLayout::invalidate
+36 QGraphicsLayout::widgetEvent
+40 QGraphicsGridLayout::count
+44 QGraphicsGridLayout::itemAt
+48 QGraphicsGridLayout::removeAt
+
+Class QGraphicsGridLayout
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsGridLayout (0xb2009f00) 0
+ vptr=((& QGraphicsGridLayout::_ZTV19QGraphicsGridLayout) + 8u)
+ QGraphicsLayout (0xb2009f40) 0
+ primary-for QGraphicsGridLayout (0xb2009f00)
+ QGraphicsLayoutItem (0xb1e3e1a4) 0
+ primary-for QGraphicsLayout (0xb2009f40)
+
+Vtable for QGraphicsItemAnimation
+QGraphicsItemAnimation::_ZTV22QGraphicsItemAnimation: 16u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QGraphicsItemAnimation)
+8 QGraphicsItemAnimation::metaObject
+12 QGraphicsItemAnimation::qt_metacast
+16 QGraphicsItemAnimation::qt_metacall
+20 QGraphicsItemAnimation::~QGraphicsItemAnimation
+24 QGraphicsItemAnimation::~QGraphicsItemAnimation
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsItemAnimation::beforeAnimationStep
+60 QGraphicsItemAnimation::afterAnimationStep
+
+Class QGraphicsItemAnimation
+ size=12 align=4
+ base size=12 base align=4
+QGraphicsItemAnimation (0xb1e57080) 0
+ vptr=((& QGraphicsItemAnimation::_ZTV22QGraphicsItemAnimation) + 8u)
+ QObject (0xb1e3e2d0) 0
+ primary-for QGraphicsItemAnimation (0xb1e57080)
+
+Vtable for QGraphicsLinearLayout
+QGraphicsLinearLayout::_ZTV21QGraphicsLinearLayout: 13u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QGraphicsLinearLayout)
+8 QGraphicsLinearLayout::~QGraphicsLinearLayout
+12 QGraphicsLinearLayout::~QGraphicsLinearLayout
+16 QGraphicsLinearLayout::setGeometry
+20 QGraphicsLayout::getContentsMargins
+24 QGraphicsLayout::updateGeometry
+28 QGraphicsLinearLayout::sizeHint
+32 QGraphicsLinearLayout::invalidate
+36 QGraphicsLayout::widgetEvent
+40 QGraphicsLinearLayout::count
+44 QGraphicsLinearLayout::itemAt
+48 QGraphicsLinearLayout::removeAt
+
+Class QGraphicsLinearLayout
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsLinearLayout (0xb1e572c0) 0
+ vptr=((& QGraphicsLinearLayout::_ZTV21QGraphicsLinearLayout) + 8u)
+ QGraphicsLayout (0xb1e57300) 0
+ primary-for QGraphicsLinearLayout (0xb1e572c0)
+ QGraphicsLayoutItem (0xb1e3e3fc) 0
+ primary-for QGraphicsLayout (0xb1e57300)
+
+Vtable for QGraphicsWidget
+QGraphicsWidget::_ZTV15QGraphicsWidget: 92u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QGraphicsWidget)
+8 QGraphicsWidget::metaObject
+12 QGraphicsWidget::qt_metacast
+16 QGraphicsWidget::qt_metacall
+20 QGraphicsWidget::~QGraphicsWidget
+24 QGraphicsWidget::~QGraphicsWidget
+28 QGraphicsWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsWidget::setGeometry
+60 QGraphicsWidget::getContentsMargins
+64 QGraphicsWidget::type
+68 QGraphicsWidget::paint
+72 QGraphicsWidget::paintWindowFrame
+76 QGraphicsWidget::boundingRect
+80 QGraphicsWidget::shape
+84 QGraphicsWidget::initStyleOption
+88 QGraphicsWidget::sizeHint
+92 QGraphicsWidget::updateGeometry
+96 QGraphicsWidget::itemChange
+100 QGraphicsWidget::propertyChange
+104 QGraphicsWidget::sceneEvent
+108 QGraphicsWidget::windowFrameEvent
+112 QGraphicsWidget::windowFrameSectionAt
+116 QGraphicsWidget::changeEvent
+120 QGraphicsWidget::closeEvent
+124 QGraphicsWidget::focusInEvent
+128 QGraphicsWidget::focusNextPrevChild
+132 QGraphicsWidget::focusOutEvent
+136 QGraphicsWidget::hideEvent
+140 QGraphicsWidget::moveEvent
+144 QGraphicsWidget::polishEvent
+148 QGraphicsWidget::resizeEvent
+152 QGraphicsWidget::showEvent
+156 QGraphicsWidget::hoverMoveEvent
+160 QGraphicsWidget::hoverLeaveEvent
+164 QGraphicsWidget::grabMouseEvent
+168 QGraphicsWidget::ungrabMouseEvent
+172 QGraphicsWidget::grabKeyboardEvent
+176 QGraphicsWidget::ungrabKeyboardEvent
+180 (int (*)(...))-0x000000008
+184 (int (*)(...))(& _ZTI15QGraphicsWidget)
+188 QGraphicsWidget::_ZThn8_N15QGraphicsWidgetD1Ev
+192 QGraphicsWidget::_ZThn8_N15QGraphicsWidgetD0Ev
+196 QGraphicsItem::advance
+200 QGraphicsWidget::_ZThn8_NK15QGraphicsWidget12boundingRectEv
+204 QGraphicsWidget::_ZThn8_NK15QGraphicsWidget5shapeEv
+208 QGraphicsItem::contains
+212 QGraphicsItem::collidesWithItem
+216 QGraphicsItem::collidesWithPath
+220 QGraphicsItem::isObscuredBy
+224 QGraphicsItem::opaqueArea
+228 QGraphicsWidget::_ZThn8_N15QGraphicsWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+232 QGraphicsWidget::_ZThn8_NK15QGraphicsWidget4typeEv
+236 QGraphicsItem::sceneEventFilter
+240 QGraphicsWidget::_ZThn8_N15QGraphicsWidget10sceneEventEP6QEvent
+244 QGraphicsItem::contextMenuEvent
+248 QGraphicsItem::dragEnterEvent
+252 QGraphicsItem::dragLeaveEvent
+256 QGraphicsItem::dragMoveEvent
+260 QGraphicsItem::dropEvent
+264 QGraphicsWidget::_ZThn8_N15QGraphicsWidget12focusInEventEP11QFocusEvent
+268 QGraphicsWidget::_ZThn8_N15QGraphicsWidget13focusOutEventEP11QFocusEvent
+272 QGraphicsItem::hoverEnterEvent
+276 QGraphicsWidget::_ZThn8_N15QGraphicsWidget14hoverMoveEventEP24QGraphicsSceneHoverEvent
+280 QGraphicsWidget::_ZThn8_N15QGraphicsWidget15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+284 QGraphicsItem::keyPressEvent
+288 QGraphicsItem::keyReleaseEvent
+292 QGraphicsItem::mousePressEvent
+296 QGraphicsItem::mouseMoveEvent
+300 QGraphicsItem::mouseReleaseEvent
+304 QGraphicsItem::mouseDoubleClickEvent
+308 QGraphicsItem::wheelEvent
+312 QGraphicsItem::inputMethodEvent
+316 QGraphicsItem::inputMethodQuery
+320 QGraphicsWidget::_ZThn8_N15QGraphicsWidget10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant
+324 QGraphicsItem::supportsExtension
+328 QGraphicsItem::setExtension
+332 QGraphicsItem::extension
+336 (int (*)(...))-0x000000010
+340 (int (*)(...))(& _ZTI15QGraphicsWidget)
+344 QGraphicsWidget::_ZThn16_N15QGraphicsWidgetD1Ev
+348 QGraphicsWidget::_ZThn16_N15QGraphicsWidgetD0Ev
+352 QGraphicsWidget::_ZThn16_N15QGraphicsWidget11setGeometryERK6QRectF
+356 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget18getContentsMarginsEPdS0_S0_S0_
+360 QGraphicsWidget::_ZThn16_N15QGraphicsWidget14updateGeometryEv
+364 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget8sizeHintEN2Qt8SizeHintERK6QSizeF
+
+Class QGraphicsWidget
+ size=24 align=4
+ base size=24 base align=4
+QGraphicsWidget (0xb1e6fe10) 0
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 8u)
+ QGraphicsObject (0xb1e6fe60) 0
+ primary-for QGraphicsWidget (0xb1e6fe10)
+ QObject (0xb1e3e528) 0
+ primary-for QGraphicsObject (0xb1e6fe60)
+ QGraphicsItem (0xb1e3e564) 8
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 188u)
+ QGraphicsLayoutItem (0xb1e3e5a0) 16
+ vptr=((& QGraphicsWidget::_ZTV15QGraphicsWidget) + 344u)
+
+Vtable for QGraphicsProxyWidget
+QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget: 105u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+8 QGraphicsProxyWidget::metaObject
+12 QGraphicsProxyWidget::qt_metacast
+16 QGraphicsProxyWidget::qt_metacall
+20 QGraphicsProxyWidget::~QGraphicsProxyWidget
+24 QGraphicsProxyWidget::~QGraphicsProxyWidget
+28 QGraphicsProxyWidget::event
+32 QGraphicsProxyWidget::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsProxyWidget::setGeometry
+60 QGraphicsWidget::getContentsMargins
+64 QGraphicsProxyWidget::type
+68 QGraphicsProxyWidget::paint
+72 QGraphicsWidget::paintWindowFrame
+76 QGraphicsWidget::boundingRect
+80 QGraphicsWidget::shape
+84 QGraphicsWidget::initStyleOption
+88 QGraphicsProxyWidget::sizeHint
+92 QGraphicsWidget::updateGeometry
+96 QGraphicsProxyWidget::itemChange
+100 QGraphicsWidget::propertyChange
+104 QGraphicsWidget::sceneEvent
+108 QGraphicsWidget::windowFrameEvent
+112 QGraphicsWidget::windowFrameSectionAt
+116 QGraphicsWidget::changeEvent
+120 QGraphicsWidget::closeEvent
+124 QGraphicsProxyWidget::focusInEvent
+128 QGraphicsProxyWidget::focusNextPrevChild
+132 QGraphicsProxyWidget::focusOutEvent
+136 QGraphicsProxyWidget::hideEvent
+140 QGraphicsWidget::moveEvent
+144 QGraphicsWidget::polishEvent
+148 QGraphicsProxyWidget::resizeEvent
+152 QGraphicsProxyWidget::showEvent
+156 QGraphicsProxyWidget::hoverMoveEvent
+160 QGraphicsProxyWidget::hoverLeaveEvent
+164 QGraphicsProxyWidget::grabMouseEvent
+168 QGraphicsProxyWidget::ungrabMouseEvent
+172 QGraphicsWidget::grabKeyboardEvent
+176 QGraphicsWidget::ungrabKeyboardEvent
+180 QGraphicsProxyWidget::contextMenuEvent
+184 QGraphicsProxyWidget::dragEnterEvent
+188 QGraphicsProxyWidget::dragLeaveEvent
+192 QGraphicsProxyWidget::dragMoveEvent
+196 QGraphicsProxyWidget::dropEvent
+200 QGraphicsProxyWidget::hoverEnterEvent
+204 QGraphicsProxyWidget::mouseMoveEvent
+208 QGraphicsProxyWidget::mousePressEvent
+212 QGraphicsProxyWidget::mouseReleaseEvent
+216 QGraphicsProxyWidget::mouseDoubleClickEvent
+220 QGraphicsProxyWidget::wheelEvent
+224 QGraphicsProxyWidget::keyPressEvent
+228 QGraphicsProxyWidget::keyReleaseEvent
+232 (int (*)(...))-0x000000008
+236 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+240 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidgetD1Ev
+244 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidgetD0Ev
+248 QGraphicsItem::advance
+252 QGraphicsWidget::_ZThn8_NK15QGraphicsWidget12boundingRectEv
+256 QGraphicsWidget::_ZThn8_NK15QGraphicsWidget5shapeEv
+260 QGraphicsItem::contains
+264 QGraphicsItem::collidesWithItem
+268 QGraphicsItem::collidesWithPath
+272 QGraphicsItem::isObscuredBy
+276 QGraphicsItem::opaqueArea
+280 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget
+284 QGraphicsProxyWidget::_ZThn8_NK20QGraphicsProxyWidget4typeEv
+288 QGraphicsItem::sceneEventFilter
+292 QGraphicsWidget::_ZThn8_N15QGraphicsWidget10sceneEventEP6QEvent
+296 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget16contextMenuEventEP30QGraphicsSceneContextMenuEvent
+300 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget14dragEnterEventEP27QGraphicsSceneDragDropEvent
+304 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget14dragLeaveEventEP27QGraphicsSceneDragDropEvent
+308 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget13dragMoveEventEP27QGraphicsSceneDragDropEvent
+312 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget9dropEventEP27QGraphicsSceneDragDropEvent
+316 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget12focusInEventEP11QFocusEvent
+320 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget13focusOutEventEP11QFocusEvent
+324 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget15hoverEnterEventEP24QGraphicsSceneHoverEvent
+328 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget14hoverMoveEventEP24QGraphicsSceneHoverEvent
+332 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget15hoverLeaveEventEP24QGraphicsSceneHoverEvent
+336 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget13keyPressEventEP9QKeyEvent
+340 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget15keyReleaseEventEP9QKeyEvent
+344 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget15mousePressEventEP24QGraphicsSceneMouseEvent
+348 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget14mouseMoveEventEP24QGraphicsSceneMouseEvent
+352 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget17mouseReleaseEventEP24QGraphicsSceneMouseEvent
+356 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent
+360 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget10wheelEventEP24QGraphicsSceneWheelEvent
+364 QGraphicsItem::inputMethodEvent
+368 QGraphicsItem::inputMethodQuery
+372 QGraphicsProxyWidget::_ZThn8_N20QGraphicsProxyWidget10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant
+376 QGraphicsItem::supportsExtension
+380 QGraphicsItem::setExtension
+384 QGraphicsItem::extension
+388 (int (*)(...))-0x000000010
+392 (int (*)(...))(& _ZTI20QGraphicsProxyWidget)
+396 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidgetD1Ev
+400 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidgetD0Ev
+404 QGraphicsProxyWidget::_ZThn16_N20QGraphicsProxyWidget11setGeometryERK6QRectF
+408 QGraphicsWidget::_ZThn16_NK15QGraphicsWidget18getContentsMarginsEPdS0_S0_S0_
+412 QGraphicsWidget::_ZThn16_N15QGraphicsWidget14updateGeometryEv
+416 QGraphicsProxyWidget::_ZThn16_NK20QGraphicsProxyWidget8sizeHintEN2Qt8SizeHintERK6QSizeF
+
+Class QGraphicsProxyWidget
+ size=24 align=4
+ base size=24 base align=4
+QGraphicsProxyWidget (0xb1e57840) 0
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 8u)
+ QGraphicsWidget (0xb1e970f0) 0
+ primary-for QGraphicsProxyWidget (0xb1e57840)
+ QGraphicsObject (0xb1e97140) 0
+ primary-for QGraphicsWidget (0xb1e970f0)
+ QObject (0xb1e3e924) 0
+ primary-for QGraphicsObject (0xb1e97140)
+ QGraphicsItem (0xb1e3e960) 8
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 240u)
+ QGraphicsLayoutItem (0xb1e3e99c) 16
+ vptr=((& QGraphicsProxyWidget::_ZTV20QGraphicsProxyWidget) + 396u)
+
+Vtable for QGraphicsScene
+QGraphicsScene::_ZTV14QGraphicsScene: 34u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QGraphicsScene)
+8 QGraphicsScene::metaObject
+12 QGraphicsScene::qt_metacast
+16 QGraphicsScene::qt_metacall
+20 QGraphicsScene::~QGraphicsScene
+24 QGraphicsScene::~QGraphicsScene
+28 QGraphicsScene::event
+32 QGraphicsScene::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsScene::inputMethodQuery
+60 QGraphicsScene::contextMenuEvent
+64 QGraphicsScene::dragEnterEvent
+68 QGraphicsScene::dragMoveEvent
+72 QGraphicsScene::dragLeaveEvent
+76 QGraphicsScene::dropEvent
+80 QGraphicsScene::focusInEvent
+84 QGraphicsScene::focusOutEvent
+88 QGraphicsScene::helpEvent
+92 QGraphicsScene::keyPressEvent
+96 QGraphicsScene::keyReleaseEvent
+100 QGraphicsScene::mousePressEvent
+104 QGraphicsScene::mouseMoveEvent
+108 QGraphicsScene::mouseReleaseEvent
+112 QGraphicsScene::mouseDoubleClickEvent
+116 QGraphicsScene::wheelEvent
+120 QGraphicsScene::inputMethodEvent
+124 QGraphicsScene::drawBackground
+128 QGraphicsScene::drawForeground
+132 QGraphicsScene::drawItems
+
+Class QGraphicsScene
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsScene (0xb1e57b40) 0
+ vptr=((& QGraphicsScene::_ZTV14QGraphicsScene) + 8u)
+ QObject (0xb1e3ec6c) 0
+ primary-for QGraphicsScene (0xb1e57b40)
+
+Vtable for QGraphicsSceneEvent
+QGraphicsSceneEvent::_ZTV19QGraphicsSceneEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QGraphicsSceneEvent)
+8 QGraphicsSceneEvent::~QGraphicsSceneEvent
+12 QGraphicsSceneEvent::~QGraphicsSceneEvent
+
+Class QGraphicsSceneEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneEvent (0xb1ef8300) 0
+ vptr=((& QGraphicsSceneEvent::_ZTV19QGraphicsSceneEvent) + 8u)
+ QEvent (0xb1ef5870) 0
+ primary-for QGraphicsSceneEvent (0xb1ef8300)
+
+Vtable for QGraphicsSceneMouseEvent
+QGraphicsSceneMouseEvent::_ZTV24QGraphicsSceneMouseEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QGraphicsSceneMouseEvent)
+8 QGraphicsSceneMouseEvent::~QGraphicsSceneMouseEvent
+12 QGraphicsSceneMouseEvent::~QGraphicsSceneMouseEvent
+
+Class QGraphicsSceneMouseEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneMouseEvent (0xb1ef8440) 0
+ vptr=((& QGraphicsSceneMouseEvent::_ZTV24QGraphicsSceneMouseEvent) + 8u)
+ QGraphicsSceneEvent (0xb1ef8480) 0
+ primary-for QGraphicsSceneMouseEvent (0xb1ef8440)
+ QEvent (0xb1ef59d8) 0
+ primary-for QGraphicsSceneEvent (0xb1ef8480)
+
+Vtable for QGraphicsSceneWheelEvent
+QGraphicsSceneWheelEvent::_ZTV24QGraphicsSceneWheelEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QGraphicsSceneWheelEvent)
+8 QGraphicsSceneWheelEvent::~QGraphicsSceneWheelEvent
+12 QGraphicsSceneWheelEvent::~QGraphicsSceneWheelEvent
+
+Class QGraphicsSceneWheelEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneWheelEvent (0xb1ef8580) 0
+ vptr=((& QGraphicsSceneWheelEvent::_ZTV24QGraphicsSceneWheelEvent) + 8u)
+ QGraphicsSceneEvent (0xb1ef85c0) 0
+ primary-for QGraphicsSceneWheelEvent (0xb1ef8580)
+ QEvent (0xb1ef5b04) 0
+ primary-for QGraphicsSceneEvent (0xb1ef85c0)
+
+Vtable for QGraphicsSceneContextMenuEvent
+QGraphicsSceneContextMenuEvent::_ZTV30QGraphicsSceneContextMenuEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI30QGraphicsSceneContextMenuEvent)
+8 QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent
+12 QGraphicsSceneContextMenuEvent::~QGraphicsSceneContextMenuEvent
+
+Class QGraphicsSceneContextMenuEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneContextMenuEvent (0xb1ef86c0) 0
+ vptr=((& QGraphicsSceneContextMenuEvent::_ZTV30QGraphicsSceneContextMenuEvent) + 8u)
+ QGraphicsSceneEvent (0xb1ef8700) 0
+ primary-for QGraphicsSceneContextMenuEvent (0xb1ef86c0)
+ QEvent (0xb1ef5c30) 0
+ primary-for QGraphicsSceneEvent (0xb1ef8700)
+
+Vtable for QGraphicsSceneHoverEvent
+QGraphicsSceneHoverEvent::_ZTV24QGraphicsSceneHoverEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QGraphicsSceneHoverEvent)
+8 QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent
+12 QGraphicsSceneHoverEvent::~QGraphicsSceneHoverEvent
+
+Class QGraphicsSceneHoverEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneHoverEvent (0xb1ef8800) 0
+ vptr=((& QGraphicsSceneHoverEvent::_ZTV24QGraphicsSceneHoverEvent) + 8u)
+ QGraphicsSceneEvent (0xb1ef8840) 0
+ primary-for QGraphicsSceneHoverEvent (0xb1ef8800)
+ QEvent (0xb1ef5d5c) 0
+ primary-for QGraphicsSceneEvent (0xb1ef8840)
+
+Vtable for QGraphicsSceneHelpEvent
+QGraphicsSceneHelpEvent::_ZTV23QGraphicsSceneHelpEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QGraphicsSceneHelpEvent)
+8 QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent
+12 QGraphicsSceneHelpEvent::~QGraphicsSceneHelpEvent
+
+Class QGraphicsSceneHelpEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneHelpEvent (0xb1ef8940) 0
+ vptr=((& QGraphicsSceneHelpEvent::_ZTV23QGraphicsSceneHelpEvent) + 8u)
+ QGraphicsSceneEvent (0xb1ef8980) 0
+ primary-for QGraphicsSceneHelpEvent (0xb1ef8940)
+ QEvent (0xb1ef5e88) 0
+ primary-for QGraphicsSceneEvent (0xb1ef8980)
+
+Vtable for QGraphicsSceneDragDropEvent
+QGraphicsSceneDragDropEvent::_ZTV27QGraphicsSceneDragDropEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QGraphicsSceneDragDropEvent)
+8 QGraphicsSceneDragDropEvent::~QGraphicsSceneDragDropEvent
+12 QGraphicsSceneDragDropEvent::~QGraphicsSceneDragDropEvent
+
+Class QGraphicsSceneDragDropEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneDragDropEvent (0xb1ef8a80) 0
+ vptr=((& QGraphicsSceneDragDropEvent::_ZTV27QGraphicsSceneDragDropEvent) + 8u)
+ QGraphicsSceneEvent (0xb1ef8ac0) 0
+ primary-for QGraphicsSceneDragDropEvent (0xb1ef8a80)
+ QEvent (0xb1ef5fb4) 0
+ primary-for QGraphicsSceneEvent (0xb1ef8ac0)
+
+Vtable for QGraphicsSceneResizeEvent
+QGraphicsSceneResizeEvent::_ZTV25QGraphicsSceneResizeEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QGraphicsSceneResizeEvent)
+8 QGraphicsSceneResizeEvent::~QGraphicsSceneResizeEvent
+12 QGraphicsSceneResizeEvent::~QGraphicsSceneResizeEvent
+
+Class QGraphicsSceneResizeEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneResizeEvent (0xb1ef8bc0) 0
+ vptr=((& QGraphicsSceneResizeEvent::_ZTV25QGraphicsSceneResizeEvent) + 8u)
+ QGraphicsSceneEvent (0xb1ef8c00) 0
+ primary-for QGraphicsSceneResizeEvent (0xb1ef8bc0)
+ QEvent (0xb1d500f0) 0
+ primary-for QGraphicsSceneEvent (0xb1ef8c00)
+
+Vtable for QGraphicsSceneMoveEvent
+QGraphicsSceneMoveEvent::_ZTV23QGraphicsSceneMoveEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QGraphicsSceneMoveEvent)
+8 QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent
+12 QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent
+
+Class QGraphicsSceneMoveEvent
+ size=16 align=4
+ base size=16 base align=4
+QGraphicsSceneMoveEvent (0xb1ef8d00) 0
+ vptr=((& QGraphicsSceneMoveEvent::_ZTV23QGraphicsSceneMoveEvent) + 8u)
+ QGraphicsSceneEvent (0xb1ef8d40) 0
+ primary-for QGraphicsSceneMoveEvent (0xb1ef8d00)
+ QEvent (0xb1d5021c) 0
+ primary-for QGraphicsSceneEvent (0xb1ef8d40)
+
+Vtable for QGraphicsTransform
+QGraphicsTransform::_ZTV18QGraphicsTransform: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QGraphicsTransform)
+8 QGraphicsTransform::metaObject
+12 QGraphicsTransform::qt_metacast
+16 QGraphicsTransform::qt_metacall
+20 QGraphicsTransform::~QGraphicsTransform
+24 QGraphicsTransform::~QGraphicsTransform
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+
+Class QGraphicsTransform
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsTransform (0xb1ef8e40) 0
+ vptr=((& QGraphicsTransform::_ZTV18QGraphicsTransform) + 8u)
+ QObject (0xb1d50348) 0
+ primary-for QGraphicsTransform (0xb1ef8e40)
+
+Vtable for QGraphicsScale
+QGraphicsScale::_ZTV14QGraphicsScale: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QGraphicsScale)
+8 QGraphicsScale::metaObject
+12 QGraphicsScale::qt_metacast
+16 QGraphicsScale::qt_metacall
+20 QGraphicsScale::~QGraphicsScale
+24 QGraphicsScale::~QGraphicsScale
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsScale::applyTo
+
+Class QGraphicsScale
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsScale (0xb1d62100) 0
+ vptr=((& QGraphicsScale::_ZTV14QGraphicsScale) + 8u)
+ QGraphicsTransform (0xb1d62140) 0
+ primary-for QGraphicsScale (0xb1d62100)
+ QObject (0xb1d50564) 0
+ primary-for QGraphicsTransform (0xb1d62140)
+
+Vtable for QGraphicsRotation
+QGraphicsRotation::_ZTV17QGraphicsRotation: 15u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QGraphicsRotation)
+8 QGraphicsRotation::metaObject
+12 QGraphicsRotation::qt_metacast
+16 QGraphicsRotation::qt_metacall
+20 QGraphicsRotation::~QGraphicsRotation
+24 QGraphicsRotation::~QGraphicsRotation
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsRotation::applyTo
+
+Class QGraphicsRotation
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsRotation (0xb1d62400) 0
+ vptr=((& QGraphicsRotation::_ZTV17QGraphicsRotation) + 8u)
+ QGraphicsTransform (0xb1d62440) 0
+ primary-for QGraphicsRotation (0xb1d62400)
+ QObject (0xb1d50780) 0
+ primary-for QGraphicsTransform (0xb1d62440)
+
+Vtable for QGraphicsView
+QGraphicsView::_ZTV13QGraphicsView: 68u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QGraphicsView)
+8 QGraphicsView::metaObject
+12 QGraphicsView::qt_metacast
+16 QGraphicsView::qt_metacall
+20 QGraphicsView::~QGraphicsView
+24 QGraphicsView::~QGraphicsView
+28 QGraphicsView::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QGraphicsView::sizeHint
+68 QAbstractScrollArea::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QGraphicsView::mousePressEvent
+84 QGraphicsView::mouseReleaseEvent
+88 QGraphicsView::mouseDoubleClickEvent
+92 QGraphicsView::mouseMoveEvent
+96 QGraphicsView::wheelEvent
+100 QGraphicsView::keyPressEvent
+104 QGraphicsView::keyReleaseEvent
+108 QGraphicsView::focusInEvent
+112 QGraphicsView::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QGraphicsView::paintEvent
+128 QWidget::moveEvent
+132 QGraphicsView::resizeEvent
+136 QWidget::closeEvent
+140 QGraphicsView::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QGraphicsView::dragEnterEvent
+156 QGraphicsView::dragMoveEvent
+160 QGraphicsView::dragLeaveEvent
+164 QGraphicsView::dropEvent
+168 QGraphicsView::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFrame::changeEvent
+184 QWidget::metric
+188 QGraphicsView::inputMethodEvent
+192 QGraphicsView::inputMethodQuery
+196 QGraphicsView::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QGraphicsView::viewportEvent
+228 QGraphicsView::scrollContentsBy
+232 QGraphicsView::drawBackground
+236 QGraphicsView::drawForeground
+240 QGraphicsView::drawItems
+244 (int (*)(...))-0x000000008
+248 (int (*)(...))(& _ZTI13QGraphicsView)
+252 QGraphicsView::_ZThn8_N13QGraphicsViewD1Ev
+256 QGraphicsView::_ZThn8_N13QGraphicsViewD0Ev
+260 QWidget::_ZThn8_NK7QWidget7devTypeEv
+264 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+268 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QGraphicsView
+ size=20 align=4
+ base size=20 base align=4
+QGraphicsView (0xb1d62700) 0
+ vptr=((& QGraphicsView::_ZTV13QGraphicsView) + 8u)
+ QAbstractScrollArea (0xb1d62740) 0
+ primary-for QGraphicsView (0xb1d62700)
+ QFrame (0xb1d62780) 0
+ primary-for QAbstractScrollArea (0xb1d62740)
+ QWidget (0xb1d793c0) 0
+ primary-for QFrame (0xb1d62780)
+ QObject (0xb1d5099c) 0
+ primary-for QWidget (0xb1d793c0)
+ QPaintDevice (0xb1d509d8) 8
+ vptr=((& QGraphicsView::_ZTV13QGraphicsView) + 252u)
+
+Class QVFbHeader
+ size=1084 align=4
+ base size=1084 base align=4
+QVFbHeader (0xb1dfd348) 0
+
+Class QVFbKeyData
+ size=12 align=4
+ base size=12 base align=4
+QVFbKeyData (0xb1dfd384) 0
+
+Vtable for QWSEmbedWidget
+QWSEmbedWidget::_ZTV14QWSEmbedWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI14QWSEmbedWidget)
+8 QWSEmbedWidget::metaObject
+12 QWSEmbedWidget::qt_metacast
+16 QWSEmbedWidget::qt_metacall
+20 QWSEmbedWidget::~QWSEmbedWidget
+24 QWSEmbedWidget::~QWSEmbedWidget
+28 QWidget::event
+32 QWSEmbedWidget::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWSEmbedWidget::moveEvent
+132 QWSEmbedWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWSEmbedWidget::showEvent
+172 QWSEmbedWidget::hideEvent
+176 QWidget::x11Event
+180 QWSEmbedWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI14QWSEmbedWidget)
+232 QWSEmbedWidget::_ZThn8_N14QWSEmbedWidgetD1Ev
+236 QWSEmbedWidget::_ZThn8_N14QWSEmbedWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWSEmbedWidget
+ size=20 align=4
+ base size=20 base align=4
+QWSEmbedWidget (0xb1e04040) 0
+ vptr=((& QWSEmbedWidget::_ZTV14QWSEmbedWidget) + 8u)
+ QWidget (0xb1e00910) 0
+ primary-for QWSEmbedWidget (0xb1e04040)
+ QObject (0xb1dfd3c0) 0
+ primary-for QWidget (0xb1e00910)
+ QPaintDevice (0xb1dfd3fc) 8
+ vptr=((& QWSEmbedWidget::_ZTV14QWSEmbedWidget) + 232u)
+
+Vtable for QGraphicsEffect
+QGraphicsEffect::_ZTV15QGraphicsEffect: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QGraphicsEffect)
+8 QGraphicsEffect::metaObject
+12 QGraphicsEffect::qt_metacast
+16 QGraphicsEffect::qt_metacall
+20 QGraphicsEffect::~QGraphicsEffect
+24 QGraphicsEffect::~QGraphicsEffect
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsEffect::boundingRectFor
+60 __cxa_pure_virtual
+64 QGraphicsEffect::sourceChanged
+
+Class QGraphicsEffect
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsEffect (0xb1e04340) 0
+ vptr=((& QGraphicsEffect::_ZTV15QGraphicsEffect) + 8u)
+ QObject (0xb1dfd618) 0
+ primary-for QGraphicsEffect (0xb1e04340)
+
+Vtable for QGraphicsColorizeEffect
+QGraphicsColorizeEffect::_ZTV23QGraphicsColorizeEffect: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QGraphicsColorizeEffect)
+8 QGraphicsColorizeEffect::metaObject
+12 QGraphicsColorizeEffect::qt_metacast
+16 QGraphicsColorizeEffect::qt_metacall
+20 QGraphicsColorizeEffect::~QGraphicsColorizeEffect
+24 QGraphicsColorizeEffect::~QGraphicsColorizeEffect
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsEffect::boundingRectFor
+60 QGraphicsColorizeEffect::draw
+64 QGraphicsEffect::sourceChanged
+
+Class QGraphicsColorizeEffect
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsColorizeEffect (0xb1e04740) 0
+ vptr=((& QGraphicsColorizeEffect::_ZTV23QGraphicsColorizeEffect) + 8u)
+ QGraphicsEffect (0xb1e04780) 0
+ primary-for QGraphicsColorizeEffect (0xb1e04740)
+ QObject (0xb1dfd960) 0
+ primary-for QGraphicsEffect (0xb1e04780)
+
+Vtable for QGraphicsBlurEffect
+QGraphicsBlurEffect::_ZTV19QGraphicsBlurEffect: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QGraphicsBlurEffect)
+8 QGraphicsBlurEffect::metaObject
+12 QGraphicsBlurEffect::qt_metacast
+16 QGraphicsBlurEffect::qt_metacall
+20 QGraphicsBlurEffect::~QGraphicsBlurEffect
+24 QGraphicsBlurEffect::~QGraphicsBlurEffect
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsBlurEffect::boundingRectFor
+60 QGraphicsBlurEffect::draw
+64 QGraphicsEffect::sourceChanged
+
+Class QGraphicsBlurEffect
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsBlurEffect (0xb1e04a40) 0
+ vptr=((& QGraphicsBlurEffect::_ZTV19QGraphicsBlurEffect) + 8u)
+ QGraphicsEffect (0xb1e04a80) 0
+ primary-for QGraphicsBlurEffect (0xb1e04a40)
+ QObject (0xb1dfdb7c) 0
+ primary-for QGraphicsEffect (0xb1e04a80)
+
+Vtable for QGraphicsDropShadowEffect
+QGraphicsDropShadowEffect::_ZTV25QGraphicsDropShadowEffect: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QGraphicsDropShadowEffect)
+8 QGraphicsDropShadowEffect::metaObject
+12 QGraphicsDropShadowEffect::qt_metacast
+16 QGraphicsDropShadowEffect::qt_metacall
+20 QGraphicsDropShadowEffect::~QGraphicsDropShadowEffect
+24 QGraphicsDropShadowEffect::~QGraphicsDropShadowEffect
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsDropShadowEffect::boundingRectFor
+60 QGraphicsDropShadowEffect::draw
+64 QGraphicsEffect::sourceChanged
+
+Class QGraphicsDropShadowEffect
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsDropShadowEffect (0xb1e04e80) 0
+ vptr=((& QGraphicsDropShadowEffect::_ZTV25QGraphicsDropShadowEffect) + 8u)
+ QGraphicsEffect (0xb1e04ec0) 0
+ primary-for QGraphicsDropShadowEffect (0xb1e04e80)
+ QObject (0xb1dfde88) 0
+ primary-for QGraphicsEffect (0xb1e04ec0)
+
+Vtable for QGraphicsOpacityEffect
+QGraphicsOpacityEffect::_ZTV22QGraphicsOpacityEffect: 17u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QGraphicsOpacityEffect)
+8 QGraphicsOpacityEffect::metaObject
+12 QGraphicsOpacityEffect::qt_metacast
+16 QGraphicsOpacityEffect::qt_metacall
+20 QGraphicsOpacityEffect::~QGraphicsOpacityEffect
+24 QGraphicsOpacityEffect::~QGraphicsOpacityEffect
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QGraphicsEffect::boundingRectFor
+60 QGraphicsOpacityEffect::draw
+64 QGraphicsEffect::sourceChanged
+
+Class QGraphicsOpacityEffect
+ size=8 align=4
+ base size=8 base align=4
+QGraphicsOpacityEffect (0xb1c76300) 0
+ vptr=((& QGraphicsOpacityEffect::_ZTV22QGraphicsOpacityEffect) + 8u)
+ QGraphicsEffect (0xb1c76340) 0
+ primary-for QGraphicsOpacityEffect (0xb1c76300)
+ QObject (0xb1c7c12c) 0
+ primary-for QGraphicsEffect (0xb1c76340)
+
+Vtable for QAbstractPageSetupDialog
+QAbstractPageSetupDialog::_ZTV24QAbstractPageSetupDialog: 67u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QAbstractPageSetupDialog)
+8 QAbstractPageSetupDialog::metaObject
+12 QAbstractPageSetupDialog::qt_metacast
+16 QAbstractPageSetupDialog::qt_metacall
+20 QAbstractPageSetupDialog::~QAbstractPageSetupDialog
+24 QAbstractPageSetupDialog::~QAbstractPageSetupDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractPageSetupDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 __cxa_pure_virtual
+240 (int (*)(...))-0x000000008
+244 (int (*)(...))(& _ZTI24QAbstractPageSetupDialog)
+248 QAbstractPageSetupDialog::_ZThn8_N24QAbstractPageSetupDialogD1Ev
+252 QAbstractPageSetupDialog::_ZThn8_N24QAbstractPageSetupDialogD0Ev
+256 QWidget::_ZThn8_NK7QWidget7devTypeEv
+260 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+264 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractPageSetupDialog
+ size=20 align=4
+ base size=20 base align=4
+QAbstractPageSetupDialog (0xb1c76600) 0
+ vptr=((& QAbstractPageSetupDialog::_ZTV24QAbstractPageSetupDialog) + 8u)
+ QDialog (0xb1c76640) 0
+ primary-for QAbstractPageSetupDialog (0xb1c76600)
+ QWidget (0xb1c83be0) 0
+ primary-for QDialog (0xb1c76640)
+ QObject (0xb1c7c348) 0
+ primary-for QWidget (0xb1c83be0)
+ QPaintDevice (0xb1c7c384) 8
+ vptr=((& QAbstractPageSetupDialog::_ZTV24QAbstractPageSetupDialog) + 248u)
+
+Vtable for QAbstractPrintDialog
+QAbstractPrintDialog::_ZTV20QAbstractPrintDialog: 67u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QAbstractPrintDialog)
+8 QAbstractPrintDialog::metaObject
+12 QAbstractPrintDialog::qt_metacast
+16 QAbstractPrintDialog::qt_metacall
+20 QAbstractPrintDialog::~QAbstractPrintDialog
+24 QAbstractPrintDialog::~QAbstractPrintDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 __cxa_pure_virtual
+240 (int (*)(...))-0x000000008
+244 (int (*)(...))(& _ZTI20QAbstractPrintDialog)
+248 QAbstractPrintDialog::_ZThn8_N20QAbstractPrintDialogD1Ev
+252 QAbstractPrintDialog::_ZThn8_N20QAbstractPrintDialogD0Ev
+256 QWidget::_ZThn8_NK7QWidget7devTypeEv
+260 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+264 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QAbstractPrintDialog
+ size=20 align=4
+ base size=20 base align=4
+QAbstractPrintDialog (0xb1c76900) 0
+ vptr=((& QAbstractPrintDialog::_ZTV20QAbstractPrintDialog) + 8u)
+ QDialog (0xb1c76940) 0
+ primary-for QAbstractPrintDialog (0xb1c76900)
+ QWidget (0xb1c99230) 0
+ primary-for QDialog (0xb1c76940)
+ QObject (0xb1c7c5a0) 0
+ primary-for QWidget (0xb1c99230)
+ QPaintDevice (0xb1c7c5dc) 8
+ vptr=((& QAbstractPrintDialog::_ZTV20QAbstractPrintDialog) + 248u)
+
+Vtable for QColorDialog
+QColorDialog::_ZTV12QColorDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QColorDialog)
+8 QColorDialog::metaObject
+12 QColorDialog::qt_metacast
+16 QColorDialog::qt_metacall
+20 QColorDialog::~QColorDialog
+24 QColorDialog::~QColorDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QColorDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QColorDialog::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QColorDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI12QColorDialog)
+244 QColorDialog::_ZThn8_N12QColorDialogD1Ev
+248 QColorDialog::_ZThn8_N12QColorDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QColorDialog
+ size=20 align=4
+ base size=20 base align=4
+QColorDialog (0xb1c76d40) 0
+ vptr=((& QColorDialog::_ZTV12QColorDialog) + 8u)
+ QDialog (0xb1c76d80) 0
+ primary-for QColorDialog (0xb1c76d40)
+ QWidget (0xb1cb0e60) 0
+ primary-for QDialog (0xb1c76d80)
+ QObject (0xb1c7c8e8) 0
+ primary-for QWidget (0xb1cb0e60)
+ QPaintDevice (0xb1c7c924) 8
+ vptr=((& QColorDialog::_ZTV12QColorDialog) + 244u)
+
+Vtable for QErrorMessage
+QErrorMessage::_ZTV13QErrorMessage: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI13QErrorMessage)
+8 QErrorMessage::metaObject
+12 QErrorMessage::qt_metacast
+16 QErrorMessage::qt_metacall
+20 QErrorMessage::~QErrorMessage
+24 QErrorMessage::~QErrorMessage
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QErrorMessage::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QErrorMessage::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI13QErrorMessage)
+244 QErrorMessage::_ZThn8_N13QErrorMessageD1Ev
+248 QErrorMessage::_ZThn8_N13QErrorMessageD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QErrorMessage
+ size=20 align=4
+ base size=20 base align=4
+QErrorMessage (0xb1cee200) 0
+ vptr=((& QErrorMessage::_ZTV13QErrorMessage) + 8u)
+ QDialog (0xb1cee240) 0
+ primary-for QErrorMessage (0xb1cee200)
+ QWidget (0xb1ce8e60) 0
+ primary-for QDialog (0xb1cee240)
+ QObject (0xb1c7cca8) 0
+ primary-for QWidget (0xb1ce8e60)
+ QPaintDevice (0xb1c7cce4) 8
+ vptr=((& QErrorMessage::_ZTV13QErrorMessage) + 244u)
+
+Vtable for QFileSystemModel
+QFileSystemModel::_ZTV16QFileSystemModel: 42u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QFileSystemModel)
+8 QFileSystemModel::metaObject
+12 QFileSystemModel::qt_metacast
+16 QFileSystemModel::qt_metacall
+20 QFileSystemModel::~QFileSystemModel
+24 QFileSystemModel::~QFileSystemModel
+28 QFileSystemModel::event
+32 QObject::eventFilter
+36 QFileSystemModel::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QFileSystemModel::index
+60 QFileSystemModel::parent
+64 QFileSystemModel::rowCount
+68 QFileSystemModel::columnCount
+72 QFileSystemModel::hasChildren
+76 QFileSystemModel::data
+80 QFileSystemModel::setData
+84 QFileSystemModel::headerData
+88 QAbstractItemModel::setHeaderData
+92 QAbstractItemModel::itemData
+96 QAbstractItemModel::setItemData
+100 QFileSystemModel::mimeTypes
+104 QFileSystemModel::mimeData
+108 QFileSystemModel::dropMimeData
+112 QFileSystemModel::supportedDropActions
+116 QAbstractItemModel::insertRows
+120 QAbstractItemModel::insertColumns
+124 QAbstractItemModel::removeRows
+128 QAbstractItemModel::removeColumns
+132 QFileSystemModel::fetchMore
+136 QFileSystemModel::canFetchMore
+140 QFileSystemModel::flags
+144 QFileSystemModel::sort
+148 QAbstractItemModel::buddy
+152 QAbstractItemModel::match
+156 QAbstractItemModel::span
+160 QAbstractItemModel::submit
+164 QAbstractItemModel::revert
+
+Class QFileSystemModel
+ size=8 align=4
+ base size=8 base align=4
+QFileSystemModel (0xb1cee540) 0
+ vptr=((& QFileSystemModel::_ZTV16QFileSystemModel) + 8u)
+ QAbstractItemModel (0xb1cee580) 0
+ primary-for QFileSystemModel (0xb1cee540)
+ QObject (0xb1c7cf00) 0
+ primary-for QAbstractItemModel (0xb1cee580)
+
+Vtable for QFontDialog
+QFontDialog::_ZTV11QFontDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QFontDialog)
+8 QFontDialog::metaObject
+12 QFontDialog::qt_metacast
+16 QFontDialog::qt_metacall
+20 QFontDialog::~QFontDialog
+24 QFontDialog::~QFontDialog
+28 QWidget::event
+32 QFontDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QFontDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QFontDialog::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QFontDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI11QFontDialog)
+244 QFontDialog::_ZThn8_N11QFontDialogD1Ev
+248 QFontDialog::_ZThn8_N11QFontDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QFontDialog
+ size=20 align=4
+ base size=20 base align=4
+QFontDialog (0xb1cee940) 0
+ vptr=((& QFontDialog::_ZTV11QFontDialog) + 8u)
+ QDialog (0xb1cee980) 0
+ primary-for QFontDialog (0xb1cee940)
+ QWidget (0xb1b3c960) 0
+ primary-for QDialog (0xb1cee980)
+ QObject (0xb1b3b21c) 0
+ primary-for QWidget (0xb1b3c960)
+ QPaintDevice (0xb1b3b258) 8
+ vptr=((& QFontDialog::_ZTV11QFontDialog) + 244u)
+
+Vtable for QInputDialog
+QInputDialog::_ZTV12QInputDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QInputDialog)
+8 QInputDialog::metaObject
+12 QInputDialog::qt_metacast
+16 QInputDialog::qt_metacall
+20 QInputDialog::~QInputDialog
+24 QInputDialog::~QInputDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QInputDialog::setVisible
+64 QInputDialog::sizeHint
+68 QInputDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QInputDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI12QInputDialog)
+244 QInputDialog::_ZThn8_N12QInputDialogD1Ev
+248 QInputDialog::_ZThn8_N12QInputDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QInputDialog
+ size=20 align=4
+ base size=20 base align=4
+QInputDialog (0xb1ceee00) 0
+ vptr=((& QInputDialog::_ZTV12QInputDialog) + 8u)
+ QDialog (0xb1ceee40) 0
+ primary-for QInputDialog (0xb1ceee00)
+ QWidget (0xb1b5ca00) 0
+ primary-for QDialog (0xb1ceee40)
+ QObject (0xb1b3b5dc) 0
+ primary-for QWidget (0xb1b5ca00)
+ QPaintDevice (0xb1b3b618) 8
+ vptr=((& QInputDialog::_ZTV12QInputDialog) + 244u)
+
+Vtable for QMessageBox
+QMessageBox::_ZTV11QMessageBox: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QMessageBox)
+8 QMessageBox::metaObject
+12 QMessageBox::qt_metacast
+16 QMessageBox::qt_metacall
+20 QMessageBox::~QMessageBox
+24 QMessageBox::~QMessageBox
+28 QMessageBox::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QMessageBox::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QMessageBox::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QMessageBox::resizeEvent
+136 QMessageBox::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QMessageBox::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QMessageBox::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI11QMessageBox)
+244 QMessageBox::_ZThn8_N11QMessageBoxD1Ev
+248 QMessageBox::_ZThn8_N11QMessageBoxD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QMessageBox
+ size=20 align=4
+ base size=20 base align=4
+QMessageBox (0xb1b9f340) 0
+ vptr=((& QMessageBox::_ZTV11QMessageBox) + 8u)
+ QDialog (0xb1b9f380) 0
+ primary-for QMessageBox (0xb1b9f340)
+ QWidget (0xb1bd2140) 0
+ primary-for QDialog (0xb1b9f380)
+ QObject (0xb1b3ba50) 0
+ primary-for QWidget (0xb1bd2140)
+ QPaintDevice (0xb1b3ba8c) 8
+ vptr=((& QMessageBox::_ZTV11QMessageBox) + 244u)
+
+Vtable for QPageSetupDialog
+QPageSetupDialog::_ZTV16QPageSetupDialog: 67u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QPageSetupDialog)
+8 QPageSetupDialog::metaObject
+12 QPageSetupDialog::qt_metacast
+16 QPageSetupDialog::qt_metacall
+20 QPageSetupDialog::~QPageSetupDialog
+24 QPageSetupDialog::~QPageSetupDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QAbstractPageSetupDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 QPageSetupDialog::exec
+240 (int (*)(...))-0x000000008
+244 (int (*)(...))(& _ZTI16QPageSetupDialog)
+248 QPageSetupDialog::_ZThn8_N16QPageSetupDialogD1Ev
+252 QPageSetupDialog::_ZThn8_N16QPageSetupDialogD0Ev
+256 QWidget::_ZThn8_NK7QWidget7devTypeEv
+260 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+264 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPageSetupDialog
+ size=20 align=4
+ base size=20 base align=4
+QPageSetupDialog (0xb1b9f980) 0
+ vptr=((& QPageSetupDialog::_ZTV16QPageSetupDialog) + 8u)
+ QAbstractPageSetupDialog (0xb1b9f9c0) 0
+ primary-for QPageSetupDialog (0xb1b9f980)
+ QDialog (0xb1b9fa00) 0
+ primary-for QAbstractPageSetupDialog (0xb1b9f9c0)
+ QWidget (0xb1a03d70) 0
+ primary-for QDialog (0xb1b9fa00)
+ QObject (0xb1a2f078) 0
+ primary-for QWidget (0xb1a03d70)
+ QPaintDevice (0xb1a2f0b4) 8
+ vptr=((& QPageSetupDialog::_ZTV16QPageSetupDialog) + 248u)
+
+Vtable for QUnixPrintWidget
+QUnixPrintWidget::_ZTV16QUnixPrintWidget: 63u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QUnixPrintWidget)
+8 QUnixPrintWidget::metaObject
+12 QUnixPrintWidget::qt_metacast
+16 QUnixPrintWidget::qt_metacall
+20 QUnixPrintWidget::~QUnixPrintWidget
+24 QUnixPrintWidget::~QUnixPrintWidget
+28 QWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 (int (*)(...))-0x000000008
+228 (int (*)(...))(& _ZTI16QUnixPrintWidget)
+232 QUnixPrintWidget::_ZThn8_N16QUnixPrintWidgetD1Ev
+236 QUnixPrintWidget::_ZThn8_N16QUnixPrintWidgetD0Ev
+240 QWidget::_ZThn8_NK7QWidget7devTypeEv
+244 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+248 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QUnixPrintWidget
+ size=24 align=4
+ base size=24 base align=4
+QUnixPrintWidget (0xb1b9fcc0) 0
+ vptr=((& QUnixPrintWidget::_ZTV16QUnixPrintWidget) + 8u)
+ QWidget (0xb1a36960) 0
+ primary-for QUnixPrintWidget (0xb1b9fcc0)
+ QObject (0xb1a2f2d0) 0
+ primary-for QWidget (0xb1a36960)
+ QPaintDevice (0xb1a2f30c) 8
+ vptr=((& QUnixPrintWidget::_ZTV16QUnixPrintWidget) + 232u)
+
+Vtable for QPrintDialog
+QPrintDialog::_ZTV12QPrintDialog: 67u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QPrintDialog)
+8 QPrintDialog::metaObject
+12 QPrintDialog::qt_metacast
+16 QPrintDialog::qt_metacall
+20 QPrintDialog::~QPrintDialog
+24 QPrintDialog::~QPrintDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QPrintDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QPrintDialog::done
+228 QPrintDialog::accept
+232 QDialog::reject
+236 QPrintDialog::exec
+240 (int (*)(...))-0x000000008
+244 (int (*)(...))(& _ZTI12QPrintDialog)
+248 QPrintDialog::_ZThn8_N12QPrintDialogD1Ev
+252 QPrintDialog::_ZThn8_N12QPrintDialogD0Ev
+256 QWidget::_ZThn8_NK7QWidget7devTypeEv
+260 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+264 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPrintDialog
+ size=20 align=4
+ base size=20 base align=4
+QPrintDialog (0xb1b9ff00) 0
+ vptr=((& QPrintDialog::_ZTV12QPrintDialog) + 8u)
+ QAbstractPrintDialog (0xb1b9ff40) 0
+ primary-for QPrintDialog (0xb1b9ff00)
+ QDialog (0xb1b9ff80) 0
+ primary-for QAbstractPrintDialog (0xb1b9ff40)
+ QWidget (0xb1a43a50) 0
+ primary-for QDialog (0xb1b9ff80)
+ QObject (0xb1a2f438) 0
+ primary-for QWidget (0xb1a43a50)
+ QPaintDevice (0xb1a2f474) 8
+ vptr=((& QPrintDialog::_ZTV12QPrintDialog) + 248u)
+
+Vtable for QPrintPreviewDialog
+QPrintPreviewDialog::_ZTV19QPrintPreviewDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QPrintPreviewDialog)
+8 QPrintPreviewDialog::metaObject
+12 QPrintPreviewDialog::qt_metacast
+16 QPrintPreviewDialog::qt_metacall
+20 QPrintPreviewDialog::~QPrintPreviewDialog
+24 QPrintPreviewDialog::~QPrintPreviewDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QPrintPreviewDialog::setVisible
+64 QDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QDialog::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QPrintPreviewDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI19QPrintPreviewDialog)
+244 QPrintPreviewDialog::_ZThn8_N19QPrintPreviewDialogD1Ev
+248 QPrintPreviewDialog::_ZThn8_N19QPrintPreviewDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QPrintPreviewDialog
+ size=24 align=4
+ base size=24 base align=4
+QPrintPreviewDialog (0xb1a4c240) 0
+ vptr=((& QPrintPreviewDialog::_ZTV19QPrintPreviewDialog) + 8u)
+ QDialog (0xb1a4c280) 0
+ primary-for QPrintPreviewDialog (0xb1a4c240)
+ QWidget (0xb1a53690) 0
+ primary-for QDialog (0xb1a4c280)
+ QObject (0xb1a2f690) 0
+ primary-for QWidget (0xb1a53690)
+ QPaintDevice (0xb1a2f6cc) 8
+ vptr=((& QPrintPreviewDialog::_ZTV19QPrintPreviewDialog) + 244u)
+
+Vtable for QProgressDialog
+QProgressDialog::_ZTV15QProgressDialog: 66u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI15QProgressDialog)
+8 QProgressDialog::metaObject
+12 QProgressDialog::qt_metacast
+16 QProgressDialog::qt_metacall
+20 QProgressDialog::~QProgressDialog
+24 QProgressDialog::~QProgressDialog
+28 QWidget::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QDialog::setVisible
+64 QProgressDialog::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QProgressDialog::resizeEvent
+136 QProgressDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QProgressDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QProgressDialog::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QDialog::done
+228 QDialog::accept
+232 QDialog::reject
+236 (int (*)(...))-0x000000008
+240 (int (*)(...))(& _ZTI15QProgressDialog)
+244 QProgressDialog::_ZThn8_N15QProgressDialogD1Ev
+248 QProgressDialog::_ZThn8_N15QProgressDialogD0Ev
+252 QWidget::_ZThn8_NK7QWidget7devTypeEv
+256 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+260 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QProgressDialog
+ size=20 align=4
+ base size=20 base align=4
+QProgressDialog (0xb1a4c540) 0
+ vptr=((& QProgressDialog::_ZTV15QProgressDialog) + 8u)
+ QDialog (0xb1a4c580) 0
+ primary-for QProgressDialog (0xb1a4c540)
+ QWidget (0xb1a53d20) 0
+ primary-for QDialog (0xb1a4c580)
+ QObject (0xb1a2f8e8) 0
+ primary-for QWidget (0xb1a53d20)
+ QPaintDevice (0xb1a2f924) 8
+ vptr=((& QProgressDialog::_ZTV15QProgressDialog) + 244u)
+
+Vtable for QWizard
+QWizard::_ZTV7QWizard: 70u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI7QWizard)
+8 QWizard::metaObject
+12 QWizard::qt_metacast
+16 QWizard::qt_metacall
+20 QWizard::~QWizard
+24 QWizard::~QWizard
+28 QWizard::event
+32 QDialog::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWizard::setVisible
+64 QWizard::sizeHint
+68 QDialog::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QDialog::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWizard::paintEvent
+128 QWidget::moveEvent
+132 QWizard::resizeEvent
+136 QDialog::closeEvent
+140 QDialog::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QDialog::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QWizard::done
+228 QDialog::accept
+232 QDialog::reject
+236 QWizard::validateCurrentPage
+240 QWizard::nextId
+244 QWizard::initializePage
+248 QWizard::cleanupPage
+252 (int (*)(...))-0x000000008
+256 (int (*)(...))(& _ZTI7QWizard)
+260 QWizard::_ZThn8_N7QWizardD1Ev
+264 QWizard::_ZThn8_N7QWizardD0Ev
+268 QWidget::_ZThn8_NK7QWidget7devTypeEv
+272 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+276 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWizard
+ size=20 align=4
+ base size=20 base align=4
+QWizard (0xb1a4c840) 0
+ vptr=((& QWizard::_ZTV7QWizard) + 8u)
+ QDialog (0xb1a4c880) 0
+ primary-for QWizard (0xb1a4c840)
+ QWidget (0xb1a71b40) 0
+ primary-for QDialog (0xb1a4c880)
+ QObject (0xb1a2fb40) 0
+ primary-for QWidget (0xb1a71b40)
+ QPaintDevice (0xb1a2fb7c) 8
+ vptr=((& QWizard::_ZTV7QWizard) + 260u)
+
+Vtable for QWizardPage
+QWizardPage::_ZTV11QWizardPage: 68u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QWizardPage)
+8 QWizardPage::metaObject
+12 QWizardPage::qt_metacast
+16 QWizardPage::qt_metacall
+20 QWizardPage::~QWizardPage
+24 QWizardPage::~QWizardPage
+28 QWidget::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 QWidget::devType
+60 QWidget::setVisible
+64 QWidget::sizeHint
+68 QWidget::minimumSizeHint
+72 QWidget::heightForWidth
+76 QWidget::paintEngine
+80 QWidget::mousePressEvent
+84 QWidget::mouseReleaseEvent
+88 QWidget::mouseDoubleClickEvent
+92 QWidget::mouseMoveEvent
+96 QWidget::wheelEvent
+100 QWidget::keyPressEvent
+104 QWidget::keyReleaseEvent
+108 QWidget::focusInEvent
+112 QWidget::focusOutEvent
+116 QWidget::enterEvent
+120 QWidget::leaveEvent
+124 QWidget::paintEvent
+128 QWidget::moveEvent
+132 QWidget::resizeEvent
+136 QWidget::closeEvent
+140 QWidget::contextMenuEvent
+144 QWidget::tabletEvent
+148 QWidget::actionEvent
+152 QWidget::dragEnterEvent
+156 QWidget::dragMoveEvent
+160 QWidget::dragLeaveEvent
+164 QWidget::dropEvent
+168 QWidget::showEvent
+172 QWidget::hideEvent
+176 QWidget::x11Event
+180 QWidget::changeEvent
+184 QWidget::metric
+188 QWidget::inputMethodEvent
+192 QWidget::inputMethodQuery
+196 QWidget::focusNextPrevChild
+200 QWidget::styleChange
+204 QWidget::enabledChange
+208 QWidget::paletteChange
+212 QWidget::fontChange
+216 QWidget::windowActivationChange
+220 QWidget::languageChange
+224 QWizardPage::initializePage
+228 QWizardPage::cleanupPage
+232 QWizardPage::validatePage
+236 QWizardPage::isComplete
+240 QWizardPage::nextId
+244 (int (*)(...))-0x000000008
+248 (int (*)(...))(& _ZTI11QWizardPage)
+252 QWizardPage::_ZThn8_N11QWizardPageD1Ev
+256 QWizardPage::_ZThn8_N11QWizardPageD0Ev
+260 QWidget::_ZThn8_NK7QWidget7devTypeEv
+264 QWidget::_ZThn8_NK7QWidget11paintEngineEv
+268 QWidget::_ZThn8_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE
+
+Class QWizardPage
+ size=20 align=4
+ base size=20 base align=4
+QWizardPage (0xb1a4cc80) 0
+ vptr=((& QWizardPage::_ZTV11QWizardPage) + 8u)
+ QWidget (0xb1ac2140) 0
+ primary-for QWizardPage (0xb1a4cc80)
+ QObject (0xb1a2fe88) 0
+ primary-for QWidget (0xb1ac2140)
+ QPaintDevice (0xb1a2fec4) 8
+ vptr=((& QWizardPage::_ZTV11QWizardPage) + 252u)
+
+Class QAccessible
+ size=1 align=1
+ base size=0 base align=1
+QAccessible (0xb1ad30f0) 0 empty
+
+Vtable for QAccessibleInterface
+QAccessibleInterface::_ZTV20QAccessibleInterface: 19u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QAccessibleInterface)
+8 QAccessibleInterface::~QAccessibleInterface
+12 QAccessibleInterface::~QAccessibleInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 __cxa_pure_virtual
+52 __cxa_pure_virtual
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+
+Class QAccessibleInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleInterface (0xb1ae9380) 0 nearly-empty
+ vptr=((& QAccessibleInterface::_ZTV20QAccessibleInterface) + 8u)
+ QAccessible (0xb1ad33c0) 0 empty
+
+Vtable for QAccessibleInterfaceEx
+QAccessibleInterfaceEx::_ZTV22QAccessibleInterfaceEx: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QAccessibleInterfaceEx)
+8 QAccessibleInterfaceEx::~QAccessibleInterfaceEx
+12 QAccessibleInterfaceEx::~QAccessibleInterfaceEx
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 __cxa_pure_virtual
+52 __cxa_pure_virtual
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 QAccessibleInterfaceEx::virtual_hook
+84 QAccessibleInterfaceEx::interface_cast
+
+Class QAccessibleInterfaceEx
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleInterfaceEx (0xb1ae9ac0) 0 nearly-empty
+ vptr=((& QAccessibleInterfaceEx::_ZTV22QAccessibleInterfaceEx) + 8u)
+ QAccessibleInterface (0xb1ae9b00) 0 nearly-empty
+ primary-for QAccessibleInterfaceEx (0xb1ae9ac0)
+ QAccessible (0xb1ad3960) 0 empty
+
+Vtable for QAccessibleEvent
+QAccessibleEvent::_ZTV16QAccessibleEvent: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI16QAccessibleEvent)
+8 QAccessibleEvent::~QAccessibleEvent
+12 QAccessibleEvent::~QAccessibleEvent
+
+Class QAccessibleEvent
+ size=20 align=4
+ base size=20 base align=4
+QAccessibleEvent (0xb1ae9bc0) 0
+ vptr=((& QAccessibleEvent::_ZTV16QAccessibleEvent) + 8u)
+ QEvent (0xb1ad39d8) 0
+ primary-for QAccessibleEvent (0xb1ae9bc0)
+
+Vtable for QAccessible2Interface
+QAccessible2Interface::_ZTV21QAccessible2Interface: 4u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QAccessible2Interface)
+8 QAccessible2Interface::~QAccessible2Interface
+12 QAccessible2Interface::~QAccessible2Interface
+
+Class QAccessible2Interface
+ size=4 align=4
+ base size=4 base align=4
+QAccessible2Interface (0xb197e21c) 0 nearly-empty
+ vptr=((& QAccessible2Interface::_ZTV21QAccessible2Interface) + 8u)
+
+Vtable for QAccessibleTextInterface
+QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
+8 QAccessibleTextInterface::~QAccessibleTextInterface
+12 QAccessibleTextInterface::~QAccessibleTextInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 __cxa_pure_virtual
+52 __cxa_pure_virtual
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+
+Class QAccessibleTextInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleTextInterface (0xb197f440) 0 nearly-empty
+ vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 8u)
+ QAccessible2Interface (0xb197e5a0) 0 nearly-empty
+ primary-for QAccessibleTextInterface (0xb197f440)
+
+Vtable for QAccessibleEditableTextInterface
+QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 11u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
+8 QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
+12 QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+
+Class QAccessibleEditableTextInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleEditableTextInterface (0xb197f6c0) 0 nearly-empty
+ vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 8u)
+ QAccessible2Interface (0xb197e8e8) 0 nearly-empty
+ primary-for QAccessibleEditableTextInterface (0xb197f6c0)
+
+Vtable for QAccessibleSimpleEditableTextInterface
+QAccessibleSimpleEditableTextInterface::_ZTV38QAccessibleSimpleEditableTextInterface: 11u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI38QAccessibleSimpleEditableTextInterface)
+8 QAccessibleSimpleEditableTextInterface::~QAccessibleSimpleEditableTextInterface
+12 QAccessibleSimpleEditableTextInterface::~QAccessibleSimpleEditableTextInterface
+16 QAccessibleSimpleEditableTextInterface::copyText
+20 QAccessibleSimpleEditableTextInterface::deleteText
+24 QAccessibleSimpleEditableTextInterface::insertText
+28 QAccessibleSimpleEditableTextInterface::cutText
+32 QAccessibleSimpleEditableTextInterface::pasteText
+36 QAccessibleSimpleEditableTextInterface::replaceText
+40 QAccessibleSimpleEditableTextInterface::setAttributes
+
+Class QAccessibleSimpleEditableTextInterface
+ size=8 align=4
+ base size=8 base align=4
+QAccessibleSimpleEditableTextInterface (0xb197f940) 0
+ vptr=((& QAccessibleSimpleEditableTextInterface::_ZTV38QAccessibleSimpleEditableTextInterface) + 8u)
+ QAccessibleEditableTextInterface (0xb197f980) 0 nearly-empty
+ primary-for QAccessibleSimpleEditableTextInterface (0xb197f940)
+ QAccessible2Interface (0xb197ec30) 0 nearly-empty
+ primary-for QAccessibleEditableTextInterface (0xb197f980)
+
+Vtable for QAccessibleValueInterface
+QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
+8 QAccessibleValueInterface::~QAccessibleValueInterface
+12 QAccessibleValueInterface::~QAccessibleValueInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+
+Class QAccessibleValueInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleValueInterface (0xb197fa40) 0 nearly-empty
+ vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 8u)
+ QAccessible2Interface (0xb197ec6c) 0 nearly-empty
+ primary-for QAccessibleValueInterface (0xb197fa40)
+
+Vtable for QAccessibleTableInterface
+QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 30u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
+8 QAccessibleTableInterface::~QAccessibleTableInterface
+12 QAccessibleTableInterface::~QAccessibleTableInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 __cxa_pure_virtual
+52 __cxa_pure_virtual
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+112 __cxa_pure_virtual
+116 __cxa_pure_virtual
+
+Class QAccessibleTableInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleTableInterface (0xb197fcc0) 0 nearly-empty
+ vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 8u)
+ QAccessible2Interface (0xb197efb4) 0 nearly-empty
+ primary-for QAccessibleTableInterface (0xb197fcc0)
+
+Vtable for QAccessibleActionInterface
+QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 10u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
+8 QAccessibleActionInterface::~QAccessibleActionInterface
+12 QAccessibleActionInterface::~QAccessibleActionInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+
+Class QAccessibleActionInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleActionInterface (0xb197fd80) 0 nearly-empty
+ vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 8u)
+ QAccessible2Interface (0xb19a103c) 0 nearly-empty
+ primary-for QAccessibleActionInterface (0xb197fd80)
+
+Vtable for QAccessibleImageInterface
+QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
+8 QAccessibleImageInterface::~QAccessibleImageInterface
+12 QAccessibleImageInterface::~QAccessibleImageInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+
+Class QAccessibleImageInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleImageInterface (0xb197fe40) 0 nearly-empty
+ vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 8u)
+ QAccessible2Interface (0xb19a10b4) 0 nearly-empty
+ primary-for QAccessibleImageInterface (0xb197fe40)
+
+Vtable for QAccessibleBridge
+QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAccessibleBridge)
+8 QAccessibleBridge::~QAccessibleBridge
+12 QAccessibleBridge::~QAccessibleBridge
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QAccessibleBridge
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleBridge (0xb19a112c) 0 nearly-empty
+ vptr=((& QAccessibleBridge::_ZTV17QAccessibleBridge) + 8u)
+
+Vtable for QAccessibleBridgeFactoryInterface
+QAccessibleBridgeFactoryInterface::_ZTV33QAccessibleBridgeFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI33QAccessibleBridgeFactoryInterface)
+8 QAccessibleBridgeFactoryInterface::~QAccessibleBridgeFactoryInterface
+12 QAccessibleBridgeFactoryInterface::~QAccessibleBridgeFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QAccessibleBridgeFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleBridgeFactoryInterface (0xb19aa140) 0 nearly-empty
+ vptr=((& QAccessibleBridgeFactoryInterface::_ZTV33QAccessibleBridgeFactoryInterface) + 8u)
+ QFactoryInterface (0xb19a1348) 0 nearly-empty
+ primary-for QAccessibleBridgeFactoryInterface (0xb19aa140)
+
+Vtable for QAccessibleBridgePlugin
+QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI23QAccessibleBridgePlugin)
+8 QAccessibleBridgePlugin::metaObject
+12 QAccessibleBridgePlugin::qt_metacast
+16 QAccessibleBridgePlugin::qt_metacall
+20 QAccessibleBridgePlugin::~QAccessibleBridgePlugin
+24 QAccessibleBridgePlugin::~QAccessibleBridgePlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 (int (*)(...))-0x000000008
+68 (int (*)(...))(& _ZTI23QAccessibleBridgePlugin)
+72 QAccessibleBridgePlugin::_ZThn8_N23QAccessibleBridgePluginD1Ev
+76 QAccessibleBridgePlugin::_ZThn8_N23QAccessibleBridgePluginD0Ev
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+
+Class QAccessibleBridgePlugin
+ size=12 align=4
+ base size=12 base align=4
+QAccessibleBridgePlugin (0xb19abb90) 0
+ vptr=((& QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin) + 8u)
+ QObject (0xb19a1654) 0
+ primary-for QAccessibleBridgePlugin (0xb19abb90)
+ QAccessibleBridgeFactoryInterface (0xb19aa400) 8 nearly-empty
+ vptr=((& QAccessibleBridgePlugin::_ZTV23QAccessibleBridgePlugin) + 72u)
+ QFactoryInterface (0xb19a1690) 8 nearly-empty
+ primary-for QAccessibleBridgeFactoryInterface (0xb19aa400)
+
+Vtable for QAccessibleObject
+QAccessibleObject::_ZTV17QAccessibleObject: 19u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAccessibleObject)
+8 QAccessibleObject::~QAccessibleObject
+12 QAccessibleObject::~QAccessibleObject
+16 QAccessibleObject::isValid
+20 QAccessibleObject::object
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 QAccessibleObject::setText
+52 QAccessibleObject::rect
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 QAccessibleObject::userActionCount
+68 QAccessibleObject::actionText
+72 QAccessibleObject::doAction
+
+Class QAccessibleObject
+ size=8 align=4
+ base size=8 base align=4
+QAccessibleObject (0xb19aa640) 0
+ vptr=((& QAccessibleObject::_ZTV17QAccessibleObject) + 8u)
+ QAccessibleInterface (0xb19aa680) 0 nearly-empty
+ primary-for QAccessibleObject (0xb19aa640)
+ QAccessible (0xb19a17bc) 0 empty
+
+Vtable for QAccessibleObjectEx
+QAccessibleObjectEx::_ZTV19QAccessibleObjectEx: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAccessibleObjectEx)
+8 QAccessibleObjectEx::~QAccessibleObjectEx
+12 QAccessibleObjectEx::~QAccessibleObjectEx
+16 QAccessibleObjectEx::isValid
+20 QAccessibleObjectEx::object
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+36 __cxa_pure_virtual
+40 __cxa_pure_virtual
+44 __cxa_pure_virtual
+48 QAccessibleObjectEx::setText
+52 QAccessibleObjectEx::rect
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 QAccessibleObjectEx::userActionCount
+68 QAccessibleObjectEx::actionText
+72 QAccessibleObjectEx::doAction
+76 __cxa_pure_virtual
+80 QAccessibleInterfaceEx::virtual_hook
+84 QAccessibleInterfaceEx::interface_cast
+
+Class QAccessibleObjectEx
+ size=8 align=4
+ base size=8 base align=4
+QAccessibleObjectEx (0xb19aa700) 0
+ vptr=((& QAccessibleObjectEx::_ZTV19QAccessibleObjectEx) + 8u)
+ QAccessibleInterfaceEx (0xb19aa740) 0 nearly-empty
+ primary-for QAccessibleObjectEx (0xb19aa700)
+ QAccessibleInterface (0xb19aa780) 0 nearly-empty
+ primary-for QAccessibleInterfaceEx (0xb19aa740)
+ QAccessible (0xb19a17f8) 0 empty
+
+Vtable for QAccessibleApplication
+QAccessibleApplication::_ZTV22QAccessibleApplication: 19u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI22QAccessibleApplication)
+8 QAccessibleApplication::~QAccessibleApplication
+12 QAccessibleApplication::~QAccessibleApplication
+16 QAccessibleObject::isValid
+20 QAccessibleObject::object
+24 QAccessibleApplication::childCount
+28 QAccessibleApplication::indexOfChild
+32 QAccessibleApplication::relationTo
+36 QAccessibleApplication::childAt
+40 QAccessibleApplication::navigate
+44 QAccessibleApplication::text
+48 QAccessibleObject::setText
+52 QAccessibleObject::rect
+56 QAccessibleApplication::role
+60 QAccessibleApplication::state
+64 QAccessibleApplication::userActionCount
+68 QAccessibleApplication::actionText
+72 QAccessibleApplication::doAction
+
+Class QAccessibleApplication
+ size=8 align=4
+ base size=8 base align=4
+QAccessibleApplication (0xb19aa800) 0
+ vptr=((& QAccessibleApplication::_ZTV22QAccessibleApplication) + 8u)
+ QAccessibleObject (0xb19aa840) 0
+ primary-for QAccessibleApplication (0xb19aa800)
+ QAccessibleInterface (0xb19aa880) 0 nearly-empty
+ primary-for QAccessibleObject (0xb19aa840)
+ QAccessible (0xb19a1834) 0 empty
+
+Vtable for QAccessibleFactoryInterface
+QAccessibleFactoryInterface::_ZTV27QAccessibleFactoryInterface: 6u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI27QAccessibleFactoryInterface)
+8 QAccessibleFactoryInterface::~QAccessibleFactoryInterface
+12 QAccessibleFactoryInterface::~QAccessibleFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+
+Class QAccessibleFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QAccessibleFactoryInterface (0xb19c8820) 0 nearly-empty
+ vptr=((& QAccessibleFactoryInterface::_ZTV27QAccessibleFactoryInterface) + 8u)
+ QAccessible (0xb19a1870) 0 empty
+ QFactoryInterface (0xb19a18ac) 0 nearly-empty
+ primary-for QAccessibleFactoryInterface (0xb19c8820)
+
+Vtable for QAccessiblePlugin
+QAccessiblePlugin::_ZTV17QAccessiblePlugin: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAccessiblePlugin)
+8 QAccessiblePlugin::metaObject
+12 QAccessiblePlugin::qt_metacast
+16 QAccessiblePlugin::qt_metacall
+20 QAccessiblePlugin::~QAccessiblePlugin
+24 QAccessiblePlugin::~QAccessiblePlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 (int (*)(...))-0x000000008
+68 (int (*)(...))(& _ZTI17QAccessiblePlugin)
+72 QAccessiblePlugin::_ZThn8_N17QAccessiblePluginD1Ev
+76 QAccessiblePlugin::_ZThn8_N17QAccessiblePluginD0Ev
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+
+Class QAccessiblePlugin
+ size=12 align=4
+ base size=12 base align=4
+QAccessiblePlugin (0xb19cf230) 0
+ vptr=((& QAccessiblePlugin::_ZTV17QAccessiblePlugin) + 8u)
+ QObject (0xb19a1bb8) 0
+ primary-for QAccessiblePlugin (0xb19cf230)
+ QAccessibleFactoryInterface (0xb19cf280) 8 nearly-empty
+ vptr=((& QAccessiblePlugin::_ZTV17QAccessiblePlugin) + 72u)
+ QAccessible (0xb19a1bf4) 8 empty
+ QFactoryInterface (0xb19a1c30) 8 nearly-empty
+ primary-for QAccessibleFactoryInterface (0xb19cf280)
+
+Vtable for QAccessibleWidget
+QAccessibleWidget::_ZTV17QAccessibleWidget: 19u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI17QAccessibleWidget)
+8 QAccessibleWidget::~QAccessibleWidget
+12 QAccessibleWidget::~QAccessibleWidget
+16 QAccessibleObject::isValid
+20 QAccessibleObject::object
+24 QAccessibleWidget::childCount
+28 QAccessibleWidget::indexOfChild
+32 QAccessibleWidget::relationTo
+36 QAccessibleWidget::childAt
+40 QAccessibleWidget::navigate
+44 QAccessibleWidget::text
+48 QAccessibleObject::setText
+52 QAccessibleWidget::rect
+56 QAccessibleWidget::role
+60 QAccessibleWidget::state
+64 QAccessibleWidget::userActionCount
+68 QAccessibleWidget::actionText
+72 QAccessibleWidget::doAction
+
+Class QAccessibleWidget
+ size=12 align=4
+ base size=12 base align=4
+QAccessibleWidget (0xb19aad80) 0
+ vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 8u)
+ QAccessibleObject (0xb19aadc0) 0
+ primary-for QAccessibleWidget (0xb19aad80)
+ QAccessibleInterface (0xb19aae00) 0 nearly-empty
+ primary-for QAccessibleObject (0xb19aadc0)
+ QAccessible (0xb19a1d5c) 0 empty
+
+Vtable for QAccessibleWidgetEx
+QAccessibleWidgetEx::_ZTV19QAccessibleWidgetEx: 22u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAccessibleWidgetEx)
+8 QAccessibleWidgetEx::~QAccessibleWidgetEx
+12 QAccessibleWidgetEx::~QAccessibleWidgetEx
+16 QAccessibleObjectEx::isValid
+20 QAccessibleObjectEx::object
+24 QAccessibleWidgetEx::childCount
+28 QAccessibleWidgetEx::indexOfChild
+32 QAccessibleWidgetEx::relationTo
+36 QAccessibleWidgetEx::childAt
+40 QAccessibleWidgetEx::navigate
+44 QAccessibleWidgetEx::text
+48 QAccessibleObjectEx::setText
+52 QAccessibleWidgetEx::rect
+56 QAccessibleWidgetEx::role
+60 QAccessibleWidgetEx::state
+64 QAccessibleObjectEx::userActionCount
+68 QAccessibleWidgetEx::actionText
+72 QAccessibleWidgetEx::doAction
+76 QAccessibleWidgetEx::invokeMethodEx
+80 QAccessibleInterfaceEx::virtual_hook
+84 QAccessibleInterfaceEx::interface_cast
+
+Class QAccessibleWidgetEx
+ size=12 align=4
+ base size=12 base align=4
+QAccessibleWidgetEx (0xb19aae80) 0
+ vptr=((& QAccessibleWidgetEx::_ZTV19QAccessibleWidgetEx) + 8u)
+ QAccessibleObjectEx (0xb19aaec0) 0
+ primary-for QAccessibleWidgetEx (0xb19aae80)
+ QAccessibleInterfaceEx (0xb19aaf00) 0 nearly-empty
+ primary-for QAccessibleObjectEx (0xb19aaec0)
+ QAccessibleInterface (0xb19aaf40) 0 nearly-empty
+ primary-for QAccessibleInterfaceEx (0xb19aaf00)
+ QAccessible (0xb19a1d98) 0 empty
+
+Vtable for QAbstractVideoBuffer
+QAbstractVideoBuffer::_ZTV20QAbstractVideoBuffer: 8u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QAbstractVideoBuffer)
+8 QAbstractVideoBuffer::~QAbstractVideoBuffer
+12 QAbstractVideoBuffer::~QAbstractVideoBuffer
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 QAbstractVideoBuffer::handle
+
+Class QAbstractVideoBuffer
+ size=8 align=4
+ base size=8 base align=4
+QAbstractVideoBuffer (0xb19a1dd4) 0
+ vptr=((& QAbstractVideoBuffer::_ZTV20QAbstractVideoBuffer) + 8u)
+
+Class QVideoFrame
+ size=4 align=4
+ base size=4 base align=4
+QVideoFrame (0xb19f40b4) 0
+
+Vtable for QAbstractVideoSurface
+QAbstractVideoSurface::_ZTV21QAbstractVideoSurface: 20u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI21QAbstractVideoSurface)
+8 QAbstractVideoSurface::metaObject
+12 QAbstractVideoSurface::qt_metacast
+16 QAbstractVideoSurface::qt_metacall
+20 QAbstractVideoSurface::~QAbstractVideoSurface
+24 QAbstractVideoSurface::~QAbstractVideoSurface
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 QAbstractVideoSurface::isFormatSupported
+64 QAbstractVideoSurface::nearestFormat
+68 QAbstractVideoSurface::start
+72 QAbstractVideoSurface::stop
+76 __cxa_pure_virtual
+
+Class QAbstractVideoSurface
+ size=8 align=4
+ base size=8 base align=4
+QAbstractVideoSurface (0xb19ee600) 0
+ vptr=((& QAbstractVideoSurface::_ZTV21QAbstractVideoSurface) + 8u)
+ QObject (0xb19f4294) 0
+ primary-for QAbstractVideoSurface (0xb19ee600)
+
+Class QVideoSurfaceFormat
+ size=4 align=4
+ base size=4 base align=4
+QVideoSurfaceFormat (0xb19f44b0) 0
+
+Class QAudioFormat
+ size=4 align=4
+ base size=4 base align=4
+QAudioFormat (0xb19f48e8) 0
+
+Class QAudioDeviceInfo
+ size=4 align=4
+ base size=4 base align=4
+QAudioDeviceInfo (0xb19f4960) 0
+
+Vtable for QAbstractAudioDeviceInfo
+QAbstractAudioDeviceInfo::_ZTV24QAbstractAudioDeviceInfo: 24u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI24QAbstractAudioDeviceInfo)
+8 QAbstractAudioDeviceInfo::metaObject
+12 QAbstractAudioDeviceInfo::qt_metacast
+16 QAbstractAudioDeviceInfo::qt_metacall
+20 QAbstractAudioDeviceInfo::~QAbstractAudioDeviceInfo
+24 QAbstractAudioDeviceInfo::~QAbstractAudioDeviceInfo
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 __cxa_pure_virtual
+
+Class QAbstractAudioDeviceInfo
+ size=8 align=4
+ base size=8 base align=4
+QAbstractAudioDeviceInfo (0xb183f240) 0
+ vptr=((& QAbstractAudioDeviceInfo::_ZTV24QAbstractAudioDeviceInfo) + 8u)
+ QObject (0xb19f4a8c) 0
+ primary-for QAbstractAudioDeviceInfo (0xb183f240)
+
+Vtable for QAbstractAudioOutput
+QAbstractAudioOutput::_ZTV20QAbstractAudioOutput: 30u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI20QAbstractAudioOutput)
+8 QAbstractAudioOutput::metaObject
+12 QAbstractAudioOutput::qt_metacast
+16 QAbstractAudioOutput::qt_metacall
+20 QAbstractAudioOutput::~QAbstractAudioOutput
+24 QAbstractAudioOutput::~QAbstractAudioOutput
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+112 __cxa_pure_virtual
+116 __cxa_pure_virtual
+
+Class QAbstractAudioOutput
+ size=8 align=4
+ base size=8 base align=4
+QAbstractAudioOutput (0xb183f480) 0
+ vptr=((& QAbstractAudioOutput::_ZTV20QAbstractAudioOutput) + 8u)
+ QObject (0xb19f4bb8) 0
+ primary-for QAbstractAudioOutput (0xb183f480)
+
+Vtable for QAbstractAudioInput
+QAbstractAudioInput::_ZTV19QAbstractAudioInput: 30u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI19QAbstractAudioInput)
+8 QAbstractAudioInput::metaObject
+12 QAbstractAudioInput::qt_metacast
+16 QAbstractAudioInput::qt_metacall
+20 QAbstractAudioInput::~QAbstractAudioInput
+24 QAbstractAudioInput::~QAbstractAudioInput
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 __cxa_pure_virtual
+80 __cxa_pure_virtual
+84 __cxa_pure_virtual
+88 __cxa_pure_virtual
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+112 __cxa_pure_virtual
+116 __cxa_pure_virtual
+
+Class QAbstractAudioInput
+ size=8 align=4
+ base size=8 base align=4
+QAbstractAudioInput (0xb183f6c0) 0
+ vptr=((& QAbstractAudioInput::_ZTV19QAbstractAudioInput) + 8u)
+ QObject (0xb19f4ce4) 0
+ primary-for QAbstractAudioInput (0xb183f6c0)
+
+Vtable for QAudioEngineFactoryInterface
+QAudioEngineFactoryInterface::_ZTV28QAudioEngineFactoryInterface: 9u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI28QAudioEngineFactoryInterface)
+8 QAudioEngineFactoryInterface::~QAudioEngineFactoryInterface
+12 QAudioEngineFactoryInterface::~QAudioEngineFactoryInterface
+16 __cxa_pure_virtual
+20 __cxa_pure_virtual
+24 __cxa_pure_virtual
+28 __cxa_pure_virtual
+32 __cxa_pure_virtual
+
+Class QAudioEngineFactoryInterface
+ size=4 align=4
+ base size=4 base align=4
+QAudioEngineFactoryInterface (0xb183f900) 0 nearly-empty
+ vptr=((& QAudioEngineFactoryInterface::_ZTV28QAudioEngineFactoryInterface) + 8u)
+ QFactoryInterface (0xb19f4e10) 0 nearly-empty
+ primary-for QAudioEngineFactoryInterface (0xb183f900)
+
+Vtable for QAudioEnginePlugin
+QAudioEnginePlugin::_ZTV18QAudioEnginePlugin: 28u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI18QAudioEnginePlugin)
+8 QAudioEnginePlugin::metaObject
+12 QAudioEnginePlugin::qt_metacast
+16 QAudioEnginePlugin::qt_metacall
+20 QAudioEnginePlugin::~QAudioEnginePlugin
+24 QAudioEnginePlugin::~QAudioEnginePlugin
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+56 __cxa_pure_virtual
+60 __cxa_pure_virtual
+64 __cxa_pure_virtual
+68 __cxa_pure_virtual
+72 __cxa_pure_virtual
+76 (int (*)(...))-0x000000008
+80 (int (*)(...))(& _ZTI18QAudioEnginePlugin)
+84 QAudioEnginePlugin::_ZThn8_N18QAudioEnginePluginD1Ev
+88 QAudioEnginePlugin::_ZThn8_N18QAudioEnginePluginD0Ev
+92 __cxa_pure_virtual
+96 __cxa_pure_virtual
+100 __cxa_pure_virtual
+104 __cxa_pure_virtual
+108 __cxa_pure_virtual
+
+Class QAudioEnginePlugin
+ size=12 align=4
+ base size=12 base align=4
+QAudioEnginePlugin (0xb1879640) 0
+ vptr=((& QAudioEnginePlugin::_ZTV18QAudioEnginePlugin) + 8u)
+ QObject (0xb187f12c) 0
+ primary-for QAudioEnginePlugin (0xb1879640)
+ QAudioEngineFactoryInterface (0xb183fbc0) 8 nearly-empty
+ vptr=((& QAudioEnginePlugin::_ZTV18QAudioEnginePlugin) + 84u)
+ QFactoryInterface (0xb187f168) 8 nearly-empty
+ primary-for QAudioEngineFactoryInterface (0xb183fbc0)
+
+Vtable for QAudioInput
+QAudioInput::_ZTV11QAudioInput: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI11QAudioInput)
+8 QAudioInput::metaObject
+12 QAudioInput::qt_metacast
+16 QAudioInput::qt_metacall
+20 QAudioInput::~QAudioInput
+24 QAudioInput::~QAudioInput
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QAudioInput
+ size=12 align=4
+ base size=12 base align=4
+QAudioInput (0xb183fe00) 0
+ vptr=((& QAudioInput::_ZTV11QAudioInput) + 8u)
+ QObject (0xb187f294) 0
+ primary-for QAudioInput (0xb183fe00)
+
+Vtable for QAudioOutput
+QAudioOutput::_ZTV12QAudioOutput: 14u entries
+0 (int (*)(...))0
+4 (int (*)(...))(& _ZTI12QAudioOutput)
+8 QAudioOutput::metaObject
+12 QAudioOutput::qt_metacast
+16 QAudioOutput::qt_metacall
+20 QAudioOutput::~QAudioOutput
+24 QAudioOutput::~QAudioOutput
+28 QObject::event
+32 QObject::eventFilter
+36 QObject::timerEvent
+40 QObject::childEvent
+44 QObject::customEvent
+48 QObject::connectNotify
+52 QObject::disconnectNotify
+
+Class QAudioOutput
+ size=12 align=4
+ base size=12 base align=4
+QAudioOutput (0xb1897040) 0
+ vptr=((& QAudioOutput::_ZTV12QAudioOutput) + 8u)
+ QObject (0xb187f3c0) 0
+ primary-for QAudioOutput (0xb1897040)
+
diff --git a/tests/auto/qabstractvideobuffer/qabstractvideobuffer.pro b/tests/auto/qabstractvideobuffer/qabstractvideobuffer.pro
new file mode 100644
index 000000000..080719a72
--- /dev/null
+++ b/tests/auto/qabstractvideobuffer/qabstractvideobuffer.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qabstractvideobuffer.cpp
+
+QT += multimedia
+requires(contains(QT_CONFIG, multimedia))
diff --git a/tests/auto/qabstractvideobuffer/tst_qabstractvideobuffer.cpp b/tests/auto/qabstractvideobuffer/tst_qabstractvideobuffer.cpp
new file mode 100644
index 000000000..72d14b269
--- /dev/null
+++ b/tests/auto/qabstractvideobuffer/tst_qabstractvideobuffer.cpp
@@ -0,0 +1,132 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <QtMultimedia/QAbstractVideoBuffer>
+
+class tst_QAbstractVideoBuffer : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QAbstractVideoBuffer();
+ ~tst_QAbstractVideoBuffer();
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void handleType_data();
+ void handleType();
+ void handle();
+};
+
+class QtTestVideoBuffer : public QAbstractVideoBuffer
+{
+public:
+ QtTestVideoBuffer(QAbstractVideoBuffer::HandleType type) : QAbstractVideoBuffer(type) {}
+
+ MapMode mapMode() const { return NotMapped; }
+
+ uchar *map(MapMode, int *, int *) { return 0; }
+ void unmap() {}
+};
+
+tst_QAbstractVideoBuffer::tst_QAbstractVideoBuffer()
+{
+}
+
+tst_QAbstractVideoBuffer::~tst_QAbstractVideoBuffer()
+{
+}
+
+void tst_QAbstractVideoBuffer::initTestCase()
+{
+}
+
+void tst_QAbstractVideoBuffer::cleanupTestCase()
+{
+}
+
+void tst_QAbstractVideoBuffer::init()
+{
+}
+
+void tst_QAbstractVideoBuffer::cleanup()
+{
+}
+
+void tst_QAbstractVideoBuffer::handleType_data()
+{
+ QTest::addColumn<QAbstractVideoBuffer::HandleType>("type");
+
+ QTest::newRow("none")
+ << QAbstractVideoBuffer::NoHandle;
+ QTest::newRow("opengl")
+ << QAbstractVideoBuffer::GLTextureHandle;
+ QTest::newRow("user1")
+ << QAbstractVideoBuffer::UserHandle;
+ QTest::newRow("user2")
+ << QAbstractVideoBuffer::HandleType(QAbstractVideoBuffer::UserHandle + 1);
+}
+
+void tst_QAbstractVideoBuffer::handleType()
+{
+ QFETCH(QAbstractVideoBuffer::HandleType, type);
+
+ QtTestVideoBuffer buffer(type);
+
+ QCOMPARE(buffer.handleType(), type);
+}
+
+void tst_QAbstractVideoBuffer::handle()
+{
+ QtTestVideoBuffer buffer(QAbstractVideoBuffer::NoHandle);
+
+ QVERIFY(buffer.handle().isNull());
+}
+
+QTEST_MAIN(tst_QAbstractVideoBuffer)
+
+#include "tst_qabstractvideobuffer.moc"
diff --git a/tests/auto/qabstractvideosurface/qabstractvideosurface.pro b/tests/auto/qabstractvideosurface/qabstractvideosurface.pro
new file mode 100644
index 000000000..4e14542da
--- /dev/null
+++ b/tests/auto/qabstractvideosurface/qabstractvideosurface.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qabstractvideosurface.cpp
+
+QT += multimedia
+requires(contains(QT_CONFIG, multimedia))
diff --git a/tests/auto/qabstractvideosurface/tst_qabstractvideosurface.cpp b/tests/auto/qabstractvideosurface/tst_qabstractvideosurface.cpp
new file mode 100644
index 000000000..0d6395007
--- /dev/null
+++ b/tests/auto/qabstractvideosurface/tst_qabstractvideosurface.cpp
@@ -0,0 +1,310 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <QtMultimedia/QAbstractVideoSurface>
+#include <QtMultimedia/QVideoSurfaceFormat>
+
+class tst_QAbstractVideoSurface : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QAbstractVideoSurface();
+ ~tst_QAbstractVideoSurface();
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void setError();
+ void isFormatSupported_data();
+ void isFormatSupported();
+ void nearestFormat_data();
+ void nearestFormat();
+ void start_data();
+ void start();
+};
+
+typedef QMap<QAbstractVideoBuffer::HandleType, QVideoFrame::PixelFormat> SupportedFormatMap;
+
+Q_DECLARE_METATYPE(SupportedFormatMap)
+Q_DECLARE_METATYPE(QVideoSurfaceFormat)
+Q_DECLARE_METATYPE(QAbstractVideoSurface::Error);
+
+class QtTestVideoSurface : public QAbstractVideoSurface
+{
+ Q_OBJECT
+public:
+ explicit QtTestVideoSurface(QObject *parent = 0) : QAbstractVideoSurface(parent) {}
+ explicit QtTestVideoSurface(SupportedFormatMap formats, QObject *parent = 0)
+ : QAbstractVideoSurface(parent), supportedFormats(formats) {}
+
+ QList<QVideoFrame::PixelFormat> supportedPixelFormats(
+ QAbstractVideoBuffer::HandleType handleType = QAbstractVideoBuffer::NoHandle) const
+ {
+ return supportedFormats.values(handleType);
+ }
+
+ bool present(const QVideoFrame &) { return false; }
+
+ using QAbstractVideoSurface::setError;
+
+private:
+ SupportedFormatMap supportedFormats;
+};
+
+tst_QAbstractVideoSurface::tst_QAbstractVideoSurface()
+{
+}
+
+tst_QAbstractVideoSurface::~tst_QAbstractVideoSurface()
+{
+}
+
+void tst_QAbstractVideoSurface::initTestCase()
+{
+}
+
+void tst_QAbstractVideoSurface::cleanupTestCase()
+{
+}
+
+void tst_QAbstractVideoSurface::init()
+{
+}
+
+void tst_QAbstractVideoSurface::cleanup()
+{
+}
+
+void tst_QAbstractVideoSurface::setError()
+{
+ qRegisterMetaType<QAbstractVideoSurface::Error>();
+
+ QtTestVideoSurface surface;
+
+ QCOMPARE(surface.error(), QAbstractVideoSurface::NoError);
+
+ surface.setError(QAbstractVideoSurface::StoppedError);
+ QCOMPARE(surface.error(), QAbstractVideoSurface::StoppedError);
+
+ surface.setError(QAbstractVideoSurface::ResourceError);
+ QCOMPARE(surface.error(), QAbstractVideoSurface::ResourceError);
+
+ surface.setError(QAbstractVideoSurface::NoError);
+ QCOMPARE(surface.error(), QAbstractVideoSurface::NoError);
+}
+
+void tst_QAbstractVideoSurface::isFormatSupported_data()
+{
+ QTest::addColumn<SupportedFormatMap>("supportedFormats");
+ QTest::addColumn<QVideoSurfaceFormat>("format");
+ QTest::addColumn<bool>("supported");
+
+ SupportedFormatMap formats;
+
+ QTest::newRow("no formats: rgb32")
+ << formats
+ << QVideoSurfaceFormat(QSize(800, 600), QVideoFrame::Format_RGB32)
+ << false;
+ QTest::newRow("no formats: yv12")
+ << formats
+ << QVideoSurfaceFormat(QSize(800, 600), QVideoFrame::Format_YV12)
+ << false;
+ QTest::newRow("no formats: rgb32 gl")
+ << formats
+ << QVideoSurfaceFormat(
+ QSize(800, 600),
+ QVideoFrame::Format_RGB32,
+ QAbstractVideoBuffer::GLTextureHandle)
+ << false;
+ QTest::newRow("no formats: rgb24 gl")
+ << formats
+ << QVideoSurfaceFormat(
+ QSize(800, 600),
+ QVideoFrame::Format_RGB24,
+ QAbstractVideoBuffer::GLTextureHandle)
+ << false;
+
+ formats.insertMulti(QAbstractVideoBuffer::NoHandle, QVideoFrame::Format_RGB32);
+ formats.insertMulti(QAbstractVideoBuffer::NoHandle, QVideoFrame::Format_RGB24);
+ formats.insertMulti(QAbstractVideoBuffer::NoHandle, QVideoFrame::Format_YUV444);
+ formats.insertMulti(QAbstractVideoBuffer::GLTextureHandle, QVideoFrame::Format_RGB32);
+
+ QTest::newRow("supported: rgb32")
+ << formats
+ << QVideoSurfaceFormat(QSize(800, 600), QVideoFrame::Format_RGB32)
+ << true;
+ QTest::newRow("supported: rgb24")
+ << formats
+ << QVideoSurfaceFormat(QSize(800, 600), QVideoFrame::Format_RGB24)
+ << true;
+ QTest::newRow("unsupported: yv12")
+ << formats
+ << QVideoSurfaceFormat(QSize(800, 600), QVideoFrame::Format_YV12)
+ << false;
+ QTest::newRow("supported: rgb32 gl")
+ << formats
+ << QVideoSurfaceFormat(
+ QSize(800, 600),
+ QVideoFrame::Format_RGB32,
+ QAbstractVideoBuffer::GLTextureHandle)
+ << true;
+ QTest::newRow("unsupported: rgb24 gl")
+ << formats
+ << QVideoSurfaceFormat(
+ QSize(800, 600),
+ QVideoFrame::Format_RGB24,
+ QAbstractVideoBuffer::GLTextureHandle)
+ << false;
+ QTest::newRow("unsupported: yv12 gl")
+ << formats
+ << QVideoSurfaceFormat(
+ QSize(800, 600),
+ QVideoFrame::Format_YV12,
+ QAbstractVideoBuffer::GLTextureHandle)
+ << false;
+
+ formats.insertMulti(QAbstractVideoBuffer::NoHandle, QVideoFrame::Format_YV12);
+ formats.insertMulti(QAbstractVideoBuffer::GLTextureHandle, QVideoFrame::Format_RGB24);
+
+ QTest::newRow("supported: yv12")
+ << formats
+ << QVideoSurfaceFormat(QSize(800, 600), QVideoFrame::Format_YV12)
+ << true;
+ QTest::newRow("supported: rgb24 gl")
+ << formats
+ << QVideoSurfaceFormat(
+ QSize(800, 600),
+ QVideoFrame::Format_RGB24,
+ QAbstractVideoBuffer::GLTextureHandle)
+ << true;
+}
+
+void tst_QAbstractVideoSurface::isFormatSupported()
+{
+ QFETCH(SupportedFormatMap, supportedFormats);
+ QFETCH(QVideoSurfaceFormat, format);
+ QFETCH(bool, supported);
+
+ QtTestVideoSurface surface(supportedFormats);
+
+ QCOMPARE(surface.isFormatSupported(format), supported);
+}
+
+void tst_QAbstractVideoSurface::nearestFormat_data()
+{
+ isFormatSupported_data();
+}
+
+void tst_QAbstractVideoSurface::nearestFormat()
+{
+ QFETCH(SupportedFormatMap, supportedFormats);
+ QFETCH(QVideoSurfaceFormat, format);
+ QFETCH(bool, supported);
+
+ QtTestVideoSurface surface(supportedFormats);
+
+ QCOMPARE(surface.nearestFormat(format) == format, supported);
+}
+
+void tst_QAbstractVideoSurface::start_data()
+{
+ QTest::addColumn<QVideoSurfaceFormat>("format");
+
+ QTest::newRow("rgb32") << QVideoSurfaceFormat(
+ QSize(800, 600),
+ QVideoFrame::Format_RGB32);
+ QTest::newRow("yv12") << QVideoSurfaceFormat(
+ QSize(800, 600),
+ QVideoFrame::Format_YV12);
+ QTest::newRow("rgb32 gl") << QVideoSurfaceFormat(
+ QSize(800, 600),
+ QVideoFrame::Format_RGB32,
+ QAbstractVideoBuffer::GLTextureHandle);
+}
+
+void tst_QAbstractVideoSurface::start()
+{
+ QFETCH(QVideoSurfaceFormat, format);
+
+ QtTestVideoSurface surface;
+ surface.setError(QAbstractVideoSurface::ResourceError);
+
+ QSignalSpy formatSpy(&surface, SIGNAL(surfaceFormatChanged(QVideoSurfaceFormat)));
+ QSignalSpy activeSpy(&surface, SIGNAL(activeChanged(bool)));
+
+ QVERIFY(!surface.isActive());
+ QCOMPARE(surface.surfaceFormat(), QVideoSurfaceFormat());
+
+ QVERIFY(surface.start(format));
+
+ QVERIFY(surface.isActive());
+ QCOMPARE(surface.surfaceFormat(), format);
+
+ QCOMPARE(formatSpy.count(), 1);
+ QCOMPARE(qvariant_cast<QVideoSurfaceFormat>(formatSpy.last().at(0)), format);
+
+ QCOMPARE(activeSpy.count(), 1);
+ QCOMPARE(activeSpy.last().at(0).toBool(), true);
+
+ // error() is reset on a successful start.
+ QCOMPARE(surface.error(), QAbstractVideoSurface::NoError);
+
+ surface.stop();
+
+ QVERIFY(!surface.isActive());
+ QCOMPARE(surface.surfaceFormat(), QVideoSurfaceFormat());
+
+ QCOMPARE(formatSpy.count(), 2);
+ QCOMPARE(qvariant_cast<QVideoSurfaceFormat>(formatSpy.last().at(0)), QVideoSurfaceFormat());
+
+ QCOMPARE(activeSpy.count(), 2);
+ QCOMPARE(activeSpy.last().at(0).toBool(), false);
+}
+
+QTEST_MAIN(tst_QAbstractVideoSurface)
+
+#include "tst_qabstractvideosurface.moc"
diff --git a/tests/auto/qaudiodeviceinfo/qaudiodeviceinfo.pro b/tests/auto/qaudiodeviceinfo/qaudiodeviceinfo.pro
new file mode 100644
index 000000000..695987c9e
--- /dev/null
+++ b/tests/auto/qaudiodeviceinfo/qaudiodeviceinfo.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
+
+SOURCES += tst_qaudiodeviceinfo.cpp
+
+QT = core multimedia
diff --git a/tests/auto/qaudiodeviceinfo/tst_qaudiodeviceinfo.cpp b/tests/auto/qaudiodeviceinfo/tst_qaudiodeviceinfo.cpp
new file mode 100644
index 000000000..e3171d97b
--- /dev/null
+++ b/tests/auto/qaudiodeviceinfo/tst_qaudiodeviceinfo.cpp
@@ -0,0 +1,194 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/qlocale.h>
+#include <qaudiodeviceinfo.h>
+
+#include <QStringList>
+#include <QList>
+
+
+class tst_QAudioDeviceInfo : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QAudioDeviceInfo(QObject* parent=0) : QObject(parent) {}
+
+private slots:
+ void initTestCase();
+ void checkAvailableDefaultInput();
+ void checkAvailableDefaultOutput();
+ void outputList();
+ void codecs();
+ void channels();
+ void sampleSizes();
+ void byteOrders();
+ void sampleTypes();
+ void frequencies();
+ void isformat();
+ void preferred();
+
+private:
+ bool available;
+ QAudioDeviceInfo* device;
+};
+
+void tst_QAudioDeviceInfo::initTestCase()
+{
+ // Only perform tests if audio output device exists!
+ QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
+ if(devices.size() > 0)
+ available = true;
+ else {
+ qWarning()<<"NOTE: no audio output device found, no test will be performed";
+ available = false;
+ }
+}
+
+void tst_QAudioDeviceInfo::checkAvailableDefaultInput()
+{
+ // Only perform tests if audio input device exists!
+ bool storeAvailable = available;
+ QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
+ if(devices.size() > 0)
+ available = true;
+ else {
+ qWarning()<<"NOTE: no audio input device found, no test will be performed";
+ available = false;
+ }
+ if(available)
+ QVERIFY(!QAudioDeviceInfo::defaultInputDevice().isNull());
+ available = storeAvailable;
+}
+
+void tst_QAudioDeviceInfo::checkAvailableDefaultOutput()
+{
+ if(available)
+ QVERIFY(!QAudioDeviceInfo::defaultOutputDevice().isNull());
+}
+
+void tst_QAudioDeviceInfo::outputList()
+{
+ if(available) {
+ QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
+ QVERIFY(devices.size() > 0);
+ device = new QAudioDeviceInfo(devices.at(0));
+ }
+}
+
+void tst_QAudioDeviceInfo::codecs()
+{
+ if(available) {
+ QStringList avail = device->supportedCodecs();
+ QVERIFY(avail.size() > 0);
+ }
+}
+
+void tst_QAudioDeviceInfo::channels()
+{
+ if(available) {
+ QList<int> avail = device->supportedChannels();
+ QVERIFY(avail.size() > 0);
+ }
+}
+
+void tst_QAudioDeviceInfo::sampleSizes()
+{
+ if(available) {
+ QList<int> avail = device->supportedSampleSizes();
+ QVERIFY(avail.size() > 0);
+ }
+}
+
+void tst_QAudioDeviceInfo::byteOrders()
+{
+ if(available) {
+ QList<QAudioFormat::Endian> avail = device->supportedByteOrders();
+ QVERIFY(avail.size() > 0);
+ }
+}
+
+void tst_QAudioDeviceInfo::sampleTypes()
+{
+ if(available) {
+ QList<QAudioFormat::SampleType> avail = device->supportedSampleTypes();
+ QVERIFY(avail.size() > 0);
+ }
+}
+
+void tst_QAudioDeviceInfo::frequencies()
+{
+ if(available) {
+ QList<int> avail = device->supportedFrequencies();
+ QVERIFY(avail.size() > 0);
+ }
+}
+
+void tst_QAudioDeviceInfo::isformat()
+{
+ if(available) {
+ QAudioFormat format;
+ format.setFrequency(44100);
+ format.setChannels(2);
+ format.setSampleType(QAudioFormat::SignedInt);
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setSampleSize(16);
+ format.setCodec("audio/pcm");
+
+ // Should always be true for these format
+ QVERIFY(device->isFormatSupported(format));
+ }
+}
+
+void tst_QAudioDeviceInfo::preferred()
+{
+ if(available) {
+ QAudioFormat format = device->preferredFormat();
+ QVERIFY(format.frequency() == 44100);
+ QVERIFY(format.channels() == 2);
+ }
+}
+
+QTEST_MAIN(tst_QAudioDeviceInfo)
+
+#include "tst_qaudiodeviceinfo.moc"
diff --git a/tests/auto/qaudioformat/qaudioformat.pro b/tests/auto/qaudioformat/qaudioformat.pro
new file mode 100644
index 000000000..78962d706
--- /dev/null
+++ b/tests/auto/qaudioformat/qaudioformat.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
+
+SOURCES += tst_qaudioformat.cpp
+
+QT = core multimedia
diff --git a/tests/auto/qaudioformat/tst_qaudioformat.cpp b/tests/auto/qaudioformat/tst_qaudioformat.cpp
new file mode 100644
index 000000000..cec3feed6
--- /dev/null
+++ b/tests/auto/qaudioformat/tst_qaudioformat.cpp
@@ -0,0 +1,183 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/qlocale.h>
+#include <qaudioformat.h>
+
+#include <QStringList>
+#include <QList>
+
+
+class tst_QAudioFormat : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QAudioFormat(QObject* parent=0) : QObject(parent) {}
+
+private slots:
+ void checkNull();
+ void checkFrequency();
+ void checkChannels();
+ void checkSampleSize();
+ void checkCodec();
+ void checkByteOrder();
+ void checkSampleType();
+ void checkEquality();
+ void checkAssignment();
+};
+
+void tst_QAudioFormat::checkNull()
+{
+ // Default constructed QAudioFormat is invalid.
+ QAudioFormat audioFormat0;
+ QVERIFY(!audioFormat0.isValid());
+
+ // validity is transferred
+ QAudioFormat audioFormat1(audioFormat0);
+ QVERIFY(!audioFormat1.isValid());
+
+ audioFormat0.setFrequency(44100);
+ audioFormat0.setChannels(2);
+ audioFormat0.setSampleSize(16);
+ audioFormat0.setCodec("audio/pcm");
+ audioFormat0.setSampleType(QAudioFormat::SignedInt);
+ QVERIFY(audioFormat0.isValid());
+}
+
+void tst_QAudioFormat::checkFrequency()
+{
+ QAudioFormat audioFormat;
+ audioFormat.setFrequency(44100);
+ QVERIFY(audioFormat.frequency() == 44100);
+}
+
+void tst_QAudioFormat::checkChannels()
+{
+ QAudioFormat audioFormat;
+ audioFormat.setChannels(2);
+ QVERIFY(audioFormat.channels() == 2);
+}
+
+void tst_QAudioFormat::checkSampleSize()
+{
+ QAudioFormat audioFormat;
+ audioFormat.setSampleSize(16);
+ QVERIFY(audioFormat.sampleSize() == 16);
+}
+
+void tst_QAudioFormat::checkCodec()
+{
+ QAudioFormat audioFormat;
+ audioFormat.setCodec(QString::fromLatin1("audio/pcm"));
+ QVERIFY(audioFormat.codec() == QString::fromLatin1("audio/pcm"));
+}
+
+void tst_QAudioFormat::checkByteOrder()
+{
+ QAudioFormat audioFormat;
+ audioFormat.setByteOrder(QAudioFormat::LittleEndian);
+ QVERIFY(audioFormat.byteOrder() == QAudioFormat::LittleEndian);
+}
+
+void tst_QAudioFormat::checkSampleType()
+{
+ QAudioFormat audioFormat;
+ audioFormat.setSampleType(QAudioFormat::SignedInt);
+ QVERIFY(audioFormat.sampleType() == QAudioFormat::SignedInt);
+}
+
+void tst_QAudioFormat::checkEquality()
+{
+ QAudioFormat audioFormat0;
+ QAudioFormat audioFormat1;
+
+ // Null formats are equivalent
+ QVERIFY(audioFormat0 == audioFormat1);
+ QVERIFY(!(audioFormat0 != audioFormat1));
+
+ // on filled formats
+ audioFormat0.setFrequency(8000);
+ audioFormat0.setChannels(1);
+ audioFormat0.setSampleSize(8);
+ audioFormat0.setCodec("audio/pcm");
+ audioFormat0.setByteOrder(QAudioFormat::LittleEndian);
+ audioFormat0.setSampleType(QAudioFormat::UnSignedInt);
+
+ audioFormat1.setFrequency(8000);
+ audioFormat1.setChannels(1);
+ audioFormat1.setSampleSize(8);
+ audioFormat1.setCodec("audio/pcm");
+ audioFormat1.setByteOrder(QAudioFormat::LittleEndian);
+ audioFormat1.setSampleType(QAudioFormat::UnSignedInt);
+
+ QVERIFY(audioFormat0 == audioFormat1);
+ QVERIFY(!(audioFormat0 != audioFormat1));
+
+ audioFormat0.setFrequency(44100);
+ QVERIFY(audioFormat0 != audioFormat1);
+ QVERIFY(!(audioFormat0 == audioFormat1));
+}
+
+void tst_QAudioFormat::checkAssignment()
+{
+ QAudioFormat audioFormat0;
+ QAudioFormat audioFormat1;
+
+ audioFormat0.setFrequency(8000);
+ audioFormat0.setChannels(1);
+ audioFormat0.setSampleSize(8);
+ audioFormat0.setCodec("audio/pcm");
+ audioFormat0.setByteOrder(QAudioFormat::LittleEndian);
+ audioFormat0.setSampleType(QAudioFormat::UnSignedInt);
+
+ audioFormat1 = audioFormat0;
+ QVERIFY(audioFormat1 == audioFormat0);
+
+ QAudioFormat audioFormat2(audioFormat0);
+ QVERIFY(audioFormat2 == audioFormat0);
+}
+
+QTEST_MAIN(tst_QAudioFormat)
+
+#include "tst_qaudioformat.moc"
diff --git a/tests/auto/qaudioinput/qaudioinput.pro b/tests/auto/qaudioinput/qaudioinput.pro
new file mode 100644
index 000000000..aac7fb45e
--- /dev/null
+++ b/tests/auto/qaudioinput/qaudioinput.pro
@@ -0,0 +1,15 @@
+load(qttest_p4)
+
+SOURCES += tst_qaudioinput.cpp
+
+QT = core multimedia
+
+wince* {
+ deploy.files += 4.wav
+ DEPLOYMENT += deploy
+ DEFINES += SRCDIR=\\\"\\\"
+ QT += gui
+} else {
+ !symbian:DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
diff --git a/tests/auto/qaudioinput/tst_qaudioinput.cpp b/tests/auto/qaudioinput/tst_qaudioinput.cpp
new file mode 100644
index 000000000..9cf11e0fd
--- /dev/null
+++ b/tests/auto/qaudioinput/tst_qaudioinput.cpp
@@ -0,0 +1,222 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtCore/qlocale.h>
+#include <qaudioinput.h>
+#include <qaudiodeviceinfo.h>
+#include <qaudio.h>
+#include <qaudioformat.h>
+
+#if defined(Q_OS_SYMBIAN)
+#define SRCDIR ""
+#endif
+
+Q_DECLARE_METATYPE(QAudioFormat)
+
+class tst_QAudioInput : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QAudioInput(QObject* parent=0) : QObject(parent) {}
+
+private slots:
+ void initTestCase();
+ void invalidFormat_data();
+ void invalidFormat();
+ void settings();
+ void buffers();
+ void notifyInterval();
+ void pullFile();
+
+private:
+ bool available;
+ QAudioFormat format;
+ QAudioInput* audio;
+};
+
+void tst_QAudioInput::initTestCase()
+{
+ qRegisterMetaType<QAudioFormat>();
+
+ format.setFrequency(8000);
+ format.setChannels(1);
+ format.setSampleSize(8);
+ format.setCodec("audio/pcm");
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setSampleType(QAudioFormat::UnSignedInt);
+
+ // Only perform tests if audio input device exists!
+ QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
+ if(devices.size() > 0)
+ available = true;
+ else {
+ qWarning()<<"NOTE: no audio input device found, no test will be performed";
+ available = false;
+ }
+
+ if(available)
+ audio = new QAudioInput(format, this);
+}
+
+void tst_QAudioInput::invalidFormat_data()
+{
+ QTest::addColumn<QAudioFormat>("invalidFormat");
+
+ QAudioFormat audioFormat;
+
+ QTest::newRow("Null Format")
+ << audioFormat;
+
+ audioFormat = format;
+ audioFormat.setChannels(0);
+ QTest::newRow("Channel count 0")
+ << audioFormat;
+
+ audioFormat = format;
+ audioFormat.setFrequency(0);
+ QTest::newRow("Sample rate 0")
+ << audioFormat;
+
+ audioFormat = format;
+ audioFormat.setSampleSize(0);
+ QTest::newRow("Sample size 0")
+ << audioFormat;
+}
+
+void tst_QAudioInput::invalidFormat()
+{
+ QFETCH(QAudioFormat, invalidFormat);
+
+ QAudioInput audioInput(invalidFormat, this);
+
+ // Check that we are in the default state before calling start
+ QVERIFY2((audioInput.state() == QAudio::StoppedState), "state() was not set to StoppedState before start()");
+ QVERIFY2((audioInput.error() == QAudio::NoError), "error() was not set to QAudio::NoError before start()");
+
+ audioInput.start();
+
+ // Check that error is raised
+ QVERIFY2((audioInput.error() == QAudio::OpenError),"error() was not set to QAudio::OpenError after start()");
+}
+
+void tst_QAudioInput::settings()
+{
+ if(available) {
+ // Confirm the setting we added in the init function.
+ QAudioFormat f = audio->format();
+
+ QVERIFY(format.channels() == f.channels());
+ QVERIFY(format.frequency() == f.frequency());
+ QVERIFY(format.sampleSize() == f.sampleSize());
+ QVERIFY(format.codec() == f.codec());
+ QVERIFY(format.byteOrder() == f.byteOrder());
+ QVERIFY(format.sampleType() == f.sampleType());
+ }
+}
+
+void tst_QAudioInput::buffers()
+{
+ if(available) {
+ // Should always have a buffer size greater than zero.
+ int store = audio->bufferSize();
+ audio->setBufferSize(4096);
+ QVERIFY(audio->bufferSize() > 0);
+ audio->setBufferSize(store);
+ QVERIFY(audio->bufferSize() == store);
+ }
+}
+
+void tst_QAudioInput::notifyInterval()
+{
+ if(available) {
+ QVERIFY(audio->notifyInterval() == 1000); // Default
+
+ audio->setNotifyInterval(500);
+ QVERIFY(audio->notifyInterval() == 500); // Custom
+
+ audio->setNotifyInterval(1000); // reset
+ }
+}
+
+void tst_QAudioInput::pullFile()
+{
+ if(available) {
+ QFile filename(SRCDIR"test.raw");
+ filename.open( QIODevice::WriteOnly | QIODevice::Truncate );
+
+ QSignalSpy readSignal(audio, SIGNAL(notify()));
+ QSignalSpy stateSignal(audio, SIGNAL(stateChanged(QAudio::State)));
+
+ // Always have default states, before start
+ QVERIFY(audio->state() == QAudio::StoppedState);
+ QVERIFY(audio->error() == QAudio::NoError);
+ QVERIFY(audio->elapsedUSecs() == 0);
+
+ audio->start(&filename);
+ QTest::qWait(20);
+ // Check state and periodSize() are valid non-zero values.
+ QVERIFY(audio->state() == QAudio::ActiveState);
+ QVERIFY(audio->error() == QAudio::NoError);
+ QVERIFY(audio->elapsedUSecs() > 10000 && audio->elapsedUSecs() < 800000);
+ QVERIFY(audio->periodSize() > 0);
+ QVERIFY(stateSignal.count() == 1); // State changed to QAudio::ActiveState
+
+ // Wait until finished...
+ QTest::qWait(5000);
+
+ QVERIFY(readSignal.count() > 0);
+ QVERIFY(audio->processedUSecs() > 0);
+
+ audio->stop();
+ QTest::qWait(20);
+ QVERIFY(audio->state() == QAudio::StoppedState);
+ QVERIFY(audio->elapsedUSecs() == 0);
+ // Can only check to make sure we got at least 1 more signal, but can be more.
+ QVERIFY(stateSignal.count() > 1);
+
+ filename.close();
+ }
+}
+
+QTEST_MAIN(tst_QAudioInput)
+
+#include "tst_qaudioinput.moc"
diff --git a/tests/auto/qaudiooutput/4.wav b/tests/auto/qaudiooutput/4.wav
new file mode 100644
index 000000000..e31b06090
--- /dev/null
+++ b/tests/auto/qaudiooutput/4.wav
Binary files differ
diff --git a/tests/auto/qaudiooutput/qaudiooutput.pro b/tests/auto/qaudiooutput/qaudiooutput.pro
new file mode 100644
index 000000000..f4d840a97
--- /dev/null
+++ b/tests/auto/qaudiooutput/qaudiooutput.pro
@@ -0,0 +1,16 @@
+load(qttest_p4)
+
+SOURCES += tst_qaudiooutput.cpp
+
+QT = core multimedia
+
+wince*|symbian: {
+ deploy.files += 4.wav
+ DEPLOYMENT += deploy
+ !symbian {
+ DEFINES += SRCDIR=\\\"\\\"
+ QT += gui
+ }
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
diff --git a/tests/auto/qaudiooutput/tst_qaudiooutput.cpp b/tests/auto/qaudiooutput/tst_qaudiooutput.cpp
new file mode 100644
index 000000000..7a3abaea8
--- /dev/null
+++ b/tests/auto/qaudiooutput/tst_qaudiooutput.cpp
@@ -0,0 +1,263 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+
+#include <QtTest/QtTest>
+#include <QtCore/qlocale.h>
+#include <qaudiooutput.h>
+#include <qaudiodeviceinfo.h>
+#include <qaudio.h>
+#include <qaudioformat.h>
+
+#if defined(Q_OS_SYMBIAN)
+#define SRCDIR ""
+#endif
+
+Q_DECLARE_METATYPE(QAudioFormat)
+
+class tst_QAudioOutput : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QAudioOutput(QObject* parent=0) : QObject(parent) {}
+
+private slots:
+ void initTestCase();
+ void invalidFormat_data();
+ void invalidFormat();
+ void settings();
+ void buffers();
+ void notifyInterval();
+ void pullFile();
+ void pushFile();
+
+private:
+ bool available;
+ QAudioFormat format;
+ QAudioOutput* audio;
+};
+
+void tst_QAudioOutput::initTestCase()
+{
+ qRegisterMetaType<QAudioFormat>();
+
+ format.setFrequency(8000);
+ format.setChannels(1);
+ format.setSampleSize(8);
+ format.setCodec("audio/pcm");
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setSampleType(QAudioFormat::UnSignedInt);
+
+ // Only perform tests if audio output device exists!
+ QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
+ if(devices.size() > 0)
+ available = true;
+ else {
+ qWarning()<<"NOTE: no audio output device found, no test will be performed";
+ available = false;
+ }
+ audio = new QAudioOutput(format, this);
+}
+
+void tst_QAudioOutput::invalidFormat_data()
+{
+ QTest::addColumn<QAudioFormat>("invalidFormat");
+
+ QAudioFormat audioFormat;
+
+ QTest::newRow("Null Format")
+ << audioFormat;
+
+ audioFormat = format;
+ audioFormat.setChannels(0);
+ QTest::newRow("Channel count 0")
+ << audioFormat;
+
+ audioFormat = format;
+ audioFormat.setFrequency(0);
+ QTest::newRow("Sample rate 0")
+ << audioFormat;
+
+ audioFormat = format;
+ audioFormat.setSampleSize(0);
+ QTest::newRow("Sample size 0")
+ << audioFormat;
+}
+
+void tst_QAudioOutput::invalidFormat()
+{
+ QFETCH(QAudioFormat, invalidFormat);
+
+ QAudioOutput audioOutput(invalidFormat, this);
+
+ // Check that we are in the default state before calling start
+ QVERIFY2((audioOutput.state() == QAudio::StoppedState), "state() was not set to StoppedState before start()");
+ QVERIFY2((audioOutput.error() == QAudio::NoError), "error() was not set to QAudio::NoError before start()");
+
+ audioOutput.start();
+
+ // Check that error is raised
+ QVERIFY2((audioOutput.error() == QAudio::OpenError),"error() was not set to QAudio::OpenError after start()");
+}
+
+void tst_QAudioOutput::settings()
+{
+ if(available) {
+ // Confirm the setting we added in the init function.
+ QAudioFormat f = audio->format();
+
+ QVERIFY(format.channels() == f.channels());
+ QVERIFY(format.frequency() == f.frequency());
+ QVERIFY(format.sampleSize() == f.sampleSize());
+ QVERIFY(format.codec() == f.codec());
+ QVERIFY(format.byteOrder() == f.byteOrder());
+ QVERIFY(format.sampleType() == f.sampleType());
+ }
+}
+
+void tst_QAudioOutput::buffers()
+{
+ if(available) {
+ // Should always have a buffer size greater than zero.
+ int store = audio->bufferSize();
+ audio->setBufferSize(4096);
+ QVERIFY(audio->bufferSize() > 0);
+ audio->setBufferSize(store);
+ QVERIFY(audio->bufferSize() == store);
+ }
+}
+
+void tst_QAudioOutput::notifyInterval()
+{
+ if(available) {
+ QVERIFY(audio->notifyInterval() == 1000); // Default
+
+ audio->setNotifyInterval(500);
+ QVERIFY(audio->notifyInterval() == 500); // Custom
+
+ audio->setNotifyInterval(1000); // reset
+ }
+}
+
+void tst_QAudioOutput::pullFile()
+{
+ if(available) {
+ QFile file(SRCDIR"4.wav");
+ QVERIFY(file.exists());
+ file.open(QIODevice::ReadOnly);
+
+ QSignalSpy readSignal(audio, SIGNAL(notify()));
+ QSignalSpy stateSignal(audio, SIGNAL(stateChanged(QAudio::State)));
+ audio->setNotifyInterval(100);
+
+ // Always have default states, before start
+ QVERIFY(audio->state() == QAudio::StoppedState);
+ QVERIFY(audio->error() == QAudio::NoError);
+ QVERIFY(audio->elapsedUSecs() == 0);
+
+ audio->start(&file);
+ QTest::qWait(20); // wait 20ms
+ // Check state, bytesFree() and periodSize() are valid non-zero values.
+ QVERIFY(audio->state() == QAudio::ActiveState);
+ QVERIFY(audio->error() == QAudio::NoError);
+ QVERIFY(audio->periodSize() > 0);
+ QVERIFY(audio->elapsedUSecs() > 10000 && audio->elapsedUSecs() < 800000);
+ QVERIFY(stateSignal.count() == 1); // State changed to QAudio::ActiveState
+
+ // Wait until finished...
+ QTestEventLoop::instance().enterLoop(1);
+ QCOMPARE(audio->processedUSecs(), qint64(692250));
+
+#ifdef Q_OS_WINCE
+ // 4.wav is a little less than 700ms, so notify should fire 4 times on Wince!
+ QVERIFY(readSignal.count() >= 4);
+#else
+ // 4.wav is a little less than 700ms, so notify should fire 6 times!
+ QVERIFY(readSignal.count() >= 6);
+#endif
+ audio->stop();
+ QTest::qWait(20); // wait 20ms
+ QVERIFY(audio->state() == QAudio::StoppedState);
+ QVERIFY(audio->elapsedUSecs() == 0);
+ // Can only check to make sure we got at least 1 more signal, but can be more.
+ QVERIFY(stateSignal.count() > 1);
+
+ file.close();
+ }
+}
+
+void tst_QAudioOutput::pushFile()
+{
+ if(available) {
+ QFile file(SRCDIR"4.wav");
+ QVERIFY(file.exists());
+ file.open(QIODevice::ReadOnly);
+
+ const qint64 fileSize = file.size();
+
+ QIODevice* feed = audio->start();
+
+ char* buffer = new char[fileSize];
+ file.read(buffer, fileSize);
+
+ qint64 counter=0;
+ qint64 written=0;
+ while(written < fileSize) {
+ written+=feed->write(buffer+written,fileSize-written);
+ QTest::qWait(20);
+ counter++;
+ }
+ QTestEventLoop::instance().enterLoop(1);
+
+ QVERIFY(written == fileSize);
+ QVERIFY(audio->processedUSecs() == 692250);
+
+ audio->stop();
+ file.close();
+ delete [] buffer;
+ delete audio;
+ }
+}
+
+QTEST_MAIN(tst_QAudioOutput)
+
+#include "tst_qaudiooutput.moc"
diff --git a/tests/auto/qvideoframe/qvideoframe.pro b/tests/auto/qvideoframe/qvideoframe.pro
new file mode 100644
index 000000000..a73535276
--- /dev/null
+++ b/tests/auto/qvideoframe/qvideoframe.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qvideoframe.cpp
+
+QT += multimedia
+requires(contains(QT_CONFIG, multimedia))
diff --git a/tests/auto/qvideoframe/tst_qvideoframe.cpp b/tests/auto/qvideoframe/tst_qvideoframe.cpp
new file mode 100644
index 000000000..ff5cdd260
--- /dev/null
+++ b/tests/auto/qvideoframe/tst_qvideoframe.cpp
@@ -0,0 +1,791 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <QtMultimedia/QVideoFrame>
+#include <QtGui/QImage>
+#include <QtCore/QPointer>
+
+class tst_QVideoFrame : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QVideoFrame();
+ ~tst_QVideoFrame();
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void create_data();
+ void create();
+ void createInvalid_data();
+ void createInvalid();
+ void createFromBuffer_data();
+ void createFromBuffer();
+ void createFromImage_data();
+ void createFromImage();
+ void createFromIncompatibleImage();
+ void createNull();
+ void destructor();
+ void copy_data();
+ void copy();
+ void assign_data();
+ void assign();
+ void map_data();
+ void map();
+ void mapImage_data();
+ void mapImage();
+ void imageDetach();
+ void formatConversion_data();
+ void formatConversion();
+};
+
+Q_DECLARE_METATYPE(QImage::Format)
+Q_DECLARE_METATYPE(QVideoFrame)
+
+class QtTestVideoBuffer : public QObject, public QAbstractVideoBuffer
+{
+ Q_OBJECT
+public:
+ QtTestVideoBuffer()
+ : QAbstractVideoBuffer(NoHandle) {}
+ explicit QtTestVideoBuffer(QAbstractVideoBuffer::HandleType type)
+ : QAbstractVideoBuffer(type) {}
+
+ MapMode mapMode() const { return NotMapped; }
+
+ uchar *map(MapMode, int *, int *) { return 0; }
+ void unmap() {}
+};
+
+tst_QVideoFrame::tst_QVideoFrame()
+{
+}
+
+tst_QVideoFrame::~tst_QVideoFrame()
+{
+}
+
+void tst_QVideoFrame::initTestCase()
+{
+}
+
+void tst_QVideoFrame::cleanupTestCase()
+{
+}
+
+void tst_QVideoFrame::init()
+{
+}
+
+void tst_QVideoFrame::cleanup()
+{
+}
+
+void tst_QVideoFrame::create_data()
+{
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<QVideoFrame::PixelFormat>("pixelFormat");
+ QTest::addColumn<int>("bytes");
+ QTest::addColumn<int>("bytesPerLine");
+
+ QTest::newRow("64x64 ARGB32")
+ << QSize(64, 64)
+ << QVideoFrame::Format_ARGB32
+ << 16384
+ << 256;
+ QTest::newRow("32x256 YUV420P")
+ << QSize(32, 256)
+ << QVideoFrame::Format_YUV420P
+ << 13288
+ << 32;
+}
+
+void tst_QVideoFrame::create()
+{
+ QFETCH(QSize, size);
+ QFETCH(QVideoFrame::PixelFormat, pixelFormat);
+ QFETCH(int, bytes);
+ QFETCH(int, bytesPerLine);
+
+ QVideoFrame frame(bytes, size, bytesPerLine, pixelFormat);
+
+ QVERIFY(frame.isValid());
+ QCOMPARE(frame.handleType(), QAbstractVideoBuffer::NoHandle);
+ QCOMPARE(frame.pixelFormat(), pixelFormat);
+ QCOMPARE(frame.size(), size);
+ QCOMPARE(frame.width(), size.width());
+ QCOMPARE(frame.height(), size.height());
+ QCOMPARE(frame.fieldType(), QVideoFrame::ProgressiveFrame);
+ QCOMPARE(frame.startTime(), qint64(-1));
+ QCOMPARE(frame.endTime(), qint64(-1));
+}
+
+void tst_QVideoFrame::createInvalid_data()
+{
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<QVideoFrame::PixelFormat>("pixelFormat");
+ QTest::addColumn<int>("bytes");
+ QTest::addColumn<int>("bytesPerLine");
+
+ QTest::newRow("64x64 ARGB32 0 size")
+ << QSize(64, 64)
+ << QVideoFrame::Format_ARGB32
+ << 0
+ << 45;
+ QTest::newRow("32x256 YUV420P negative size")
+ << QSize(32, 256)
+ << QVideoFrame::Format_YUV420P
+ << -13288
+ << 32;
+}
+
+void tst_QVideoFrame::createInvalid()
+{
+ QFETCH(QSize, size);
+ QFETCH(QVideoFrame::PixelFormat, pixelFormat);
+ QFETCH(int, bytes);
+ QFETCH(int, bytesPerLine);
+
+ QVideoFrame frame(bytes, size, bytesPerLine, pixelFormat);
+
+ QVERIFY(!frame.isValid());
+ QCOMPARE(frame.handleType(), QAbstractVideoBuffer::NoHandle);
+ QCOMPARE(frame.pixelFormat(), pixelFormat);
+ QCOMPARE(frame.size(), size);
+ QCOMPARE(frame.width(), size.width());
+ QCOMPARE(frame.height(), size.height());
+ QCOMPARE(frame.fieldType(), QVideoFrame::ProgressiveFrame);
+ QCOMPARE(frame.startTime(), qint64(-1));
+ QCOMPARE(frame.endTime(), qint64(-1));
+}
+
+void tst_QVideoFrame::createFromBuffer_data()
+{
+ QTest::addColumn<QAbstractVideoBuffer::HandleType>("handleType");
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<QVideoFrame::PixelFormat>("pixelFormat");
+
+ QTest::newRow("64x64 ARGB32 no handle")
+ << QAbstractVideoBuffer::NoHandle
+ << QSize(64, 64)
+ << QVideoFrame::Format_ARGB32;
+ QTest::newRow("64x64 ARGB32 gl handle")
+ << QAbstractVideoBuffer::GLTextureHandle
+ << QSize(64, 64)
+ << QVideoFrame::Format_ARGB32;
+ QTest::newRow("64x64 ARGB32 user handle")
+ << QAbstractVideoBuffer::UserHandle
+ << QSize(64, 64)
+ << QVideoFrame::Format_ARGB32;
+}
+
+void tst_QVideoFrame::createFromBuffer()
+{
+ QFETCH(QAbstractVideoBuffer::HandleType, handleType);
+ QFETCH(QSize, size);
+ QFETCH(QVideoFrame::PixelFormat, pixelFormat);
+
+ QVideoFrame frame(new QtTestVideoBuffer(handleType), size, pixelFormat);
+
+ QVERIFY(frame.isValid());
+ QCOMPARE(frame.handleType(), handleType);
+ QCOMPARE(frame.pixelFormat(), pixelFormat);
+ QCOMPARE(frame.size(), size);
+ QCOMPARE(frame.width(), size.width());
+ QCOMPARE(frame.height(), size.height());
+ QCOMPARE(frame.fieldType(), QVideoFrame::ProgressiveFrame);
+ QCOMPARE(frame.startTime(), qint64(-1));
+ QCOMPARE(frame.endTime(), qint64(-1));
+}
+
+void tst_QVideoFrame::createFromImage_data()
+{
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<QImage::Format>("imageFormat");
+ QTest::addColumn<QVideoFrame::PixelFormat>("pixelFormat");
+
+ QTest::newRow("64x64 RGB32")
+ << QSize(64, 64)
+ << QImage::Format_RGB32
+ << QVideoFrame::Format_RGB32;
+ QTest::newRow("12x45 RGB16")
+ << QSize(12, 45)
+ << QImage::Format_RGB16
+ << QVideoFrame::Format_RGB565;
+ QTest::newRow("19x46 ARGB32_Premultiplied")
+ << QSize(19, 46)
+ << QImage::Format_ARGB32_Premultiplied
+ << QVideoFrame::Format_ARGB32_Premultiplied;
+}
+
+void tst_QVideoFrame::createFromImage()
+{
+ QFETCH(QSize, size);
+ QFETCH(QImage::Format, imageFormat);
+ QFETCH(QVideoFrame::PixelFormat, pixelFormat);
+
+ const QImage image(size.width(), size.height(), imageFormat);
+
+ QVideoFrame frame(image);
+
+ QVERIFY(frame.isValid());
+ QCOMPARE(frame.handleType(), QAbstractVideoBuffer::NoHandle);
+ QCOMPARE(frame.pixelFormat(), pixelFormat);
+ QCOMPARE(frame.size(), size);
+ QCOMPARE(frame.width(), size.width());
+ QCOMPARE(frame.height(), size.height());
+ QCOMPARE(frame.fieldType(), QVideoFrame::ProgressiveFrame);
+ QCOMPARE(frame.startTime(), qint64(-1));
+ QCOMPARE(frame.endTime(), qint64(-1));
+}
+
+void tst_QVideoFrame::createFromIncompatibleImage()
+{
+ const QImage image(64, 64, QImage::Format_Mono);
+
+ QVideoFrame frame(image);
+
+ QVERIFY(!frame.isValid());
+ QCOMPARE(frame.handleType(), QAbstractVideoBuffer::NoHandle);
+ QCOMPARE(frame.pixelFormat(), QVideoFrame::Format_Invalid);
+ QCOMPARE(frame.size(), QSize(64, 64));
+ QCOMPARE(frame.width(), 64);
+ QCOMPARE(frame.height(), 64);
+ QCOMPARE(frame.fieldType(), QVideoFrame::ProgressiveFrame);
+ QCOMPARE(frame.startTime(), qint64(-1));
+ QCOMPARE(frame.endTime(), qint64(-1));
+}
+
+void tst_QVideoFrame::createNull()
+{
+ QVideoFrame frame;
+
+ QVERIFY(!frame.isValid());
+ QCOMPARE(frame.handleType(), QAbstractVideoBuffer::NoHandle);
+ QCOMPARE(frame.pixelFormat(), QVideoFrame::Format_Invalid);
+ QCOMPARE(frame.size(), QSize());
+ QCOMPARE(frame.width(), -1);
+ QCOMPARE(frame.height(), -1);
+ QCOMPARE(frame.fieldType(), QVideoFrame::ProgressiveFrame);
+ QCOMPARE(frame.startTime(), qint64(-1));
+ QCOMPARE(frame.endTime(), qint64(-1));
+}
+
+void tst_QVideoFrame::destructor()
+{
+ QPointer<QtTestVideoBuffer> buffer = new QtTestVideoBuffer;
+
+ {
+ QVideoFrame frame(buffer, QSize(4, 1), QVideoFrame::Format_ARGB32);
+ }
+
+ QVERIFY(buffer.isNull());
+}
+
+void tst_QVideoFrame::copy_data()
+{
+ QTest::addColumn<QAbstractVideoBuffer::HandleType>("handleType");
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<QVideoFrame::PixelFormat>("pixelFormat");
+ QTest::addColumn<QVideoFrame::FieldType>("fieldType");
+ QTest::addColumn<qint64>("startTime");
+ QTest::addColumn<qint64>("endTime");
+
+ QTest::newRow("64x64 ARGB32")
+ << QAbstractVideoBuffer::GLTextureHandle
+ << QSize(64, 64)
+ << QVideoFrame::Format_ARGB32
+ << QVideoFrame::TopField
+ << qint64(63641740)
+ << qint64(63641954);
+ QTest::newRow("32x256 YUV420P")
+ << QAbstractVideoBuffer::UserHandle
+ << QSize(32, 256)
+ << QVideoFrame::Format_YUV420P
+ << QVideoFrame::InterlacedFrame
+ << qint64(12345)
+ << qint64(12389);
+}
+
+void tst_QVideoFrame::copy()
+{
+ QFETCH(QAbstractVideoBuffer::HandleType, handleType);
+ QFETCH(QSize, size);
+ QFETCH(QVideoFrame::PixelFormat, pixelFormat);
+ QFETCH(QVideoFrame::FieldType, fieldType);
+ QFETCH(qint64, startTime);
+ QFETCH(qint64, endTime);
+
+ QPointer<QtTestVideoBuffer> buffer = new QtTestVideoBuffer(handleType);
+
+ {
+ QVideoFrame frame(buffer, size, pixelFormat);
+ frame.setFieldType(QVideoFrame::FieldType(fieldType));
+ frame.setStartTime(startTime);
+ frame.setEndTime(endTime);
+
+ QVERIFY(frame.isValid());
+ QCOMPARE(frame.handleType(), handleType);
+ QCOMPARE(frame.pixelFormat(), pixelFormat);
+ QCOMPARE(frame.size(), size);
+ QCOMPARE(frame.width(), size.width());
+ QCOMPARE(frame.height(), size.height());
+ QCOMPARE(frame.fieldType(), fieldType);
+ QCOMPARE(frame.startTime(), startTime);
+ QCOMPARE(frame.endTime(), endTime);
+
+ {
+ QVideoFrame otherFrame(frame);
+
+ QVERIFY(!buffer.isNull());
+
+ QVERIFY(otherFrame.isValid());
+ QCOMPARE(otherFrame.handleType(), handleType);
+ QCOMPARE(otherFrame.pixelFormat(), pixelFormat);
+ QCOMPARE(otherFrame.size(), size);
+ QCOMPARE(otherFrame.width(), size.width());
+ QCOMPARE(otherFrame.height(), size.height());
+ QCOMPARE(otherFrame.fieldType(), fieldType);
+ QCOMPARE(otherFrame.startTime(), startTime);
+ QCOMPARE(otherFrame.endTime(), endTime);
+
+ otherFrame.setEndTime(-1);
+
+ QVERIFY(!buffer.isNull());
+
+ QVERIFY(otherFrame.isValid());
+ QCOMPARE(otherFrame.handleType(), handleType);
+ QCOMPARE(otherFrame.pixelFormat(), pixelFormat);
+ QCOMPARE(otherFrame.size(), size);
+ QCOMPARE(otherFrame.width(), size.width());
+ QCOMPARE(otherFrame.height(), size.height());
+ QCOMPARE(otherFrame.fieldType(), fieldType);
+ QCOMPARE(otherFrame.startTime(), startTime);
+ QCOMPARE(otherFrame.endTime(), qint64(-1));
+ }
+
+ QVERIFY(!buffer.isNull());
+
+ QVERIFY(frame.isValid());
+ QCOMPARE(frame.handleType(), handleType);
+ QCOMPARE(frame.pixelFormat(), pixelFormat);
+ QCOMPARE(frame.size(), size);
+ QCOMPARE(frame.width(), size.width());
+ QCOMPARE(frame.height(), size.height());
+ QCOMPARE(frame.fieldType(), fieldType);
+ QCOMPARE(frame.startTime(), startTime);
+ QCOMPARE(frame.endTime(), qint64(-1)); // Explicitly shared.
+ }
+
+ QVERIFY(buffer.isNull());
+}
+
+void tst_QVideoFrame::assign_data()
+{
+ QTest::addColumn<QAbstractVideoBuffer::HandleType>("handleType");
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<QVideoFrame::PixelFormat>("pixelFormat");
+ QTest::addColumn<QVideoFrame::FieldType>("fieldType");
+ QTest::addColumn<qint64>("startTime");
+ QTest::addColumn<qint64>("endTime");
+
+ QTest::newRow("64x64 ARGB32")
+ << QAbstractVideoBuffer::GLTextureHandle
+ << QSize(64, 64)
+ << QVideoFrame::Format_ARGB32
+ << QVideoFrame::TopField
+ << qint64(63641740)
+ << qint64(63641954);
+ QTest::newRow("32x256 YUV420P")
+ << QAbstractVideoBuffer::UserHandle
+ << QSize(32, 256)
+ << QVideoFrame::Format_YUV420P
+ << QVideoFrame::InterlacedFrame
+ << qint64(12345)
+ << qint64(12389);
+}
+
+void tst_QVideoFrame::assign()
+{
+ QFETCH(QAbstractVideoBuffer::HandleType, handleType);
+ QFETCH(QSize, size);
+ QFETCH(QVideoFrame::PixelFormat, pixelFormat);
+ QFETCH(QVideoFrame::FieldType, fieldType);
+ QFETCH(qint64, startTime);
+ QFETCH(qint64, endTime);
+
+ QPointer<QtTestVideoBuffer> buffer = new QtTestVideoBuffer(handleType);
+
+ QVideoFrame frame;
+ {
+ QVideoFrame otherFrame(buffer, size, pixelFormat);
+ otherFrame.setFieldType(fieldType);
+ otherFrame.setStartTime(startTime);
+ otherFrame.setEndTime(endTime);
+
+ frame = otherFrame;
+
+ QVERIFY(!buffer.isNull());
+
+ QVERIFY(otherFrame.isValid());
+ QCOMPARE(otherFrame.handleType(), handleType);
+ QCOMPARE(otherFrame.pixelFormat(), pixelFormat);
+ QCOMPARE(otherFrame.size(), size);
+ QCOMPARE(otherFrame.width(), size.width());
+ QCOMPARE(otherFrame.height(), size.height());
+ QCOMPARE(otherFrame.fieldType(), fieldType);
+ QCOMPARE(otherFrame.startTime(), startTime);
+ QCOMPARE(otherFrame.endTime(), endTime);
+
+ otherFrame.setStartTime(-1);
+
+ QVERIFY(!buffer.isNull());
+
+ QVERIFY(otherFrame.isValid());
+ QCOMPARE(otherFrame.handleType(), handleType);
+ QCOMPARE(otherFrame.pixelFormat(), pixelFormat);
+ QCOMPARE(otherFrame.size(), size);
+ QCOMPARE(otherFrame.width(), size.width());
+ QCOMPARE(otherFrame.height(), size.height());
+ QCOMPARE(otherFrame.fieldType(), fieldType);
+ QCOMPARE(otherFrame.startTime(), qint64(-1));
+ QCOMPARE(otherFrame.endTime(), endTime);
+ }
+
+ QVERIFY(!buffer.isNull());
+
+ QVERIFY(frame.isValid());
+ QCOMPARE(frame.handleType(), handleType);
+ QCOMPARE(frame.pixelFormat(), pixelFormat);
+ QCOMPARE(frame.size(), size);
+ QCOMPARE(frame.width(), size.width());
+ QCOMPARE(frame.height(), size.height());
+ QCOMPARE(frame.fieldType(), fieldType);
+ QCOMPARE(frame.startTime(), qint64(-1));
+ QCOMPARE(frame.endTime(), endTime);
+
+ frame = QVideoFrame();
+
+ QVERIFY(buffer.isNull());
+
+ QVERIFY(!frame.isValid());
+ QCOMPARE(frame.handleType(), QAbstractVideoBuffer::NoHandle);
+ QCOMPARE(frame.pixelFormat(), QVideoFrame::Format_Invalid);
+ QCOMPARE(frame.size(), QSize());
+ QCOMPARE(frame.width(), -1);
+ QCOMPARE(frame.height(), -1);
+ QCOMPARE(frame.fieldType(), QVideoFrame::ProgressiveFrame);
+ QCOMPARE(frame.startTime(), qint64(-1));
+ QCOMPARE(frame.endTime(), qint64(-1));
+}
+
+void tst_QVideoFrame::map_data()
+{
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<int>("mappedBytes");
+ QTest::addColumn<int>("bytesPerLine");
+ QTest::addColumn<QVideoFrame::PixelFormat>("pixelFormat");
+ QTest::addColumn<QAbstractVideoBuffer::MapMode>("mode");
+
+ QTest::newRow("read-only")
+ << QSize(64, 64)
+ << 16384
+ << 256
+ << QVideoFrame::Format_ARGB32
+ << QAbstractVideoBuffer::ReadOnly;
+
+ QTest::newRow("write-only")
+ << QSize(64, 64)
+ << 16384
+ << 256
+ << QVideoFrame::Format_ARGB32
+ << QAbstractVideoBuffer::WriteOnly;
+
+ QTest::newRow("read-write")
+ << QSize(64, 64)
+ << 16384
+ << 256
+ << QVideoFrame::Format_ARGB32
+ << QAbstractVideoBuffer::ReadWrite;
+}
+
+void tst_QVideoFrame::map()
+{
+ QFETCH(QSize, size);
+ QFETCH(int, mappedBytes);
+ QFETCH(int, bytesPerLine);
+ QFETCH(QVideoFrame::PixelFormat, pixelFormat);
+ QFETCH(QAbstractVideoBuffer::MapMode, mode);
+
+ QVideoFrame frame(mappedBytes, size, bytesPerLine, pixelFormat);
+
+ QVERIFY(!frame.bits());
+ QCOMPARE(frame.mappedBytes(), 0);
+ QCOMPARE(frame.bytesPerLine(), 0);
+ QCOMPARE(frame.mapMode(), QAbstractVideoBuffer::NotMapped);
+
+ QVERIFY(frame.map(mode));
+
+ QVERIFY(frame.bits());
+ QCOMPARE(frame.mappedBytes(), mappedBytes);
+ QCOMPARE(frame.bytesPerLine(), bytesPerLine);
+ QCOMPARE(frame.mapMode(), mode);
+
+ frame.unmap();
+
+ QVERIFY(!frame.bits());
+ QCOMPARE(frame.mappedBytes(), 0);
+ QCOMPARE(frame.bytesPerLine(), 0);
+ QCOMPARE(frame.mapMode(), QAbstractVideoBuffer::NotMapped);
+}
+
+void tst_QVideoFrame::mapImage_data()
+{
+ QTest::addColumn<QSize>("size");
+ QTest::addColumn<QImage::Format>("format");
+ QTest::addColumn<QAbstractVideoBuffer::MapMode>("mode");
+
+ QTest::newRow("read-only")
+ << QSize(64, 64)
+ << QImage::Format_ARGB32
+ << QAbstractVideoBuffer::ReadOnly;
+
+ QTest::newRow("write-only")
+ << QSize(15, 106)
+ << QImage::Format_RGB32
+ << QAbstractVideoBuffer::WriteOnly;
+
+ QTest::newRow("read-write")
+ << QSize(23, 111)
+ << QImage::Format_RGB16
+ << QAbstractVideoBuffer::ReadWrite;
+}
+
+void tst_QVideoFrame::mapImage()
+{
+ QFETCH(QSize, size);
+ QFETCH(QImage::Format, format);
+ QFETCH(QAbstractVideoBuffer::MapMode, mode);
+
+ QImage image(size.width(), size.height(), format);
+
+ QVideoFrame frame(image);
+
+ QVERIFY(!frame.bits());
+ QCOMPARE(frame.mappedBytes(), 0);
+ QCOMPARE(frame.bytesPerLine(), 0);
+ QCOMPARE(frame.mapMode(), QAbstractVideoBuffer::NotMapped);
+
+ QVERIFY(frame.map(mode));
+
+ QVERIFY(frame.bits());
+ QCOMPARE(frame.mappedBytes(), image.numBytes());
+ QCOMPARE(frame.bytesPerLine(), image.bytesPerLine());
+ QCOMPARE(frame.mapMode(), mode);
+
+ frame.unmap();
+
+ QVERIFY(!frame.bits());
+ QCOMPARE(frame.mappedBytes(), 0);
+ QCOMPARE(frame.bytesPerLine(), 0);
+ QCOMPARE(frame.mapMode(), QAbstractVideoBuffer::NotMapped);
+}
+
+void tst_QVideoFrame::imageDetach()
+{
+ const uint red = qRgb(255, 0, 0);
+ const uint blue = qRgb(0, 0, 255);
+
+ QImage image(8, 8, QImage::Format_RGB32);
+
+ image.fill(red);
+ QCOMPARE(image.pixel(4, 4), red);
+
+ QVideoFrame frame(image);
+
+ QVERIFY(frame.map(QAbstractVideoBuffer::ReadWrite));
+
+ QImage frameImage(frame.bits(), 8, 8, frame.bytesPerLine(), QImage::Format_RGB32);
+
+ QCOMPARE(frameImage.pixel(4, 4), red);
+
+ frameImage.fill(blue);
+ QCOMPARE(frameImage.pixel(4, 4), blue);
+
+ // Original image has detached and is therefore unchanged.
+ QCOMPARE(image.pixel(4, 4), red);
+}
+
+void tst_QVideoFrame::formatConversion_data()
+{
+ QTest::addColumn<QImage::Format>("imageFormat");
+ QTest::addColumn<QVideoFrame::PixelFormat>("pixelFormat");
+
+ QTest::newRow("QImage::Format_RGB32 | QVideoFrame::Format_RGB32")
+ << QImage::Format_RGB32
+ << QVideoFrame::Format_RGB32;
+ QTest::newRow("QImage::Format_ARGB32 | QVideoFrame::Format_ARGB32")
+ << QImage::Format_ARGB32
+ << QVideoFrame::Format_ARGB32;
+ QTest::newRow("QImage::Format_ARGB32_Premultiplied | QVideoFrame::Format_ARGB32_Premultiplied")
+ << QImage::Format_ARGB32_Premultiplied
+ << QVideoFrame::Format_ARGB32_Premultiplied;
+ QTest::newRow("QImage::Format_RGB16 | QVideoFrame::Format_RGB565")
+ << QImage::Format_RGB16
+ << QVideoFrame::Format_RGB565;
+ QTest::newRow("QImage::Format_ARGB8565_Premultiplied | QVideoFrame::Format_ARGB8565_Premultiplied")
+ << QImage::Format_ARGB8565_Premultiplied
+ << QVideoFrame::Format_ARGB8565_Premultiplied;
+ QTest::newRow("QImage::Format_RGB555 | QVideoFrame::Format_RGB555")
+ << QImage::Format_RGB555
+ << QVideoFrame::Format_RGB555;
+ QTest::newRow("QImage::Format_RGB888 | QVideoFrame::Format_RGB24")
+ << QImage::Format_RGB888
+ << QVideoFrame::Format_RGB24;
+
+ QTest::newRow("QImage::Format_MonoLSB")
+ << QImage::Format_MonoLSB
+ << QVideoFrame::Format_Invalid;
+ QTest::newRow("QImage::Format_Indexed8")
+ << QImage::Format_Indexed8
+ << QVideoFrame::Format_Invalid;
+ QTest::newRow("QImage::Format_ARGB6666_Premultiplied")
+ << QImage::Format_ARGB6666_Premultiplied
+ << QVideoFrame::Format_Invalid;
+ QTest::newRow("QImage::Format_ARGB8555_Premultiplied")
+ << QImage::Format_ARGB8555_Premultiplied
+ << QVideoFrame::Format_Invalid;
+ QTest::newRow("QImage::Format_RGB666")
+ << QImage::Format_RGB666
+ << QVideoFrame::Format_Invalid;
+ QTest::newRow("QImage::Format_RGB444")
+ << QImage::Format_RGB444
+ << QVideoFrame::Format_Invalid;
+ QTest::newRow("QImage::Format_ARGB4444_Premultiplied")
+ << QImage::Format_ARGB4444_Premultiplied
+ << QVideoFrame::Format_Invalid;
+
+ QTest::newRow("QVideoFrame::Format_BGRA32")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_BGRA32;
+ QTest::newRow("QVideoFrame::Format_BGRA32_Premultiplied")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_BGRA32_Premultiplied;
+ QTest::newRow("QVideoFrame::Format_BGR32")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_BGR32;
+ QTest::newRow("QVideoFrame::Format_BGR24")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_BGR24;
+ QTest::newRow("QVideoFrame::Format_BGR565")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_BGR565;
+ QTest::newRow("QVideoFrame::Format_BGR555")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_BGR555;
+ QTest::newRow("QVideoFrame::Format_BGRA5658_Premultiplied")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_BGRA5658_Premultiplied;
+ QTest::newRow("QVideoFrame::Format_AYUV444")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_AYUV444;
+ QTest::newRow("QVideoFrame::Format_AYUV444_Premultiplied")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_AYUV444_Premultiplied;
+ QTest::newRow("QVideoFrame::Format_YUV444")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_YUV420P;
+ QTest::newRow("QVideoFrame::Format_YV12")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_YV12;
+ QTest::newRow("QVideoFrame::Format_UYVY")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_UYVY;
+ QTest::newRow("QVideoFrame::Format_YUYV")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_YUYV;
+ QTest::newRow("QVideoFrame::Format_NV12")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_NV12;
+ QTest::newRow("QVideoFrame::Format_NV21")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_NV21;
+ QTest::newRow("QVideoFrame::Format_IMC1")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_IMC1;
+ QTest::newRow("QVideoFrame::Format_IMC2")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_IMC2;
+ QTest::newRow("QVideoFrame::Format_IMC3")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_IMC3;
+ QTest::newRow("QVideoFrame::Format_IMC4")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_IMC4;
+ QTest::newRow("QVideoFrame::Format_Y8")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_Y8;
+ QTest::newRow("QVideoFrame::Format_Y16")
+ << QImage::Format_Invalid
+ << QVideoFrame::Format_Y16;
+}
+
+void tst_QVideoFrame::formatConversion()
+{
+ QFETCH(QImage::Format, imageFormat);
+ QFETCH(QVideoFrame::PixelFormat, pixelFormat);
+
+ QCOMPARE(QVideoFrame::pixelFormatFromImageFormat(imageFormat) == pixelFormat,
+ imageFormat != QImage::Format_Invalid);
+
+ QCOMPARE(QVideoFrame::imageFormatFromPixelFormat(pixelFormat) == imageFormat,
+ pixelFormat != QVideoFrame::Format_Invalid);
+}
+
+QTEST_MAIN(tst_QVideoFrame)
+
+#include "tst_qvideoframe.moc"
diff --git a/tests/auto/qvideosurfaceformat/qvideosurfaceformat.pro b/tests/auto/qvideosurfaceformat/qvideosurfaceformat.pro
new file mode 100644
index 000000000..830b3d774
--- /dev/null
+++ b/tests/auto/qvideosurfaceformat/qvideosurfaceformat.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qvideosurfaceformat.cpp
+
+QT += multimedia
+requires(contains(QT_CONFIG, multimedia))
diff --git a/tests/auto/qvideosurfaceformat/tst_qvideosurfaceformat.cpp b/tests/auto/qvideosurfaceformat/tst_qvideosurfaceformat.cpp
new file mode 100644
index 000000000..370255617
--- /dev/null
+++ b/tests/auto/qvideosurfaceformat/tst_qvideosurfaceformat.cpp
@@ -0,0 +1,736 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <QtMultimedia/QVideoSurfaceFormat>
+
+class tst_QVideoSurfaceFormat : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QVideoSurfaceFormat();
+ ~tst_QVideoSurfaceFormat();
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void constructNull();
+ void construct_data();
+ void construct();
+ void frameSize_data();
+ void frameSize();
+ void viewport_data();
+ void viewport();
+ void scanLineDirection_data();
+ void scanLineDirection();
+ void frameRate_data();
+ void frameRate();
+ void yCbCrColorSpace_data();
+ void yCbCrColorSpace();
+ void pixelAspectRatio_data();
+ void pixelAspectRatio();
+ void sizeHint_data();
+ void sizeHint();
+ void staticPropertyNames();
+ void dynamicProperty();
+ void compare();
+ void copy();
+ void assign();
+};
+
+tst_QVideoSurfaceFormat::tst_QVideoSurfaceFormat()
+{
+}
+
+tst_QVideoSurfaceFormat::~tst_QVideoSurfaceFormat()
+{
+}
+
+void tst_QVideoSurfaceFormat::initTestCase()
+{
+}
+
+void tst_QVideoSurfaceFormat::cleanupTestCase()
+{
+}
+
+void tst_QVideoSurfaceFormat::init()
+{
+}
+
+void tst_QVideoSurfaceFormat::cleanup()
+{
+}
+
+void tst_QVideoSurfaceFormat::constructNull()
+{
+ QVideoSurfaceFormat format;
+
+ QVERIFY(!format.isValid());
+ QCOMPARE(format.handleType(), QAbstractVideoBuffer::NoHandle);
+ QCOMPARE(format.pixelFormat(), QVideoFrame::Format_Invalid);
+ QCOMPARE(format.frameSize(), QSize());
+ QCOMPARE(format.frameWidth(), -1);
+ QCOMPARE(format.frameHeight(), -1);
+ QCOMPARE(format.viewport(), QRect());
+ QCOMPARE(format.scanLineDirection(), QVideoSurfaceFormat::TopToBottom);
+ QCOMPARE(format.frameRate(), 0.0);
+ QCOMPARE(format.pixelAspectRatio(), QSize(1, 1));
+ QCOMPARE(format.yCbCrColorSpace(), QVideoSurfaceFormat::YCbCr_Undefined);
+}
+
+void tst_QVideoSurfaceFormat::construct_data()
+{
+ QTest::addColumn<QSize>("frameSize");
+ QTest::addColumn<QVideoFrame::PixelFormat>("pixelFormat");
+ QTest::addColumn<QAbstractVideoBuffer::HandleType>("handleType");
+ QTest::addColumn<bool>("valid");
+
+ QTest::newRow("32x32 rgb32 no handle")
+ << QSize(32, 32)
+ << QVideoFrame::Format_RGB32
+ << QAbstractVideoBuffer::NoHandle
+ << true;
+
+ QTest::newRow("1024x768 YUV444 GL texture")
+ << QSize(32, 32)
+ << QVideoFrame::Format_YUV444
+ << QAbstractVideoBuffer::GLTextureHandle
+ << true;
+
+ QTest::newRow("32x32 invalid no handle")
+ << QSize(32, 32)
+ << QVideoFrame::Format_Invalid
+ << QAbstractVideoBuffer::NoHandle
+ << false;
+
+ QTest::newRow("invalid size, rgb32 no handle")
+ << QSize()
+ << QVideoFrame::Format_RGB32
+ << QAbstractVideoBuffer::NoHandle
+ << false;
+
+ QTest::newRow("0x0 rgb32 no handle")
+ << QSize(0,0)
+ << QVideoFrame::Format_RGB32
+ << QAbstractVideoBuffer::NoHandle
+ << true;
+}
+
+void tst_QVideoSurfaceFormat::construct()
+{
+ QFETCH(QSize, frameSize);
+ QFETCH(QVideoFrame::PixelFormat, pixelFormat);
+ QFETCH(QAbstractVideoBuffer::HandleType, handleType);
+ QFETCH(bool, valid);
+
+ QRect viewport(QPoint(0, 0), frameSize);
+
+ QVideoSurfaceFormat format(frameSize, pixelFormat, handleType);
+
+ QCOMPARE(format.handleType(), handleType);
+ QCOMPARE(format.pixelFormat(), pixelFormat);
+ QCOMPARE(format.frameSize(), frameSize);
+ QCOMPARE(format.frameWidth(), frameSize.width());
+ QCOMPARE(format.frameHeight(), frameSize.height());
+ QCOMPARE(format.isValid(), valid);
+ QCOMPARE(format.viewport(), viewport);
+ QCOMPARE(format.scanLineDirection(), QVideoSurfaceFormat::TopToBottom);
+ QCOMPARE(format.frameRate(), 0.0);
+ QCOMPARE(format.pixelAspectRatio(), QSize(1, 1));
+ QCOMPARE(format.yCbCrColorSpace(), QVideoSurfaceFormat::YCbCr_Undefined);
+}
+
+void tst_QVideoSurfaceFormat::frameSize_data()
+{
+ QTest::addColumn<QSize>("initialSize");
+ QTest::addColumn<QSize>("newSize");
+
+ QTest::newRow("grow")
+ << QSize(64, 64)
+ << QSize(1024, 1024);
+ QTest::newRow("shrink")
+ << QSize(1024, 1024)
+ << QSize(64, 64);
+ QTest::newRow("unchanged")
+ << QSize(512, 512)
+ << QSize(512, 512);
+}
+
+void tst_QVideoSurfaceFormat::frameSize()
+{
+ QFETCH(QSize, initialSize);
+ QFETCH(QSize, newSize);
+
+ QVideoSurfaceFormat format(initialSize, QVideoFrame::Format_RGB32);
+
+ format.setFrameSize(newSize);
+
+ QCOMPARE(format.frameSize(), newSize);
+ QCOMPARE(format.property("frameSize").toSize(), newSize);
+ QCOMPARE(format.frameWidth(), newSize.width());
+ QCOMPARE(format.property("frameWidth").toInt(), newSize.width());
+ QCOMPARE(format.frameHeight(), newSize.height());
+ QCOMPARE(format.property("frameHeight").toInt(), newSize.height());
+}
+
+void tst_QVideoSurfaceFormat::viewport_data()
+{
+ QTest::addColumn<QSize>("initialSize");
+ QTest::addColumn<QRect>("viewport");
+ QTest::addColumn<QSize>("newSize");
+ QTest::addColumn<QRect>("expectedViewport");
+
+ QTest::newRow("grow reset")
+ << QSize(64, 64)
+ << QRect(8, 8, 48, 48)
+ << QSize(1024, 1024)
+ << QRect(0, 0, 1024, 1024);
+ QTest::newRow("shrink reset")
+ << QSize(1024, 1024)
+ << QRect(8, 8, 1008, 1008)
+ << QSize(64, 64)
+ << QRect(0, 0, 64, 64);
+ QTest::newRow("unchanged reset")
+ << QSize(512, 512)
+ << QRect(8, 8, 496, 496)
+ << QSize(512, 512)
+ << QRect(0, 0, 512, 512);
+}
+
+void tst_QVideoSurfaceFormat::viewport()
+{
+ QFETCH(QSize, initialSize);
+ QFETCH(QRect, viewport);
+ QFETCH(QSize, newSize);
+ QFETCH(QRect, expectedViewport);
+
+ {
+ QRect initialViewport(QPoint(0, 0), initialSize);
+
+ QVideoSurfaceFormat format(initialSize, QVideoFrame::Format_RGB32);
+
+ format.setViewport(viewport);
+
+ QCOMPARE(format.viewport(), viewport);
+ QCOMPARE(format.property("viewport").toRect(), viewport);
+
+ format.setFrameSize(newSize);
+
+ QCOMPARE(format.viewport(), expectedViewport);
+ QCOMPARE(format.property("viewport").toRect(), expectedViewport);
+ }
+ {
+ QVideoSurfaceFormat format(initialSize, QVideoFrame::Format_RGB32);
+
+ format.setProperty("viewport", viewport);
+
+ QCOMPARE(format.viewport(), viewport);
+ QCOMPARE(format.property("viewport").toRect(), viewport);
+ }
+}
+
+void tst_QVideoSurfaceFormat::scanLineDirection_data()
+{
+ QTest::addColumn<QVideoSurfaceFormat::Direction>("direction");
+
+ QTest::newRow("top to bottom")
+ << QVideoSurfaceFormat::TopToBottom;
+
+ QTest::newRow("bottom to top")
+ << QVideoSurfaceFormat::BottomToTop;
+}
+
+void tst_QVideoSurfaceFormat::scanLineDirection()
+{
+ QFETCH(QVideoSurfaceFormat::Direction, direction);
+
+ {
+ QVideoSurfaceFormat format(QSize(16, 16), QVideoFrame::Format_RGB32);
+
+ format.setScanLineDirection(direction);
+
+ QCOMPARE(format.scanLineDirection(), direction);
+ QCOMPARE(
+ qvariant_cast<QVideoSurfaceFormat::Direction>(format.property("scanLineDirection")),
+ direction);
+ }
+ {
+ QVideoSurfaceFormat format(QSize(16, 16), QVideoFrame::Format_RGB32);
+
+ format.setProperty("scanLineDirection", qVariantFromValue(direction));
+
+ QCOMPARE(format.scanLineDirection(), direction);
+ QCOMPARE(
+ qvariant_cast<QVideoSurfaceFormat::Direction>(format.property("scanLineDirection")),
+ direction);
+ }
+}
+
+void tst_QVideoSurfaceFormat::frameRate_data()
+{
+ QTest::addColumn<qreal>("frameRate");
+
+ QTest::newRow("null")
+ << qreal(0.0);
+ QTest::newRow("1/1")
+ << qreal(1.0);
+ QTest::newRow("24/1")
+ << qreal(24.0);
+ QTest::newRow("15/2")
+ << qreal(7.5);
+}
+
+void tst_QVideoSurfaceFormat::frameRate()
+{
+ QFETCH(qreal, frameRate);
+
+ {
+ QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32);
+
+ format.setFrameRate(frameRate);
+
+ QCOMPARE(format.frameRate(), frameRate);
+ QCOMPARE(qvariant_cast<qreal>(format.property("frameRate")), frameRate);
+ }
+ {
+ QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32);
+
+ format.setFrameRate(frameRate);
+ format.setProperty("frameRate", frameRate);
+
+ QCOMPARE(format.frameRate(), frameRate);
+ QCOMPARE(qvariant_cast<qreal>(format.property("frameRate")), frameRate);
+ }
+}
+
+void tst_QVideoSurfaceFormat::yCbCrColorSpace_data()
+{
+ QTest::addColumn<QVideoSurfaceFormat::YCbCrColorSpace>("colorspace");
+
+ QTest::newRow("undefined")
+ << QVideoSurfaceFormat::YCbCr_Undefined;
+ QTest::newRow("bt709")
+ << QVideoSurfaceFormat::YCbCr_BT709;
+ QTest::newRow("xvYCC601")
+ << QVideoSurfaceFormat::YCbCr_xvYCC601;
+ QTest::newRow("JPEG")
+ << QVideoSurfaceFormat::YCbCr_JPEG;
+}
+
+void tst_QVideoSurfaceFormat::yCbCrColorSpace()
+{
+ QFETCH(QVideoSurfaceFormat::YCbCrColorSpace, colorspace);
+
+ {
+ QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32);
+ format.setYCbCrColorSpace(colorspace);
+
+ QCOMPARE(format.yCbCrColorSpace(), colorspace);
+ QCOMPARE(qvariant_cast<QVideoSurfaceFormat::YCbCrColorSpace>(format.property("yCbCrColorSpace")),
+ colorspace);
+ }
+ {
+ QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32);
+ format.setProperty("yCbCrColorSpace", qVariantFromValue(colorspace));
+
+ QCOMPARE(format.yCbCrColorSpace(), colorspace);
+ QCOMPARE(qvariant_cast<QVideoSurfaceFormat::YCbCrColorSpace>(format.property("yCbCrColorSpace")),
+ colorspace);
+ }
+}
+
+void tst_QVideoSurfaceFormat::pixelAspectRatio_data()
+{
+ QTest::addColumn<QSize>("aspectRatio");
+
+ QTest::newRow("1:1")
+ << QSize(1, 1);
+ QTest::newRow("4:3")
+ << QSize(4, 3);
+ QTest::newRow("16:9")
+ << QSize(16, 9);
+}
+
+void tst_QVideoSurfaceFormat::pixelAspectRatio()
+{
+ QFETCH(QSize, aspectRatio);
+
+ {
+ QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32);
+ format.setPixelAspectRatio(aspectRatio);
+
+ QCOMPARE(format.pixelAspectRatio(), aspectRatio);
+ QCOMPARE(format.property("pixelAspectRatio").toSize(), aspectRatio);
+ }
+ {
+ QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32);
+ format.setPixelAspectRatio(aspectRatio.width(), aspectRatio.height());
+
+ QCOMPARE(format.pixelAspectRatio(), aspectRatio);
+ QCOMPARE(format.property("pixelAspectRatio").toSize(), aspectRatio);
+ }
+ {
+ QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32);
+ format.setProperty("pixelAspectRatio", aspectRatio);
+
+ QCOMPARE(format.pixelAspectRatio(), aspectRatio);
+ QCOMPARE(format.property("pixelAspectRatio").toSize(), aspectRatio);
+ }
+}
+
+void tst_QVideoSurfaceFormat::sizeHint_data()
+{
+ QTest::addColumn<QSize>("frameSize");
+ QTest::addColumn<QRect>("viewport");
+ QTest::addColumn<QSize>("aspectRatio");
+ QTest::addColumn<QSize>("sizeHint");
+
+ QTest::newRow("(0, 0, 1024x768), 1:1")
+ << QSize(1024, 768)
+ << QRect(0, 0, 1024, 768)
+ << QSize(1, 1)
+ << QSize(1024, 768);
+ QTest::newRow("0, 0, 1024x768), 4:3")
+ << QSize(1024, 768)
+ << QRect(0, 0, 1024, 768)
+ << QSize(4, 3)
+ << QSize(1365, 768);
+ QTest::newRow("(168, 84, 800x600), 1:1")
+ << QSize(1024, 768)
+ << QRect(168, 84, 800, 600)
+ << QSize(1, 1)
+ << QSize(800, 600);
+ QTest::newRow("(168, 84, 800x600), 4:3")
+ << QSize(1024, 768)
+ << QRect(168, 84, 800, 600)
+ << QSize(4, 3)
+ << QSize(1066, 600);
+}
+
+void tst_QVideoSurfaceFormat::sizeHint()
+{
+ QFETCH(QSize, frameSize);
+ QFETCH(QRect, viewport);
+ QFETCH(QSize, aspectRatio);
+ QFETCH(QSize, sizeHint);
+
+ QVideoSurfaceFormat format(frameSize, QVideoFrame::Format_RGB32);
+ format.setViewport(viewport);
+ format.setPixelAspectRatio(aspectRatio);
+
+ QCOMPARE(format.sizeHint(), sizeHint);
+ QCOMPARE(format.property("sizeHint").toSize(), sizeHint);
+}
+
+void tst_QVideoSurfaceFormat::staticPropertyNames()
+{
+ QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32);
+
+ QList<QByteArray> propertyNames = format.propertyNames();
+
+ QVERIFY(propertyNames.contains("handleType"));
+ QVERIFY(propertyNames.contains("pixelFormat"));
+ QVERIFY(propertyNames.contains("frameSize"));
+ QVERIFY(propertyNames.contains("frameWidth"));
+ QVERIFY(propertyNames.contains("viewport"));
+ QVERIFY(propertyNames.contains("scanLineDirection"));
+ QVERIFY(propertyNames.contains("frameRate"));
+ QVERIFY(propertyNames.contains("pixelAspectRatio"));
+ QVERIFY(propertyNames.contains("yCbCrColorSpace"));
+ QVERIFY(propertyNames.contains("sizeHint"));
+ QCOMPARE(propertyNames.count(), 10);
+}
+
+void tst_QVideoSurfaceFormat::dynamicProperty()
+{
+ QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32);
+
+ QCOMPARE(format.property("integer"), QVariant());
+ QCOMPARE(format.property("size"), QVariant());
+ QCOMPARE(format.property("string"), QVariant());
+ QCOMPARE(format.property("null"), QVariant());
+
+ QList<QByteArray> propertyNames = format.propertyNames();
+
+ QCOMPARE(propertyNames.count(QByteArray("integer")), 0);
+ QCOMPARE(propertyNames.count(QByteArray("string")), 0);
+ QCOMPARE(propertyNames.count(QByteArray("size")), 0);
+ QCOMPARE(propertyNames.count(QByteArray("null")), 0);
+
+ format.setProperty("string", QString::fromLatin1("Hello"));
+ format.setProperty("integer", 198);
+ format.setProperty("size", QSize(43, 65));
+
+ QCOMPARE(format.property("integer").toInt(), 198);
+ QCOMPARE(format.property("size").toSize(), QSize(43, 65));
+ QCOMPARE(format.property("string").toString(), QString::fromLatin1("Hello"));
+
+ propertyNames = format.propertyNames();
+
+ QCOMPARE(propertyNames.count(QByteArray("integer")), 1);
+ QCOMPARE(propertyNames.count(QByteArray("string")), 1);
+ QCOMPARE(propertyNames.count(QByteArray("size")), 1);
+
+ format.setProperty("integer", 125423);
+ format.setProperty("size", QSize(1, 986));
+
+ QCOMPARE(format.property("integer").toInt(), 125423);
+ QCOMPARE(format.property("size").toSize(), QSize(1, 986));
+ QCOMPARE(format.property("string").toString(), QString::fromLatin1("Hello"));
+
+ propertyNames = format.propertyNames();
+
+ QCOMPARE(propertyNames.count(QByteArray("integer")), 1);
+ QCOMPARE(propertyNames.count(QByteArray("string")), 1);
+ QCOMPARE(propertyNames.count(QByteArray("size")), 1);
+
+ format.setProperty("string", QVariant());
+ format.setProperty("size", QVariant());
+ format.setProperty("null", QVariant());
+
+ QCOMPARE(format.property("integer").toInt(), 125423);
+ QCOMPARE(format.property("size"), QVariant());
+ QCOMPARE(format.property("string"), QVariant());
+ QCOMPARE(format.property("null"), QVariant());
+
+ propertyNames = format.propertyNames();
+
+ QCOMPARE(propertyNames.count(QByteArray("integer")), 1);
+ QCOMPARE(propertyNames.count(QByteArray("string")), 0);
+ QCOMPARE(propertyNames.count(QByteArray("size")), 0);
+ QCOMPARE(propertyNames.count(QByteArray("null")), 0);
+}
+
+void tst_QVideoSurfaceFormat::compare()
+{
+ QVideoSurfaceFormat format1(
+ QSize(16, 16), QVideoFrame::Format_RGB32, QAbstractVideoBuffer::GLTextureHandle);
+ QVideoSurfaceFormat format2(
+ QSize(16, 16), QVideoFrame::Format_RGB32, QAbstractVideoBuffer::GLTextureHandle);
+ QVideoSurfaceFormat format3(
+ QSize(32, 32), QVideoFrame::Format_YUV444, QAbstractVideoBuffer::GLTextureHandle);
+ QVideoSurfaceFormat format4(
+ QSize(16, 16), QVideoFrame::Format_RGB32, QAbstractVideoBuffer::UserHandle);
+
+ QCOMPARE(format1 == format2, true);
+ QCOMPARE(format1 != format2, false);
+ QCOMPARE(format1 == format3, false);
+ QCOMPARE(format1 != format3, true);
+ QCOMPARE(format1 == format4, false);
+ QCOMPARE(format1 != format4, true);
+
+ format2.setFrameSize(1024, 768);
+
+ // Not equal, frame size differs.
+ QCOMPARE(format1 == format2, false);
+ QCOMPARE(format1 != format2, true);
+
+ format1.setFrameSize(1024, 768);
+
+ // Equal.
+ QCOMPARE(format1 == format2, true);
+ QCOMPARE(format1 != format2, false);
+
+ format1.setViewport(QRect(0, 0, 800, 600));
+ format2.setViewport(QRect(112, 84, 800, 600));
+
+ // Not equal, viewports differ.
+ QCOMPARE(format1 == format2, false);
+ QCOMPARE(format1 != format2, true);
+
+ format1.setViewport(QRect(112, 84, 800, 600));
+
+ // Equal.
+ QCOMPARE(format1 == format2, true);
+ QCOMPARE(format1 != format2, false);
+
+ format2.setScanLineDirection(QVideoSurfaceFormat::BottomToTop);
+
+ // Not equal scan line direction differs.
+ QCOMPARE(format1 == format2, false);
+ QCOMPARE(format1 != format2, true);
+
+ format1.setScanLineDirection(QVideoSurfaceFormat::BottomToTop);
+
+ // Equal.
+ QCOMPARE(format1 == format2, true);
+ QCOMPARE(format1 != format2, false);
+
+ format1.setFrameRate(7.5);
+
+ // Not equal frame rate differs.
+ QCOMPARE(format1 == format2, false);
+ QCOMPARE(format1 != format2, true);
+
+ format2.setFrameRate(qreal(7.50001));
+
+ // Equal.
+ QCOMPARE(format1 == format2, true);
+ QCOMPARE(format1 != format2, false);
+
+ format2.setPixelAspectRatio(4, 3);
+
+ // Not equal pixel aspect ratio differs.
+ QCOMPARE(format1 == format2, false);
+ QCOMPARE(format1 != format2, true);
+
+ format1.setPixelAspectRatio(QSize(4, 3));
+
+ // Equal.
+ QCOMPARE(format1 == format2, true);
+ QCOMPARE(format1 != format2, false);
+
+ format2.setYCbCrColorSpace(QVideoSurfaceFormat::YCbCr_xvYCC601);
+
+ // Not equal yuv color space differs.
+ QCOMPARE(format1 == format2, false);
+ QCOMPARE(format1 != format2, true);
+
+ format1.setYCbCrColorSpace(QVideoSurfaceFormat::YCbCr_xvYCC601);
+
+ // Equal.
+ QCOMPARE(format1 == format2, true);
+ QCOMPARE(format1 != format2, false);
+
+ format1.setProperty("integer", 12);
+
+ // Not equal, property mismatch.
+ QCOMPARE(format1 == format2, false);
+ QCOMPARE(format1 != format2, true);
+
+ format2.setProperty("integer", 45);
+
+ // Not equal, integer differs.
+ QCOMPARE(format1 == format2, false);
+ QCOMPARE(format1 != format2, true);
+
+ format2.setProperty("integer", 12);
+
+ // Equal.
+ QCOMPARE(format1 == format2, true);
+ QCOMPARE(format1 != format2, false);
+
+ format1.setProperty("string", QString::fromLatin1("Hello"));
+ format2.setProperty("size", QSize(12, 54));
+
+ // Not equal, property mismatch.
+ QCOMPARE(format1 == format2, false);
+ QCOMPARE(format1 != format2, true);
+
+ format2.setProperty("string", QString::fromLatin1("Hello"));
+ format1.setProperty("size", QSize(12, 54));
+
+ // Equal.
+ QCOMPARE(format1 == format2, true);
+ QCOMPARE(format1 != format2, false);
+
+ format1.setProperty("string", QVariant());
+
+ // Not equal, property mismatch.
+ QCOMPARE(format1 == format2, false);
+ QCOMPARE(format1 != format2, true);
+}
+
+
+void tst_QVideoSurfaceFormat::copy()
+{
+ QVideoSurfaceFormat original(
+ QSize(1024, 768), QVideoFrame::Format_ARGB32, QAbstractVideoBuffer::GLTextureHandle);
+ original.setScanLineDirection(QVideoSurfaceFormat::BottomToTop);
+
+ QVideoSurfaceFormat copy(original);
+
+ QCOMPARE(copy.handleType(), QAbstractVideoBuffer::GLTextureHandle);
+ QCOMPARE(copy.pixelFormat(), QVideoFrame::Format_ARGB32);
+ QCOMPARE(copy.frameSize(), QSize(1024, 768));
+ QCOMPARE(copy.scanLineDirection(), QVideoSurfaceFormat::BottomToTop);
+
+ QCOMPARE(original == copy, true);
+ QCOMPARE(original != copy, false);
+
+ copy.setScanLineDirection(QVideoSurfaceFormat::TopToBottom);
+
+ QCOMPARE(copy.scanLineDirection(), QVideoSurfaceFormat::TopToBottom);
+
+ QCOMPARE(original.scanLineDirection(), QVideoSurfaceFormat::BottomToTop);
+
+ QCOMPARE(original == copy, false);
+ QCOMPARE(original != copy, true);
+}
+
+void tst_QVideoSurfaceFormat::assign()
+{
+ QVideoSurfaceFormat copy(
+ QSize(64, 64), QVideoFrame::Format_AYUV444, QAbstractVideoBuffer::UserHandle);
+
+ QVideoSurfaceFormat original(
+ QSize(1024, 768), QVideoFrame::Format_ARGB32, QAbstractVideoBuffer::GLTextureHandle);
+ original.setScanLineDirection(QVideoSurfaceFormat::BottomToTop);
+
+ copy = original;
+
+ QCOMPARE(copy.handleType(), QAbstractVideoBuffer::GLTextureHandle);
+ QCOMPARE(copy.pixelFormat(), QVideoFrame::Format_ARGB32);
+ QCOMPARE(copy.frameSize(), QSize(1024, 768));
+ QCOMPARE(copy.scanLineDirection(), QVideoSurfaceFormat::BottomToTop);
+
+ QCOMPARE(original == copy, true);
+ QCOMPARE(original != copy, false);
+
+ copy.setScanLineDirection(QVideoSurfaceFormat::TopToBottom);
+
+ QCOMPARE(copy.scanLineDirection(), QVideoSurfaceFormat::TopToBottom);
+
+ QCOMPARE(original.scanLineDirection(), QVideoSurfaceFormat::BottomToTop);
+
+ QCOMPARE(original == copy, false);
+ QCOMPARE(original != copy, true);
+}
+
+QTEST_MAIN(tst_QVideoSurfaceFormat)
+
+#include "tst_qvideosurfaceformat.moc"
diff --git a/tests/global/.gitignore b/tests/global/.gitignore
new file mode 100644
index 000000000..1e49c6005
--- /dev/null
+++ b/tests/global/.gitignore
@@ -0,0 +1,2 @@
+Makefile
+global.pro
diff --git a/tests/tests.pro b/tests/tests.pro
new file mode 100644
index 000000000..85e4f3a53
--- /dev/null
+++ b/tests/tests.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS += auto